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 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 //--------------------------------------------------------------------- 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 //--------------------------------------------------------------------- 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 //--------------------------------------------------------------------- 76 Sequence<sal_Int8> SAL_CALL OControlFontDialog::getImplementationId( ) throw(RuntimeException) 77 { 78 static ::cppu::OImplementationId aId; 79 return aId.getImplementationId(); 80 } 81 82 //--------------------------------------------------------------------- 83 Reference< XInterface > SAL_CALL OControlFontDialog::Create( const Reference< XComponentContext >& _rxContext ) 84 { 85 return *( new OControlFontDialog( _rxContext ) ); 86 } 87 88 //--------------------------------------------------------------------- 89 ::rtl::OUString SAL_CALL OControlFontDialog::getImplementationName() throw(RuntimeException) 90 { 91 return getImplementationName_static(); 92 } 93 94 //--------------------------------------------------------------------- 95 ::rtl::OUString OControlFontDialog::getImplementationName_static() throw(RuntimeException) 96 { 97 return ::rtl::OUString::createFromAscii("org.openoffice.comp.form.ui.OControlFontDialog"); 98 } 99 100 //--------------------------------------------------------------------- 101 ::comphelper::StringSequence SAL_CALL OControlFontDialog::getSupportedServiceNames() throw(RuntimeException) 102 { 103 return getSupportedServiceNames_static(); 104 } 105 106 //--------------------------------------------------------------------- 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 //--------------------------------------------------------------------- 115 Reference<XPropertySetInfo> SAL_CALL OControlFontDialog::getPropertySetInfo() throw(RuntimeException) 116 { 117 Reference<XPropertySetInfo> xInfo( createPropertySetInfo( getInfoHelper() ) ); 118 return xInfo; 119 } 120 121 //--------------------------------------------------------------------- 122 ::cppu::IPropertyArrayHelper& OControlFontDialog::getInfoHelper() 123 { 124 return *const_cast<OControlFontDialog*>(this)->getArrayHelper(); 125 } 126 127 //-------------------------------------------------------------------------- 128 ::cppu::IPropertyArrayHelper* OControlFontDialog::createArrayHelper( ) const 129 { 130 Sequence< Property > aProps; 131 describeProperties(aProps); 132 return new ::cppu::OPropertyArrayHelper(aProps); 133 } 134 135 //-------------------------------------------------------------------------- 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 //------------------------------------------------------------------------- 152 void OControlFontDialog::destroyDialog() 153 { 154 OGenericUnoDialog::destroyDialog(); 155 ControlCharacterDialog::destroyItemSet(m_pFontItems, m_pItemPool, m_pItemPoolDefaults); 156 } 157 158 //------------------------------------------------------------------------- 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