xref: /AOO41X/main/framework/source/helper/statusindicator.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
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 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_framework.hxx"
30 
31 //_______________________________________________
32 // include files of own module
33 #include <helper/statusindicator.hxx>
34 #include <threadhelp/readguard.hxx>
35 #include <threadhelp/writeguard.hxx>
36 
37 //_______________________________________________
38 // namespace
39 
40 namespace framework{
41 
42 //_______________________________________________
43 // declarations
44 
45 //***********************************************
46 // XInterface
47 DEFINE_XINTERFACE_2(StatusIndicator                              ,
48                     OWeakObject                                  ,
49                     DIRECT_INTERFACE(css::lang::XTypeProvider   ),
50                     DIRECT_INTERFACE(css::task::XStatusIndicator))
51 
52 //***********************************************
53 // XInterface
54 DEFINE_XTYPEPROVIDER_2(StatusIndicator            ,
55                        css::lang::XTypeProvider   ,
56                        css::task::XStatusIndicator)
57 
58 //***********************************************
59 StatusIndicator::StatusIndicator(StatusIndicatorFactory* pFactory)
60     : ThreadHelpBase     (        )
61     , ::cppu::OWeakObject(        )
62     , m_xFactory         (pFactory)
63 {
64 }
65 
66 //***********************************************
67 StatusIndicator::~StatusIndicator()
68 {
69 }
70 
71 //***********************************************
72 void SAL_CALL StatusIndicator::start(const ::rtl::OUString& sText ,
73                                            sal_Int32        nRange)
74     throw(css::uno::RuntimeException)
75 {
76     // SAFE ->
77     ReadGuard aReadLock(m_aLock);
78     css::uno::Reference< css::task::XStatusIndicatorFactory > xFactory(m_xFactory.get(), css::uno::UNO_QUERY);
79     aReadLock.unlock();
80     // <- SAFE
81     if (xFactory.is())
82     {
83         StatusIndicatorFactory* pFactory = (StatusIndicatorFactory*)xFactory.get();
84         pFactory->start(this, sText, nRange);
85     }
86 }
87 
88 //***********************************************
89 void SAL_CALL StatusIndicator::end()
90     throw(css::uno::RuntimeException)
91 {
92     // SAFE ->
93     ReadGuard aReadLock(m_aLock);
94     css::uno::Reference< css::task::XStatusIndicatorFactory > xFactory(m_xFactory.get(), css::uno::UNO_QUERY);
95     aReadLock.unlock();
96     // <- SAFE
97     if (xFactory.is())
98     {
99         StatusIndicatorFactory* pFactory = (StatusIndicatorFactory*)xFactory.get();
100         pFactory->end(this);
101     }
102 }
103 
104 //***********************************************
105 void SAL_CALL StatusIndicator::reset()
106     throw(css::uno::RuntimeException)
107 {
108     // SAFE ->
109     ReadGuard aReadLock(m_aLock);
110     css::uno::Reference< css::task::XStatusIndicatorFactory > xFactory(m_xFactory.get(), css::uno::UNO_QUERY);
111     aReadLock.unlock();
112     // <- SAFE
113     if (xFactory.is())
114     {
115         StatusIndicatorFactory* pFactory = (StatusIndicatorFactory*)xFactory.get();
116         pFactory->reset(this);
117     }
118 }
119 
120 //***********************************************
121 void SAL_CALL StatusIndicator::setText(const ::rtl::OUString& sText)
122     throw(css::uno::RuntimeException)
123 {
124     // SAFE ->
125     ReadGuard aReadLock(m_aLock);
126     css::uno::Reference< css::task::XStatusIndicatorFactory > xFactory(m_xFactory.get(), css::uno::UNO_QUERY);
127     aReadLock.unlock();
128     // <- SAFE
129     if (xFactory.is())
130     {
131         StatusIndicatorFactory* pFactory = (StatusIndicatorFactory*)xFactory.get();
132         pFactory->setText(this, sText);
133     }
134 }
135 
136 //***********************************************
137 void SAL_CALL StatusIndicator::setValue(sal_Int32 nValue)
138     throw(css::uno::RuntimeException)
139 {
140     // SAFE ->
141     ReadGuard aReadLock(m_aLock);
142     css::uno::Reference< css::task::XStatusIndicatorFactory > xFactory(m_xFactory.get(), css::uno::UNO_QUERY);
143     aReadLock.unlock();
144     // <- SAFE
145     if (xFactory.is())
146     {
147         StatusIndicatorFactory* pFactory = (StatusIndicatorFactory*)xFactory.get();
148         pFactory->setValue(this, nValue);
149     }
150 }
151 
152 } // namespace framework
153