mirror of
https://github.com/end-4/dots-hyprland.git
synced 2026-06-05 14:59:27 -05:00
228 lines
7.4 KiB
QML
228 lines
7.4 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import qs.services
|
|
import qs.modules.common
|
|
import qs.modules.common.widgets
|
|
|
|
ContentPage {
|
|
forceWidth: true
|
|
|
|
ContentSection {
|
|
icon: "neurology"
|
|
title: Translation.tr("AI")
|
|
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("System prompt")
|
|
text: Config.options.ai.systemPrompt
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Qt.callLater(() => {
|
|
Config.options.ai.systemPrompt = text;
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "music_cast"
|
|
title: Translation.tr("Music Recognition")
|
|
|
|
ConfigSpinBox {
|
|
icon: "timer_off"
|
|
text: Translation.tr("Total duration timeout (s)")
|
|
value: Config.options.musicRecognition.timeout
|
|
from: 10
|
|
to: 100
|
|
stepSize: 2
|
|
onValueChanged: {
|
|
Config.options.musicRecognition.timeout = value;
|
|
}
|
|
}
|
|
ConfigSpinBox {
|
|
icon: "av_timer"
|
|
text: Translation.tr("Polling interval (s)")
|
|
value: Config.options.musicRecognition.interval
|
|
from: 2
|
|
to: 10
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.musicRecognition.interval = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "cell_tower"
|
|
title: Translation.tr("Networking")
|
|
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("User agent (for services that require it)")
|
|
text: Config.options.networking.userAgent
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Config.options.networking.userAgent = text;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "memory"
|
|
title: Translation.tr("Resources")
|
|
|
|
ConfigSpinBox {
|
|
icon: "av_timer"
|
|
text: Translation.tr("Polling interval (ms)")
|
|
value: Config.options.resources.updateInterval
|
|
from: 100
|
|
to: 10000
|
|
stepSize: 100
|
|
onValueChanged: {
|
|
Config.options.resources.updateInterval = value;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "search"
|
|
title: Translation.tr("Search")
|
|
|
|
ConfigSwitch {
|
|
text: Translation.tr("Use Levenshtein distance-based algorithm instead of fuzzy")
|
|
checked: Config.options.search.sloppy
|
|
onCheckedChanged: {
|
|
Config.options.search.sloppy = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("Could be better if you make a ton of typos,\nbut results can be weird and might not work with acronyms\n(e.g. \"GIMP\" might not give you the paint program)")
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Prefixes")
|
|
ConfigRow {
|
|
uniform: true
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("Action")
|
|
text: Config.options.search.prefix.action
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Config.options.search.prefix.action = text;
|
|
}
|
|
}
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("Clipboard")
|
|
text: Config.options.search.prefix.clipboard
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Config.options.search.prefix.clipboard = text;
|
|
}
|
|
}
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("Emojis")
|
|
text: Config.options.search.prefix.emojis
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Config.options.search.prefix.emojis = text;
|
|
}
|
|
}
|
|
}
|
|
|
|
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 {
|
|
title: Translation.tr("Web search")
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("Base URL")
|
|
text: Config.options.search.engineBaseUrl
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Config.options.search.engineBaseUrl = text;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "weather_mix"
|
|
title: Translation.tr("Weather")
|
|
ConfigRow {
|
|
ConfigSwitch {
|
|
buttonIcon: "assistant_navigation"
|
|
text: Translation.tr("Enable GPS based location")
|
|
checked: Config.options.bar.weather.enableGPS
|
|
onCheckedChanged: {
|
|
Config.options.bar.weather.enableGPS = checked;
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "thermometer"
|
|
text: Translation.tr("Fahrenheit unit")
|
|
checked: Config.options.bar.weather.useUSCS
|
|
onCheckedChanged: {
|
|
Config.options.bar.weather.useUSCS = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("It may take a few seconds to update")
|
|
}
|
|
}
|
|
}
|
|
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("City name")
|
|
text: Config.options.bar.weather.city
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Config.options.bar.weather.city = text;
|
|
}
|
|
}
|
|
ConfigSpinBox {
|
|
icon: "av_timer"
|
|
text: Translation.tr("Polling interval (m)")
|
|
value: Config.options.bar.weather.fetchInterval
|
|
from: 5
|
|
to: 50
|
|
stepSize: 5
|
|
onValueChanged: {
|
|
Config.options.bar.weather.fetchInterval = value;
|
|
}
|
|
}
|
|
}
|
|
}
|