diff --git a/sidebar/package/contents/ui/CategoriesPage.qml b/sidebar/package/contents/ui/CategoriesPage.qml index 8c0c8411..53ee4f01 100644 --- a/sidebar/package/contents/ui/CategoriesPage.qml +++ b/sidebar/package/contents/ui/CategoriesPage.qml @@ -1,168 +1,170 @@ /* Copyright (c) 2017 Marco Martin This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ import QtQuick 2.3 import QtQuick.Layouts 1.1 import QtQuick.Controls 1.0 as QtControls import QtQuick.Controls 2.0 as QtControls2 import org.kde.kirigami 2.7 as Kirigami Kirigami.ScrollablePage { id: mainColumn Component.onCompleted: searchField.forceActiveFocus() header: Rectangle { + Kirigami.Theme.colorSet: Kirigami.Theme.Window + Kirigami.Theme.inherit: false color: Kirigami.Theme.backgroundColor width: mainColumn.width height: Math.round(Kirigami.Units.gridUnit * 2.5) RowLayout { id: searchLayout spacing: Kirigami.Units.smallSpacing anchors { fill: parent margins: Kirigami.Units.smallSpacing } QtControls.ToolButton { id: menuButton iconName: "application-menu" Layout.maximumWidth: Kirigami.Units.iconSizes.smallMedium + Kirigami.Units.smallSpacing * 2 Layout.maximumHeight: width Keys.onBacktabPressed: { root.focusPreviousRequest() } menu: ActionMenu { actions: ["configure", "help_contents", "help_about_app", "help_about_kde"] } } Kirigami.ActionTextField { id: searchField focus: true Layout.minimumHeight: Layout.maximumHeight Layout.maximumHeight: Kirigami.Units.iconSizes.smallMedium + Kirigami.Units.smallSpacing * 2 Layout.fillWidth: true placeholderText: i18n("Search...") onTextChanged: { systemsettings.categoryModel.filterRegExp = text; } rightActions: [ Kirigami.Action { iconName: LayoutMirroring.enabled ? "edit-clear-rtl" : "edit-clear" visible: searchField.text.length !== 0 onTriggered: searchField.text = "" } ] } } Kirigami.Separator { anchors { left: parent.left right: parent.right top: parent.bottom } } } background: Rectangle { color: Kirigami.Theme.viewBackgroundColor } Kirigami.Heading { anchors.centerIn: parent width: parent.width * 0.7 wrapMode: Text.WordWrap horizontalAlignment: Text.AlignHCenter text: i18nc("A search yielded no results", "No items matching your search") opacity: categoryView.count == 0 ? 0.3 : 0 Behavior on opacity { OpacityAnimator { duration: Kirigami.Units.longDuration easing.type: Easing.InOutQuad } } } ListView { id: categoryView anchors.fill: parent model: systemsettings.categoryModel currentIndex: systemsettings.activeCategory onContentYChanged: systemsettings.hideToolTip(); activeFocusOnTab: true keyNavigationWraps: true Accessible.role: Accessible.List Keys.onTabPressed: { if (applicationWindow().wideScreen) { subCategoryColumn.focus = true; } else { root.focusNextRequest(); } } section { property: "categoryDisplayRole" delegate: Kirigami.AbstractListItem { separatorVisible: false supportsMouseEvents: false RowLayout { anchors { left: parent.left right: parent.right leftMargin: Kirigami.Units.smallSpacing } QtControls2.Label { id: sectionLabel text: section Layout.minimumHeight: Math.max(implicitHeight, Kirigami.Units.iconSizes.smallMedium) elide: Text.ElideRight font.weight: Font.Bold } } } } delegate: Kirigami.BasicListItem { id: delegate icon: model.decoration iconSize: Kirigami.Units.iconSizes.medium label: model.display separatorVisible: false Accessible.role: Accessible.ListItem Accessible.name: model.display onClicked: { if (systemsettings.activeCategory == index) { root.pageStack.currentIndex = 1; } else { systemsettings.activeCategory = index; subCategoryColumn.title = model.display; } } onHoveredChanged: { if (hovered) { systemsettings.requestToolTip(index, delegate.mapToItem(root, 0, 0, width, height)); } else { systemsettings.hideToolTip(); } } onFocusChanged: { if (focus) { onCurrentIndexChanged: categoryView.positionViewAtIndex(index, ListView.Contain); } } highlighted: systemsettings.activeCategory == index Keys.onEnterPressed: clicked(); Keys.onReturnPressed: clicked(); } } }