diff options
Diffstat (limited to 'sc')
-rw-r--r-- | sc/source/ui/vba/vbafiledialog.cxx | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/sc/source/ui/vba/vbafiledialog.cxx b/sc/source/ui/vba/vbafiledialog.cxx index f9a95cebdb87..0a3a7d33cfa9 100644 --- a/sc/source/ui/vba/vbafiledialog.cxx +++ b/sc/source/ui/vba/vbafiledialog.cxx @@ -43,7 +43,18 @@ ScVbaFileDialog::getInitialFileName() { return uno::makeAny( m_sInitialFileName void ScVbaFileDialog::setInitialFileName( const css::uno::Any& rName ) { - rName >>= m_sInitialFileName; + OUString sDefaultPath; + OUString sDefaultURL; + + if( rName >>= sDefaultPath ) + { + sal_Int32 eSuccess = osl::FileBase::getFileURLFromSystemPath( + sDefaultPath, sDefaultURL ) ; + if( eSuccess == osl::FileBase::RC::E_INVAL ) + m_sInitialFileName = sDefaultPath; // the user may gave it in URL form + else + m_sInitialFileName = sDefaultURL; + } } css::uno::Any ScVbaFileDialog::getTitle() { return uno::makeAny( m_sTitle ); } @@ -78,9 +89,10 @@ sal_Int32 ScVbaFileDialog::Show() ui::dialogs::FilePicker::createWithMode( mxContext, ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE ); - // TODO set initial directory + if( !m_sInitialFileName.isEmpty() ) + xFilePicker->setDisplayDirectory( m_sInitialFileName ); - if( xFilePicker->execute() != ui::dialogs::ExecutableDialogResults::OK) + if( xFilePicker->execute() != ui::dialogs::ExecutableDialogResults::OK ) { nRet = 0; // cancel pressed break; @@ -100,9 +112,10 @@ sal_Int32 ScVbaFileDialog::Show() uno::Reference< ui::dialogs::XFolderPicker2 > xFolderPicker = ui::dialogs::FolderPicker::create(mxContext); - // TODO set initial directory + if( !m_sInitialFileName.isEmpty() ) + xFolderPicker->setDisplayDirectory( m_sInitialFileName ); - if( xFolderPicker->execute() != ui::dialogs::ExecutableDialogResults::OK) + if( xFolderPicker->execute() != ui::dialogs::ExecutableDialogResults::OK ) { nRet = 0; // cancel pressed break; |