summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2018-06-07 14:20:07 +0200
committerKatarina Behrens <Katarina.Behrens@cib.de>2018-06-18 15:27:58 +0200
commit611346f3e222a923d2eeafa7cf7e18420fcfee5b (patch)
treeb332d022d81c1cb3cda48b9bd6cee96a1854e797 /vcl
parent14b7477f599fd740ddc62fea8acf3d234dc81234 (diff)
Basic native folder picker
Change-Id: I1b77d7a1c8a4a3581554fb5c481b7d9039497ced
Diffstat (limited to 'vcl')
-rw-r--r--vcl/unx/kde5/KDE5FilePicker.hxx11
-rw-r--r--vcl/unx/kde5/KDE5FilePicker2.cxx7
-rw-r--r--vcl/unx/kde5/KDE5SalInstance.cxx10
-rw-r--r--vcl/unx/kde5/KDE5SalInstance.hxx3
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;
};