forked from Shinonome/dots-hyprland
settings: more icons
This commit is contained in:
@@ -2,13 +2,14 @@ import QtQuick
|
|||||||
import Quickshell
|
import Quickshell
|
||||||
import Quickshell.Io
|
import Quickshell.Io
|
||||||
import qs.modules.common
|
import qs.modules.common
|
||||||
|
import qs.modules.common.widgets
|
||||||
import qs.modules.common.functions
|
import qs.modules.common.functions
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Thumbnail image. It currently generates to the right place at the right size, but does not handle metadata/maintenance on modification.
|
* Thumbnail image. It currently generates to the right place at the right size, but does not handle metadata/maintenance on modification.
|
||||||
* See Freedesktop's spec: https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html
|
* See Freedesktop's spec: https://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html
|
||||||
*/
|
*/
|
||||||
Image {
|
StyledImage {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
property bool generateThumbnail: true
|
property bool generateThumbnail: true
|
||||||
@@ -24,7 +25,6 @@ Image {
|
|||||||
source: thumbnailPath
|
source: thumbnailPath
|
||||||
|
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
cache: false
|
|
||||||
smooth: true
|
smooth: true
|
||||||
mipmap: false
|
mipmap: false
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,6 @@ import QtQuick.Layouts
|
|||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
property bool uniform: false
|
property bool uniform: false
|
||||||
spacing: 10
|
spacing: 4
|
||||||
uniformCellSizes: uniform
|
uniformCellSizes: uniform
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,7 +9,18 @@ Flow {
|
|||||||
id: root
|
id: root
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
spacing: 2
|
spacing: 2
|
||||||
property list<var> options: []
|
property list<var> options: [
|
||||||
|
{
|
||||||
|
"displayName": "Option 1",
|
||||||
|
"icon": "check",
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"displayName": "Option 2",
|
||||||
|
"icon": "close",
|
||||||
|
"value": 2
|
||||||
|
},
|
||||||
|
]
|
||||||
property var currentValue: null
|
property var currentValue: null
|
||||||
|
|
||||||
signal selected(var newValue)
|
signal selected(var newValue)
|
||||||
@@ -32,7 +43,8 @@ Flow {
|
|||||||
}
|
}
|
||||||
leftmost: index === 0
|
leftmost: index === 0
|
||||||
rightmost: index === root.options.length - 1
|
rightmost: index === root.options.length - 1
|
||||||
buttonText: modelData.displayName;
|
buttonIcon: modelData.icon || ""
|
||||||
|
buttonText: modelData.displayName
|
||||||
toggled: root.currentValue === modelData.value
|
toggled: root.currentValue === modelData.value
|
||||||
onClicked: {
|
onClicked: {
|
||||||
root.selected(modelData.value);
|
root.selected(modelData.value);
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import QtQuick.Layouts
|
|||||||
RowLayout {
|
RowLayout {
|
||||||
id: root
|
id: root
|
||||||
property string text: ""
|
property string text: ""
|
||||||
|
property string icon
|
||||||
property alias value: spinBoxWidget.value
|
property alias value: spinBoxWidget.value
|
||||||
property alias stepSize: spinBoxWidget.stepSize
|
property alias stepSize: spinBoxWidget.stepSize
|
||||||
property alias from: spinBoxWidget.from
|
property alias from: spinBoxWidget.from
|
||||||
@@ -14,12 +15,17 @@ RowLayout {
|
|||||||
Layout.leftMargin: 8
|
Layout.leftMargin: 8
|
||||||
Layout.rightMargin: 8
|
Layout.rightMargin: 8
|
||||||
|
|
||||||
StyledText {
|
RowLayout {
|
||||||
id: labelWidget
|
OptionalMaterialSymbol {
|
||||||
Layout.fillWidth: true
|
icon: root.icon
|
||||||
text: root.text
|
}
|
||||||
font.pixelSize: Appearance.font.pixelSize.small
|
StyledText {
|
||||||
color: Appearance.colors.colOnSecondaryContainer
|
id: labelWidget
|
||||||
|
Layout.fillWidth: true
|
||||||
|
text: root.text
|
||||||
|
font.pixelSize: Appearance.font.pixelSize.small
|
||||||
|
color: Appearance.colors.colOnSecondaryContainer
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StyledSpinBox {
|
StyledSpinBox {
|
||||||
|
|||||||
@@ -6,12 +6,17 @@ import QtQuick.Controls
|
|||||||
|
|
||||||
RippleButton {
|
RippleButton {
|
||||||
id: root
|
id: root
|
||||||
|
property string buttonIcon
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
implicitHeight: contentItem.implicitHeight + 8 * 2
|
implicitHeight: contentItem.implicitHeight + 8 * 2
|
||||||
onClicked: checked = !checked
|
onClicked: checked = !checked
|
||||||
|
|
||||||
contentItem: RowLayout {
|
contentItem: RowLayout {
|
||||||
spacing: 10
|
spacing: 10
|
||||||
|
OptionalMaterialSymbol {
|
||||||
|
icon: root.buttonIcon
|
||||||
|
iconSize: Appearance.font.pixelSize.larger
|
||||||
|
}
|
||||||
StyledText {
|
StyledText {
|
||||||
id: labelWidget
|
id: labelWidget
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import qs.modules.common.widgets
|
|||||||
|
|
||||||
StyledFlickable {
|
StyledFlickable {
|
||||||
id: root
|
id: root
|
||||||
property real baseWidth: 550
|
property real baseWidth: 600
|
||||||
property bool forceWidth: false
|
property bool forceWidth: false
|
||||||
property real bottomContentPadding: 100
|
property real bottomContentPadding: 100
|
||||||
|
|
||||||
@@ -21,9 +21,9 @@ StyledFlickable {
|
|||||||
anchors {
|
anchors {
|
||||||
top: parent.top
|
top: parent.top
|
||||||
horizontalCenter: parent.horizontalCenter
|
horizontalCenter: parent.horizontalCenter
|
||||||
margins: 10
|
margins: 20
|
||||||
}
|
}
|
||||||
spacing: 20
|
spacing: 30
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,22 +7,29 @@ import qs.modules.common.widgets
|
|||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: root
|
id: root
|
||||||
property string title
|
property string title
|
||||||
|
property string icon: ""
|
||||||
default property alias data: sectionContent.data
|
default property alias data: sectionContent.data
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
spacing: 8
|
spacing: 6
|
||||||
StyledText {
|
|
||||||
text: root.title
|
RowLayout {
|
||||||
font.pixelSize: Appearance.font.pixelSize.larger
|
spacing: 6
|
||||||
font.weight: Font.Medium
|
OptionalMaterialSymbol {
|
||||||
|
icon: root.icon
|
||||||
|
iconSize: Appearance.font.pixelSize.hugeass
|
||||||
|
}
|
||||||
|
StyledText {
|
||||||
|
text: root.title
|
||||||
|
font.pixelSize: Appearance.font.pixelSize.larger
|
||||||
|
font.weight: Font.Medium
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: sectionContent
|
id: sectionContent
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
spacing: 8
|
spacing: 4
|
||||||
|
|
||||||
Item {
|
|
||||||
Layout.fillWidth: true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,5 +6,5 @@ import qs.modules.common.widgets
|
|||||||
StyledText {
|
StyledText {
|
||||||
text: "Subsection"
|
text: "Subsection"
|
||||||
color: Appearance.colors.colSubtext
|
color: Appearance.colors.colSubtext
|
||||||
Layout.leftMargin: 4
|
Layout.leftMargin: 2
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ TabButton {
|
|||||||
|
|
||||||
property bool toggled: TabBar.tabBar.currentIndex === TabBar.index
|
property bool toggled: TabBar.tabBar.currentIndex === TabBar.index
|
||||||
property string buttonIcon
|
property string buttonIcon
|
||||||
|
property real buttonIconRotation: 0
|
||||||
property string buttonText
|
property string buttonText
|
||||||
property bool expanded: false
|
property bool expanded: false
|
||||||
property bool showToggledHighlight: true
|
property bool showToggledHighlight: true
|
||||||
@@ -99,6 +100,7 @@ TabButton {
|
|||||||
}
|
}
|
||||||
MaterialSymbol {
|
MaterialSymbol {
|
||||||
id: navRailButtonIcon
|
id: navRailButtonIcon
|
||||||
|
rotation: root.buttonIconRotation
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
iconSize: 24
|
iconSize: 24
|
||||||
fill: toggled ? 1 : 0
|
fill: toggled ? 1 : 0
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import qs.modules.common
|
||||||
|
import qs.modules.common.widgets
|
||||||
|
|
||||||
|
Loader {
|
||||||
|
id: root
|
||||||
|
required property string icon
|
||||||
|
property real iconSize: Appearance.font.pixelSize.larger
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
|
||||||
|
active: root.icon && root.icon.length > 0
|
||||||
|
visible: active
|
||||||
|
|
||||||
|
sourceComponent: Item {
|
||||||
|
implicitWidth: materialSymbol.implicitWidth
|
||||||
|
|
||||||
|
MaterialSymbol {
|
||||||
|
id: materialSymbol
|
||||||
|
anchors.centerIn: parent
|
||||||
|
|
||||||
|
iconSize: root.iconSize
|
||||||
|
color: root.toggled ? Appearance.colors.colOnPrimary : Appearance.colors.colOnSecondaryContainer
|
||||||
|
text: root.icon
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import Quickshell
|
import Quickshell
|
||||||
@@ -12,13 +13,37 @@ GroupButton {
|
|||||||
horizontalPadding: 12
|
horizontalPadding: 12
|
||||||
verticalPadding: 8
|
verticalPadding: 8
|
||||||
bounce: false
|
bounce: false
|
||||||
|
property string buttonIcon
|
||||||
property bool leftmost: false
|
property bool leftmost: false
|
||||||
property bool rightmost: false
|
property bool rightmost: false
|
||||||
leftRadius: (toggled || leftmost) ? (height / 2) : Appearance.rounding.unsharpenmore
|
leftRadius: (toggled || leftmost) ? (height / 2) : Appearance.rounding.unsharpenmore
|
||||||
rightRadius: (toggled || rightmost) ? (height / 2) : Appearance.rounding.unsharpenmore
|
rightRadius: (toggled || rightmost) ? (height / 2) : Appearance.rounding.unsharpenmore
|
||||||
colBackground: Appearance.colors.colSecondaryContainer
|
colBackground: Appearance.colors.colSecondaryContainer
|
||||||
contentItem: StyledText {
|
colBackgroundHover: Appearance.colors.colSecondaryContainerHover
|
||||||
color: parent.toggled ? Appearance.colors.colOnPrimary : Appearance.colors.colOnSecondaryContainer
|
colBackgroundActive: Appearance.colors.colSecondaryContainerActive
|
||||||
text: root.buttonText
|
|
||||||
|
contentItem: RowLayout {
|
||||||
|
spacing: 4
|
||||||
|
|
||||||
|
Loader {
|
||||||
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
active: root.buttonIcon && root.buttonIcon.length > 0
|
||||||
|
visible: active
|
||||||
|
sourceComponent: Item {
|
||||||
|
implicitWidth: materialSymbol.implicitWidth
|
||||||
|
MaterialSymbol {
|
||||||
|
id: materialSymbol
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: root.buttonIcon
|
||||||
|
iconSize: Appearance.font.pixelSize.larger
|
||||||
|
color: root.toggled ? Appearance.colors.colOnPrimary : Appearance.colors.colOnSecondaryContainer
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
StyledText {
|
||||||
|
color: root.toggled ? Appearance.colors.colOnPrimary : Appearance.colors.colOnSecondaryContainer
|
||||||
|
text: root.buttonText
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
import QtQuick
|
||||||
|
import qs.services
|
||||||
|
import qs.modules.common
|
||||||
|
import qs.modules.common.widgets
|
||||||
|
import qs.modules.common.functions
|
||||||
|
|
||||||
|
Image {
|
||||||
|
asynchronous: true
|
||||||
|
retainWhileLoading: true
|
||||||
|
visible: opacity > 0
|
||||||
|
opacity: (status === Image.Ready) ? 1 : 0
|
||||||
|
Behavior on opacity {
|
||||||
|
animation: Appearance.animation.elementMoveEnter.numberAnimation.createObject(this)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,6 +11,7 @@ ContentPage {
|
|||||||
forceWidth: true
|
forceWidth: true
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "box"
|
||||||
title: Translation.tr("Distro")
|
title: Translation.tr("Distro")
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
@@ -79,6 +80,7 @@ ContentPage {
|
|||||||
|
|
||||||
}
|
}
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "folder_managed"
|
||||||
title: Translation.tr("Dotfiles")
|
title: Translation.tr("Dotfiles")
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ ContentPage {
|
|||||||
forceWidth: true
|
forceWidth: true
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "colors"
|
||||||
title: Translation.tr("Color generation")
|
title: Translation.tr("Color generation")
|
||||||
|
|
||||||
ConfigRow {
|
ConfigRow {
|
||||||
|
|||||||
@@ -0,0 +1,286 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import qs
|
||||||
|
import qs.services
|
||||||
|
import qs.modules.common
|
||||||
|
import qs.modules.common.widgets
|
||||||
|
|
||||||
|
ContentPage {
|
||||||
|
forceWidth: true
|
||||||
|
|
||||||
|
ContentSection {
|
||||||
|
icon: "spoke"
|
||||||
|
title: Translation.tr("Positioning")
|
||||||
|
|
||||||
|
ConfigRow {
|
||||||
|
ContentSubsection {
|
||||||
|
title: Translation.tr("Bar position")
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
ConfigSelectionArray {
|
||||||
|
currentValue: (Config.options.bar.bottom ? 1 : 0) | (Config.options.bar.vertical ? 2 : 0)
|
||||||
|
onSelected: newValue => {
|
||||||
|
Config.options.bar.bottom = (newValue & 1) !== 0;
|
||||||
|
Config.options.bar.vertical = (newValue & 2) !== 0;
|
||||||
|
}
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("Top"),
|
||||||
|
icon: "arrow_upward",
|
||||||
|
value: 0 // bottom: false, vertical: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("Left"),
|
||||||
|
icon: "arrow_back",
|
||||||
|
value: 2 // bottom: false, vertical: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("Bottom"),
|
||||||
|
icon: "arrow_downward",
|
||||||
|
value: 1 // bottom: true, vertical: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("Right"),
|
||||||
|
icon: "arrow_forward",
|
||||||
|
value: 3 // bottom: true, vertical: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ContentSubsection {
|
||||||
|
title: Translation.tr("Automatically hide")
|
||||||
|
Layout.fillWidth: false
|
||||||
|
|
||||||
|
ConfigSelectionArray {
|
||||||
|
currentValue: Config.options.bar.autoHide.enable
|
||||||
|
onSelected: newValue => {
|
||||||
|
Config.options.bar.autoHide.enable = newValue; // Update local copy
|
||||||
|
}
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("No"),
|
||||||
|
icon: "close",
|
||||||
|
value: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("Yes"),
|
||||||
|
icon: "check",
|
||||||
|
value: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigRow {
|
||||||
|
|
||||||
|
ContentSubsection {
|
||||||
|
title: Translation.tr("Corner style")
|
||||||
|
Layout.fillWidth: true
|
||||||
|
|
||||||
|
ConfigSelectionArray {
|
||||||
|
currentValue: Config.options.bar.cornerStyle
|
||||||
|
onSelected: newValue => {
|
||||||
|
Config.options.bar.cornerStyle = newValue; // Update local copy
|
||||||
|
}
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("Hug"),
|
||||||
|
icon: "line_curve",
|
||||||
|
value: 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("Float"),
|
||||||
|
icon: "page_header",
|
||||||
|
value: 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("Rect"),
|
||||||
|
icon: "toolbar",
|
||||||
|
value: 2
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ContentSubsection {
|
||||||
|
title: Translation.tr("Group style")
|
||||||
|
Layout.fillWidth: false
|
||||||
|
|
||||||
|
ConfigSelectionArray {
|
||||||
|
currentValue: Config.options.bar.borderless
|
||||||
|
onSelected: newValue => {
|
||||||
|
Config.options.bar.borderless = newValue; // Update local copy
|
||||||
|
}
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("Pills"),
|
||||||
|
icon: "location_chip",
|
||||||
|
value: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
displayName: Translation.tr("Line-separated"),
|
||||||
|
icon: "split_scene",
|
||||||
|
value: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ContentSection {
|
||||||
|
icon: "workspaces"
|
||||||
|
title: Translation.tr("Workspaces")
|
||||||
|
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "counter_1"
|
||||||
|
text: Translation.tr('Always show numbers')
|
||||||
|
checked: Config.options.bar.workspaces.alwaysShowNumbers
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.workspaces.alwaysShowNumbers = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "award_star"
|
||||||
|
text: Translation.tr('Show app icons')
|
||||||
|
checked: Config.options.bar.workspaces.showAppIcons
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.workspaces.showAppIcons = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "colors"
|
||||||
|
text: Translation.tr('Tint app icons')
|
||||||
|
checked: Config.options.bar.workspaces.monochromeIcons
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.workspaces.monochromeIcons = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigSpinBox {
|
||||||
|
icon: "view_column"
|
||||||
|
text: Translation.tr("Workspaces shown")
|
||||||
|
value: Config.options.bar.workspaces.shown
|
||||||
|
from: 1
|
||||||
|
to: 30
|
||||||
|
stepSize: 1
|
||||||
|
onValueChanged: {
|
||||||
|
Config.options.bar.workspaces.shown = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigSpinBox {
|
||||||
|
icon: "touch_long"
|
||||||
|
text: Translation.tr("Number show delay when pressing Super (ms)")
|
||||||
|
value: Config.options.bar.workspaces.showNumberDelay
|
||||||
|
from: 0
|
||||||
|
to: 1000
|
||||||
|
stepSize: 50
|
||||||
|
onValueChanged: {
|
||||||
|
Config.options.bar.workspaces.showNumberDelay = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ContentSection {
|
||||||
|
icon: "widgets"
|
||||||
|
title: Translation.tr("Utility buttons")
|
||||||
|
|
||||||
|
ConfigRow {
|
||||||
|
uniform: true
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "content_cut"
|
||||||
|
text: Translation.tr("Screen snip")
|
||||||
|
checked: Config.options.bar.utilButtons.showScreenSnip
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.utilButtons.showScreenSnip = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "colorize"
|
||||||
|
text: Translation.tr("Color picker")
|
||||||
|
checked: Config.options.bar.utilButtons.showColorPicker
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.utilButtons.showColorPicker = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ConfigRow {
|
||||||
|
uniform: true
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "keyboard"
|
||||||
|
text: Translation.tr("Keyboard toggle")
|
||||||
|
checked: Config.options.bar.utilButtons.showKeyboardToggle
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.utilButtons.showKeyboardToggle = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "mic"
|
||||||
|
text: Translation.tr("Mic toggle")
|
||||||
|
checked: Config.options.bar.utilButtons.showMicToggle
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.utilButtons.showMicToggle = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ConfigRow {
|
||||||
|
uniform: true
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "dark_mode"
|
||||||
|
text: Translation.tr("Dark/Light toggle")
|
||||||
|
checked: Config.options.bar.utilButtons.showDarkModeToggle
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.utilButtons.showDarkModeToggle = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "speed"
|
||||||
|
text: Translation.tr("Performance Profile toggle")
|
||||||
|
checked: Config.options.bar.utilButtons.showPerformanceProfileToggle
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.utilButtons.showPerformanceProfileToggle = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ContentSection {
|
||||||
|
icon: "shelf_auto_hide"
|
||||||
|
title: Translation.tr("Tray")
|
||||||
|
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "keep"
|
||||||
|
text: Translation.tr('Make icons pinned by default')
|
||||||
|
checked: Config.options.bar.tray.invertPinnedItems
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.tray.invertPinnedItems = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "colors"
|
||||||
|
text: Translation.tr('Tint icons')
|
||||||
|
checked: Config.options.bar.tray.monochromeIcons
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.tray.monochromeIcons = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ContentSection {
|
||||||
|
icon: "cloud"
|
||||||
|
title: Translation.tr("Weather")
|
||||||
|
ConfigSwitch {
|
||||||
|
buttonIcon: "check"
|
||||||
|
text: Translation.tr("Enable")
|
||||||
|
checked: Config.options.bar.weather.enable
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.bar.weather.enable = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -8,6 +8,7 @@ import qs.modules.common.widgets
|
|||||||
ContentPage {
|
ContentPage {
|
||||||
forceWidth: true
|
forceWidth: true
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "rule"
|
||||||
title: Translation.tr("Policies")
|
title: Translation.tr("Policies")
|
||||||
|
|
||||||
ConfigRow {
|
ConfigRow {
|
||||||
@@ -68,6 +69,7 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "wallpaper"
|
||||||
title: Translation.tr("Background")
|
title: Translation.tr("Background")
|
||||||
|
|
||||||
ConfigSwitch {
|
ConfigSwitch {
|
||||||
@@ -77,229 +79,51 @@ ContentPage {
|
|||||||
Config.options.background.showClock = checked;
|
Config.options.background.showClock = checked;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
ContentSection {
|
|
||||||
title: Translation.tr("Bar")
|
|
||||||
|
|
||||||
ConfigRow {
|
|
||||||
ContentSubsection {
|
|
||||||
title: Translation.tr("Corner style")
|
|
||||||
|
|
||||||
ConfigSelectionArray {
|
|
||||||
currentValue: Config.options.bar.cornerStyle
|
|
||||||
onSelected: newValue => {
|
|
||||||
Config.options.bar.cornerStyle = newValue; // Update local copy
|
|
||||||
}
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
displayName: Translation.tr("Hug"),
|
|
||||||
value: 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
displayName: Translation.tr("Float"),
|
|
||||||
value: 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
displayName: Translation.tr("Plain rectangle"),
|
|
||||||
value: 2
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ContentSubsection {
|
|
||||||
title: Translation.tr("Bar layout")
|
|
||||||
ConfigSelectionArray {
|
|
||||||
currentValue: Config.options.bar.vertical
|
|
||||||
onSelected: newValue => {
|
|
||||||
Config.options.bar.vertical = newValue;
|
|
||||||
}
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
displayName: Translation.tr("Horizontal"),
|
|
||||||
value: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
displayName: Translation.tr("Vertical"),
|
|
||||||
value: true
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ContentSubsection {
|
ContentSubsection {
|
||||||
title: Translation.tr("Overall appearance")
|
title: Translation.tr("Wallpaper parallax")
|
||||||
ConfigRow {
|
|
||||||
uniform: true
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr("Automatically hide")
|
|
||||||
checked: Config.options.bar.autoHide.enable
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.autoHide.enable = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr("Place at the bottom/right")
|
|
||||||
checked: Config.options.bar.bottom
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.bottom = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigRow {
|
|
||||||
uniform: true
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr('Borderless')
|
|
||||||
checked: Config.options.bar.borderless
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.borderless = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr('Show background')
|
|
||||||
checked: Config.options.bar.showBackground
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.showBackground = checked;
|
|
||||||
}
|
|
||||||
StyledToolTip {
|
|
||||||
content: Translation.tr("Note: turning off can hurt readability")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ContentSubsection {
|
|
||||||
title: Translation.tr("Buttons")
|
|
||||||
ConfigRow {
|
|
||||||
uniform: true
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr("Screen snip")
|
|
||||||
checked: Config.options.bar.utilButtons.showScreenSnip
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.utilButtons.showScreenSnip = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr("Color picker")
|
|
||||||
checked: Config.options.bar.utilButtons.showColorPicker
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.utilButtons.showColorPicker = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigRow {
|
|
||||||
uniform: true
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr("Mic toggle")
|
|
||||||
checked: Config.options.bar.utilButtons.showMicToggle
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.utilButtons.showMicToggle = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr("Keyboard toggle")
|
|
||||||
checked: Config.options.bar.utilButtons.showKeyboardToggle
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.utilButtons.showKeyboardToggle = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigRow {
|
|
||||||
uniform: true
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr("Dark/Light toggle")
|
|
||||||
checked: Config.options.bar.utilButtons.showDarkModeToggle
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.utilButtons.showDarkModeToggle = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr("Performance Profile toggle")
|
|
||||||
checked: Config.options.bar.utilButtons.showPerformanceProfileToggle
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.utilButtons.showPerformanceProfileToggle = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ContentSubsection {
|
|
||||||
title: Translation.tr("Workspaces")
|
|
||||||
tooltip: Translation.tr("Tip: Hide icons and always show numbers for\nthe classic illogical-impulse experience")
|
|
||||||
|
|
||||||
ConfigRow {
|
|
||||||
uniform: true
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr('Show app icons')
|
|
||||||
checked: Config.options.bar.workspaces.showAppIcons
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.workspaces.showAppIcons = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr('Tint app icons')
|
|
||||||
checked: Config.options.bar.workspaces.monochromeIcons
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.workspaces.monochromeIcons = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
ConfigSwitch {
|
ConfigSwitch {
|
||||||
text: Translation.tr('Always show numbers')
|
text: Translation.tr("Vertical")
|
||||||
checked: Config.options.bar.workspaces.alwaysShowNumbers
|
checked: Config.options.background.parallax.vertical
|
||||||
onCheckedChanged: {
|
onCheckedChanged: {
|
||||||
Config.options.bar.workspaces.alwaysShowNumbers = checked;
|
Config.options.background.parallax.vertical = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigRow {
|
||||||
|
uniform: true
|
||||||
|
ConfigSwitch {
|
||||||
|
text: Translation.tr("Depends on workspace")
|
||||||
|
checked: Config.options.background.parallax.enableWorkspace
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.background.parallax.enableWorkspace = checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ConfigSwitch {
|
||||||
|
text: Translation.tr("Depends on sidebars")
|
||||||
|
checked: Config.options.background.parallax.enableSidebar
|
||||||
|
onCheckedChanged: {
|
||||||
|
Config.options.background.parallax.enableSidebar = checked;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ConfigSpinBox {
|
ConfigSpinBox {
|
||||||
text: Translation.tr("Workspaces shown")
|
text: Translation.tr("Preferred wallpaper zoom (%)")
|
||||||
value: Config.options.bar.workspaces.shown
|
value: Config.options.background.parallax.workspaceZoom * 100
|
||||||
from: 1
|
from: 100
|
||||||
to: 30
|
to: 150
|
||||||
stepSize: 1
|
stepSize: 1
|
||||||
onValueChanged: {
|
onValueChanged: {
|
||||||
Config.options.bar.workspaces.shown = value;
|
console.log(value/100)
|
||||||
}
|
Config.options.background.parallax.workspaceZoom = value / 100;
|
||||||
}
|
|
||||||
ConfigSpinBox {
|
|
||||||
text: Translation.tr("Number show delay when pressing Super (ms)")
|
|
||||||
value: Config.options.bar.workspaces.showNumberDelay
|
|
||||||
from: 0
|
|
||||||
to: 1000
|
|
||||||
stepSize: 50
|
|
||||||
onValueChanged: {
|
|
||||||
Config.options.bar.workspaces.showNumberDelay = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ContentSubsection {
|
|
||||||
title: Translation.tr("Tray")
|
|
||||||
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr('Tint icons')
|
|
||||||
checked: Config.options.bar.tray.monochromeIcons
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.tray.monochromeIcons = checked;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ContentSubsection {
|
|
||||||
title: Translation.tr("Weather")
|
|
||||||
ConfigSwitch {
|
|
||||||
text: Translation.tr("Enable")
|
|
||||||
checked: Config.options.bar.weather.enable
|
|
||||||
onCheckedChanged: {
|
|
||||||
Config.options.bar.weather.enable = checked;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "battery_android_full"
|
||||||
title: Translation.tr("Battery")
|
title: Translation.tr("Battery")
|
||||||
|
|
||||||
ConfigRow {
|
ConfigRow {
|
||||||
@@ -351,6 +175,7 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "call_to_action"
|
||||||
title: Translation.tr("Dock")
|
title: Translation.tr("Dock")
|
||||||
|
|
||||||
ConfigSwitch {
|
ConfigSwitch {
|
||||||
@@ -388,7 +213,9 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "side_navigation"
|
||||||
title: Translation.tr("Sidebars")
|
title: Translation.tr("Sidebars")
|
||||||
|
|
||||||
ConfigSwitch {
|
ConfigSwitch {
|
||||||
text: Translation.tr('Keep right sidebar loaded')
|
text: Translation.tr('Keep right sidebar loaded')
|
||||||
checked: Config.options.sidebar.keepRightSidebarLoaded
|
checked: Config.options.sidebar.keepRightSidebarLoaded
|
||||||
@@ -486,7 +313,9 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "voting_chip"
|
||||||
title: Translation.tr("On-screen display")
|
title: Translation.tr("On-screen display")
|
||||||
|
|
||||||
ConfigSpinBox {
|
ConfigSpinBox {
|
||||||
text: Translation.tr("Timeout (ms)")
|
text: Translation.tr("Timeout (ms)")
|
||||||
value: Config.options.osd.timeout
|
value: Config.options.osd.timeout
|
||||||
@@ -500,7 +329,9 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "overview_key"
|
||||||
title: Translation.tr("Overview")
|
title: Translation.tr("Overview")
|
||||||
|
|
||||||
ConfigSwitch {
|
ConfigSwitch {
|
||||||
text: Translation.tr("Enable")
|
text: Translation.tr("Enable")
|
||||||
checked: Config.options.overview.enable
|
checked: Config.options.overview.enable
|
||||||
@@ -544,6 +375,7 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "screenshot_frame_2"
|
||||||
title: Translation.tr("Screenshot tool")
|
title: Translation.tr("Screenshot tool")
|
||||||
|
|
||||||
ConfigSwitch {
|
ConfigSwitch {
|
||||||
@@ -559,6 +391,7 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "language"
|
||||||
title: Translation.tr("Language")
|
title: Translation.tr("Language")
|
||||||
|
|
||||||
ContentSubsection {
|
ContentSubsection {
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ ContentPage {
|
|||||||
|
|
||||||
// Wallpaper selection
|
// Wallpaper selection
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "format_paint"
|
||||||
title: Translation.tr("Wallpaper & Colors")
|
title: Translation.tr("Wallpaper & Colors")
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
@@ -65,13 +66,14 @@ ContentPage {
|
|||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
implicitWidth: 300
|
implicitWidth: 340
|
||||||
implicitHeight: 200
|
implicitHeight: 200
|
||||||
Image {
|
|
||||||
|
StyledImage {
|
||||||
id: wallpaperPreview
|
id: wallpaperPreview
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
sourceSize.width: 300
|
sourceSize.width: parent.implicitWidth
|
||||||
sourceSize.height: 200
|
sourceSize.height: parent.implicitHeight
|
||||||
fillMode: Image.PreserveAspectCrop
|
fillMode: Image.PreserveAspectCrop
|
||||||
source: Config.options.background.wallpaperPath
|
source: Config.options.background.wallpaperPath
|
||||||
layer.enabled: true
|
layer.enabled: true
|
||||||
@@ -212,6 +214,7 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "screenshot_monitor"
|
||||||
title: Translation.tr("Bar & screen")
|
title: Translation.tr("Bar & screen")
|
||||||
|
|
||||||
ConfigRow {
|
ConfigRow {
|
||||||
@@ -226,18 +229,22 @@ ContentPage {
|
|||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
displayName: Translation.tr("Top"),
|
displayName: Translation.tr("Top"),
|
||||||
|
icon: "arrow_upward",
|
||||||
value: 0 // bottom: false, vertical: false
|
value: 0 // bottom: false, vertical: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayName: Translation.tr("Left"),
|
displayName: Translation.tr("Left"),
|
||||||
|
icon: "arrow_back",
|
||||||
value: 2 // bottom: false, vertical: true
|
value: 2 // bottom: false, vertical: true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayName: Translation.tr("Bottom"),
|
displayName: Translation.tr("Bottom"),
|
||||||
|
icon: "arrow_downward",
|
||||||
value: 1 // bottom: true, vertical: false
|
value: 1 // bottom: true, vertical: false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayName: Translation.tr("Right"),
|
displayName: Translation.tr("Right"),
|
||||||
|
icon: "arrow_forward",
|
||||||
value: 3 // bottom: true, vertical: true
|
value: 3 // bottom: true, vertical: true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -254,14 +261,17 @@ ContentPage {
|
|||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
displayName: Translation.tr("Hug"),
|
displayName: Translation.tr("Hug"),
|
||||||
|
icon: "line_curve",
|
||||||
value: 0
|
value: 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayName: Translation.tr("Float"),
|
displayName: Translation.tr("Float"),
|
||||||
|
icon: "page_header",
|
||||||
value: 1
|
value: 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayName: Translation.tr("Plain rectangle"),
|
displayName: Translation.tr("Rect"),
|
||||||
|
icon: "toolbar",
|
||||||
value: 2
|
value: 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@@ -281,14 +291,17 @@ ContentPage {
|
|||||||
options: [
|
options: [
|
||||||
{
|
{
|
||||||
displayName: Translation.tr("No"),
|
displayName: Translation.tr("No"),
|
||||||
|
icon: "close",
|
||||||
value: 0
|
value: 0
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayName: Translation.tr("Yes"),
|
displayName: Translation.tr("Yes"),
|
||||||
|
icon: "check",
|
||||||
value: 1
|
value: 1
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
displayName: Translation.tr("When not fullscreen"),
|
displayName: Translation.tr("When not fullscreen"),
|
||||||
|
icon: "fullscreen_exit",
|
||||||
value: 2
|
value: 2
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ ContentPage {
|
|||||||
forceWidth: true
|
forceWidth: true
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "volume_up"
|
||||||
title: Translation.tr("Audio")
|
title: Translation.tr("Audio")
|
||||||
|
|
||||||
ConfigSwitch {
|
ConfigSwitch {
|
||||||
@@ -47,8 +48,11 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "neurology"
|
||||||
title: Translation.tr("AI")
|
title: Translation.tr("AI")
|
||||||
|
|
||||||
MaterialTextArea {
|
MaterialTextArea {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
placeholderText: Translation.tr("System prompt")
|
placeholderText: Translation.tr("System prompt")
|
||||||
@@ -63,6 +67,7 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "battery_android_full"
|
||||||
title: Translation.tr("Battery")
|
title: Translation.tr("Battery")
|
||||||
|
|
||||||
ConfigRow {
|
ConfigRow {
|
||||||
@@ -114,7 +119,9 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "cell_tower"
|
||||||
title: Translation.tr("Networking")
|
title: Translation.tr("Networking")
|
||||||
|
|
||||||
MaterialTextArea {
|
MaterialTextArea {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
placeholderText: Translation.tr("User agent (for services that require it)")
|
placeholderText: Translation.tr("User agent (for services that require it)")
|
||||||
@@ -127,7 +134,9 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "memory"
|
||||||
title: Translation.tr("Resources")
|
title: Translation.tr("Resources")
|
||||||
|
|
||||||
ConfigSpinBox {
|
ConfigSpinBox {
|
||||||
text: Translation.tr("Polling interval (ms)")
|
text: Translation.tr("Polling interval (ms)")
|
||||||
value: Config.options.resources.updateInterval
|
value: Config.options.resources.updateInterval
|
||||||
@@ -141,6 +150,7 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "search"
|
||||||
title: Translation.tr("Search")
|
title: Translation.tr("Search")
|
||||||
|
|
||||||
ConfigSwitch {
|
ConfigSwitch {
|
||||||
@@ -158,7 +168,6 @@ ContentPage {
|
|||||||
title: Translation.tr("Prefixes")
|
title: Translation.tr("Prefixes")
|
||||||
ConfigRow {
|
ConfigRow {
|
||||||
uniform: true
|
uniform: true
|
||||||
|
|
||||||
MaterialTextArea {
|
MaterialTextArea {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
placeholderText: Translation.tr("Action")
|
placeholderText: Translation.tr("Action")
|
||||||
@@ -187,6 +196,37 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ConfigRow {
|
||||||
|
uniform: true
|
||||||
|
MaterialTextArea {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderText: Translation.tr("Math")
|
||||||
|
text: Config.options.search.prefix.math
|
||||||
|
wrapMode: TextEdit.Wrap
|
||||||
|
onTextChanged: {
|
||||||
|
Config.options.search.prefix.math = text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MaterialTextArea {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderText: Translation.tr("Shell command")
|
||||||
|
text: Config.options.search.prefix.shellCommand
|
||||||
|
wrapMode: TextEdit.Wrap
|
||||||
|
onTextChanged: {
|
||||||
|
Config.options.search.prefix.shellCommand = text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MaterialTextArea {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
placeholderText: Translation.tr("Web search")
|
||||||
|
text: Config.options.search.prefix.webSearch
|
||||||
|
wrapMode: TextEdit.Wrap
|
||||||
|
onTextChanged: {
|
||||||
|
Config.options.search.prefix.webSearch = text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ContentSubsection {
|
ContentSubsection {
|
||||||
title: Translation.tr("Web search")
|
title: Translation.tr("Web search")
|
||||||
@@ -203,6 +243,7 @@ ContentPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentSection {
|
ContentSection {
|
||||||
|
icon: "nest_clock_farsight_analog"
|
||||||
title: Translation.tr("Time")
|
title: Translation.tr("Time")
|
||||||
|
|
||||||
ContentSubsection {
|
ContentSubsection {
|
||||||
|
|||||||
@@ -28,6 +28,12 @@ ApplicationWindow {
|
|||||||
icon: "instant_mix",
|
icon: "instant_mix",
|
||||||
component: "modules/settings/QuickConfig.qml"
|
component: "modules/settings/QuickConfig.qml"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: Translation.tr("Bar"),
|
||||||
|
icon: "toast",
|
||||||
|
iconRotation: 180,
|
||||||
|
component: "modules/settings/BarConfig.qml"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: Translation.tr("Interface"),
|
name: Translation.tr("Interface"),
|
||||||
icon: "cards",
|
icon: "cards",
|
||||||
@@ -181,6 +187,7 @@ ApplicationWindow {
|
|||||||
onClicked: root.currentPage = index;
|
onClicked: root.currentPage = index;
|
||||||
expanded: navRail.expanded
|
expanded: navRail.expanded
|
||||||
buttonIcon: modelData.icon
|
buttonIcon: modelData.icon
|
||||||
|
buttonIconRotation: modelData.iconRotation || 0
|
||||||
buttonText: modelData.name
|
buttonText: modelData.name
|
||||||
showToggledHighlight: false
|
showToggledHighlight: false
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user