xref: /AOO41X/main/extensions/source/propctrlr/controlfontdialog.cxx (revision 2a97ec55f1442d65917e8c8b82a55ab76c9ff676)
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_extensions.hxx"
26 
27 #ifndef _EXTENSIONS_PROPCTRLR_FONTITEMIDS_HXX_
28 #include "controlfontdialog.hxx"
29 #endif
30 #include <cppuhelper/typeprovider.hxx>
31 #include "fontdialog.hxx"
32 #include "formstrings.hxx"
33 #include "pcrcommon.hxx"
34 
createRegistryInfo_OControlFontDialog()35 extern "C" void SAL_CALL createRegistryInfo_OControlFontDialog()
36 {
37     ::pcr::OAutoRegistration< ::pcr::OControlFontDialog > aAutoRegistration;
38 }
39 
40 //........................................................................
41 namespace pcr
42 {
43 //........................................................................
44 
45     using namespace ::com::sun::star::uno;
46     using namespace ::com::sun::star::lang;
47     using namespace ::com::sun::star::beans;
48 
49     //====================================================================
50     //= OControlFontDialog
51     //====================================================================
52     //---------------------------------------------------------------------
OControlFontDialog(const Reference<XComponentContext> & _rxContext)53     OControlFontDialog::OControlFontDialog(const Reference< XComponentContext >& _rxContext )
54         :OGenericUnoDialog( _rxContext )
55         ,m_pFontItems(NULL)
56         ,m_pItemPool(NULL)
57         ,m_pItemPoolDefaults(NULL)
58     {
59         registerProperty(PROPERTY_INTROSPECTEDOBJECT, OWN_PROPERTY_ID_INTROSPECTEDOBJECT,
60             PropertyAttribute::BOUND | PropertyAttribute::TRANSIENT,
61             &m_xControlModel, ::getCppuType(&m_xControlModel));
62     }
63 
64     //---------------------------------------------------------------------
~OControlFontDialog()65     OControlFontDialog::~OControlFontDialog()
66     {
67         if (m_pDialog)
68         {
69             ::osl::MutexGuard aGuard(m_aMutex);
70             if (m_pDialog)
71                 destroyDialog();
72         }
73     }
74 
75     //---------------------------------------------------------------------
getImplementationId()76     Sequence<sal_Int8> SAL_CALL OControlFontDialog::getImplementationId(  ) throw(RuntimeException)
77     {
78         static ::cppu::OImplementationId aId;
79         return aId.getImplementationId();
80     }
81 
82     //---------------------------------------------------------------------
Create(const Reference<XComponentContext> & _rxContext)83     Reference< XInterface > SAL_CALL OControlFontDialog::Create( const Reference< XComponentContext >& _rxContext )
84     {
85         return *( new OControlFontDialog( _rxContext ) );
86     }
87 
88     //---------------------------------------------------------------------
getImplementationName()89     ::rtl::OUString SAL_CALL OControlFontDialog::getImplementationName() throw(RuntimeException)
90     {
91         return getImplementationName_static();
92     }
93 
94     //---------------------------------------------------------------------
getImplementationName_static()95     ::rtl::OUString OControlFontDialog::getImplementationName_static() throw(RuntimeException)
96     {
97         return ::rtl::OUString::createFromAscii("org.openoffice.comp.form.ui.OControlFontDialog");
98     }
99 
100     //---------------------------------------------------------------------
getSupportedServiceNames()101     ::comphelper::StringSequence SAL_CALL OControlFontDialog::getSupportedServiceNames() throw(RuntimeException)
102     {
103         return getSupportedServiceNames_static();
104     }
105 
106     //---------------------------------------------------------------------
getSupportedServiceNames_static()107     ::comphelper::StringSequence OControlFontDialog::getSupportedServiceNames_static() throw(RuntimeException)
108     {
109         ::comphelper::StringSequence aSupported(1);
110         aSupported.getArray()[0] = ::rtl::OUString::createFromAscii("com.sun.star.form.ControlFontDialog");
111         return aSupported;
112     }
113 
114     //---------------------------------------------------------------------
getPropertySetInfo()115     Reference<XPropertySetInfo>  SAL_CALL OControlFontDialog::getPropertySetInfo() throw(RuntimeException)
116     {
117         Reference<XPropertySetInfo>  xInfo( createPropertySetInfo( getInfoHelper() ) );
118         return xInfo;
119     }
120 
121     //---------------------------------------------------------------------
getInfoHelper()122     ::cppu::IPropertyArrayHelper& OControlFontDialog::getInfoHelper()
123     {
124         return *const_cast<OControlFontDialog*>(this)->getArrayHelper();
125     }
126 
127     //--------------------------------------------------------------------------
createArrayHelper() const128     ::cppu::IPropertyArrayHelper* OControlFontDialog::createArrayHelper( ) const
129     {
130         Sequence< Property > aProps;
131         describeProperties(aProps);
132         return new ::cppu::OPropertyArrayHelper(aProps);
133     }
134 
135     //--------------------------------------------------------------------------
createDialog(Window * _pParent)136     Dialog* OControlFontDialog::createDialog(Window* _pParent)
137     {
138         ControlCharacterDialog::createItemSet(m_pFontItems, m_pItemPool, m_pItemPoolDefaults);
139 
140         OSL_ENSURE(m_xControlModel.is(), "OControlFontDialog::createDialog: no introspectee set!");
141         if (m_xControlModel.is())
142             ControlCharacterDialog::translatePropertiesToItems(m_xControlModel, m_pFontItems);
143         // TODO: we need a mechanism to prevent that somebody creates us, sets an introspectee, executes us,
144         // sets a new introspectee and re-executes us. In this case, the dialog returned here (upon the first
145         // execute) will be re-used upon the second execute, and thus it won't be initialized correctly.
146 
147         ControlCharacterDialog* pDialog = new ControlCharacterDialog(_pParent, *m_pFontItems);
148         return pDialog;
149     }
150 
151     //-------------------------------------------------------------------------
destroyDialog()152     void OControlFontDialog::destroyDialog()
153     {
154         OGenericUnoDialog::destroyDialog();
155         ControlCharacterDialog::destroyItemSet(m_pFontItems, m_pItemPool, m_pItemPoolDefaults);
156     }
157 
158     //-------------------------------------------------------------------------
executedDialog(sal_Int16 _nExecutionResult)159     void OControlFontDialog::executedDialog(sal_Int16 _nExecutionResult)
160     {
161         OSL_ENSURE(m_pDialog, "OControlFontDialog::executedDialog: no dialog anymore?!!");
162         if (m_pDialog && (sal_True == _nExecutionResult) && m_xControlModel.is())
163         {
164             const SfxItemSet* pOutput = static_cast<ControlCharacterDialog*>(m_pDialog)->GetOutputItemSet();
165             if (pOutput)
166                 ControlCharacterDialog::translateItemsToProperties( *pOutput, m_xControlModel );
167         }
168     }
169 
170 //........................................................................
171 }   // namespace pcr
172 //........................................................................
173 
174