summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorKatarina Behrens <Katarina.Behrens@cib.de>2018-06-12 16:25:25 +0200
committerKatarina Behrens <Katarina.Behrens@cib.de>2018-06-18 15:28:00 +0200
commitfeffef60794a49f5e93ad27996d704538b762324 (patch)
treea96e29a8aef13ab8bcb284ce1f565852b025a093 /vcl
parentdb62a779d7ae9a2a321b6756b72064631af6aa04 (diff)
Implement getSelectedFiles, signal+slot
this finally makes fpicker usable Change-Id: Iedf7ed8de04947ffbc0e88348c95f2a937a8e69e
Diffstat (limited to 'vcl')
-rw-r--r--vcl/unx/kde5/KDE5FilePicker.cxx2
-rw-r--r--vcl/unx/kde5/KDE5FilePicker.hxx2
-rw-r--r--vcl/unx/kde5/KDE5FilePicker2.cxx18
3 files changed, 19 insertions, 3 deletions
diff --git a/vcl/unx/kde5/KDE5FilePicker.cxx b/vcl/unx/kde5/KDE5FilePicker.cxx
index a8486bbcb6b2..2e9f3bd66752 100644
--- a/vcl/unx/kde5/KDE5FilePicker.cxx
+++ b/vcl/unx/kde5/KDE5FilePicker.cxx
@@ -55,8 +55,6 @@ void KDE5FilePicker::setDefaultName(const QString& name) { _dialog->selectUrl(QU
QString KDE5FilePicker::getDisplayDirectory() const { return _dialog->directoryUrl().url(); }
-QList<QUrl> KDE5FilePicker::getSelectedFiles() const { return _dialog->selectedUrls(); }
-
bool KDE5FilePicker::getValue(sal_Int16 controlId, sal_Int16 nControlAction) const
{
bool ret = false;
diff --git a/vcl/unx/kde5/KDE5FilePicker.hxx b/vcl/unx/kde5/KDE5FilePicker.hxx
index d4d6cae229cc..36cfb4263a11 100644
--- a/vcl/unx/kde5/KDE5FilePicker.hxx
+++ b/vcl/unx/kde5/KDE5FilePicker.hxx
@@ -181,6 +181,7 @@ Q_SIGNALS:
const css::uno::Sequence<css::beans::StringPair>& rFilters);
void setCurrentFilterSignal(const OUString& rFilter);
OUString getCurrentFilterSignal();
+ css::uno::Sequence<OUString> getSelectedFilesSignal();
private Q_SLOTS:
void setTitleSlot(const OUString& rTitle) { return setTitle(rTitle); }
@@ -203,6 +204,7 @@ private Q_SLOTS:
void setCurrentFilterSlot(const OUString& rFilter) { return setCurrentFilter(rFilter); }
OUString getCurrentFilterSlot() { return getCurrentFilter(); }
+ css::uno::Sequence<OUString> getSelectedFilesSlot() { return getFiles(); }
};
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/kde5/KDE5FilePicker2.cxx b/vcl/unx/kde5/KDE5FilePicker2.cxx
index 05e9c61976e2..da068240a502 100644
--- a/vcl/unx/kde5/KDE5FilePicker2.cxx
+++ b/vcl/unx/kde5/KDE5FilePicker2.cxx
@@ -115,6 +115,8 @@ KDE5FilePicker::KDE5FilePicker(QFileDialog::FileMode eMode)
&KDE5FilePicker::setCurrentFilterSlot, Qt::BlockingQueuedConnection);
connect(this, &KDE5FilePicker::getCurrentFilterSignal, this,
&KDE5FilePicker::getCurrentFilterSlot, Qt::BlockingQueuedConnection);
+ connect(this, &KDE5FilePicker::getSelectedFilesSignal, this,
+ &KDE5FilePicker::getSelectedFilesSlot, Qt::BlockingQueuedConnection);
qApp->installEventFilter(this);
setMultiSelectionMode(false);
@@ -187,7 +189,21 @@ uno::Sequence<OUString> SAL_CALL KDE5FilePicker::getFiles()
uno::Sequence<OUString> SAL_CALL KDE5FilePicker::getSelectedFiles()
{
- uno::Sequence<OUString> seq;
+ if (qApp->thread() != QThread::currentThread())
+ {
+ SolarMutexReleaser aReleaser;
+ return Q_EMIT getSelectedFilesSignal();
+ }
+
+ QList<QUrl> aURLs = _dialog->selectedUrls();
+ uno::Sequence<OUString> seq(aURLs.size());
+
+ size_t i = 0;
+ for (auto& aURL : aURLs)
+ {
+ seq[i++] = toOUString(aURL.toString());
+ }
+
return seq;
}