fdo#46808, Adapt ui::dialogs::FilePicker UNO service to new style
Change-Id: I1cafbfc53994e5d74241042dbd1d292ddbda67d5
diff --git a/basctl/source/basicide/baside2.cxx b/basctl/source/basicide/baside2.cxx
index 4dcc13a..7bcc2dc 100644
--- a/basctl/source/basicide/baside2.cxx
+++ b/basctl/source/basicide/baside2.cxx
@@ -34,6 +34,7 @@
#include <com/sun/star/script/ModuleType.hpp>
#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <comphelper/processfactory.hxx>
@@ -433,23 +434,15 @@ bool ModulWindow::LoadBasic()
DBG_CHKTHIS( ModulWindow, 0 );
bool bDone = false;
Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
Reference < XFilePicker > xFP;
if( xMSF.is() )
{
Sequence <Any> aServiceType(1);
aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
"com.sun.star.ui.dialogs.FilePicker", aServiceType ), UNO_QUERY );
}
Reference< uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
Reference < XFilePicker3 > xFP = FilePicker::createWithMode(xContext, TemplateDescription::FILEOPEN_SIMPLE);
if ( !aCurPath.isEmpty() )
xFP->setDisplayDirectory ( aCurPath );
Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
xFltMgr->appendFilter( "BASIC" , "*.bas" );
xFltMgr->appendFilter( IDE_RESSTR(RID_STR_FILTER_ALLFILES), OUString( FilterMask_All ) );
xFltMgr->setCurrentFilter( "BASIC" );
xFP->appendFilter( "BASIC" , "*.bas" );
xFP->appendFilter( IDE_RESSTR(RID_STR_FILTER_ALLFILES), OUString( FilterMask_All ) );
xFP->setCurrentFilter( "BASIC" );
if( xFP->execute() == RET_OK )
{
@@ -487,15 +480,8 @@ bool ModulWindow::SaveBasicSource()
DBG_CHKTHIS( ModulWindow, 0 );
bool bDone = false;
Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
Reference < XFilePicker > xFP;
if( xMSF.is() )
{
Sequence <Any> aServiceType(1);
aServiceType[0] <<= TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD;
xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
"com.sun.star.ui.dialogs.FilePicker", aServiceType ), UNO_QUERY );
}
Reference< uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
Reference < XFilePicker3 > xFP = FilePicker::createWithMode(xContext, TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD);
Reference< XFilePickerControlAccess > xFPControl(xFP, UNO_QUERY);
xFPControl->enableControl(ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, false);
@@ -506,10 +492,9 @@ bool ModulWindow::SaveBasicSource()
if ( !aCurPath.isEmpty() )
xFP->setDisplayDirectory ( aCurPath );
Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
xFltMgr->appendFilter( "BASIC", "*.bas" );
xFltMgr->appendFilter( IDE_RESSTR(RID_STR_FILTER_ALLFILES), OUString( FilterMask_All ) );
xFltMgr->setCurrentFilter( "BASIC" );
xFP->appendFilter( "BASIC", "*.bas" );
xFP->appendFilter( IDE_RESSTR(RID_STR_FILTER_ALLFILES), OUString( FilterMask_All ) );
xFP->setCurrentFilter( "BASIC" );
if( xFP->execute() == RET_OK )
{
diff --git a/basctl/source/basicide/baside3.cxx b/basctl/source/basicide/baside3.cxx
index 4d4e0bc..a23b09c 100644
--- a/basctl/source/basicide/baside3.cxx
+++ b/basctl/source/basicide/baside3.cxx
@@ -39,6 +39,7 @@
#include <com/sun/star/ucb/SimpleFileAccess.hpp>
#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <comphelper/processfactory.hxx>
@@ -689,15 +690,8 @@ bool DialogWindow::SaveDialog()
DBG_CHKTHIS( DialogWindow, 0 );
bool bDone = false;
Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
Reference < XFilePicker > xFP;
if( xMSF.is() )
{
Sequence <Any> aServiceType(1);
aServiceType[0] <<= TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD;
xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
"com.sun.star.ui.dialogs.FilePicker", aServiceType ), UNO_QUERY );
}
Reference< XComponentContext > xContext( comphelper::getProcessComponentContext() );
Reference < XFilePicker3 > xFP = FilePicker::createWithMode(xContext, TemplateDescription::FILESAVE_AUTOEXTENSION_PASSWORD);
Reference< XFilePickerControlAccess > xFPControl(xFP, UNO_QUERY);
xFPControl->enableControl(ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, false);
@@ -711,10 +705,9 @@ bool DialogWindow::SaveDialog()
xFP->setDefaultName( OUString( GetName() ) );
OUString aDialogStr(IDE_RESSTR(RID_STR_STDDIALOGNAME));
Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
xFltMgr->appendFilter( aDialogStr, String( "*.xdl" ) );
xFltMgr->appendFilter( IDE_RESSTR(RID_STR_FILTER_ALLFILES), String( FilterMask_All ) );
xFltMgr->setCurrentFilter( aDialogStr );
xFP->appendFilter( aDialogStr, String( "*.xdl" ) );
xFP->appendFilter( IDE_RESSTR(RID_STR_FILTER_ALLFILES), String( FilterMask_All ) );
xFP->setCurrentFilter( aDialogStr );
if( xFP->execute() == RET_OK )
{
@@ -723,11 +716,10 @@ bool DialogWindow::SaveDialog()
// export dialog model to xml
Reference< container::XNameContainer > xDialogModel = GetDialog();
Reference< XComponentContext > xContext( comphelper::getProcessComponentContext() );
Reference< XInputStreamProvider > xISP = ::xmlscript::exportDialogModel( xDialogModel, xContext, GetDocument().isDocument() ? GetDocument().getDocument() : Reference< frame::XModel >() );
Reference< XInputStream > xInput( xISP->createInputStream() );
Reference< XSimpleFileAccess3 > xSFI( SimpleFileAccess::create(comphelper::getProcessComponentContext()) );
Reference< XSimpleFileAccess3 > xSFI( SimpleFileAccess::create(xContext) );
Reference< XOutputStream > xOutput;
try
@@ -950,14 +942,8 @@ bool implImportDialog( Window* pWin, const OUString& rCurPath, const ScriptDocum
bool bDone = false;
Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
Reference < XFilePicker > xFP;
if( xMSF.is() )
{
Sequence <Any> aServiceType(1);
aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
"com.sun.star.ui.dialogs.FilePicker", aServiceType ), UNO_QUERY );
}
Reference< XComponentContext > xContext( comphelper::getComponentContext( xMSF ) );
Reference < XFilePicker3 > xFP = FilePicker::createWithMode(xContext, TemplateDescription::FILEOPEN_SIMPLE);
Reference< XFilePickerControlAccess > xFPControl(xFP, UNO_QUERY);
xFPControl->enableControl(ExtendedFilePickerElementIds::CHECKBOX_PASSWORD, false);
@@ -970,10 +956,9 @@ bool implImportDialog( Window* pWin, const OUString& rCurPath, const ScriptDocum
xFP->setDisplayDirectory ( aCurPath );
OUString aDialogStr(IDE_RESSTR(RID_STR_STDDIALOGNAME));
Reference< XFilterManager > xFltMgr(xFP, UNO_QUERY);
xFltMgr->appendFilter( aDialogStr, String( "*.xdl" ) );
xFltMgr->appendFilter( IDE_RESSTR(RID_STR_FILTER_ALLFILES), String( FilterMask_All ) );
xFltMgr->setCurrentFilter( aDialogStr );
xFP->appendFilter( aDialogStr, String( "*.xdl" ) );
xFP->appendFilter( IDE_RESSTR(RID_STR_FILTER_ALLFILES), String( FilterMask_All ) );
xFP->setCurrentFilter( aDialogStr );
if( xFP->execute() == RET_OK )
{
@@ -998,8 +983,6 @@ bool implImportDialog( Window* pWin, const OUString& rCurPath, const ScriptDocum
if( xSFI->exists( aCurPath ) )
xInput = xSFI->openFileRead( aCurPath );
Reference< XComponentContext > xContext(
comphelper::getComponentContext( xMSF ) );
::xmlscript::importDialogModel( xInput, xDialogModel, xContext, rDocument.isDocument() ? rDocument.getDocument() : Reference< frame::XModel >() );
OUString aXmlDlgName;
diff --git a/basctl/source/basicide/moduldl2.cxx b/basctl/source/basicide/moduldl2.cxx
index 4437f64..f07e1af 100644
--- a/basctl/source/basicide/moduldl2.cxx
+++ b/basctl/source/basicide/moduldl2.cxx
@@ -45,7 +45,7 @@
#include <sot/storage.hxx>
#include <com/sun/star/io/Pipe.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
#include <com/sun/star/ui/dialogs/FolderPicker.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
@@ -781,16 +781,10 @@ void LibPage::NewLib()
void LibPage::InsertLib()
{
// file open dialog
Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
Reference < XFilePicker > xFP;
if( xMSF.is() )
{
Sequence <Any> aServiceType(1);
aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
"com.sun.star.ui.dialogs.FilePicker", aServiceType ), UNO_QUERY );
}
Reference< uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
// file open dialog
Reference < XFilePicker3 > xFP = FilePicker::createWithMode(xContext, TemplateDescription::FILEOPEN_SIMPLE);
xFP->setTitle( String( IDEResId( RID_STR_APPENDLIBS ) ) );
// filter
@@ -852,27 +846,24 @@ void LibPage::InsertLib()
aDlgURLObj.setBase( aDlgBase );
}
if ( xMSF.is() )
Reference< XSimpleFileAccess3 > xSFA( SimpleFileAccess::create(comphelper::getProcessComponentContext()) );
OUString aModURL( aModURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
if ( xSFA->exists( aModURL ) )
{
Reference< XSimpleFileAccess3 > xSFA( SimpleFileAccess::create(comphelper::getProcessComponentContext()) );
Sequence <Any> aSeqModURL(1);
aSeqModURL[0] <<= aModURL;
xModLibContImport = Reference< script::XLibraryContainer2 >( xMSF->createInstanceWithArguments(
"com.sun.star.script.DocumentScriptLibraryContainer", aSeqModURL ), UNO_QUERY );
}
OUString aModURL( aModURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
if ( xSFA->exists( aModURL ) )
{
Sequence <Any> aSeqModURL(1);
aSeqModURL[0] <<= aModURL;
xModLibContImport = Reference< script::XLibraryContainer2 >( xMSF->createInstanceWithArguments(
"com.sun.star.script.DocumentScriptLibraryContainer", aSeqModURL ), UNO_QUERY );
}
OUString aDlgURL( aDlgURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
if ( xSFA->exists( aDlgURL ) )
{
Sequence <Any> aSeqDlgURL(1);
aSeqDlgURL[0] <<= aDlgURL;
xDlgLibContImport = Reference< script::XLibraryContainer2 >( xMSF->createInstanceWithArguments(
"com.sun.star.script.DocumentDialogLibraryContainer", aSeqDlgURL ), UNO_QUERY );
}
OUString aDlgURL( aDlgURLObj.GetMainURL( INetURLObject::NO_DECODE ) );
if ( xSFA->exists( aDlgURL ) )
{
Sequence <Any> aSeqDlgURL(1);
aSeqDlgURL[0] <<= aDlgURL;
xDlgLibContImport = Reference< script::XLibraryContainer2 >( xMSF->createInstanceWithArguments(
"com.sun.star.script.DocumentDialogLibraryContainer", aSeqDlgURL ), UNO_QUERY );
}
if ( xModLibContImport.is() || xDlgLibContImport.is() )
@@ -1253,16 +1244,11 @@ Reference< XProgressHandler > OLibCommandEnvironment::getProgressHandler()
void LibPage::ExportAsPackage( const String& aLibName )
{
// file open dialog
Reference< lang::XMultiServiceFactory > xMSF( ::comphelper::getProcessServiceFactory() );
Reference< uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
Reference< task::XInteractionHandler2 > xHandler( task::InteractionHandler::createWithParent(xContext, 0) );
Reference< XSimpleFileAccess3 > xSFA = SimpleFileAccess::create(xContext);
Reference < XFilePicker > xFP;
Sequence <Any> aServiceType(1);
aServiceType[0] <<= TemplateDescription::FILESAVE_SIMPLE;
xFP = Reference< XFilePicker >( xMSF->createInstanceWithArguments(
"com.sun.star.ui.dialogs.FilePicker", aServiceType ), UNO_QUERY );
Reference < XFilePicker3 > xFP = FilePicker::createWithMode(xContext, TemplateDescription::FILESAVE_SIMPLE);
xFP->setTitle( String( IDEResId( RID_STR_EXPORTPACKAGE ) ) );
diff --git a/cui/source/dialogs/insdlg.cxx b/cui/source/dialogs/insdlg.cxx
index 4163afc..36253d3 100644
--- a/cui/source/dialogs/insdlg.cxx
+++ b/cui/source/dialogs/insdlg.cxx
@@ -19,7 +19,7 @@
#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
@@ -112,40 +112,28 @@ IMPL_LINK_INLINE_END( SvInsertOleDlg, DoubleClickHdl, ListBox *, pListBox )
IMPL_LINK_NOARG(SvInsertOleDlg, BrowseHdl)
{
Reference< XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
if( xFactory.is() )
Reference< XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
Reference< XFilePicker3 > xFilePicker = FilePicker::createWithMode(xContext, TemplateDescription::FILEOPEN_SIMPLE);
// add filter
try
{
Reference< XFilePicker > xFilePicker( xFactory->createInstance( "com.sun.star.ui.dialogs.FilePicker" ), UNO_QUERY );
DBG_ASSERT( xFilePicker.is(), "could not get FilePicker service" );
xFilePicker->appendFilter(
OUString(),
OUString( "*.*" )
);
}
catch( const IllegalArgumentException& )
{
DBG_ASSERT( 0, "caught IllegalArgumentException when registering filter\n" );
}
Reference< XInitialization > xInit( xFilePicker, UNO_QUERY );
Reference< XFilterManager > xFilterMgr( xFilePicker, UNO_QUERY );
if( xInit.is() && xFilePicker.is() && xFilterMgr.is() )
{
Sequence< Any > aServiceType( 1 );
aServiceType[0] <<= TemplateDescription::FILEOPEN_SIMPLE;
xInit->initialize( aServiceType );
// add filter
try
{
xFilterMgr->appendFilter(
OUString(),
OUString( "*.*" )
);
}
catch( IllegalArgumentException& )
{
DBG_ASSERT( 0, "caught IllegalArgumentException when registering filter\n" );
}
if( xFilePicker->execute() == ExecutableDialogResults::OK )
{
Sequence< OUString > aPathSeq( xFilePicker->getFiles() );
INetURLObject aObj( aPathSeq[0] );
m_pEdFilepath->SetText( aObj.PathToFileName() );
}
}
if( xFilePicker->execute() == ExecutableDialogResults::OK )
{
Sequence< OUString > aPathSeq( xFilePicker->getFiles() );
INetURLObject aObj( aPathSeq[0] );
m_pEdFilepath->SetText( aObj.PathToFileName() );
}
return 0;
diff --git a/cui/source/options/personalization.cxx b/cui/source/options/personalization.cxx
index 14e071f..f1ba980 100644
--- a/cui/source/options/personalization.cxx
+++ b/cui/source/options/personalization.cxx
@@ -24,7 +24,7 @@
#include <com/sun/star/ucb/SimpleFileAccess.hpp>
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
@@ -209,13 +209,9 @@ void SvxPersonalizationTabPage::Reset( const SfxItemSet & )
IMPL_LINK( SvxPersonalizationTabPage, SelectBackground, PushButton*, /*pButton*/ )
{
uno::Reference< lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
if ( !xFactory.is() )
return 0;
uno::Reference< uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
uno::Reference< ui::dialogs::XFilePicker > xFilePicker( xFactory->createInstance( "com.sun.star.ui.dialogs.FilePicker" ), uno::UNO_QUERY );
if ( !xFilePicker.is() )
return 0;
uno::Reference< ui::dialogs::XFilePicker3 > xFilePicker = ui::dialogs::FilePicker::createDefault(xContext);
xFilePicker->setMultiSelectionMode( false );
@@ -223,9 +219,7 @@ IMPL_LINK( SvxPersonalizationTabPage, SelectBackground, PushButton*, /*pButton*/
if ( xController.is() )
xController->setValue( ui::dialogs::ExtendedFilePickerElementIds::CHECKBOX_PREVIEW, 0, uno::makeAny( sal_True ) );
uno::Reference< ui::dialogs::XFilterManager > xFilterMgr( xFilePicker, uno::UNO_QUERY );
if ( xFilterMgr.is() )
xFilterMgr->appendFilter( "Background images (*.jpg;*.png)", "*.jpg;*.png" ); // TODO localize
xFilePicker->appendFilter( "Background images (*.jpg;*.png)", "*.jpg;*.png" ); // TODO localize
while ( xFilePicker->execute() == ui::dialogs::ExecutableDialogResults::OK )
{
diff --git a/desktop/source/deployment/gui/dp_gui_dialog2.cxx b/desktop/source/deployment/gui/dp_gui_dialog2.cxx
index 696e5e7..643e851 100644
--- a/desktop/source/deployment/gui/dp_gui_dialog2.cxx
+++ b/desktop/source/deployment/gui/dp_gui_dialog2.cxx
@@ -63,7 +63,7 @@
#include "com/sun/star/ui/dialogs/ExecutableDialogResults.hpp"
#include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
#include "com/sun/star/ui/dialogs/XFilePicker.hpp"
#include "com/sun/star/ui/dialogs/FilePicker.hpp"
#include "com/sun/star/ui/dialogs/XFilterManager.hpp"
#include "com/sun/star/uno/Any.hxx"
@@ -886,12 +886,9 @@ bool ExtMgrDialog::acceptLicense( const uno::Reference< deployment::XPackage > &
//------------------------------------------------------------------------------
uno::Sequence< OUString > ExtMgrDialog::raiseAddPicker()
{
const uno::Any mode( static_cast< sal_Int16 >( ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE ) );
const uno::Reference< uno::XComponentContext > xContext( m_pManager->getContext() );
const uno::Reference< ui::dialogs::XFilePicker > xFilePicker(
xContext->getServiceManager()->createInstanceWithArgumentsAndContext(
"com.sun.star.ui.dialogs.FilePicker",
uno::Sequence< uno::Any >( &mode, 1 ), xContext ), uno::UNO_QUERY_THROW );
const uno::Reference< ui::dialogs::XFilePicker3 > xFilePicker =
ui::dialogs::FilePicker::createWithMode(xContext, ui::dialogs::TemplateDescription::FILEOPEN_SIMPLE);
xFilePicker->setTitle( m_sAddPackages );
if ( m_sLastFolderURL.Len() )
@@ -927,15 +924,14 @@ uno::Sequence< OUString > ExtMgrDialog::raiseAddPicker()
}
}
const uno::Reference< ui::dialogs::XFilterManager > xFilterManager( xFilePicker, uno::UNO_QUERY_THROW );
// All files at top:
xFilterManager->appendFilter( StrAllFiles::get(), "*.*" );
xFilePicker->appendFilter( StrAllFiles::get(), "*.*" );
// then supported ones:
t_string2string::const_iterator iPos( title2filter.begin() );
const t_string2string::const_iterator iEnd( title2filter.end() );
for ( ; iPos != iEnd; ++iPos ) {
try {
xFilterManager->appendFilter( iPos->first, iPos->second );
xFilePicker->appendFilter( iPos->first, iPos->second );
}
catch (const lang::IllegalArgumentException & exc) {
OSL_FAIL( ::rtl::OUStringToOString(
@@ -943,7 +939,7 @@ uno::Sequence< OUString > ExtMgrDialog::raiseAddPicker()
(void) exc;
}
}
xFilterManager->setCurrentFilter( sDefaultFilter );
xFilePicker->setCurrentFilter( sDefaultFilter );
if ( xFilePicker->execute() != ui::dialogs::ExecutableDialogResults::OK )
return uno::Sequence<OUString>(); // cancelled
diff --git a/fpicker/source/aqua/SalAquaFilePicker.hxx b/fpicker/source/aqua/SalAquaFilePicker.hxx
index 608c185..fbf7ac7 100644
--- a/fpicker/source/aqua/SalAquaFilePicker.hxx
+++ b/fpicker/source/aqua/SalAquaFilePicker.hxx
@@ -20,13 +20,9 @@
#ifndef _SALAQUAFILEPICKER_HXX_
#define _SALAQUAFILEPICKER_HXX_
#include <cppuhelper/compbase8.hxx>
#include <com/sun/star/util/XCancellable.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <cppuhelper/compbase3.hxx>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker3.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/beans/StringPair.hpp>
@@ -53,14 +49,9 @@
class SalAquaFilePicker :
public SalAquaPicker,
public cppu::WeakComponentImplHelper8<
::com::sun::star::ui::dialogs::XFilterManager,
::com::sun::star::ui::dialogs::XFilterGroupManager,
public cppu::WeakComponentImplHelper3<
::com::sun::star::ui::dialogs::XFilePicker3,
::com::sun::star::ui::dialogs::XFilePickerControlAccess,
::com::sun::star::ui::dialogs::XFilePickerNotifier,
::com::sun::star::lang::XInitialization,
::com::sun::star::util::XCancellable,
::com::sun::star::lang::XEventListener,
::com::sun::star::lang::XServiceInfo >
{
public:
diff --git a/fpicker/source/aqua/SalAquaFilePicker.mm b/fpicker/source/aqua/SalAquaFilePicker.mm
index fc7562b..6635548 100644
--- a/fpicker/source/aqua/SalAquaFilePicker.mm
+++ b/fpicker/source/aqua/SalAquaFilePicker.mm
@@ -92,11 +92,12 @@ namespace
// constructor
//-----------------------------------------------------------------------------------------
SalAquaFilePicker::SalAquaFilePicker( const uno::Reference<lang::XMultiServiceFactory>& xServiceMgr ) :
cppu::WeakComponentImplHelper8<XFilterManager, XFilterGroupManager, XFilePickerControlAccess, XFilePickerNotifier,
lang::XInitialization, util::XCancellable, lang::XEventListener, lang::XServiceInfo>( m_rbHelperMtx )
, m_xServiceMgr( xServiceMgr )
, m_pFilterHelper( NULL )
SalAquaFilePicker::SalAquaFilePicker( const uno::Reference<lang::XMultiServiceFactory>& xServiceMgr )
: cppu::WeakComponentImplHelper2<
XFilePicker3,
lang::XServiceInfo>( m_rbHelperMtx )
, m_xServiceMgr( xServiceMgr )
, m_pFilterHelper( NULL )
{
DBG_PRINT_ENTRY(CLASS_NAME, __func__);
diff --git a/fpicker/source/win32/filepicker/FilePicker.cxx b/fpicker/source/win32/filepicker/FilePicker.cxx
index cc6691e..09924f5 100644
--- a/fpicker/source/win32/filepicker/FilePicker.cxx
+++ b/fpicker/source/win32/filepicker/FilePicker.cxx
@@ -67,16 +67,9 @@ namespace
//-----------------------------------------------------------------------------------------
CFilePicker::CFilePicker( const uno::Reference<lang::XMultiServiceFactory>& xServiceMgr) :
cppu::WeakComponentImplHelper10<
XFilterManager,
XFilterGroupManager,
XFilePickerControlAccess,
XFilePickerNotifier,
XFilePreview,
cppu::WeakComponentImplHelper3<
XFilePicker2,
lang::XInitialization,
util::XCancellable,
lang::XEventListener,
XFilePicker3,
lang::XServiceInfo>(m_rbHelperMtx),
m_xServiceMgr(xServiceMgr),
m_aAsyncEventNotifier(rBHelper)
diff --git a/fpicker/source/win32/filepicker/FilePicker.hxx b/fpicker/source/win32/filepicker/FilePicker.hxx
index 4e84d48..059c81f 100644
--- a/fpicker/source/win32/filepicker/FilePicker.hxx
+++ b/fpicker/source/win32/filepicker/FilePicker.hxx
@@ -20,17 +20,12 @@
#ifndef _FILEPICKER_HXX_
#define _FILEPICKER_HXX_
#include <cppuhelper/compbase10.hxx>
#include <cppuhelper/compbase5.hxx>
#include <osl/mutex.hxx>
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker2.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker3.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/ui/dialogs/XFilePreview.hpp>
#include <com/sun/star/util/XCancellable.hpp>
#include "asynceventnotifier.hxx"
#include "eventnotification.hxx"
@@ -59,16 +54,11 @@ protected:
class CFilePicker :
public CFilePickerDummy,
public cppu::WeakComponentImplHelper10<
::com::sun::star::ui::dialogs::XFilterManager,
::com::sun::star::ui::dialogs::XFilterGroupManager,
::com::sun::star::ui::dialogs::XFilePickerControlAccess,
::com::sun::star::ui::dialogs::XFilePickerNotifier,
::com::sun::star::ui::dialogs::XFilePreview,
public cppu::WeakComponentImplHelper5<
::com::sun::star::ui::dialogs::XFilePicker2,
::com::sun::star::lang::XInitialization,
::com::sun::star::util::XCancellable,
::com::sun::star::lang::XEventListener,
::com::sun::star::ui::dialogs::XFilePicker3,
::com::sun::star::ui::dialogs::XFilePickerControlAccess,
::com::sun::star::ui::dialogs::XFilePreview,
::com::sun::star::lang::XServiceInfo >
{
public:
diff --git a/fpicker/source/win32/filepicker/VistaFilePicker.hxx b/fpicker/source/win32/filepicker/VistaFilePicker.hxx
index 0fdd42d..edb7eaf 100644
--- a/fpicker/source/win32/filepicker/VistaFilePicker.hxx
+++ b/fpicker/source/win32/filepicker/VistaFilePicker.hxx
@@ -27,16 +27,11 @@
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker2.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker3.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/ui/dialogs/XFilePreview.hpp>
#include <com/sun/star/util/XCancellable.hpp>
#include <cppuhelper/compbase10.hxx>
#include <cppuhelper/compbase5.hxx>
#include <cppuhelper/basemutex.hxx>
#include <rtl/ustring.hxx>
@@ -48,16 +43,11 @@ namespace vista{
// types
//-----------------------------------------------------------------------------
typedef ::cppu::WeakComponentImplHelper10<
typedef ::cppu::WeakComponentImplHelper5<
css::ui::dialogs::XFilePicker2,
css::ui::dialogs::XFilterManager,
css::ui::dialogs::XFilterGroupManager,
css::ui::dialogs::XFilePicker3,
css::ui::dialogs::XFilePickerControlAccess,
css::ui::dialogs::XFilePickerNotifier,
css::ui::dialogs::XFilePreview,
css::lang::XInitialization,
css::util::XCancellable,
css::lang::XEventListener,
css::lang::XServiceInfo > TVistaFilePickerBase;
//-----------------------------------------------------------------------------
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
index e088dd5..1d7f4bb 100644
--- a/offapi/UnoApi_offapi.mk
+++ b/offapi/UnoApi_offapi.mk
@@ -348,6 +348,7 @@ $(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/ui,\
WindowStateConfiguration \
))
$(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/ui/dialogs,\
FilePicker \
FolderPicker \
Wizard \
))
@@ -1480,7 +1481,6 @@ $(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star/ui,\
UIElementSettings \
))
$(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star/ui/dialogs,\
FilePicker \
FilterOptionsDialog \
))
$(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star/util,\
@@ -3926,6 +3926,7 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/ui/dialogs,\
XExecutableDialog \
XFilePicker \
XFilePicker2 \
XFilePicker3 \
XFilePickerControlAccess \
XFilePickerListener \
XFilePickerNotifier \
diff --git a/offapi/com/sun/star/ui/dialogs/FilePicker.idl b/offapi/com/sun/star/ui/dialogs/FilePicker.idl
index 30809d2..39cd6511 100644
--- a/offapi/com/sun/star/ui/dialogs/FilePicker.idl
+++ b/offapi/com/sun/star/ui/dialogs/FilePicker.idl
@@ -20,9 +20,7 @@
#ifndef __com_sun_star_ui_dialogs_FilePicker_idl__
#define __com_sun_star_ui_dialogs_FilePicker_idl__
#include <com/sun/star/lang/XComponent.idl>
#include <com/sun/star/lang/XInitialization.idl>
#include <com/sun/star/util/XCancellable.idl>
#include <com/sun/star/ui/dialogs/XFilePicker3.idl>
module com { module sun { module star { module ui { module dialogs {
@@ -38,50 +36,9 @@ module com { module sun { module star { module ui { module dialogs {
@see XFilePicker
*/
published interface XFilePicker;
published interface XFilePickerNotifier;
published interface XFilePickerControlAccess;
published interface XFilterManager;
published interface XFilePreview;
published interface XFilterGroupManager;
published service FilePicker
published service FilePicker : XFilePicker3
{
/** Allows to associate a help URL with the file picker instance.
*/
[optional, property] string HelpURL;
/** Provides access to the basic FilePicker functionality.
*/
interface XFilePicker;
/** Provides the ability to request notifications about changes.
*/
interface XFilePickerNotifier;
/** Provides the ability to add different filter, query for the current
filters and set a current filter
*/
interface XFilterManager;
/** Provides the ability to show a preview of a selected file
*/
[optional] interface XFilePreview;
/** Provides the ability manage additional controls (checkboxes, listboxes etc.)
offered by an extended FilePicker, these controls extend the subset of
common controls that a FilePicker usually supports.
@see com::sun::star::ui::dialogs::CommonFilePickerElementIds
@see com::sun::star::ui::dialogs::ExtendedFilePickerElementIds
@deprecated
*/
[optional] interface XFilePickerControlAccess;
/** An interface which allows manipulation of groups of filters
*/
[optional] interface XFilterGroupManager;
createDefault();
/** Provides the ability to choose between different custom templates that
do extend the subset of common controls a FilePicker usually supports.
@@ -99,17 +56,7 @@ published service FilePicker
@see com::sun::star::ui::dialogs::TemplateDescription
*/
[optional] interface com::sun::star::lang::XInitialization;
/** For canceling a running dialog instance.
<p>This may be useful for automatic test tools for instance.</p>
*/
[optional] interface com::sun::star::util::XCancellable;
/** For shutdown and listener support.
*/
interface com::sun::star::lang::XComponent;
createWithMode([in] short Mode);
};
diff --git a/offapi/com/sun/star/ui/dialogs/XFilePicker3.idl b/offapi/com/sun/star/ui/dialogs/XFilePicker3.idl
new file mode 100644
index 0000000..c33e8eb
--- /dev/null
+++ b/offapi/com/sun/star/ui/dialogs/XFilePicker3.idl
@@ -0,0 +1,78 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#ifndef __com_sun_star_ui_dialogs_XFilePicker3_idl__
#define __com_sun_star_ui_dialogs_XFilePicker3_idl__
#include <com/sun/star/lang/XComponent.idl>
#include <com/sun/star/util/XCancellable.idl>
#include <com/sun/star/ui/dialogs/XFilePicker.idl>
#include <com/sun/star/ui/dialogs/XFilePickerNotifier.idl>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.idl>
#include <com/sun/star/ui/dialogs/XFilterManager.idl>
#include <com/sun/star/ui/dialogs/XFilePreview.idl>
#include <com/sun/star/ui/dialogs/XFilterGroupManager.idl>
module com { module sun { module star { module ui { module dialogs {
/**
Provides unified interface for FilePicker service.
@since LibreOffice 4.1
*/
published interface XFilePicker3
{
interface XFilePicker;
/** Provides the ability to request notifications about changes.
*/
interface XFilePickerNotifier; // extends XEventListener
/** Provides the ability to add different filter, query for the current
filters and set a current filter
*/
interface XFilterManager;
/** Provides the ability to show a preview of a selected file
*/
[optional] interface XFilePreview;
/** An interface which allows manipulation of groups of filters
*/
interface XFilterGroupManager;
/** For canceling a running dialog instance.
<p>This may be useful for automatic test tools for instance.</p>
*/
interface com::sun::star::util::XCancellable;
/** For shutdown and listener support.
*/
interface com::sun::star::lang::XComponent;
};
}; }; }; }; };
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/offapi/type_reference/types.rdb b/offapi/type_reference/types.rdb
index cb5ccc0..720c3ec 100644
--- a/offapi/type_reference/types.rdb
+++ b/offapi/type_reference/types.rdb
Binary files differ
diff --git a/sc/source/ui/xmlsource/xmlsourcedlg.cxx b/sc/source/ui/xmlsource/xmlsourcedlg.cxx
index 00e62e9..9a366d7 100644
--- a/sc/source/ui/xmlsource/xmlsourcedlg.cxx
+++ b/sc/source/ui/xmlsource/xmlsourcedlg.cxx
@@ -25,7 +25,7 @@
#include "sfx2/objsh.hxx"
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
using namespace com::sun::star;
@@ -177,11 +177,7 @@ void ScXMLSourceDlg::SelectSourceFile()
if (!xServiceMgr.is())
return;
uno::Reference<ui::dialogs::XFilePicker> xFilePicker(
xServiceMgr->createInstance("com.sun.star.ui.dialogs.FilePicker"), uno::UNO_QUERY);
if (!xFilePicker.is())
return;
uno::Reference<ui::dialogs::XFilePicker3> xFilePicker = ui::dialogs::FilePicker::createDefault( comphelper::getComponentContext(xServiceMgr) );
if (maSrcPath.isEmpty())
// Use default path.
diff --git a/sdext/source/minimizer/fileopendialog.cxx b/sdext/source/minimizer/fileopendialog.cxx
index 4f03d40..e341b5a 100644
--- a/sdext/source/minimizer/fileopendialog.cxx
+++ b/sdext/source/minimizer/fileopendialog.cxx
@@ -27,6 +27,7 @@
#include <com/sun/star/ui/dialogs/CommonFilePickerElementIds.hpp>
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
#include <com/sun/star/ui/dialogs/FilePreviewImageFormats.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
#include <com/sun/star/ui/dialogs/ControlActions.hpp>
#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
@@ -54,14 +55,9 @@ using namespace ::com::sun::star::container;
using namespace ::com::sun::star::view;
using namespace ::com::sun::star::ui::dialogs;
FileOpenDialog::FileOpenDialog( const Reference< XComponentContext >& rxMSF ) :
mxMSF( rxMSF )
FileOpenDialog::FileOpenDialog( const Reference< XComponentContext >& rxContext )
{
Sequence< Any > aInitPropSeq( 1 );
aInitPropSeq[ 0 ] <<= (sal_Int16)TemplateDescription::FILESAVE_AUTOEXTENSION; // TemplateDescription.FILEOPEN_SIMPLE
mxFilePicker = Reference < XFilePicker >( mxMSF->getServiceManager()->createInstanceWithArgumentsAndContext(
OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ), aInitPropSeq, rxMSF ),UNO_QUERY_THROW );
mxFilePicker = FilePicker::createWithMode( rxContext, TemplateDescription::FILESAVE_AUTOEXTENSION);
mxFilePicker->setMultiSelectionMode( sal_False );
Reference< XFilePickerControlAccess > xAccess( mxFilePicker, UNO_QUERY );
@@ -77,8 +73,8 @@ FileOpenDialog::FileOpenDialog( const Reference< XComponentContext >& rxMSF ) :
}
// collecting a list of impress filters
Reference< XNameAccess > xFilters( mxMSF->getServiceManager()->createInstanceWithContext(
OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.FilterFactory" ) ), rxMSF ), UNO_QUERY_THROW );
Reference< XNameAccess > xFilters( rxContext->getServiceManager()->createInstanceWithContext(
OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.FilterFactory" ) ), rxContext ), UNO_QUERY_THROW );
Sequence< OUString > aFilterList( xFilters->getElementNames() );
for ( int i = 0; i < aFilterList.getLength(); i++ )
{
@@ -122,13 +118,12 @@ FileOpenDialog::FileOpenDialog( const Reference< XComponentContext >& rxMSF ) :
}
}
Reference< XNameAccess > xTypes( mxMSF->getServiceManager()->createInstanceWithContext(
OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.TypeDetection" ) ), rxMSF ), UNO_QUERY_THROW );
Reference< XNameAccess > xTypes( rxContext->getServiceManager()->createInstanceWithContext(
OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.TypeDetection" ) ), rxContext ), UNO_QUERY_THROW );
Sequence< OUString > aTypeList( xFilters->getElementNames() );
// mxFilePicker->setDefaultName( );
Reference< XFilterManager > xFilterManager( mxFilePicker, UNO_QUERY_THROW );
std::vector< FilterEntry >::iterator aIter( aFilterEntryList.begin() );
while( aIter != aFilterEntryList.end() )
{
@@ -148,13 +143,13 @@ FileOpenDialog::FileOpenDialog( const Reference< XComponentContext >& rxMSF ) :
}
if ( aExtensions.getLength() )
{
xFilterManager->appendFilter( aIter->maUIName, aExtensions[ 0 ] );
mxFilePicker->appendFilter( aIter->maUIName, aExtensions[ 0 ] );
if ( aIter->maFlags & 0x100 )
xFilterManager->setCurrentFilter( aIter->maUIName );
mxFilePicker->setCurrentFilter( aIter->maUIName );
}
}
}
catch ( Exception& )
catch ( const Exception& )
{
}
aIter++;
diff --git a/sdext/source/minimizer/fileopendialog.hxx b/sdext/source/minimizer/fileopendialog.hxx
index 244a3b49..5611d29 100644
--- a/sdext/source/minimizer/fileopendialog.hxx
+++ b/sdext/source/minimizer/fileopendialog.hxx
@@ -24,7 +24,7 @@
#include <vector>
#include <com/sun/star/beans/StringPair.hpp>
#include <com/sun/star/container/XNameAccess.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker3.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
class FileOpenDialog
@@ -42,13 +42,12 @@ class FileOpenDialog
FilterEntry() :
maFlags( 0 ) {}
};
com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext > mxMSF;
com::sun::star::uno::Reference < ::com::sun::star::ui::dialogs::XFilePicker > mxFilePicker;
com::sun::star::uno::Reference < ::com::sun::star::ui::dialogs::XFilePicker3 > mxFilePicker;
std::vector< FilterEntry > aFilterEntryList;
public :
FileOpenDialog( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxMSF );
FileOpenDialog( const com::sun::star::uno::Reference< com::sun::star::uno::XComponentContext >& rxContext );
~FileOpenDialog();
sal_Int16 execute();
diff --git a/sfx2/inc/sfx2/filedlghelper.hxx b/sfx2/inc/sfx2/filedlghelper.hxx
index 738f8e1..30ab36b 100644
--- a/sfx2/inc/sfx2/filedlghelper.hxx
+++ b/sfx2/inc/sfx2/filedlghelper.hxx
@@ -69,7 +69,6 @@ class Window;
#define FILEDIALOG_FILTER_ALL "*.*"
#define FILE_OPEN_SERVICE_NAME "com.sun.star.ui.dialogs.FilePicker"
#define FILE_OPEN_SERVICE_NAME_OOO "com.sun.star.ui.dialogs.OfficeFilePicker"
namespace sfx2 {
diff --git a/sfx2/source/dialog/filedlghelper.cxx b/sfx2/source/dialog/filedlghelper.cxx
index cf072f2..ae44fac 100644
--- a/sfx2/source/dialog/filedlghelper.cxx
+++ b/sfx2/source/dialog/filedlghelper.cxx
@@ -900,7 +900,7 @@ FileDialogHelper_Impl::FileDialogHelper_Impl(
else if ( nDialog == SFX2_IMPL_DIALOG_OOO )
pServiceName = FILE_OPEN_SERVICE_NAME_OOO;
else
pServiceName = FILE_OPEN_SERVICE_NAME;
pServiceName = "com.sun.star.ui.dialogs.FilePicker";
OUString aService = ::rtl::OUString::createFromAscii( pServiceName );
uno::Reference< XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
diff --git a/svtools/source/control/filectrl2.cxx b/svtools/source/control/filectrl2.cxx
index 58e079b..cb48f42 100644
--- a/svtools/source/control/filectrl2.cxx
+++ b/svtools/source/control/filectrl2.cxx
@@ -20,8 +20,7 @@
// this file contains code from filectrl.cxx which needs to be compiled with enabled exception hanling
#include <svtools/filectrl.hxx>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
#include <comphelper/processfactory.hxx>
#include <tools/urlobj.hxx>
#include <osl/file.h>
@@ -37,43 +36,36 @@ void FileControl::ImplBrowseFile( )
{
XubString aNewText;
const ::rtl::OUString sServiceName( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ));
Reference< XComponentContext > xContext = comphelper::getProcessComponentContext();
Reference < dialogs::XFilePicker3 > xFilePicker = dialogs::FilePicker::createDefault( xContext );
// transform the system notation text into a file URL
::rtl::OUString sSystemNotation = GetText(), sFileURL;
oslFileError nError = osl_getFileURLFromSystemPath( sSystemNotation.pData, &sFileURL.pData );
if ( nError == osl_File_E_INVAL )
sFileURL = GetText(); // #97709# Maybe URL is already a file URL...
Reference< XMultiServiceFactory > xMSF = comphelper::getProcessServiceFactory();
Reference < dialogs::XFilePicker > xFilePicker( xMSF->createInstance( sServiceName ), UNO_QUERY );
if ( xFilePicker.is() )
//#90430# Check if URL is really a file URL
::rtl::OUString aTmp;
if ( osl_getSystemPathFromFileURL( sFileURL.pData, &aTmp.pData ) == osl_File_E_None )
{
// transform the system notation text into a file URL
::rtl::OUString sSystemNotation = GetText(), sFileURL;
oslFileError nError = osl_getFileURLFromSystemPath( sSystemNotation.pData, &sFileURL.pData );
if ( nError == osl_File_E_INVAL )
sFileURL = GetText(); // #97709# Maybe URL is already a file URL...
// initially set this directory
xFilePicker->setDisplayDirectory( sFileURL );
}
//#90430# Check if URL is really a file URL
::rtl::OUString aTmp;
if ( osl_getSystemPathFromFileURL( sFileURL.pData, &aTmp.pData ) == osl_File_E_None )
if ( xFilePicker->execute() )
{
Sequence < rtl::OUString > aPathSeq = xFilePicker->getFiles();
if ( aPathSeq.getLength() )
{
// initially set this directory
xFilePicker->setDisplayDirectory( sFileURL );
}
if ( xFilePicker.is() && xFilePicker->execute() )
{
Sequence < rtl::OUString > aPathSeq = xFilePicker->getFiles();
if ( aPathSeq.getLength() )
{
aNewText = aPathSeq[0];
INetURLObject aObj( aNewText );
if ( aObj.GetProtocol() == INET_PROT_FILE )
aNewText = aObj.PathToFileName();
SetText( aNewText );
maEdit.GetModifyHdl().Call( &maEdit );
}
aNewText = aPathSeq[0];
INetURLObject aObj( aNewText );
if ( aObj.GetProtocol() == INET_PROT_FILE )
aNewText = aObj.PathToFileName();
SetText( aNewText );
maEdit.GetModifyHdl().Call( &maEdit );
}
}
else
ShowServiceNotAvailableError( this, sServiceName, sal_True );
}
catch( const Exception& )
{
diff --git a/vcl/source/gdi/print3.cxx b/vcl/source/gdi/print3.cxx
index 3dd424a..d47aa92 100644
--- a/vcl/source/gdi/print3.cxx
+++ b/vcl/source/gdi/print3.cxx
@@ -33,7 +33,7 @@
#include "tools/urlobj.hxx"
#include "com/sun/star/container/XNameAccess.hpp"
#include "com/sun/star/ui/dialogs/XFilePicker.hpp"
#include "com/sun/star/ui/dialogs/FilePicker.hpp"
#include "com/sun/star/ui/dialogs/XFilterManager.hpp"
#include "com/sun/star/ui/dialogs/TemplateDescription.hpp"
#include "com/sun/star/ui/dialogs/ExecutableDialogResults.hpp"
@@ -215,55 +215,42 @@ static rtl::OUString queryFile( Printer* pPrinter )
{
rtl::OUString aResult;
uno::Reference< lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
if( xFactory.is() )
{
uno::Sequence< uno::Any > aTempl( 1 );
aTempl.getArray()[0] <<= ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION;
uno::Reference< ui::dialogs::XFilePicker > xFilePicker(
xFactory->createInstanceWithArguments(
::rtl::OUString( "com.sun.star.ui.dialogs.FilePicker" ),
aTempl ), uno::UNO_QUERY );
DBG_ASSERT( xFilePicker.is(), "could not get FilePicker service" );
uno::Reference< uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
uno::Reference< ui::dialogs::XFilePicker3 > xFilePicker = ui::dialogs::FilePicker::createWithMode(xContext, ui::dialogs::TemplateDescription::FILESAVE_AUTOEXTENSION);
uno::Reference< ui::dialogs::XFilterManager > xFilterMgr( xFilePicker, uno::UNO_QUERY );
if( xFilePicker.is() && xFilterMgr.is() )
{
try
{
try
{
#ifdef UNX
// add PostScript and PDF
bool bPS = true, bPDF = true;
if( pPrinter )
{
if( pPrinter->GetCapabilities( PRINTER_CAPABILITIES_PDF ) )
bPS = false;
else
bPDF = false;
}
if( bPS )
xFilterMgr->appendFilter( OUString( "PostScript" ), OUString( "*.ps" ) );
if( bPDF )
xFilterMgr->appendFilter( OUString( "Portable Document Format" ), OUString( "*.pdf" ) );
// add PostScript and PDF
bool bPS = true, bPDF = true;
if( pPrinter )
{
if( pPrinter->GetCapabilities( PRINTER_CAPABILITIES_PDF ) )
bPS = false;
else
bPDF = false;
}
if( bPS )
xFilePicker->appendFilter( OUString( "PostScript" ), OUString( "*.ps" ) );
if( bPDF )
xFilePicker->appendFilter( OUString( "Portable Document Format" ), OUString( "*.pdf" ) );
#elif defined WNT
(void)pPrinter;
xFilterMgr->appendFilter( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.PRN" ) ), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.prn" ) ) );
xFilePicker->appendFilter( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.PRN" ) ), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "*.prn" ) ) );
#endif
// add arbitrary files
xFilterMgr->appendFilter(VclResId(SV_STDTEXT_ALLFILETYPES), "*.*");
}
catch (const lang::IllegalArgumentException&)
{
SAL_WARN( "vcl.gdi", "caught IllegalArgumentException when registering filter" );
}
// add arbitrary files
xFilePicker->appendFilter(VclResId(SV_STDTEXT_ALLFILETYPES), "*.*");
}
catch (const lang::IllegalArgumentException&)
{
SAL_WARN( "vcl.gdi", "caught IllegalArgumentException when registering filter" );
}
if( xFilePicker->execute() == ui::dialogs::ExecutableDialogResults::OK )
{
uno::Sequence< ::rtl::OUString > aPathSeq( xFilePicker->getFiles() );
INetURLObject aObj( aPathSeq[0] );
aResult = aObj.PathToFileName();
}
}
if( xFilePicker->execute() == ui::dialogs::ExecutableDialogResults::OK )
{
uno::Sequence< ::rtl::OUString > aPathSeq( xFilePicker->getFiles() );
INetURLObject aObj( aPathSeq[0] );
aResult = aObj.PathToFileName();
}
return aResult;
}
diff --git a/vcl/unx/kde/UnxFilePicker.cxx b/vcl/unx/kde/UnxFilePicker.cxx
index 19c9e5f..1692555 100644
--- a/vcl/unx/kde/UnxFilePicker.cxx
+++ b/vcl/unx/kde/UnxFilePicker.cxx
@@ -87,16 +87,10 @@ namespace
//////////////////////////////////////////////////////////////////////////
UnxFilePicker::UnxFilePicker( const uno::Reference<uno::XComponentContext>& )
: cppu::WeakComponentImplHelper9<
XFilterManager,
XFilterGroupManager,
XFilePickerControlAccess,
XFilePickerNotifier,
: cppu::WeakComponentImplHelper3<
// TODO XFilePreview,
XFilePicker2,
lang::XInitialization,
util::XCancellable,
lang::XEventListener,
XFilePicker3,
lang::XServiceInfo>( m_rbHelperMtx ),
m_nFilePickerPid( -1 ),
m_nFilePickerWrite( -1 ),
diff --git a/vcl/unx/kde/UnxFilePicker.hxx b/vcl/unx/kde/UnxFilePicker.hxx
index 8f11bf3..4eab183 100644
--- a/vcl/unx/kde/UnxFilePicker.hxx
+++ b/vcl/unx/kde/UnxFilePicker.hxx
@@ -20,21 +20,16 @@
#ifndef _UNXFILEPICKER_HXX_
#define _UNXFILEPICKER_HXX_
#include <cppuhelper/compbase9.hxx>
#include <cppuhelper/compbase4.hxx>
#include <osl/conditn.hxx>
#include <osl/mutex.hxx>
#include <rtl/ustrbuf.hxx>
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/ui/dialogs/XFilePreview.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker2.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker3.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/util/XCancellable.hpp>
#include <list>
@@ -51,16 +46,11 @@ protected:
class UnxFilePicker :
public UnxFilePickerDummy,
public cppu::WeakComponentImplHelper9<
::com::sun::star::ui::dialogs::XFilterManager,
::com::sun::star::ui::dialogs::XFilterGroupManager,
::com::sun::star::ui::dialogs::XFilePickerControlAccess,
::com::sun::star::ui::dialogs::XFilePickerNotifier,
public cppu::WeakComponentImplHelper4<
::com::sun::star::ui::dialogs::XFilePicker2,
::com::sun::star::ui::dialogs::XFilePicker3,
::com::sun::star::ui::dialogs::XFilePickerControlAccess,
// TODO ::com::sun::star::ui::dialogs::XFilePreview,
::com::sun::star::lang::XInitialization,
::com::sun::star::util::XCancellable,
::com::sun::star::lang::XEventListener,
::com::sun::star::lang::XServiceInfo >
{
protected:
diff --git a/vcl/unx/kde4/KDE4FilePicker.cxx b/vcl/unx/kde4/KDE4FilePicker.cxx
index 5759414..3365991 100644
--- a/vcl/unx/kde4/KDE4FilePicker.cxx
+++ b/vcl/unx/kde4/KDE4FilePicker.cxx
@@ -105,16 +105,9 @@ QString toQString(const rtl::OUString& s)
//////////////////////////////////////////////////////////////////////////
KDE4FilePicker::KDE4FilePicker( const uno::Reference<uno::XComponentContext>& )
: cppu::WeakComponentImplHelper9<
XFilterManager,
XFilterGroupManager,
XFilePickerControlAccess,
XFilePickerNotifier,
// TODO XFilePreview,
: cppu::WeakComponentImplHelper3<
XFilePicker2,
lang::XInitialization,
util::XCancellable,
lang::XEventListener,
XFilePicker3,
lang::XServiceInfo>( _helperMutex ),
_resMgr( ResMgr::CreateResMgr("fps_office") )
{
diff --git a/vcl/unx/kde4/KDE4FilePicker.hxx b/vcl/unx/kde4/KDE4FilePicker.hxx
index 6b17e1e..04c15b5 100644
--- a/vcl/unx/kde4/KDE4FilePicker.hxx
+++ b/vcl/unx/kde4/KDE4FilePicker.hxx
@@ -19,17 +19,13 @@
#pragma once
#include <cppuhelper/compbase9.hxx>
#include <cppuhelper/compbase4.hxx>
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker2.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker3.hpp>
#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/util/XCancellable.hpp>
#include <osl/conditn.hxx>
#include <osl/mutex.hxx>
@@ -46,16 +42,11 @@ class QLayout;
class ResMgr;
class KDE4FilePicker :
public cppu::WeakComponentImplHelper9<
::com::sun::star::ui::dialogs::XFilterManager,
::com::sun::star::ui::dialogs::XFilterGroupManager,
::com::sun::star::ui::dialogs::XFilePickerControlAccess,
::com::sun::star::ui::dialogs::XFilePickerNotifier,
// TODO ::com::sun::star::ui::dialogs::XFilePreview,
public cppu::WeakComponentImplHelper4<
::com::sun::star::ui::dialogs::XFilePicker2,
::com::sun::star::lang::XInitialization,
::com::sun::star::util::XCancellable,
::com::sun::star::lang::XEventListener,
::com::sun::star::ui::dialogs::XFilePicker3,
::com::sun::star::ui::dialogs::XFilePickerControlAccess,
// TODO ::com::sun::star::ui::dialogs::XFilePreview,
::com::sun::star::lang::XServiceInfo >
{
protected:
diff --git a/vcl/win/source/gdi/salprn.cxx b/vcl/win/source/gdi/salprn.cxx
index 9bc4b14..57440cd 100644
--- a/vcl/win/source/gdi/salprn.cxx
+++ b/vcl/win/source/gdi/salprn.cxx
@@ -41,7 +41,7 @@
#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
#include <com/sun/star/ui/dialogs/XFilePicker.hpp>
#include <com/sun/star/ui/dialogs/FilePicker.hpp>
#include <com/sun/star/ui/dialogs/XFilterManager.hpp>
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
@@ -1600,33 +1600,27 @@ sal_Bool WinSalPrinter::StartJob( const rtl::OUString* pFileName,
if( mpInfoPrinter->maPortName.equalsIgnoreAsciiCaseAsciiL( RTL_CONSTASCII_STRINGPARAM( "FILE:" ) ) && !(pFileName && !pFileName->isEmpty()) )
{
uno::Reference< lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
if( xFactory.is() )
{
uno::Reference< XFilePicker > xFilePicker( xFactory->createInstance(
OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.ui.dialogs.FilePicker" ) ) ),
UNO_QUERY );
DBG_ASSERT( xFilePicker.is(), "could not get FilePicker service" );
uno::Reference< uno::XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
uno::Reference< XFilePicker3 > xFilePicker = FilePicker::createDefault(xContext);
uno::Reference< XInitialization > xInit( xFilePicker, UNO_QUERY );
uno::Reference< XFilterManager > xFilterMgr( xFilePicker, UNO_QUERY );
if( xInit.is() && xFilePicker.is() && xFilterMgr.is() )
uno::Reference< XInitialization > xInit( xFilePicker, UNO_QUERY );
uno::Reference< XFilterManager > xFilterMgr( xFilePicker, UNO_QUERY );
if( xInit.is() && xFilePicker.is() && xFilterMgr.is() )
{
Sequence< Any > aServiceType( 1 );
aServiceType[0] <<= TemplateDescription::FILESAVE_SIMPLE;
xInit->initialize( aServiceType );
if( xFilePicker->execute() == ExecutableDialogResults::OK )
{
Sequence< Any > aServiceType( 1 );
aServiceType[0] <<= TemplateDescription::FILESAVE_SIMPLE;
xInit->initialize( aServiceType );
if( xFilePicker->execute() == ExecutableDialogResults::OK )
{
Sequence< OUString > aPathSeq( xFilePicker->getFiles() );
INetURLObject aObj( aPathSeq[0] );
// we're using ansi calls (StartDocA) so convert the string
aOutFileName = aObj.PathToFileName();
}
else
{
mnError = SAL_PRINTER_ERROR_ABORT;
return FALSE;
}
Sequence< OUString > aPathSeq( xFilePicker->getFiles() );
INetURLObject aObj( aPathSeq[0] );
// we're using ansi calls (StartDocA) so convert the string
aOutFileName = aObj.PathToFileName();
}
else
{
mnError = SAL_PRINTER_ERROR_ABORT;
return FALSE;
}
}
}