Warning, /utilities/krecorder/src/contents/ui/settings/SettingsWindow.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2022 Devin Lin <espidev@gmail.com>
0002 // SPDX-License-Identifier: GPL-3.0-or-later
0003 
0004 import QtQuick
0005 import QtQuick.Controls as Controls
0006 import QtQuick.Layouts
0007 
0008 import org.kde.kirigami as Kirigami
0009 
0010 // A settings window is used on desktop when the app is widescreen.
0011 Kirigami.ApplicationWindow {
0012     id: root
0013     title: i18n("Settings")
0014     flags: Qt.WindowStaysOnTopHint
0015     
0016     height: Kirigami.Units.gridUnit * 25
0017     width: Kirigami.Units.gridUnit * 35
0018     
0019     Kirigami.Theme.inherit: false
0020     Kirigami.Theme.colorSet: Kirigami.Theme.Window
0021     
0022     pageStack.globalToolBar.style: Kirigami.ApplicationHeaderStyle.ToolBar;
0023     pageStack.globalToolBar.showNavigationButtons: Kirigami.ApplicationHeaderStyle.ShowBackButton;
0024     pageStack.columnView.columnResizeMode: Kirigami.ColumnView.SingleColumn
0025     
0026     // pop pages when not in use
0027     Connections {
0028         target: applicationWindow().pageStack
0029         function onCurrentIndexChanged() {
0030             // wait for animation to finish before popping pages
0031             closePageTimer.restart();
0032         }
0033     }
0034     
0035     Timer {
0036         id: closePageTimer
0037         interval: 300
0038         onTriggered: {
0039             let currentIndex = applicationWindow().pageStack.currentIndex;
0040             while (applicationWindow().pageStack.depth > (currentIndex + 1) && currentIndex >= 0) {
0041                 applicationWindow().pageStack.pop();
0042             }
0043         }
0044     }
0045     
0046     pageStack.initialPage: Kirigami.ScrollablePage {
0047         topPadding: 0
0048         leftPadding: 0
0049         rightPadding: 0
0050         
0051         globalToolBarStyle: Kirigami.ApplicationHeaderStyle.None
0052         
0053         ColumnLayout {
0054             Kirigami.Separator { Layout.fillWidth: true }
0055             
0056             SettingsComponent {
0057                 Layout.topMargin: Kirigami.Units.gridUnit
0058                 Layout.fillWidth: true
0059                 onCloseRequested: dialog.close()
0060             }
0061         }
0062     }
0063 }