11 import QtQuick.Controls 2.15 as QQC2
12 import QtQuick.Layouts 1.15
13 import org.kde.kirigami 2.11 as Kirigami
26 property list<Kirigami.PagePoolAction> actions
27 property alias stack: pageSettingStack
28 property Kirigami.PagePool pool: Kirigami.PagePool {}
30 readonly
property string title: pageSettingStack.depth < 2 ? qsTr(
"Settings") : qsTr(
"Settings — %1").arg(pageSettingStack.get(1).title)
32 property bool completed:
false
43 columnView.columnWidth: {
44 if(!pageSettingStack.completed || actions.length === 0) {
45 return Kirigami.Units.gridUnit * 6
48 for (let i = 0; i < actions.length; i++) {
49 const words = actions[i].text.split(
" ");
51 for (let j = 0; j < words.length; j++) {
52 maxWordMetrics.text = words[j]
53 const currWordWidth = Math.ceil(maxWordMetrics.advanceWidth)
54 if (currWordWidth > maxWordWidth) {
55 maxWordWidth = currWordWidth
61 const vScrollBarWidth = initialPage.contentItem.QQC2.ScrollBar.vertical.width;
64 const calcWidth = maxWordWidth + Kirigami.Units.smallSpacing * 6 + vScrollBarWidth;
65 const minWidth = Kirigami.Units.gridUnit * 6;
66 const maxWidth = Kirigami.Units.gridUnit * 8.5;
68 return Math.max(minWidth, Math.min(calcWidth, maxWidth));
70 globalToolBar.showNavigationButtons: Kirigami.ApplicationHeaderStyle.NoNavigationButtons
71 globalToolBar.style: Kirigami.Settings.isMobile ? Kirigami.ApplicationHeaderStyle.Breadcrumb : Kirigami.ApplicationHeaderStyle.None
73 signal backRequested(var event)
74 onBackRequested:
event => {
75 if (pageSettingStack.depth > 1 && !pageSettingStack.wideMode && pageSettingStack.currentIndex !== 0) {
76 event.accepted =
true;
77 pageSettingStack.pop();
81 if (pageSettingStack.depth < 2 && pageSettingStack.width >= Kirigami.Units.gridUnit * 40) {
86 initialPage: Kirigami.ScrollablePage {
87 title: qsTr(
"Settings")
95 Component.onCompleted:
if (pageSettingStack.width >= Kirigami.Units.gridUnit * 40) {
99 listview.currentIndex = 0;
101 listview.currentIndex = -1;
104 model: pageSettingStack.actions
105 delegate: pageSettingStack.wideMode ? desktopStyle : mobileStyle
113 width: parent && parent.width > 0 ? parent.width : implicitWidth
114 implicitWidth: contentItem.implicitWidth + Kirigami.Units.smallSpacing * 4
115 implicitHeight: contentItem.implicitHeight + Kirigami.Units.smallSpacing * 2
117 padding: Kirigami.Units.smallSpacing
120 highlighted: listview.currentIndex === index
121 onClicked: listview.currentIndex = index
122 contentItem: ColumnLayout {
123 spacing: Kirigami.Units.smallSpacing
126 Layout.alignment:
Qt.AlignHCenter
127 Layout.preferredWidth: Kirigami.Units.iconSizes.medium
128 Layout.preferredHeight: width
129 source: modelData.icon.name
133 Layout.fillWidth:
true
134 Layout.leftMargin: Kirigami.Units.smallSpacing
135 Layout.rightMargin: Kirigami.Units.smallSpacing
138 color: highlighted ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor
139 horizontalAlignment: Text.AlignHCenter
149 Kirigami.BasicListItem {
152 listview.currentIndex = index;
158 pageSettingStack.completed =
true;