summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2018-06-20 11:51:35 +0200
committerKatarina Behrens <Katarina.Behrens@cib.de>2018-07-03 14:10:49 +0200
commitaeda1e0ff96007ffc69c34485cea35952fd0a222 (patch)
tree05c8c93b61b6d6e8a65900b11e8d4067e685c18a
parent998f08ee291a5dd8e8953dc463d3c8e176e80ff0 (diff)
Implement getDirectory, signal+slot
also factor some shared code out into separate func Change-Id: I49d25eeb4eb647b72dae78c42301091d198eeff4
-rw-r--r--vcl/unx/kde5/KDE5FilePicker.hxx5
-rw-r--r--vcl/unx/kde5/KDE5FilePicker2.cxx22
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