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@CIB.de>
Reviewed-on: https://gerrit.libreoffice.org/66759
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
diff --git a/vcl/unx/kde5/KDE5FilePicker2.cxx b/vcl/unx/kde5/KDE5FilePicker2.cxx
index 81ed9d0..9968d1b 100644
--- a/vcl/unx/kde5/KDE5FilePicker2.cxx
+++ b/vcl/unx/kde5/KDE5FilePicker2.cxx
@@ -47,6 +47,7 @@
#include <QtWidgets/QComboBox>
#include <QtWidgets/QFileDialog>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QWidget>
#include <QtWidgets/QApplication>
#include <KFileWidget>
@@ -434,7 +435,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)
@@ -452,7 +453,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)
@@ -471,7 +472,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;
}
@@ -543,6 +544,9 @@ void KDE5FilePicker::addCustomControl(sal_Int16 controlId)
            break;
    }

    auto resString = toQString(VclResId(resId));
    resString.replace('~', '&');

    switch (controlId)
    {
        case CHECKBOX_AUTOEXTENSION:
@@ -557,8 +561,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);
@@ -571,9 +573,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:
@@ -581,11 +580,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;
        }
    }
}

@@ -620,7 +630,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;
    }
}
@@ -654,7 +664,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;