1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove 25*b1cdbd2cSJim Jagielski #include "precompiled_svx.hxx" 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include "svx/databaselocationinput.hxx" 28*b1cdbd2cSJim Jagielski #include "svx/dialmgr.hxx" 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski #include "svx/fmresids.hrc" 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski /** === begin UNO includes === **/ 33*b1cdbd2cSJim Jagielski #include <com/sun/star/ui/dialogs/TemplateDescription.hpp> 34*b1cdbd2cSJim Jagielski /** === end UNO includes === **/ 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski #include <comphelper/componentcontext.hxx> 37*b1cdbd2cSJim Jagielski #include <comphelper/namedvaluecollection.hxx> 38*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx> 39*b1cdbd2cSJim Jagielski #include <sfx2/filedlghelper.hxx> 40*b1cdbd2cSJim Jagielski #include <svtools/urlcontrol.hxx> 41*b1cdbd2cSJim Jagielski #include <svl/filenotation.hxx> 42*b1cdbd2cSJim Jagielski #include <tools/diagnose_ex.h> 43*b1cdbd2cSJim Jagielski #include <unotools/confignode.hxx> 44*b1cdbd2cSJim Jagielski #include <unotools/ucbhelper.hxx> 45*b1cdbd2cSJim Jagielski #include <vcl/button.hxx> 46*b1cdbd2cSJim Jagielski #include <vcl/msgbox.hxx> 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski //........................................................................ 49*b1cdbd2cSJim Jagielski namespace svx 50*b1cdbd2cSJim Jagielski { 51*b1cdbd2cSJim Jagielski //........................................................................ 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielski /** === begin UNO using === **/ 54*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Sequence; 55*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Reference; 56*b1cdbd2cSJim Jagielski using ::com::sun::star::container::XNameAccess; 57*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::UNO_QUERY_THROW; 58*b1cdbd2cSJim Jagielski using ::com::sun::star::uno::Exception; 59*b1cdbd2cSJim Jagielski /** === end UNO using === **/ 60*b1cdbd2cSJim Jagielski namespace TemplateDescription = ::com::sun::star::ui::dialogs::TemplateDescription; 61*b1cdbd2cSJim Jagielski 62*b1cdbd2cSJim Jagielski //==================================================================== 63*b1cdbd2cSJim Jagielski //= DatabaseLocationInputController_Impl 64*b1cdbd2cSJim Jagielski //==================================================================== 65*b1cdbd2cSJim Jagielski class DatabaseLocationInputController_Impl 66*b1cdbd2cSJim Jagielski { 67*b1cdbd2cSJim Jagielski public: 68*b1cdbd2cSJim Jagielski DatabaseLocationInputController_Impl( 69*b1cdbd2cSJim Jagielski const ::comphelper::ComponentContext& _rContext, 70*b1cdbd2cSJim Jagielski ::svt::OFileURLControl& _rLocationInput, 71*b1cdbd2cSJim Jagielski PushButton& _rBrowseButton 72*b1cdbd2cSJim Jagielski ); 73*b1cdbd2cSJim Jagielski ~DatabaseLocationInputController_Impl(); 74*b1cdbd2cSJim Jagielski 75*b1cdbd2cSJim Jagielski bool prepareCommit(); 76*b1cdbd2cSJim Jagielski void setURL( const String& _rURL ); 77*b1cdbd2cSJim Jagielski String getURL() const; 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski private: 80*b1cdbd2cSJim Jagielski void impl_initFilterProperties_nothrow(); 81*b1cdbd2cSJim Jagielski void impl_onBrowseButtonClicked(); 82*b1cdbd2cSJim Jagielski void impl_onLocationModified(); 83*b1cdbd2cSJim Jagielski String impl_getCurrentURL() const; 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski DECL_LINK( OnControlAction, VclWindowEvent* ); 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski private: 88*b1cdbd2cSJim Jagielski const ::comphelper::ComponentContext m_aContext; 89*b1cdbd2cSJim Jagielski ::svt::OFileURLControl& m_rLocationInput; 90*b1cdbd2cSJim Jagielski PushButton& m_rBrowseButton; 91*b1cdbd2cSJim Jagielski Sequence< ::rtl::OUString > m_aFilterExtensions; 92*b1cdbd2cSJim Jagielski ::rtl::OUString m_sFilterUIName; 93*b1cdbd2cSJim Jagielski bool m_bNeedExistenceCheck; 94*b1cdbd2cSJim Jagielski }; 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- DatabaseLocationInputController_Impl(const::comphelper::ComponentContext & _rContext,::svt::OFileURLControl & _rLocationInput,PushButton & _rBrowseButton)97*b1cdbd2cSJim Jagielski DatabaseLocationInputController_Impl::DatabaseLocationInputController_Impl( const ::comphelper::ComponentContext& _rContext, 98*b1cdbd2cSJim Jagielski ::svt::OFileURLControl& _rLocationInput, PushButton& _rBrowseButton ) 99*b1cdbd2cSJim Jagielski :m_aContext( _rContext ) 100*b1cdbd2cSJim Jagielski ,m_rLocationInput( _rLocationInput ) 101*b1cdbd2cSJim Jagielski ,m_rBrowseButton( _rBrowseButton ) 102*b1cdbd2cSJim Jagielski ,m_aFilterExtensions() 103*b1cdbd2cSJim Jagielski ,m_sFilterUIName() 104*b1cdbd2cSJim Jagielski ,m_bNeedExistenceCheck( true ) 105*b1cdbd2cSJim Jagielski { 106*b1cdbd2cSJim Jagielski impl_initFilterProperties_nothrow(); 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski // forward the allowed extensions to the input control 109*b1cdbd2cSJim Jagielski ::rtl::OUStringBuffer aExtensionList; 110*b1cdbd2cSJim Jagielski for ( const ::rtl::OUString* pExtension = m_aFilterExtensions.getConstArray(); 111*b1cdbd2cSJim Jagielski pExtension != m_aFilterExtensions.getConstArray() + m_aFilterExtensions.getLength(); 112*b1cdbd2cSJim Jagielski ++pExtension 113*b1cdbd2cSJim Jagielski ) 114*b1cdbd2cSJim Jagielski { 115*b1cdbd2cSJim Jagielski aExtensionList.append( *pExtension ); 116*b1cdbd2cSJim Jagielski aExtensionList.append( (sal_Unicode)';' ); 117*b1cdbd2cSJim Jagielski } 118*b1cdbd2cSJim Jagielski m_rLocationInput.SetFilter( aExtensionList.makeStringAndClear() ); 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski m_rBrowseButton.AddEventListener( LINK( this, DatabaseLocationInputController_Impl, OnControlAction ) ); 121*b1cdbd2cSJim Jagielski m_rLocationInput.AddEventListener( LINK( this, DatabaseLocationInputController_Impl, OnControlAction ) ); 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- ~DatabaseLocationInputController_Impl()125*b1cdbd2cSJim Jagielski DatabaseLocationInputController_Impl::~DatabaseLocationInputController_Impl() 126*b1cdbd2cSJim Jagielski { 127*b1cdbd2cSJim Jagielski m_rBrowseButton.RemoveEventListener( LINK( this, DatabaseLocationInputController_Impl, OnControlAction ) ); 128*b1cdbd2cSJim Jagielski m_rLocationInput.RemoveEventListener( LINK( this, DatabaseLocationInputController_Impl, OnControlAction ) ); 129*b1cdbd2cSJim Jagielski } 130*b1cdbd2cSJim Jagielski 131*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- prepareCommit()132*b1cdbd2cSJim Jagielski bool DatabaseLocationInputController_Impl::prepareCommit() 133*b1cdbd2cSJim Jagielski { 134*b1cdbd2cSJim Jagielski ::rtl::OUString sURL( impl_getCurrentURL() ); 135*b1cdbd2cSJim Jagielski if ( !sURL.getLength() ) 136*b1cdbd2cSJim Jagielski return false; 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski // check if the name exists 139*b1cdbd2cSJim Jagielski if ( m_bNeedExistenceCheck ) 140*b1cdbd2cSJim Jagielski { 141*b1cdbd2cSJim Jagielski if ( ::utl::UCBContentHelper::Exists( sURL ) ) 142*b1cdbd2cSJim Jagielski { 143*b1cdbd2cSJim Jagielski QueryBox aBox( m_rLocationInput.GetSystemWindow(), WB_YES_NO, SVX_RES( RID_STR_ALREADYEXISTOVERWRITE ) ); 144*b1cdbd2cSJim Jagielski if ( aBox.Execute() != RET_YES ) 145*b1cdbd2cSJim Jagielski return false; 146*b1cdbd2cSJim Jagielski } 147*b1cdbd2cSJim Jagielski } 148*b1cdbd2cSJim Jagielski 149*b1cdbd2cSJim Jagielski return true; 150*b1cdbd2cSJim Jagielski } 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- setURL(const String & _rURL)153*b1cdbd2cSJim Jagielski void DatabaseLocationInputController_Impl::setURL( const String& _rURL ) 154*b1cdbd2cSJim Jagielski { 155*b1cdbd2cSJim Jagielski ::svt::OFileNotation aTransformer( _rURL ); 156*b1cdbd2cSJim Jagielski m_rLocationInput.SetText( aTransformer.get( ::svt::OFileNotation::N_SYSTEM ) ); 157*b1cdbd2cSJim Jagielski } 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getURL() const160*b1cdbd2cSJim Jagielski String DatabaseLocationInputController_Impl::getURL() const 161*b1cdbd2cSJim Jagielski { 162*b1cdbd2cSJim Jagielski return impl_getCurrentURL(); 163*b1cdbd2cSJim Jagielski } 164*b1cdbd2cSJim Jagielski 165*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- impl_initFilterProperties_nothrow()166*b1cdbd2cSJim Jagielski void DatabaseLocationInputController_Impl::impl_initFilterProperties_nothrow() 167*b1cdbd2cSJim Jagielski { 168*b1cdbd2cSJim Jagielski try 169*b1cdbd2cSJim Jagielski { 170*b1cdbd2cSJim Jagielski // get the name of the default filter for database documents 171*b1cdbd2cSJim Jagielski ::utl::OConfigurationTreeRoot aConfig( 172*b1cdbd2cSJim Jagielski ::utl::OConfigurationTreeRoot::createWithServiceFactory( 173*b1cdbd2cSJim Jagielski m_aContext.getLegacyServiceFactory(), 174*b1cdbd2cSJim Jagielski ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/org.openoffice.Setup/Office/Factories/com.sun.star.sdb.OfficeDatabaseDocument" ) ) 175*b1cdbd2cSJim Jagielski ) ); 176*b1cdbd2cSJim Jagielski ::rtl::OUString sDatabaseFilter; 177*b1cdbd2cSJim Jagielski OSL_VERIFY( aConfig.getNodeValue( "ooSetupFactoryActualFilter" ) >>= sDatabaseFilter ); 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski // get the type this filter is responsible for 180*b1cdbd2cSJim Jagielski Reference< XNameAccess > xFilterFactory( 181*b1cdbd2cSJim Jagielski m_aContext.createComponent( "com.sun.star.document.FilterFactory" ), 182*b1cdbd2cSJim Jagielski UNO_QUERY_THROW ); 183*b1cdbd2cSJim Jagielski ::comphelper::NamedValueCollection aFilterProperties( xFilterFactory->getByName( sDatabaseFilter ) ); 184*b1cdbd2cSJim Jagielski ::rtl::OUString sDocumentType = aFilterProperties.getOrDefault( "Type", ::rtl::OUString() ); 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielski // get the extension(s) for this type 187*b1cdbd2cSJim Jagielski Reference< XNameAccess > xTypeDetection( 188*b1cdbd2cSJim Jagielski m_aContext.createComponent( "com.sun.star.document.TypeDetection" ), 189*b1cdbd2cSJim Jagielski UNO_QUERY_THROW ); 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski ::comphelper::NamedValueCollection aTypeProperties( xTypeDetection->getByName( sDocumentType ) ); 192*b1cdbd2cSJim Jagielski m_aFilterExtensions = aTypeProperties.getOrDefault( "Extensions", m_aFilterExtensions ); 193*b1cdbd2cSJim Jagielski m_sFilterUIName = aTypeProperties.getOrDefault( "UIName", m_sFilterUIName ); 194*b1cdbd2cSJim Jagielski } 195*b1cdbd2cSJim Jagielski catch( const Exception& ) 196*b1cdbd2cSJim Jagielski { 197*b1cdbd2cSJim Jagielski DBG_UNHANDLED_EXCEPTION(); 198*b1cdbd2cSJim Jagielski } 199*b1cdbd2cSJim Jagielski 200*b1cdbd2cSJim Jagielski // ensure we have at least one extension 201*b1cdbd2cSJim Jagielski OSL_ENSURE( m_aFilterExtensions.getLength(), 202*b1cdbd2cSJim Jagielski "DatabaseLocationInputController_Impl::impl_initFilterProperties_nothrow: unable to determine the file extension(s)!" ); 203*b1cdbd2cSJim Jagielski if ( m_aFilterExtensions.getLength() == 0 ) 204*b1cdbd2cSJim Jagielski { 205*b1cdbd2cSJim Jagielski m_aFilterExtensions.realloc(1); 206*b1cdbd2cSJim Jagielski m_aFilterExtensions[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.odb" ) ); 207*b1cdbd2cSJim Jagielski } 208*b1cdbd2cSJim Jagielski } 209*b1cdbd2cSJim Jagielski 210*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------------- IMPL_LINK(DatabaseLocationInputController_Impl,OnControlAction,VclWindowEvent *,_pEvent)211*b1cdbd2cSJim Jagielski IMPL_LINK( DatabaseLocationInputController_Impl, OnControlAction, VclWindowEvent*, _pEvent ) 212*b1cdbd2cSJim Jagielski { 213*b1cdbd2cSJim Jagielski if ( ( _pEvent->GetWindow() == &m_rBrowseButton ) 214*b1cdbd2cSJim Jagielski && ( _pEvent->GetId() == VCLEVENT_BUTTON_CLICK ) 215*b1cdbd2cSJim Jagielski ) 216*b1cdbd2cSJim Jagielski { 217*b1cdbd2cSJim Jagielski impl_onBrowseButtonClicked(); 218*b1cdbd2cSJim Jagielski } 219*b1cdbd2cSJim Jagielski 220*b1cdbd2cSJim Jagielski if ( ( _pEvent->GetWindow() == &m_rLocationInput ) 221*b1cdbd2cSJim Jagielski && ( _pEvent->GetId() == VCLEVENT_EDIT_MODIFY ) 222*b1cdbd2cSJim Jagielski ) 223*b1cdbd2cSJim Jagielski { 224*b1cdbd2cSJim Jagielski impl_onLocationModified(); 225*b1cdbd2cSJim Jagielski } 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski return 0L; 228*b1cdbd2cSJim Jagielski } 229*b1cdbd2cSJim Jagielski 230*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------------- impl_getCurrentURL() const231*b1cdbd2cSJim Jagielski String DatabaseLocationInputController_Impl::impl_getCurrentURL() const 232*b1cdbd2cSJim Jagielski { 233*b1cdbd2cSJim Jagielski String sCurrentFile( m_rLocationInput.GetText() ); 234*b1cdbd2cSJim Jagielski if ( sCurrentFile.Len() ) 235*b1cdbd2cSJim Jagielski { 236*b1cdbd2cSJim Jagielski ::svt::OFileNotation aCurrentFile( sCurrentFile ); 237*b1cdbd2cSJim Jagielski sCurrentFile = aCurrentFile.get( ::svt::OFileNotation::N_URL ); 238*b1cdbd2cSJim Jagielski } 239*b1cdbd2cSJim Jagielski return sCurrentFile; 240*b1cdbd2cSJim Jagielski } 241*b1cdbd2cSJim Jagielski 242*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------------- impl_onBrowseButtonClicked()243*b1cdbd2cSJim Jagielski void DatabaseLocationInputController_Impl::impl_onBrowseButtonClicked() 244*b1cdbd2cSJim Jagielski { 245*b1cdbd2cSJim Jagielski ::sfx2::FileDialogHelper aFileDlg( 246*b1cdbd2cSJim Jagielski TemplateDescription::FILESAVE_AUTOEXTENSION, 247*b1cdbd2cSJim Jagielski WB_STDMODAL | WB_SAVEAS, 248*b1cdbd2cSJim Jagielski m_rLocationInput.GetSystemWindow() 249*b1cdbd2cSJim Jagielski ); 250*b1cdbd2cSJim Jagielski aFileDlg.SetDisplayDirectory( impl_getCurrentURL() ); 251*b1cdbd2cSJim Jagielski 252*b1cdbd2cSJim Jagielski aFileDlg.AddFilter( m_sFilterUIName, ::rtl::OUStringBuffer().appendAscii( "*." ).append( m_aFilterExtensions[0] ).makeStringAndClear() ); 253*b1cdbd2cSJim Jagielski aFileDlg.SetCurrentFilter( m_sFilterUIName ); 254*b1cdbd2cSJim Jagielski 255*b1cdbd2cSJim Jagielski if ( aFileDlg.Execute() == ERRCODE_NONE ) 256*b1cdbd2cSJim Jagielski { 257*b1cdbd2cSJim Jagielski INetURLObject aURL( aFileDlg.GetPath() ); 258*b1cdbd2cSJim Jagielski if( aURL.GetProtocol() != INET_PROT_NOT_VALID ) 259*b1cdbd2cSJim Jagielski { 260*b1cdbd2cSJim Jagielski ::svt::OFileNotation aFileNotation( aURL.GetMainURL( INetURLObject::NO_DECODE ) ); 261*b1cdbd2cSJim Jagielski m_rLocationInput.SetText( aFileNotation.get( ::svt::OFileNotation::N_SYSTEM ) ); 262*b1cdbd2cSJim Jagielski m_rLocationInput.GetModifyHdl().Call( &m_rLocationInput ); 263*b1cdbd2cSJim Jagielski // the dialog already checked for the file's existence, so we don't need to, again 264*b1cdbd2cSJim Jagielski m_bNeedExistenceCheck = false; 265*b1cdbd2cSJim Jagielski } 266*b1cdbd2cSJim Jagielski } 267*b1cdbd2cSJim Jagielski } 268*b1cdbd2cSJim Jagielski 269*b1cdbd2cSJim Jagielski // ----------------------------------------------------------------------------- impl_onLocationModified()270*b1cdbd2cSJim Jagielski void DatabaseLocationInputController_Impl::impl_onLocationModified() 271*b1cdbd2cSJim Jagielski { 272*b1cdbd2cSJim Jagielski m_bNeedExistenceCheck = true; 273*b1cdbd2cSJim Jagielski } 274*b1cdbd2cSJim Jagielski 275*b1cdbd2cSJim Jagielski //==================================================================== 276*b1cdbd2cSJim Jagielski //= DatabaseLocationInputController 277*b1cdbd2cSJim Jagielski //==================================================================== 278*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- DatabaseLocationInputController(const::comphelper::ComponentContext & _rContext,::svt::OFileURLControl & _rLocationInput,PushButton & _rBrowseButton)279*b1cdbd2cSJim Jagielski DatabaseLocationInputController::DatabaseLocationInputController( const ::comphelper::ComponentContext& _rContext, 280*b1cdbd2cSJim Jagielski ::svt::OFileURLControl& _rLocationInput, PushButton& _rBrowseButton ) 281*b1cdbd2cSJim Jagielski :m_pImpl( new DatabaseLocationInputController_Impl( _rContext, _rLocationInput, _rBrowseButton ) ) 282*b1cdbd2cSJim Jagielski { 283*b1cdbd2cSJim Jagielski } 284*b1cdbd2cSJim Jagielski 285*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- ~DatabaseLocationInputController()286*b1cdbd2cSJim Jagielski DatabaseLocationInputController::~DatabaseLocationInputController() 287*b1cdbd2cSJim Jagielski { 288*b1cdbd2cSJim Jagielski } 289*b1cdbd2cSJim Jagielski 290*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- prepareCommit()291*b1cdbd2cSJim Jagielski bool DatabaseLocationInputController::prepareCommit() 292*b1cdbd2cSJim Jagielski { 293*b1cdbd2cSJim Jagielski return m_pImpl->prepareCommit(); 294*b1cdbd2cSJim Jagielski } 295*b1cdbd2cSJim Jagielski 296*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- setURL(const String & _rURL)297*b1cdbd2cSJim Jagielski void DatabaseLocationInputController::setURL( const String& _rURL ) 298*b1cdbd2cSJim Jagielski { 299*b1cdbd2cSJim Jagielski m_pImpl->setURL( _rURL ); 300*b1cdbd2cSJim Jagielski } 301*b1cdbd2cSJim Jagielski 302*b1cdbd2cSJim Jagielski //-------------------------------------------------------------------- getURL() const303*b1cdbd2cSJim Jagielski String DatabaseLocationInputController::getURL() const 304*b1cdbd2cSJim Jagielski { 305*b1cdbd2cSJim Jagielski return m_pImpl->getURL(); 306*b1cdbd2cSJim Jagielski } 307*b1cdbd2cSJim Jagielski 308*b1cdbd2cSJim Jagielski //........................................................................ 309*b1cdbd2cSJim Jagielski } // namespace svx 310*b1cdbd2cSJim Jagielski //........................................................................ 311