Warning, /utilities/skanpage/src/qml/OptionsPanel.qml is written in an unsupported language. File is not indexed.

0001 /**
0002  * SPDX-FileCopyrightText: 2021 by Alexander Stippich <a.stippich@gmx.net>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 import QtQuick 2.15
0008 import QtQuick.Controls 2.15
0009 import QtQuick.Layouts 1.1
0010 
0011 import org.kde.kirigami 2.5 as Kirigami
0012 import org.kde.skanpage 1.0
0013 
0014 ColumnLayout {
0015     id: optionPanel
0016 
0017     property int targetWidth: Math.max(_maxChildrenWidth + optionsList.ScrollBar.vertical.width,
0018                                        optionsConfiguration.implicitWidth)
0019     property int _maxChildrenWidth: 0
0020 
0021     property alias allOptionsAction: allOptionsAction
0022     property alias reselectDevicesAction: reselectDevicesAction
0023     property alias configureVisibilityAction: configureVisibilityAction
0024 
0025     property bool editMode: false
0026 
0027     Label {
0028         Layout.alignment: Qt.AlignHCenter
0029         Layout.preferredHeight: Kirigami.Units.gridUnit * 2
0030         text: i18n("Select options for quick access:")
0031         visible: editMode
0032     }
0033 
0034     ScrollView {
0035         id: optionsList
0036 
0037         Layout.fillWidth: true
0038         Layout.fillHeight: true
0039 
0040         ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
0041 
0042         ListView {
0043             model: skanpage.optionsModel
0044 
0045             enabled: skanpage.applicationState === Skanpage.ReadyForScan
0046 
0047             clip: true
0048             
0049             delegate: OptionDelegate {
0050                 modelItem: model
0051                 
0052                 width: optionsList.width - optionsList.ScrollBar.vertical.width
0053                 
0054                 editMode: optionPanel.editMode
0055                 onImplicitWidthChanged: {
0056                     if (optionPanel._maxChildrenWidth < implicitWidth) {
0057                         optionPanel._maxChildrenWidth = implicitWidth
0058                     }
0059                 }
0060             }
0061         }
0062     }
0063 
0064     Label {
0065         horizontalAlignment: Qt.AlignHCenter
0066         Layout.fillWidth: true
0067         Layout.margins: Kirigami.Units.smallSpacing
0068         wrapMode: Text.WordWrap
0069         text: skanpage.deviceVendor && skanpage.deviceModel ?
0070         i18nc("scanner device vendor and model", "%1 %2", skanpage.deviceVendor, skanpage.deviceModel) : ""
0071     }
0072 
0073     Kirigami.ActionToolBar {
0074         id: optionsConfiguration
0075         flat: false
0076         Layout.preferredHeight: Kirigami.Units.gridUnit * 2
0077         alignment: Qt.AlignCenter
0078         display: Button.IconOnly
0079         actions: [
0080             ShortcutsAction {
0081                 id: allOptionsAction
0082                 icon.name: "view-more-symbolic"
0083                 text: i18n("Show More")
0084                 shortcut: "CTRL+SPACE"
0085                 checkable: true
0086                 checked: skanpage.stateConfiguration.showAllOptions
0087                 onTriggered: skanpage.optionsModel.showAllOptions(checked)
0088             },
0089 
0090             ShortcutsAction {
0091                 id: configureVisibilityAction
0092                 icon.name: "settings-configure"
0093                 text: i18n("Configure Visibility")
0094                 checkable: true
0095                 onTriggered: {
0096                     optionPanel.editMode = checked
0097                     if (checked) {
0098                         skanpage.optionsModel.showAllOptions(checked)
0099                     } else {
0100                         skanpage.optionsModel.showAllOptions(allOptionsAction.checked)
0101                     }
0102                 }
0103             },
0104             
0105             ShortcutsAction {
0106                 id: reselectDevicesAction
0107                 icon.name: "view-refresh"
0108                 text: i18n("Reselect Scanner")
0109                 onTriggered: skanpage.reloadDevicesList()
0110                 enabled: skanpage.applicationState === Skanpage.ReadyForScan
0111             }
0112         ]
0113     }
0114 }