1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef _ELEMENTCOLLECTOR_HXX 29 #define _ELEMENTCOLLECTOR_HXX 30 31 #include "elementmark.hxx" 32 #include <com/sun/star/xml/crypto/sax/XReferenceResolvedListener.hpp> 33 #include <com/sun/star/xml/crypto/sax/ElementMarkPriority.hpp> 34 35 class ElementCollector : public ElementMark 36 /****** elementcollector.hxx/CLASS ElementCollector *************************** 37 * 38 * NAME 39 * ElementCollector -- Class to manipulate an element collector 40 * 41 * FUNCTION 42 * This class is derived from the ElementMark class. Beyond the function 43 * of the ElementMark class, this class also maintains the priority, and 44 * manages the notify process 45 * 46 * HISTORY 47 * 05.01.2004 - implemented 48 * 49 * AUTHOR 50 * Michael Mi 51 * Email: michael.mi@sun.com 52 ******************************************************************************/ 53 { 54 private: 55 /* 56 * the notify priority, is one of following values: 57 * AFTERMODIFY - this ElementCollector will notify after all 58 * internal modifications have finished. 59 * BEFOREMODIFY - this ElementCollector must notify before any 60 * internal modification happens. 61 */ 62 com::sun::star::xml::crypto::sax::ElementMarkPriority m_nPriority; 63 64 /* 65 * the modify flag, representing whether which elementcollector will 66 * modify its data. 67 */ 68 bool m_bToModify; 69 70 /* the notify enable flag, see notifyListener method */ 71 bool m_bAbleToNotify; 72 73 /* whether the listener has been notified */ 74 bool m_bNotified; 75 76 /* the listener to be notified */ 77 com::sun::star::uno::Reference< 78 com::sun::star::xml::crypto::sax::XReferenceResolvedListener > m_xReferenceResolvedListener; 79 80 public: 81 ElementCollector( 82 sal_Int32 nSecurityId, 83 sal_Int32 nBufferId, 84 com::sun::star::xml::crypto::sax::ElementMarkPriority nPriority, 85 bool bToModify, 86 const com::sun::star::uno::Reference< 87 com::sun::star::xml::crypto::sax::XReferenceResolvedListener >& 88 xReferenceResolvedListener); 89 virtual ~ElementCollector() {}; 90 91 //bool isInternalNotificationSuppressed() const; 92 com::sun::star::xml::crypto::sax::ElementMarkPriority getPriority() const; 93 bool getModify() const; 94 void notifyListener(); 95 bool isAbleToNotify() const; 96 void setReferenceResolvedListener( 97 const com::sun::star::uno::Reference< 98 com::sun::star::xml::crypto::sax::XReferenceResolvedListener >& 99 referenceResolvedListener); 100 void setSecurityId(sal_Int32 nSecurityId); 101 void doNotify(); 102 ElementCollector* clone( 103 sal_Int32 nId, 104 com::sun::star::xml::crypto::sax::ElementMarkPriority nPriority ) const; 105 }; 106 107 #endif 108 109