diff options
author | Katarina Behrens <Katarina.Behrens@cib.de> | 2018-06-20 11:51:35 +0200 |
---|---|---|
committer | Katarina Behrens <Katarina.Behrens@cib.de> | 2018-07-03 14:10:49 +0200 |
commit | aeda1e0ff96007ffc69c34485cea35952fd0a222 (patch) | |
tree | 05c8c93b61b6d6e8a65900b11e8d4067e685c18a | |
parent | 998f08ee291a5dd8e8953dc463d3c8e176e80ff0 (diff) |
Implement getDirectory, signal+slot
also factor some shared code out into separate func
Change-Id: I49d25eeb4eb647b72dae78c42301091d198eeff4
-rw-r--r-- | vcl/unx/kde5/KDE5FilePicker.hxx | 5 | ||||
-rw-r--r-- | vcl/unx/kde5/KDE5FilePicker2.cxx | 22 |
2 files changed, 23 insertions, 4 deletions
diff --git a/vcl/unx/kde5/KDE5FilePicker.hxx b/vcl/unx/kde5/KDE5FilePicker.hxx index 6f175cc375cf..d1a300be014c 100644 --- a/vcl/unx/kde5/KDE5FilePicker.hxx +++ b/vcl/unx/kde5/KDE5FilePicker.hxx @@ -157,6 +157,7 @@ public: private: //add a custom control widget to the file dialog void addCustomControl(sal_Int16 controlId); + OUString implGetDirectory(); // emit XFilePickerListener controlStateChanged event void filterChanged(); @@ -171,6 +172,7 @@ Q_SIGNALS: void setDefaultNameSignal(const OUString& rName); void setDisplayDirectorySignal(const OUString& rDir); OUString getDisplayDirectorySignal(); + OUString getDirectorySignal(); void setValueSignal(sal_Int16 nControlId, sal_Int16 nControlAction, const css::uno::Any& rValue); css::uno::Any getValueSignal(sal_Int16 nControlId, sal_Int16 nControlAction); @@ -189,7 +191,8 @@ private Q_SLOTS: void setTitleSlot(const OUString& rTitle) { return setTitle(rTitle); } void setDefaultNameSlot(const OUString& rName) { return setDefaultName(rName); } void setDisplayDirectorySlot(const OUString& rDir) { return setDisplayDirectory(rDir); } - OUString getDisplayDirectorySlot() { return getDisplayDirectory(); } + OUString getDisplayDirectorySlot() { return implGetDirectory(); } + OUString getDirectorySlot() { return implGetDirectory(); } void setValueSlot(sal_Int16 nControlId, sal_Int16 nControlAction, const css::uno::Any& rValue) { return setValue(nControlId, nControlAction, rValue); diff --git a/vcl/unx/kde5/KDE5FilePicker2.cxx b/vcl/unx/kde5/KDE5FilePicker2.cxx index 56734b4d36e9..d4e6d507dd79 100644 --- a/vcl/unx/kde5/KDE5FilePicker2.cxx +++ b/vcl/unx/kde5/KDE5FilePicker2.cxx @@ -136,6 +136,8 @@ KDE5FilePicker::KDE5FilePicker(QFileDialog::FileMode eMode) &KDE5FilePicker::getCurrentFilterSlot, Qt::BlockingQueuedConnection); connect(this, &KDE5FilePicker::getSelectedFilesSignal, this, &KDE5FilePicker::getSelectedFilesSlot, Qt::BlockingQueuedConnection); + connect(this, &KDE5FilePicker::getDirectorySignal, this, + &KDE5FilePicker::getDirectorySlot, Qt::BlockingQueuedConnection); qApp->installEventFilter(this); } @@ -227,8 +229,7 @@ OUString SAL_CALL KDE5FilePicker::getDisplayDirectory() return Q_EMIT getDisplayDirectorySignal(); } - OUString dir = toOUString(_dialog->directoryUrl().url()); - return dir; + return implGetDirectory(); } uno::Sequence<OUString> SAL_CALL KDE5FilePicker::getFiles() @@ -432,7 +433,16 @@ OUString SAL_CALL KDE5FilePicker::getLabel(sal_Int16 controlId) return label; } -OUString SAL_CALL KDE5FilePicker::getDirectory() { return OUString(); } +OUString SAL_CALL KDE5FilePicker::getDirectory() +{ + if (qApp->thread() != QThread::currentThread()) + { + SolarMutexReleaser aReleaser; + return Q_EMIT getDirectorySignal(); + } + + return implGetDirectory(); +} void SAL_CALL KDE5FilePicker::setDescription(const OUString&) {} @@ -530,6 +540,12 @@ void KDE5FilePicker::addCustomControl(sal_Int16 controlId) } } +OUString KDE5FilePicker::implGetDirectory() +{ + OUString dir = toOUString(_dialog->directoryUrl().url()); + return dir; +} + void SAL_CALL KDE5FilePicker::initialize(const uno::Sequence<uno::Any>& args) { // parameter checking |