[Libreoffice-commits] core.git: Branch 'distro/lhm/libreoffice-6-1+backports' - 2 commits - vcl/unx
Libreoffice Gerrit user
logerrit at kemper.freedesktop.org
Wed Jan 23 00:38:35 UTC 2019
vcl/unx/kde5/KDE5FilePicker.hxx | 4 +
vcl/unx/kde5/KDE5FilePicker2.cxx | 117 ++++++++++++++++++++++++++++++++++++---
2 files changed, 112 insertions(+), 9 deletions(-)
New commits:
commit d2c3a04525269f64d1056b49b11103a8bddaa546
Author: Katarina Behrens <Katarina.Behrens at cib.de>
AuthorDate: Tue Jan 22 13:43:06 2019 +0100
Commit: Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Wed Jan 23 01:38:27 2019 +0100
tdf#121129: more custom listboxes in kde5 fpicker
the following additional fpicker templates are now fully supported:
FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE
FILESAVE_AUTOEXTENSION_TEMPLATE
FILEOPEN_LINK_PREVIEW_IMAGE_ANCHOR
FILEOPEN_READONLY_VERSION
Listboxes now also have valid mnemonic labels
Change-Id: Ib7f9dd234bf2cbd0eadc1a7675ef51abcea3c532
Reviewed-on: https://gerrit.libreoffice.org/66736
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Reviewed-on: https://gerrit.libreoffice.org/66761
Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
diff --git a/vcl/unx/kde5/KDE5FilePicker2.cxx b/vcl/unx/kde5/KDE5FilePicker2.cxx
index a0bc8f1fbe1b..94f7e74bb7c9 100644
--- a/vcl/unx/kde5/KDE5FilePicker2.cxx
+++ b/vcl/unx/kde5/KDE5FilePicker2.cxx
@@ -46,6 +46,7 @@
#include <QtWidgets/QComboBox>
#include <QtWidgets/QFileDialog>
#include <QtWidgets/QGridLayout>
+#include <QtWidgets/QLabel>
#include <QtWidgets/QWidget>
#include <QtWidgets/QApplication>
#include <KFileWidget>
@@ -433,7 +434,7 @@ void SAL_CALL KDE5FilePicker::enableControl(sal_Int16 controlId, sal_Bool enable
if (_customWidgets.contains(controlId))
_customWidgets.value(controlId)->setEnabled(enable);
else
- SAL_WARN("vcl.kde5", "enable on unknown control" << controlId);
+ SAL_WARN("vcl.kde5", "enable on unknown control " << controlId);
}
void SAL_CALL KDE5FilePicker::setLabel(sal_Int16 controlId, const OUString& label)
@@ -451,7 +452,7 @@ void SAL_CALL KDE5FilePicker::setLabel(sal_Int16 controlId, const OUString& labe
cb->setText(toQString(label));
}
else
- SAL_WARN("vcl.kde5", "set label on unknown control" << controlId);
+ SAL_WARN("vcl.kde5", "set label on unknown control " << controlId);
}
OUString SAL_CALL KDE5FilePicker::getLabel(sal_Int16 controlId)
@@ -470,7 +471,7 @@ OUString SAL_CALL KDE5FilePicker::getLabel(sal_Int16 controlId)
label = toOUString(cb->text());
}
else
- SAL_WARN("vcl.kde5", "get label on unknown control" << controlId);
+ SAL_WARN("vcl.kde5", "get label on unknown control " << controlId);
return label;
}
@@ -542,6 +543,9 @@ void KDE5FilePicker::addCustomControl(sal_Int16 controlId)
break;
}
+ auto resString = toQString(VclResId(resId));
+ resString.replace('~', '&');
+
switch (controlId)
{
case CHECKBOX_AUTOEXTENSION:
@@ -556,8 +560,6 @@ void KDE5FilePicker::addCustomControl(sal_Int16 controlId)
// the checkbox is created even for CHECKBOX_AUTOEXTENSION to simplify
// code, but the checkbox is hidden and ignored
bool hidden = controlId == CHECKBOX_AUTOEXTENSION;
- auto resString = toQString(VclResId(resId));
- resString.replace('~', '&');
auto widget = new QCheckBox(resString, _extraControls);
widget->setHidden(hidden);
@@ -570,9 +572,6 @@ void KDE5FilePicker::addCustomControl(sal_Int16 controlId)
break;
}
case PUSHBUTTON_PLAY:
- case LISTBOX_VERSION:
- case LISTBOX_TEMPLATE:
- case LISTBOX_IMAGE_ANCHOR:
case LISTBOX_VERSION_LABEL:
case LISTBOX_TEMPLATE_LABEL:
case LISTBOX_IMAGE_TEMPLATE_LABEL:
@@ -580,11 +579,22 @@ void KDE5FilePicker::addCustomControl(sal_Int16 controlId)
case LISTBOX_FILTER_SELECTOR:
break;
+ case LISTBOX_IMAGE_ANCHOR:
case LISTBOX_IMAGE_TEMPLATE:
+ case LISTBOX_TEMPLATE:
+ case LISTBOX_VERSION:
+ {
auto widget = new QComboBox(_extraControls);
- _layout->addWidget(widget);
+ QLabel* label = new QLabel(resString);
+ label->setBuddy(widget);
+
+ QHBoxLayout* hBox = new QHBoxLayout;
+ hBox->addWidget(label);
+ hBox->addWidget(widget);
+ _layout->addLayout(hBox, _layout->rowCount(), 0, Qt::AlignLeft);
_customListboxes.insert(controlId, widget);
break;
+ }
}
}
@@ -619,7 +629,7 @@ void KDE5FilePicker::handleSetListValue(QComboBox* pQComboBox, sal_Int16 nAction
}
break;
default:
- //FIXME: insert warning here
+ SAL_WARN("vcl.kde5", "unknown action on list control " << nAction);
break;
}
}
@@ -653,7 +663,7 @@ uno::Any KDE5FilePicker::handleGetListValue(QComboBox* pQComboBox, sal_Int16 nAc
}
break;
default:
- //FIXME: insert warning here
+ SAL_WARN("vcl.kde5", "unknown action on list control " << nAction);
break;
}
return aAny;
commit d688b38cf86daa72f5fb243459aba2de99d29194
Author: Katarina Behrens <Katarina.Behrens at cib.de>
AuthorDate: Mon Jan 21 22:12:15 2019 +0100
Commit: Thorsten Behrens <Thorsten.Behrens at CIB.de>
CommitDate: Wed Jan 23 01:38:13 2019 +0100
tdf#121129: custom listboxes in kde5 fpicker, first stab
for FILESAVE_AUTOEXTENSION_TEMPLATE only so far (e.g. menu Insert >
Image)
Change-Id: I5674025788ce9bab4094f717e2b940e7cd6891e3
Reviewed-on: https://gerrit.libreoffice.org/66705
Tested-by: Jenkins
Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
(cherry picked from commit 2d33c7cb4b4835de77194650124a1cf046920f66)
Reviewed-on: https://gerrit.libreoffice.org/66760
Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
diff --git a/vcl/unx/kde5/KDE5FilePicker.hxx b/vcl/unx/kde5/KDE5FilePicker.hxx
index 8179170e831d..b3293b32a1b7 100644
--- a/vcl/unx/kde5/KDE5FilePicker.hxx
+++ b/vcl/unx/kde5/KDE5FilePicker.hxx
@@ -43,6 +43,7 @@
class QFileDialog;
class QGridLayout;
class QWidget;
+class QComboBox;
typedef ::cppu::WeakComponentImplHelper<css::ui::dialogs::XFilePicker3,
css::ui::dialogs::XFilePickerControlAccess,
@@ -71,6 +72,7 @@ protected:
//mapping of SAL control ID's to created custom controls
QHash<sal_Int16, QWidget*> _customWidgets;
+ QHash<sal_Int16, QWidget*> _customListboxes;
//widget to contain extra custom controls
QWidget* _extraControls;
@@ -157,6 +159,8 @@ public:
private:
//add a custom control widget to the file dialog
void addCustomControl(sal_Int16 controlId);
+ void handleSetListValue(QComboBox* pQComboBox, sal_Int16 nAction, const css::uno::Any& rValue);
+ css::uno::Any handleGetListValue(QComboBox* pQComboBox, sal_Int16 nAction);
OUString implGetDirectory();
// emit XFilePickerListener controlStateChanged event
diff --git a/vcl/unx/kde5/KDE5FilePicker2.cxx b/vcl/unx/kde5/KDE5FilePicker2.cxx
index 9861ac8c503e..a0bc8f1fbe1b 100644
--- a/vcl/unx/kde5/KDE5FilePicker2.cxx
+++ b/vcl/unx/kde5/KDE5FilePicker2.cxx
@@ -43,6 +43,7 @@
#include <QtGui/QClipboard>
#include <QtGui/QWindow>
#include <QtWidgets/QCheckBox>
+#include <QtWidgets/QComboBox>
#include <QtWidgets/QFileDialog>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QWidget>
@@ -376,6 +377,12 @@ void SAL_CALL KDE5FilePicker::setValue(sal_Int16 controlId, sal_Int16 nControlAc
if (cb)
cb->setChecked(bChecked);
}
+ else if (_customListboxes.contains(controlId))
+ {
+ QComboBox* cb = dynamic_cast<QComboBox*>(_customListboxes.value(controlId));
+ if (cb)
+ handleSetListValue(cb, nControlAction, value);
+ }
else
SAL_WARN("vcl.kde5", "set value on unknown control " << controlId);
}
@@ -403,6 +410,12 @@ uno::Any SAL_CALL KDE5FilePicker::getValue(sal_Int16 controlId, sal_Int16 nContr
if (cb)
value = cb->isChecked();
}
+ else if (_customListboxes.contains(controlId))
+ {
+ QComboBox* cb = dynamic_cast<QComboBox*>(_customListboxes.value(controlId));
+ if (cb)
+ return handleGetListValue(cb, nControlAction);
+ }
else
SAL_WARN("vcl.kde5", "get value on unknown control" << controlId);
@@ -559,7 +572,6 @@ void KDE5FilePicker::addCustomControl(sal_Int16 controlId)
case PUSHBUTTON_PLAY:
case LISTBOX_VERSION:
case LISTBOX_TEMPLATE:
- case LISTBOX_IMAGE_TEMPLATE:
case LISTBOX_IMAGE_ANCHOR:
case LISTBOX_VERSION_LABEL:
case LISTBOX_TEMPLATE_LABEL:
@@ -567,7 +579,84 @@ void KDE5FilePicker::addCustomControl(sal_Int16 controlId)
case LISTBOX_IMAGE_ANCHOR_LABEL:
case LISTBOX_FILTER_SELECTOR:
break;
+
+ case LISTBOX_IMAGE_TEMPLATE:
+ auto widget = new QComboBox(_extraControls);
+ _layout->addWidget(widget);
+ _customListboxes.insert(controlId, widget);
+ break;
+ }
+}
+
+void KDE5FilePicker::handleSetListValue(QComboBox* pQComboBox, sal_Int16 nAction,
+ const css::uno::Any& rValue)
+{
+ switch (nAction)
+ {
+ case ControlActions::ADD_ITEM:
+ {
+ OUString sItem;
+ rValue >>= sItem;
+ pQComboBox->addItem(toQString(sItem));
+ }
+ break;
+ case ControlActions::ADD_ITEMS:
+ {
+ Sequence<OUString> aStringList;
+ rValue >>= aStringList;
+ sal_Int32 nItemCount = aStringList.getLength();
+ for (sal_Int32 i = 0; i < nItemCount; ++i)
+ {
+ pQComboBox->addItem(toQString(aStringList[i]));
+ }
+ }
+ break;
+ case ControlActions::SET_SELECT_ITEM:
+ {
+ sal_Int32 nPos = 0;
+ rValue >>= nPos;
+ pQComboBox->setCurrentIndex(nPos);
+ }
+ break;
+ default:
+ //FIXME: insert warning here
+ break;
+ }
+}
+
+uno::Any KDE5FilePicker::handleGetListValue(QComboBox* pQComboBox, sal_Int16 nAction)
+{
+ uno::Any aAny;
+ switch (nAction)
+ {
+ case ControlActions::GET_ITEMS:
+ {
+ uno::Sequence<OUString> aItemList;
+
+ for (int i = 0; i < pQComboBox->count(); ++i)
+ {
+ aItemList[i] = toOUString(pQComboBox->itemText(i));
+ }
+ aAny <<= aItemList;
+ }
+ break;
+ case ControlActions::GET_SELECTED_ITEM:
+ {
+ OUString sItem = toOUString(pQComboBox->currentText());
+ aAny <<= sItem;
+ }
+ break;
+ case ControlActions::GET_SELECTED_ITEM_INDEX:
+ {
+ int nCurrent = pQComboBox->currentIndex();
+ aAny <<= nCurrent;
+ }
+ break;
+ default:
+ //FIXME: insert warning here
+ break;
}
+ return aAny;
}
OUString KDE5FilePicker::implGetDirectory()
More information about the Libreoffice-commits
mailing list