diff options
author | Katarina Behrens <Katarina.Behrens@cib.de> | 2018-06-07 14:20:07 +0200 |
---|---|---|
committer | Katarina Behrens <Katarina.Behrens@cib.de> | 2018-06-18 15:27:58 +0200 |
commit | 611346f3e222a923d2eeafa7cf7e18420fcfee5b (patch) | |
tree | b332d022d81c1cb3cda48b9bd6cee96a1854e797 /vcl | |
parent | 14b7477f599fd740ddc62fea8acf3d234dc81234 (diff) |
Basic native folder picker
Change-Id: I1b77d7a1c8a4a3581554fb5c481b7d9039497ced
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/unx/kde5/KDE5FilePicker.hxx | 11 | ||||
-rw-r--r-- | vcl/unx/kde5/KDE5FilePicker2.cxx | 7 | ||||
-rw-r--r-- | vcl/unx/kde5/KDE5SalInstance.cxx | 10 | ||||
-rw-r--r-- | vcl/unx/kde5/KDE5SalInstance.hxx | 3 |
4 files changed, 26 insertions, 5 deletions
diff --git a/vcl/unx/kde5/KDE5FilePicker.hxx b/vcl/unx/kde5/KDE5FilePicker.hxx index 3a02c770eda6..d303ba30a6ac 100644 --- a/vcl/unx/kde5/KDE5FilePicker.hxx +++ b/vcl/unx/kde5/KDE5FilePicker.hxx @@ -25,6 +25,7 @@ #include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/ui/dialogs/XFilePicker3.hpp> #include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp> +#include <com/sun/star/ui/dialogs/XFolderPicker2.hpp> #include <com/sun/star/uno/XComponentContext.hpp> #include <osl/conditn.hxx> @@ -37,13 +38,15 @@ #include <QtCore/QString> #include <QtCore/QStringList> #include <QtCore/QHash> +#include <QtWidgets/QFileDialog> class QFileDialog; class QGridLayout; class QWidget; typedef ::cppu::WeakComponentImplHelper<css::ui::dialogs::XFilePicker3, - css::ui::dialogs::XFilePickerControlAccess + css::ui::dialogs::XFilePickerControlAccess, + css::ui::dialogs::XFolderPicker2 // TODO css::ui::dialogs::XFilePreview , css::lang::XInitialization, css::lang::XServiceInfo> @@ -80,7 +83,7 @@ protected: bool allowRemoteUrls; public: - explicit KDE5FilePicker(const css::uno::Reference<css::uno::XComponentContext>&); + explicit KDE5FilePicker(QFileDialog::FileMode); virtual ~KDE5FilePicker() override; void enableFolderMode(); @@ -121,6 +124,10 @@ public: virtual void SAL_CALL setLabel(sal_Int16 nControlId, const OUString& rLabel) override; virtual OUString SAL_CALL getLabel(sal_Int16 nControlId) override; + // XFolderPicker stuff + virtual OUString SAL_CALL getDirectory() override; + virtual void SAL_CALL setDescription(const OUString& rDescription) override; + /* TODO XFilePreview virtual css::uno::Sequence< sal_Int16 > SAL_CALL getSupportedImageFormats( ); diff --git a/vcl/unx/kde5/KDE5FilePicker2.cxx b/vcl/unx/kde5/KDE5FilePicker2.cxx index 93e6d503d32b..759b2fccf790 100644 --- a/vcl/unx/kde5/KDE5FilePicker2.cxx +++ b/vcl/unx/kde5/KDE5FilePicker2.cxx @@ -77,7 +77,7 @@ uno::Sequence<OUString> FilePicker_getSupportedServiceNames() // KDE5FilePicker -KDE5FilePicker::KDE5FilePicker(const uno::Reference<uno::XComponentContext>&) +KDE5FilePicker::KDE5FilePicker(QFileDialog::FileMode eMode) : KDE5FilePicker_Base(_helperMutex) , _dialog(new QFileDialog(nullptr, {}, QDir::homePath())) , _extraControls(new QWidget) @@ -94,6 +94,7 @@ KDE5FilePicker::KDE5FilePicker(const uno::Reference<uno::XComponentContext>&) QStringLiteral("webdavs"), QStringLiteral("smb"), }); + _dialog->setFileMode(eMode); setMultiSelectionMode(false); @@ -231,6 +232,10 @@ OUString SAL_CALL KDE5FilePicker::getLabel(sal_Int16 controlId) return label; } +OUString SAL_CALL KDE5FilePicker::getDirectory() { return OUString(); } + +void SAL_CALL KDE5FilePicker::setDescription(const OUString&) {} + void KDE5FilePicker::addCustomControl(sal_Int16 controlId) { const char* resId = nullptr; diff --git a/vcl/unx/kde5/KDE5SalInstance.cxx b/vcl/unx/kde5/KDE5SalInstance.cxx index ac6173e13550..37021cbe9315 100644 --- a/vcl/unx/kde5/KDE5SalInstance.cxx +++ b/vcl/unx/kde5/KDE5SalInstance.cxx @@ -49,9 +49,15 @@ SalFrame* KDE5SalInstance::CreateFrame(SalFrame* pParent, SalFrameStyleFlags nSt } uno::Reference<ui::dialogs::XFilePicker2> -KDE5SalInstance::createFilePicker(const uno::Reference<uno::XComponentContext>& xMSF) +KDE5SalInstance::createFilePicker(const uno::Reference<uno::XComponentContext>& /*xMSF*/) { - return uno::Reference<ui::dialogs::XFilePicker2>(new KDE5FilePicker(xMSF)); + return uno::Reference<ui::dialogs::XFilePicker2>(new KDE5FilePicker(QFileDialog::ExistingFile)); +} + +uno::Reference<ui::dialogs::XFolderPicker2> +KDE5SalInstance::createFolderPicker(const uno::Reference<uno::XComponentContext>& /*xMSF*/) +{ + return uno::Reference<ui::dialogs::XFolderPicker2>(new KDE5FilePicker(QFileDialog::Directory)); } bool KDE5SalInstance::IsMainThread() const { return qApp->thread() == QThread::currentThread(); } diff --git a/vcl/unx/kde5/KDE5SalInstance.hxx b/vcl/unx/kde5/KDE5SalInstance.hxx index cc7d7ad7cbce..0bf30ab8b235 100644 --- a/vcl/unx/kde5/KDE5SalInstance.hxx +++ b/vcl/unx/kde5/KDE5SalInstance.hxx @@ -36,6 +36,9 @@ public: virtual css::uno::Reference<css::ui::dialogs::XFilePicker2> createFilePicker(const css::uno::Reference<css::uno::XComponentContext>&) override; + virtual css::uno::Reference<css::ui::dialogs::XFolderPicker2> + createFolderPicker(const css::uno::Reference<css::uno::XComponentContext>&) override; + virtual bool IsMainThread() const override; }; |