[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