summaryrefslogtreecommitdiff
path: root/svx/source/form/databaselocationinput.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/source/form/databaselocationinput.cxx')
-rw-r--r--svx/source/form/databaselocationinput.cxx216
1 files changed, 0 insertions, 216 deletions
diff --git a/svx/source/form/databaselocationinput.cxx b/svx/source/form/databaselocationinput.cxx
index 8b90fb2cd7d9..a7af41882767 100644
--- a/svx/source/form/databaselocationinput.cxx
+++ b/svx/source/form/databaselocationinput.cxx
@@ -247,222 +247,6 @@ namespace svx
{
return m_pImpl->getURL();
}
-
- class SvxDatabaseLocationInputController_Impl
- {
- public:
- SvxDatabaseLocationInputController_Impl(
- const Reference<XComponentContext>& _rContext,
- ::svt::OFileURLControl& _rLocationInput,
- PushButton& _rBrowseButton
- );
- ~SvxDatabaseLocationInputController_Impl();
-
- bool prepareCommit();
- void setURL( const OUString& _rURL );
- OUString getURL() const;
-
- private:
- void impl_initFilterProperties_nothrow();
- void impl_onBrowseButtonClicked();
- OUString impl_getCurrentURL() const;
-
- DECL_LINK( OnControlAction, VclWindowEvent&, void );
-
- private:
- const Reference<XComponentContext> m_xContext;
- ::svt::OFileURLControl& m_rLocationInput;
- PushButton& m_rBrowseButton;
- Sequence< OUString > m_aFilterExtensions;
- OUString m_sFilterUIName;
- bool m_bNeedExistenceCheck;
- };
-
- SvxDatabaseLocationInputController_Impl::SvxDatabaseLocationInputController_Impl(const Reference<XComponentContext>& _rContext,
- ::svt::OFileURLControl& _rLocationInput,
- PushButton& _rBrowseButton)
- :m_xContext( _rContext )
- ,m_rLocationInput( _rLocationInput )
- ,m_rBrowseButton( _rBrowseButton )
- ,m_aFilterExtensions()
- ,m_sFilterUIName()
- ,m_bNeedExistenceCheck( true )
- {
- impl_initFilterProperties_nothrow();
-
- // forward the allowed extensions to the input control
- OUStringBuffer aExtensionList;
- for ( auto const & extension : std::as_const(m_aFilterExtensions) )
- {
- aExtensionList.append( extension );
- aExtensionList.append( ';' );
- }
- m_rLocationInput.SetFilter( aExtensionList.makeStringAndClear() );
- m_rBrowseButton.AddEventListener( LINK( this, SvxDatabaseLocationInputController_Impl, OnControlAction ) );
- m_rLocationInput.AddEventListener( LINK( this, SvxDatabaseLocationInputController_Impl, OnControlAction ) );
- }
-
- SvxDatabaseLocationInputController_Impl::~SvxDatabaseLocationInputController_Impl()
- {
- m_rBrowseButton.RemoveEventListener( LINK( this, SvxDatabaseLocationInputController_Impl, OnControlAction ) );
- m_rLocationInput.RemoveEventListener( LINK( this, SvxDatabaseLocationInputController_Impl, OnControlAction ) );
- }
-
- bool SvxDatabaseLocationInputController_Impl::prepareCommit()
- {
- OUString sURL( impl_getCurrentURL() );
- if ( sURL.isEmpty() )
- return false;
-
- // check if the name exists
- if ( m_bNeedExistenceCheck )
- {
- if ( ::utl::UCBContentHelper::Exists( sURL ) )
- {
- std::unique_ptr<weld::MessageDialog> xQueryBox(Application::CreateMessageDialog(m_rLocationInput.GetFrameWeld(),
- VclMessageType::Question, VclButtonsType::YesNo,
- SvxResId(RID_STR_ALREADYEXISTOVERWRITE)));
- if (xQueryBox->run() != RET_YES)
- return false;
- }
- }
-
- return true;
- }
-
- void SvxDatabaseLocationInputController_Impl::setURL( const OUString& _rURL )
- {
- ::svt::OFileNotation aTransformer( _rURL );
- m_rLocationInput.SetText( aTransformer.get( ::svt::OFileNotation::N_SYSTEM ) );
- }
-
- OUString SvxDatabaseLocationInputController_Impl::getURL() const
- {
- return impl_getCurrentURL();
- }
-
- void SvxDatabaseLocationInputController_Impl::impl_initFilterProperties_nothrow()
- {
- try
- {
- // get the name of the default filter for database documents
- ::utl::OConfigurationTreeRoot aConfig(
- ::utl::OConfigurationTreeRoot::createWithComponentContext(
- m_xContext,
- "/org.openoffice.Setup/Office/Factories/com.sun.star.sdb.OfficeDatabaseDocument"
- ) );
- OUString sDatabaseFilter;
- OSL_VERIFY( aConfig.getNodeValue( "ooSetupFactoryActualFilter" ) >>= sDatabaseFilter );
-
- // get the type this filter is responsible for
- Reference< XNameAccess > xFilterFactory(
- m_xContext->getServiceManager()->createInstanceWithContext("com.sun.star.document.FilterFactory", m_xContext),
- UNO_QUERY_THROW );
- ::comphelper::NamedValueCollection aFilterProperties( xFilterFactory->getByName( sDatabaseFilter ) );
- OUString sDocumentType = aFilterProperties.getOrDefault( "Type", OUString() );
-
- // get the extension(s) for this type
- Reference< XNameAccess > xTypeDetection(
- m_xContext->getServiceManager()->createInstanceWithContext("com.sun.star.document.TypeDetection", m_xContext),
- UNO_QUERY_THROW );
-
- ::comphelper::NamedValueCollection aTypeProperties( xTypeDetection->getByName( sDocumentType ) );
- m_aFilterExtensions = aTypeProperties.getOrDefault( "Extensions", m_aFilterExtensions );
- m_sFilterUIName = aTypeProperties.getOrDefault( "UIName", m_sFilterUIName );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION("svx");
- }
-
- // ensure we have at least one extension
- OSL_ENSURE( m_aFilterExtensions.hasElements(),
- "DatabaseLocationInputController_Impl::impl_initFilterProperties_nothrow: unable to determine the file extension(s)!" );
- if ( !m_aFilterExtensions.hasElements() )
- {
- m_aFilterExtensions.realloc(1);
- m_aFilterExtensions[0] = "*.odb";
- }
- }
-
- IMPL_LINK( SvxDatabaseLocationInputController_Impl, OnControlAction, VclWindowEvent&, _rEvent, void )
- {
- if ( ( _rEvent.GetWindow() == &m_rBrowseButton )
- && ( _rEvent.GetId() == VclEventId::ButtonClick )
- )
- {
- impl_onBrowseButtonClicked();
- }
-
- if ( ( _rEvent.GetWindow() == &m_rLocationInput )
- && ( _rEvent.GetId() == VclEventId::EditModify )
- )
- {
- m_bNeedExistenceCheck = true;
- }
- }
-
- OUString SvxDatabaseLocationInputController_Impl::impl_getCurrentURL() const
- {
- OUString sCurrentFile( m_rLocationInput.GetText() );
- if ( !sCurrentFile.isEmpty() )
- {
- ::svt::OFileNotation aCurrentFile( sCurrentFile );
- sCurrentFile = aCurrentFile.get( ::svt::OFileNotation::N_URL );
- }
- return sCurrentFile;
- }
-
- void SvxDatabaseLocationInputController_Impl::impl_onBrowseButtonClicked()
- {
- ::sfx2::FileDialogHelper aFileDlg(
- TemplateDescription::FILESAVE_AUTOEXTENSION,
- FileDialogFlags::NONE,
- m_rLocationInput.GetFrameWeld()
- );
- aFileDlg.SetDisplayDirectory( impl_getCurrentURL() );
-
- aFileDlg.AddFilter( m_sFilterUIName, "*." + m_aFilterExtensions[0] );
- aFileDlg.SetCurrentFilter( m_sFilterUIName );
-
- if ( aFileDlg.Execute() == ERRCODE_NONE )
- {
- INetURLObject aURL( aFileDlg.GetPath() );
- if( aURL.GetProtocol() != INetProtocol::NotValid )
- {
- ::svt::OFileNotation aFileNotation( aURL.GetMainURL( INetURLObject::DecodeMechanism::NONE ) );
- m_rLocationInput.SetText( aFileNotation.get( ::svt::OFileNotation::N_SYSTEM ) );
- m_rLocationInput.GetModifyHdl().Call( m_rLocationInput );
- // the dialog already checked for the file's existence, so we don't need to, again
- m_bNeedExistenceCheck = false;
- }
- }
- }
- SvxDatabaseLocationInputController::SvxDatabaseLocationInputController( const Reference<XComponentContext>& _rContext,
- ::svt::OFileURLControl& _rLocationInput, PushButton& _rBrowseButton )
- :m_pImpl( new SvxDatabaseLocationInputController_Impl( _rContext, _rLocationInput, _rBrowseButton ) )
- {
- }
-
- SvxDatabaseLocationInputController::~SvxDatabaseLocationInputController()
- {
- }
-
- bool SvxDatabaseLocationInputController::prepareCommit()
- {
- return m_pImpl->prepareCommit();
- }
-
- void SvxDatabaseLocationInputController::setURL( const OUString& _rURL )
- {
- m_pImpl->setURL( _rURL );
- }
-
- OUString SvxDatabaseLocationInputController::getURL() const
- {
- return m_pImpl->getURL();
- }
-
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */