1*96de5490SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*96de5490SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*96de5490SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*96de5490SAndrew Rist  * distributed with this work for additional information
6*96de5490SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*96de5490SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*96de5490SAndrew Rist  * "License"); you may not use this file except in compliance
9*96de5490SAndrew Rist  * with the License.  You may obtain a copy of the License at
10*96de5490SAndrew Rist  *
11*96de5490SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*96de5490SAndrew Rist  *
13*96de5490SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*96de5490SAndrew Rist  * software distributed under the License is distributed on an
15*96de5490SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*96de5490SAndrew Rist  * KIND, either express or implied.  See the License for the
17*96de5490SAndrew Rist  * specific language governing permissions and limitations
18*96de5490SAndrew Rist  * under the License.
19*96de5490SAndrew Rist  *
20*96de5490SAndrew Rist  *************************************************************/
21*96de5490SAndrew Rist 
22*96de5490SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_dbaccess.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "textconnectionsettings.hxx"
28cdf0e10cSrcweir #include "dbu_reghelper.hxx"
29cdf0e10cSrcweir #include "moduledbu.hxx"
30cdf0e10cSrcweir #include "apitools.hxx"
31cdf0e10cSrcweir #include "unoadmin.hxx"
32cdf0e10cSrcweir #include "dbustrings.hrc"
33cdf0e10cSrcweir #include "propertystorage.hxx"
34cdf0e10cSrcweir 
35cdf0e10cSrcweir /** === begin UNO includes === **/
36cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySetInfo.hpp>
37cdf0e10cSrcweir #include <com/sun/star/beans/PropertyAttribute.hpp>
38cdf0e10cSrcweir /** === end UNO includes === **/
39cdf0e10cSrcweir 
40cdf0e10cSrcweir #include <comphelper/componentcontext.hxx>
41cdf0e10cSrcweir #include <svtools/genericunodialog.hxx>
42cdf0e10cSrcweir 
43cdf0e10cSrcweir //........................................................................
44cdf0e10cSrcweir namespace dbaui
45cdf0e10cSrcweir {
46cdf0e10cSrcweir //........................................................................
47cdf0e10cSrcweir 
48cdf0e10cSrcweir 	/** === begin UNO using === **/
49cdf0e10cSrcweir 	using ::com::sun::star::uno::Reference;
50cdf0e10cSrcweir 	using ::com::sun::star::uno::XInterface;
51cdf0e10cSrcweir 	using ::com::sun::star::uno::UNO_QUERY;
52cdf0e10cSrcweir 	using ::com::sun::star::uno::UNO_QUERY_THROW;
53cdf0e10cSrcweir 	using ::com::sun::star::uno::Exception;
54cdf0e10cSrcweir 	using ::com::sun::star::uno::RuntimeException;
55cdf0e10cSrcweir 	using ::com::sun::star::uno::Any;
56cdf0e10cSrcweir 	using ::com::sun::star::uno::makeAny;
57cdf0e10cSrcweir     using ::com::sun::star::beans::XPropertySetInfo;
58cdf0e10cSrcweir     using ::com::sun::star::uno::Sequence;
59cdf0e10cSrcweir     using ::com::sun::star::beans::Property;
60cdf0e10cSrcweir     using ::com::sun::star::lang::IllegalArgumentException;
61cdf0e10cSrcweir 	/** === end UNO using === **/
62cdf0e10cSrcweir     namespace PropertyAttribute = ::com::sun::star::beans::PropertyAttribute;
63cdf0e10cSrcweir 
64cdf0e10cSrcweir 	//====================================================================
65cdf0e10cSrcweir 	//= OTextConnectionSettingsDialog
66cdf0e10cSrcweir 	//====================================================================
67cdf0e10cSrcweir 
68cdf0e10cSrcweir     class OTextConnectionSettingsDialog;
69cdf0e10cSrcweir     typedef ODatabaseAdministrationDialog                                               OTextConnectionSettingsDialog_BASE;
70cdf0e10cSrcweir     typedef ::comphelper::OPropertyArrayUsageHelper< OTextConnectionSettingsDialog >    OTextConnectionSettingsDialog_PBASE;
71cdf0e10cSrcweir 
72cdf0e10cSrcweir     class OTextConnectionSettingsDialog
73cdf0e10cSrcweir             :public OTextConnectionSettingsDialog_BASE
74cdf0e10cSrcweir             ,public OTextConnectionSettingsDialog_PBASE
75cdf0e10cSrcweir     {
76cdf0e10cSrcweir         OModuleClient   m_aModuleClient;
77cdf0e10cSrcweir         PropertyValues  m_aPropertyValues;
78cdf0e10cSrcweir 
79cdf0e10cSrcweir     protected:
80cdf0e10cSrcweir         OTextConnectionSettingsDialog( const ::comphelper::ComponentContext& _rContext );
81cdf0e10cSrcweir         virtual ~OTextConnectionSettingsDialog();
82cdf0e10cSrcweir 
83cdf0e10cSrcweir     public:
84cdf0e10cSrcweir         DECLARE_IMPLEMENTATION_ID( );
85cdf0e10cSrcweir         DECLARE_SERVICE_INFO_STATIC( );
86cdf0e10cSrcweir         DECLARE_PROPERTYCONTAINER_DEFAULTS( );
87cdf0e10cSrcweir 
88cdf0e10cSrcweir 		virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue ) throw(Exception);
89cdf0e10cSrcweir 		virtual sal_Bool SAL_CALL convertFastPropertyValue( Any& rConvertedValue, Any& rOldValue, sal_Int32 nHandle, const Any& rValue) throw(IllegalArgumentException);
90cdf0e10cSrcweir         virtual void SAL_CALL getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const;
91cdf0e10cSrcweir 
92cdf0e10cSrcweir     protected:
93cdf0e10cSrcweir         // OGenericUnoDialog overridables
94cdf0e10cSrcweir         virtual Dialog* createDialog( Window* _pParent );
95cdf0e10cSrcweir         virtual void implInitialize( const com::sun::star::uno::Any& _rValue );
96cdf0e10cSrcweir 	protected:
97cdf0e10cSrcweir 		using OTextConnectionSettingsDialog_BASE::getFastPropertyValue;
98cdf0e10cSrcweir     };
99cdf0e10cSrcweir 
100cdf0e10cSrcweir     //====================================================================
101cdf0e10cSrcweir 	//= OTextConnectionSettingsDialog
102cdf0e10cSrcweir 	//====================================================================
103cdf0e10cSrcweir 	//--------------------------------------------------------------------
OTextConnectionSettingsDialog(const::comphelper::ComponentContext & _rContext)104cdf0e10cSrcweir 	OTextConnectionSettingsDialog::OTextConnectionSettingsDialog( const ::comphelper::ComponentContext& _rContext )
105cdf0e10cSrcweir 		:OTextConnectionSettingsDialog_BASE( _rContext.getLegacyServiceFactory() )
106cdf0e10cSrcweir 	{
107cdf0e10cSrcweir         TextConnectionSettingsDialog::bindItemStorages( *m_pDatasourceItems, m_aPropertyValues );
108cdf0e10cSrcweir 	}
109cdf0e10cSrcweir 
110cdf0e10cSrcweir 	//---------------------------------------------------------------------
~OTextConnectionSettingsDialog()111cdf0e10cSrcweir 	OTextConnectionSettingsDialog::~OTextConnectionSettingsDialog()
112cdf0e10cSrcweir 	{
113cdf0e10cSrcweir     }
114cdf0e10cSrcweir 
115cdf0e10cSrcweir 	//---------------------------------------------------------------------
116cdf0e10cSrcweir 	IMPLEMENT_IMPLEMENTATION_ID( OTextConnectionSettingsDialog )
117cdf0e10cSrcweir 
118cdf0e10cSrcweir 	//---------------------------------------------------------------------
119cdf0e10cSrcweir 	IMPLEMENT_SERVICE_INFO1_STATIC( OTextConnectionSettingsDialog, "com.sun.star.comp.dbaccess.OTextConnectionSettingsDialog", "com.sun.star.sdb.TextConnectionSettings" )
120cdf0e10cSrcweir 
121cdf0e10cSrcweir     //---------------------------------------------------------------------
getPropertySetInfo()122cdf0e10cSrcweir     Reference< XPropertySetInfo >  SAL_CALL OTextConnectionSettingsDialog::getPropertySetInfo() throw(RuntimeException)
123cdf0e10cSrcweir     {
124cdf0e10cSrcweir         return createPropertySetInfo( getInfoHelper() );
125cdf0e10cSrcweir     }
126cdf0e10cSrcweir 
127cdf0e10cSrcweir     //---------------------------------------------------------------------
getInfoHelper()128cdf0e10cSrcweir     ::cppu::IPropertyArrayHelper& OTextConnectionSettingsDialog::getInfoHelper()
129cdf0e10cSrcweir     {
130cdf0e10cSrcweir         return *getArrayHelper();
131cdf0e10cSrcweir     }
132cdf0e10cSrcweir 
133cdf0e10cSrcweir     //---------------------------------------------------------------------
createArrayHelper() const134cdf0e10cSrcweir     ::cppu::IPropertyArrayHelper* OTextConnectionSettingsDialog::createArrayHelper( ) const
135cdf0e10cSrcweir     {
136cdf0e10cSrcweir         Sequence< Property > aProps;
137cdf0e10cSrcweir         describeProperties( aProps );
138cdf0e10cSrcweir 
139cdf0e10cSrcweir         // in addition to the properties registered by the base class, we have
140cdf0e10cSrcweir         // more properties which are not even handled by the PropertyContainer implementation,
141cdf0e10cSrcweir         // but whose values are stored in our item set
142cdf0e10cSrcweir         sal_Int32 nProp = aProps.getLength();
143cdf0e10cSrcweir         aProps.realloc( nProp + 6 );
144cdf0e10cSrcweir 
145cdf0e10cSrcweir         aProps[ nProp++ ] = Property(
146cdf0e10cSrcweir             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "HeaderLine" ) ),
147cdf0e10cSrcweir             PROPERTY_ID_HEADER_LINE,
148cdf0e10cSrcweir             ::cppu::UnoType< sal_Bool >::get(),
149cdf0e10cSrcweir             PropertyAttribute::TRANSIENT
150cdf0e10cSrcweir         );
151cdf0e10cSrcweir 
152cdf0e10cSrcweir         aProps[ nProp++ ] = Property(
153cdf0e10cSrcweir             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "FieldDelimiter" ) ),
154cdf0e10cSrcweir             PROPERTY_ID_FIELD_DELIMITER,
155cdf0e10cSrcweir             ::cppu::UnoType< ::rtl::OUString >::get(),
156cdf0e10cSrcweir             PropertyAttribute::TRANSIENT
157cdf0e10cSrcweir         );
158cdf0e10cSrcweir 
159cdf0e10cSrcweir         aProps[ nProp++ ] = Property(
160cdf0e10cSrcweir             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "StringDelimiter" ) ),
161cdf0e10cSrcweir             PROPERTY_ID_STRING_DELIMITER,
162cdf0e10cSrcweir             ::cppu::UnoType< ::rtl::OUString >::get(),
163cdf0e10cSrcweir             PropertyAttribute::TRANSIENT
164cdf0e10cSrcweir         );
165cdf0e10cSrcweir 
166cdf0e10cSrcweir         aProps[ nProp++ ] = Property(
167cdf0e10cSrcweir             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DecimalDelimiter" ) ),
168cdf0e10cSrcweir             PROPERTY_ID_DECIMAL_DELIMITER,
169cdf0e10cSrcweir             ::cppu::UnoType< ::rtl::OUString >::get(),
170cdf0e10cSrcweir             PropertyAttribute::TRANSIENT
171cdf0e10cSrcweir         );
172cdf0e10cSrcweir 
173cdf0e10cSrcweir         aProps[ nProp++ ] = Property(
174cdf0e10cSrcweir             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ThousandDelimiter" ) ),
175cdf0e10cSrcweir             PROPERTY_ID_THOUSAND_DELIMITER,
176cdf0e10cSrcweir             ::cppu::UnoType< ::rtl::OUString >::get(),
177cdf0e10cSrcweir             PropertyAttribute::TRANSIENT
178cdf0e10cSrcweir         );
179cdf0e10cSrcweir 
180cdf0e10cSrcweir         aProps[ nProp++ ] = Property(
181cdf0e10cSrcweir             ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CharSet" ) ),
182cdf0e10cSrcweir             PROPERTY_ID_ENCODING,
183cdf0e10cSrcweir             ::cppu::UnoType< ::rtl::OUString >::get(),
184cdf0e10cSrcweir             PropertyAttribute::TRANSIENT
185cdf0e10cSrcweir         );
186cdf0e10cSrcweir 
187cdf0e10cSrcweir         return new ::cppu::OPropertyArrayHelper( aProps );
188cdf0e10cSrcweir     }
189cdf0e10cSrcweir 
190cdf0e10cSrcweir 	//---------------------------------------------------------------------
createDialog(Window * _pParent)191cdf0e10cSrcweir 	Dialog*	OTextConnectionSettingsDialog::createDialog(Window* _pParent)
192cdf0e10cSrcweir 	{
193cdf0e10cSrcweir         return new TextConnectionSettingsDialog( _pParent, *m_pDatasourceItems );
194cdf0e10cSrcweir 	}
195cdf0e10cSrcweir 
196cdf0e10cSrcweir 	//---------------------------------------------------------------------
implInitialize(const Any & _rValue)197cdf0e10cSrcweir 	void OTextConnectionSettingsDialog::implInitialize(const Any& _rValue)
198cdf0e10cSrcweir 	{
199cdf0e10cSrcweir 		OTextConnectionSettingsDialog_BASE::implInitialize( _rValue );
200cdf0e10cSrcweir 	}
201cdf0e10cSrcweir 
202cdf0e10cSrcweir     //--------------------------------------------------------------------
setFastPropertyValue_NoBroadcast(sal_Int32 _nHandle,const Any & _rValue)203cdf0e10cSrcweir     void SAL_CALL OTextConnectionSettingsDialog::setFastPropertyValue_NoBroadcast( sal_Int32 _nHandle, const Any& _rValue ) throw(Exception)
204cdf0e10cSrcweir     {
205cdf0e10cSrcweir         PropertyValues::const_iterator pos = m_aPropertyValues.find( _nHandle );
206cdf0e10cSrcweir         if ( pos != m_aPropertyValues.end() )
207cdf0e10cSrcweir         {
208cdf0e10cSrcweir             pos->second->setPropertyValue( _rValue );
209cdf0e10cSrcweir         }
210cdf0e10cSrcweir         else
211cdf0e10cSrcweir         {
212cdf0e10cSrcweir             OTextConnectionSettingsDialog::setFastPropertyValue_NoBroadcast( _nHandle, _rValue );
213cdf0e10cSrcweir         }
214cdf0e10cSrcweir     }
215cdf0e10cSrcweir 
216cdf0e10cSrcweir     //--------------------------------------------------------------------
convertFastPropertyValue(Any & _rConvertedValue,Any & _rOldValue,sal_Int32 _nHandle,const Any & _rValue)217cdf0e10cSrcweir     sal_Bool SAL_CALL OTextConnectionSettingsDialog::convertFastPropertyValue( Any& _rConvertedValue, Any& _rOldValue, sal_Int32 _nHandle, const Any& _rValue) throw(IllegalArgumentException)
218cdf0e10cSrcweir     {
219cdf0e10cSrcweir         sal_Bool bModified = sal_False;
220cdf0e10cSrcweir 
221cdf0e10cSrcweir         PropertyValues::const_iterator pos = m_aPropertyValues.find( _nHandle );
222cdf0e10cSrcweir         if ( pos != m_aPropertyValues.end() )
223cdf0e10cSrcweir         {
224cdf0e10cSrcweir             // we're lazy here ...
225cdf0e10cSrcweir             _rConvertedValue = _rValue;
226cdf0e10cSrcweir             pos->second->getPropertyValue( _rOldValue );
227cdf0e10cSrcweir             bModified = sal_True;
228cdf0e10cSrcweir         }
229cdf0e10cSrcweir         else
230cdf0e10cSrcweir         {
231cdf0e10cSrcweir             bModified = OTextConnectionSettingsDialog::convertFastPropertyValue( _rConvertedValue, _rOldValue, _nHandle, _rValue );
232cdf0e10cSrcweir         }
233cdf0e10cSrcweir 
234cdf0e10cSrcweir         return bModified;
235cdf0e10cSrcweir     }
236cdf0e10cSrcweir 
237cdf0e10cSrcweir     //--------------------------------------------------------------------
getFastPropertyValue(Any & _rValue,sal_Int32 _nHandle) const238cdf0e10cSrcweir     void SAL_CALL OTextConnectionSettingsDialog::getFastPropertyValue( Any& _rValue, sal_Int32 _nHandle ) const
239cdf0e10cSrcweir     {
240cdf0e10cSrcweir         PropertyValues::const_iterator pos = m_aPropertyValues.find( _nHandle );
241cdf0e10cSrcweir         if ( pos != m_aPropertyValues.end() )
242cdf0e10cSrcweir         {
243cdf0e10cSrcweir             pos->second->getPropertyValue( _rValue );
244cdf0e10cSrcweir         }
245cdf0e10cSrcweir         else
246cdf0e10cSrcweir         {
247cdf0e10cSrcweir             OTextConnectionSettingsDialog::getFastPropertyValue( _rValue, _nHandle );
248cdf0e10cSrcweir         }
249cdf0e10cSrcweir     }
250cdf0e10cSrcweir 
251cdf0e10cSrcweir //........................................................................
252cdf0e10cSrcweir } // namespace dbaui
253cdf0e10cSrcweir //........................................................................
254cdf0e10cSrcweir 
createRegistryInfo_OTextConnectionSettingsDialog()255cdf0e10cSrcweir extern "C" void SAL_CALL createRegistryInfo_OTextConnectionSettingsDialog()
256cdf0e10cSrcweir {
257cdf0e10cSrcweir 	static ::dbaui::OMultiInstanceAutoRegistration< ::dbaui::OTextConnectionSettingsDialog > aAutoRegistration;
258cdf0e10cSrcweir }
259cdf0e10cSrcweir 
260