xref: /AOO41X/main/sw/source/core/unocore/unoevtlstnr.cxx (revision efeef26f81c84063fb0a91bde3856d4a51172d90)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_sw.hxx"
26 
27 
28 #include <unoevtlstnr.hxx>
29 #include <tools/debug.hxx>
30 #include <com/sun/star/lang/EventObject.hpp>
31 #include <com/sun/star/lang/XEventListener.hpp>
32 
33 using namespace ::com::sun::star;
34 using namespace ::com::sun::star::uno;
35 using namespace ::com::sun::star::lang;
36 using namespace ::com::sun::star::uno;
37 
38 /* -----------------22.04.99 11:24-------------------
39  *
40  * --------------------------------------------------*/
41 SV_IMPL_PTRARR(SwEvtLstnrArray, XEventListenerPtr);
42 
43 /*-- 22.04.99 11:24:59---------------------------------------------------
44 
45   -----------------------------------------------------------------------*/
SwEventListenerContainer(uno::XInterface * _pxParent)46 SwEventListenerContainer::SwEventListenerContainer( uno::XInterface* _pxParent) :
47     pListenerArr(0),
48     pxParent(_pxParent)
49 {
50 }
51 /*-- 22.04.99 11:24:59---------------------------------------------------
52 
53   -----------------------------------------------------------------------*/
~SwEventListenerContainer()54 SwEventListenerContainer::~SwEventListenerContainer()
55 {
56     if(pListenerArr && pListenerArr->Count())
57     {
58         pListenerArr->DeleteAndDestroy(0, pListenerArr->Count());
59     }
60     delete pListenerArr;
61 }
62 /*-- 22.04.99 11:24:59---------------------------------------------------
63 
64   -----------------------------------------------------------------------*/
AddListener(const uno::Reference<lang::XEventListener> & rxListener)65 void    SwEventListenerContainer::AddListener(const uno::Reference< lang::XEventListener > & rxListener)
66 {
67     if(!pListenerArr)
68         pListenerArr = new SwEvtLstnrArray;
69     uno::Reference< lang::XEventListener > * pInsert = new uno::Reference< lang::XEventListener > ;
70     *pInsert = rxListener;
71     pListenerArr->Insert(pInsert, pListenerArr->Count());
72 }
73 /*-- 22.04.99 11:25:00---------------------------------------------------
74 
75   -----------------------------------------------------------------------*/
RemoveListener(const uno::Reference<lang::XEventListener> & rxListener)76 sal_Bool    SwEventListenerContainer::RemoveListener(const uno::Reference< lang::XEventListener > & rxListener)
77 {
78     if(!pListenerArr)
79         return sal_False;
80     else
81     {
82         lang::XEventListener* pLeft = rxListener.get();
83         for(sal_uInt16 i = 0; i < pListenerArr->Count(); i++)
84         {
85             XEventListenerPtr pElem = pListenerArr->GetObject(i);
86             lang::XEventListener* pRight = pElem->get();
87             if(pLeft == pRight)
88             {
89                 pListenerArr->Remove(i);
90                 delete pElem;
91                 return sal_True;
92             }
93         }
94     }
95     return sal_False;
96 }
97 /*-- 22.04.99 11:25:00---------------------------------------------------
98 
99   -----------------------------------------------------------------------*/
Disposing()100 void    SwEventListenerContainer::Disposing()
101 {
102     if(!pListenerArr)
103         return;
104 
105     lang::EventObject aObj(pxParent);
106     for(sal_uInt16 i = 0; i < pListenerArr->Count(); i++)
107     {
108         XEventListenerPtr pElem = pListenerArr->GetObject(i);
109         (*pElem)->disposing(aObj);
110     }
111     pListenerArr->DeleteAndDestroy(0, pListenerArr->Count());
112 }
113 
114 
115