forked from Shinonome/dots-hyprland
Merge branch 'main' into keybinds-settings
This commit is contained in:
@@ -0,0 +1,471 @@
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import qs.services
|
||||
import qs.modules.common
|
||||
import qs.modules.common.widgets
|
||||
|
||||
ContentPage {
|
||||
forceWidth: true
|
||||
|
||||
ContentSection {
|
||||
icon: "sync_alt"
|
||||
title: Translation.tr("Parallax")
|
||||
|
||||
ConfigSwitch {
|
||||
buttonIcon: "unfold_more_double"
|
||||
text: Translation.tr("Vertical")
|
||||
checked: Config.options.background.parallax.vertical
|
||||
onCheckedChanged: {
|
||||
Config.options.background.parallax.vertical = checked;
|
||||
}
|
||||
}
|
||||
|
||||
ConfigRow {
|
||||
uniform: true
|
||||
ConfigSwitch {
|
||||
buttonIcon: "counter_1"
|
||||
text: Translation.tr("Depends on workspace")
|
||||
checked: Config.options.background.parallax.enableWorkspace
|
||||
onCheckedChanged: {
|
||||
Config.options.background.parallax.enableWorkspace = checked;
|
||||
}
|
||||
}
|
||||
ConfigSwitch {
|
||||
buttonIcon: "side_navigation"
|
||||
text: Translation.tr("Depends on sidebars")
|
||||
checked: Config.options.background.parallax.enableSidebar
|
||||
onCheckedChanged: {
|
||||
Config.options.background.parallax.enableSidebar = checked;
|
||||
}
|
||||
}
|
||||
}
|
||||
ConfigSpinBox {
|
||||
icon: "loupe"
|
||||
text: Translation.tr("Preferred wallpaper zoom (%)")
|
||||
value: Config.options.background.parallax.workspaceZoom * 100
|
||||
from: 100
|
||||
to: 150
|
||||
stepSize: 1
|
||||
onValueChanged: {
|
||||
Config.options.background.parallax.workspaceZoom = value / 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ContentSection {
|
||||
icon: "clock_loader_40"
|
||||
title: Translation.tr("Widget: Clock")
|
||||
|
||||
ConfigRow {
|
||||
Layout.fillWidth: true
|
||||
|
||||
ConfigSwitch {
|
||||
Layout.fillWidth: false
|
||||
buttonIcon: "check"
|
||||
text: Translation.tr("Enable")
|
||||
checked: Config.options.background.widgets.clock.enable
|
||||
onCheckedChanged: {
|
||||
Config.options.background.widgets.clock.enable = checked;
|
||||
}
|
||||
}
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
ConfigSelectionArray {
|
||||
Layout.fillWidth: false
|
||||
currentValue: Config.options.background.widgets.clock.placementStrategy
|
||||
onSelected: newValue => {
|
||||
Config.options.background.widgets.clock.placementStrategy = newValue;
|
||||
}
|
||||
options: [
|
||||
{
|
||||
displayName: Translation.tr("Draggable"),
|
||||
icon: "drag_pan",
|
||||
value: "free"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Least busy"),
|
||||
icon: "category",
|
||||
value: "leastBusy"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Most busy"),
|
||||
icon: "shapes",
|
||||
value: "mostBusy"
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
ContentSubsection {
|
||||
title: Translation.tr("Clock style")
|
||||
ConfigSelectionArray {
|
||||
currentValue: Config.options.background.widgets.clock.style
|
||||
onSelected: newValue => {
|
||||
Config.options.background.widgets.clock.style = newValue;
|
||||
}
|
||||
options: [
|
||||
{
|
||||
displayName: Translation.tr("Digital"),
|
||||
icon: "timer_10",
|
||||
value: "digital"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Cookie"),
|
||||
icon: "cookie",
|
||||
value: "cookie"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
ContentSubsection {
|
||||
visible: Config.options.background.widgets.clock.style === "digital"
|
||||
title: Translation.tr("Digital clock settings")
|
||||
|
||||
ConfigSwitch {
|
||||
buttonIcon: "animation"
|
||||
text: Translation.tr("Animate time change")
|
||||
checked: Config.options.background.widgets.clock.digital.animateChange
|
||||
onCheckedChanged: {
|
||||
Config.options.background.widgets.clock.digital.animateChange = checked;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ContentSubsection {
|
||||
visible: Config.options.background.widgets.clock.style === "cookie"
|
||||
title: Translation.tr("Cookie clock settings")
|
||||
|
||||
ConfigSwitch {
|
||||
buttonIcon: "wand_stars"
|
||||
text: Translation.tr("Auto styling with Gemini")
|
||||
checked: Config.options.background.widgets.clock.cookie.aiStyling
|
||||
onCheckedChanged: {
|
||||
Config.options.background.widgets.clock.cookie.aiStyling = checked;
|
||||
}
|
||||
StyledToolTip {
|
||||
text: Translation.tr("Uses Gemini to categorize the wallpaper then picks a preset based on it.\nYou'll need to set Gemini API key on the left sidebar first.\nImages are downscaled for performance, but just to be safe,\ndo not select wallpapers with sensitive information.")
|
||||
}
|
||||
}
|
||||
|
||||
ConfigSwitch {
|
||||
buttonIcon: "airwave"
|
||||
text: Translation.tr("Use old sine wave cookie implementation")
|
||||
checked: Config.options.background.widgets.clock.cookie.useSineCookie
|
||||
onCheckedChanged: {
|
||||
Config.options.background.widgets.clock.cookie.useSineCookie = checked;
|
||||
}
|
||||
StyledToolTip {
|
||||
text: "Looks a bit softer and more consistent with different number of sides,\nbut has less impressive morphing"
|
||||
}
|
||||
}
|
||||
|
||||
ConfigSpinBox {
|
||||
icon: "add_triangle"
|
||||
text: Translation.tr("Sides")
|
||||
value: Config.options.background.widgets.clock.cookie.sides
|
||||
from: 0
|
||||
to: 40
|
||||
stepSize: 1
|
||||
onValueChanged: {
|
||||
Config.options.background.widgets.clock.cookie.sides = value;
|
||||
}
|
||||
}
|
||||
|
||||
ConfigSwitch {
|
||||
buttonIcon: "autoplay"
|
||||
text: Translation.tr("Constantly rotate")
|
||||
checked: Config.options.background.widgets.clock.cookie.constantlyRotate
|
||||
onCheckedChanged: {
|
||||
Config.options.background.widgets.clock.cookie.constantlyRotate = checked;
|
||||
}
|
||||
StyledToolTip {
|
||||
text: "Makes the clock always rotate. This is extremely expensive\n(expect 50% usage on Intel UHD Graphics) and thus impractical."
|
||||
}
|
||||
}
|
||||
|
||||
ConfigRow {
|
||||
|
||||
ConfigSwitch {
|
||||
enabled: Config.options.background.widgets.clock.style === "cookie" && Config.options.background.widgets.clock.cookie.dialNumberStyle === "dots" || Config.options.background.widgets.clock.cookie.dialNumberStyle === "full"
|
||||
buttonIcon: "brightness_7"
|
||||
text: Translation.tr("Hour marks")
|
||||
checked: Config.options.background.widgets.clock.cookie.hourMarks
|
||||
onEnabledChanged: {
|
||||
checked = Config.options.background.widgets.clock.cookie.hourMarks;
|
||||
}
|
||||
onCheckedChanged: {
|
||||
Config.options.background.widgets.clock.cookie.hourMarks = checked;
|
||||
}
|
||||
StyledToolTip {
|
||||
text: "Can only be turned on using the 'Dots' or 'Full' dial style for aesthetic reasons"
|
||||
}
|
||||
}
|
||||
|
||||
ConfigSwitch {
|
||||
enabled: Config.options.background.widgets.clock.style === "cookie" && Config.options.background.widgets.clock.cookie.dialNumberStyle !== "numbers"
|
||||
buttonIcon: "timer_10"
|
||||
text: Translation.tr("Digits in the middle")
|
||||
checked: Config.options.background.widgets.clock.cookie.timeIndicators
|
||||
onEnabledChanged: {
|
||||
checked = Config.options.background.widgets.clock.cookie.timeIndicators;
|
||||
}
|
||||
onCheckedChanged: {
|
||||
Config.options.background.widgets.clock.cookie.timeIndicators = checked;
|
||||
}
|
||||
StyledToolTip {
|
||||
text: "Can't be turned on when using 'Numbers' dial style for aesthetic reasons"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ContentSubsection {
|
||||
visible: Config.options.background.widgets.clock.style === "cookie"
|
||||
title: Translation.tr("Dial style")
|
||||
ConfigSelectionArray {
|
||||
currentValue: Config.options.background.widgets.clock.cookie.dialNumberStyle
|
||||
onSelected: newValue => {
|
||||
Config.options.background.widgets.clock.cookie.dialNumberStyle = newValue;
|
||||
if (newValue !== "dots" && newValue !== "full") {
|
||||
Config.options.background.widgets.clock.cookie.hourMarks = false;
|
||||
}
|
||||
if (newValue === "numbers") {
|
||||
Config.options.background.widgets.clock.cookie.timeIndicators = false;
|
||||
}
|
||||
}
|
||||
options: [
|
||||
{
|
||||
displayName: "",
|
||||
icon: "block",
|
||||
value: "none"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Dots"),
|
||||
icon: "graph_6",
|
||||
value: "dots"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Full"),
|
||||
icon: "history_toggle_off",
|
||||
value: "full"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Numbers"),
|
||||
icon: "counter_1",
|
||||
value: "numbers"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
ContentSubsection {
|
||||
visible: Config.options.background.widgets.clock.style === "cookie"
|
||||
title: Translation.tr("Hour hand")
|
||||
ConfigSelectionArray {
|
||||
currentValue: Config.options.background.widgets.clock.cookie.hourHandStyle
|
||||
onSelected: newValue => {
|
||||
Config.options.background.widgets.clock.cookie.hourHandStyle = newValue;
|
||||
}
|
||||
options: [
|
||||
{
|
||||
displayName: "",
|
||||
icon: "block",
|
||||
value: "hide"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Classic"),
|
||||
icon: "radio",
|
||||
value: "classic"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Hollow"),
|
||||
icon: "circle",
|
||||
value: "hollow"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Fill"),
|
||||
icon: "eraser_size_5",
|
||||
value: "fill"
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
ContentSubsection {
|
||||
visible: Config.options.background.widgets.clock.style === "cookie"
|
||||
title: Translation.tr("Minute hand")
|
||||
|
||||
ConfigSelectionArray {
|
||||
currentValue: Config.options.background.widgets.clock.cookie.minuteHandStyle
|
||||
onSelected: newValue => {
|
||||
Config.options.background.widgets.clock.cookie.minuteHandStyle = newValue;
|
||||
}
|
||||
options: [
|
||||
{
|
||||
displayName: "",
|
||||
icon: "block",
|
||||
value: "hide"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Classic"),
|
||||
icon: "radio",
|
||||
value: "classic"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Thin"),
|
||||
icon: "line_end",
|
||||
value: "thin"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Medium"),
|
||||
icon: "eraser_size_2",
|
||||
value: "medium"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Bold"),
|
||||
icon: "eraser_size_4",
|
||||
value: "bold"
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
ContentSubsection {
|
||||
visible: Config.options.background.widgets.clock.style === "cookie"
|
||||
title: Translation.tr("Second hand")
|
||||
|
||||
ConfigSelectionArray {
|
||||
currentValue: Config.options.background.widgets.clock.cookie.secondHandStyle
|
||||
onSelected: newValue => {
|
||||
Config.options.background.widgets.clock.cookie.secondHandStyle = newValue;
|
||||
}
|
||||
options: [
|
||||
{
|
||||
displayName: "",
|
||||
icon: "block",
|
||||
value: "hide"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Classic"),
|
||||
icon: "radio",
|
||||
value: "classic"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Line"),
|
||||
icon: "line_end",
|
||||
value: "line"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Dot"),
|
||||
icon: "adjust",
|
||||
value: "dot"
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
ContentSubsection {
|
||||
visible: Config.options.background.widgets.clock.style === "cookie"
|
||||
title: Translation.tr("Date style")
|
||||
|
||||
ConfigSelectionArray {
|
||||
currentValue: Config.options.background.widgets.clock.cookie.dateStyle
|
||||
onSelected: newValue => {
|
||||
Config.options.background.widgets.clock.cookie.dateStyle = newValue;
|
||||
}
|
||||
options: [
|
||||
{
|
||||
displayName: "",
|
||||
icon: "block",
|
||||
value: "hide"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Bubble"),
|
||||
icon: "bubble_chart",
|
||||
value: "bubble"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Border"),
|
||||
icon: "rotate_right",
|
||||
value: "border"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Rect"),
|
||||
icon: "rectangle",
|
||||
value: "rect"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
ContentSubsection {
|
||||
title: Translation.tr("Quote")
|
||||
|
||||
ConfigSwitch {
|
||||
buttonIcon: "check"
|
||||
text: Translation.tr("Enable")
|
||||
checked: Config.options.background.widgets.clock.quote.enable
|
||||
onCheckedChanged: {
|
||||
Config.options.background.widgets.clock.quote.enable = checked;
|
||||
}
|
||||
}
|
||||
MaterialTextArea {
|
||||
Layout.fillWidth: true
|
||||
placeholderText: Translation.tr("Quote")
|
||||
text: Config.options.background.widgets.clock.quote.text
|
||||
wrapMode: TextEdit.Wrap
|
||||
onTextChanged: {
|
||||
Config.options.background.widgets.clock.quote.text = text;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ContentSection {
|
||||
icon: "weather_mix"
|
||||
title: Translation.tr("Widget: Weather")
|
||||
|
||||
ConfigRow {
|
||||
Layout.fillWidth: true
|
||||
|
||||
ConfigSwitch {
|
||||
Layout.fillWidth: false
|
||||
buttonIcon: "check"
|
||||
text: Translation.tr("Enable")
|
||||
checked: Config.options.background.widgets.weather.enable
|
||||
onCheckedChanged: {
|
||||
Config.options.background.widgets.weather.enable = checked;
|
||||
}
|
||||
}
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
ConfigSelectionArray {
|
||||
Layout.fillWidth: false
|
||||
currentValue: Config.options.background.widgets.weather.placementStrategy
|
||||
onSelected: newValue => {
|
||||
Config.options.background.widgets.weather.placementStrategy = newValue;
|
||||
}
|
||||
options: [
|
||||
{
|
||||
displayName: Translation.tr("Draggable"),
|
||||
icon: "drag_pan",
|
||||
value: "free"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Least busy"),
|
||||
icon: "category",
|
||||
value: "leastBusy"
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Most busy"),
|
||||
icon: "shapes",
|
||||
value: "mostBusy"
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -318,17 +318,17 @@ ContentPage {
|
||||
{
|
||||
displayName: Translation.tr("Normal"),
|
||||
icon: "timer_10",
|
||||
value: '["1","2","3","4","5","6","7","8","9","10"]'
|
||||
value: '[]'
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Japanese"),
|
||||
icon: "square_dot",
|
||||
value: '["一","二","三","四","五","六","七","八","九","十"]'
|
||||
value: '["一","二","三","四","五","六","七","八","九","十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十"]'
|
||||
},
|
||||
{
|
||||
displayName: Translation.tr("Roman"),
|
||||
icon: "account_balance",
|
||||
value: '["I","II","III","IV","V","VI","VII","VIII","IX","X"]'
|
||||
value: '["I","II","III","IV","V","VI","VII","VIII","IX","X","XI","XII","XIII","XIV","XV","XVI","XVII","XVIII","XIX","XX"]'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -701,6 +701,67 @@ ContentPage {
|
||||
}
|
||||
}
|
||||
|
||||
ContentSection {
|
||||
icon: "select_window"
|
||||
title: Translation.tr("Overlay: General")
|
||||
|
||||
ConfigSwitch {
|
||||
buttonIcon: "high_density"
|
||||
text: Translation.tr("Enable opening zoom animation")
|
||||
checked: Config.options.overlay.openingZoomAnimation
|
||||
onCheckedChanged: {
|
||||
Config.options.overlay.openingZoomAnimation = checked;
|
||||
}
|
||||
}
|
||||
ConfigSwitch {
|
||||
buttonIcon: "texture"
|
||||
text: Translation.tr("Darken screen")
|
||||
checked: Config.options.overlay.darkenScreen
|
||||
onCheckedChanged: {
|
||||
Config.options.overlay.darkenScreen = checked;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ContentSection {
|
||||
icon: "point_scan"
|
||||
title: Translation.tr("Overlay: Crosshair")
|
||||
|
||||
MaterialTextArea {
|
||||
Layout.fillWidth: true
|
||||
placeholderText: Translation.tr("Crosshair code (in Valorant's format)")
|
||||
text: Config.options.crosshair.code
|
||||
wrapMode: TextEdit.Wrap
|
||||
onTextChanged: {
|
||||
Config.options.crosshair.code = text;
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
StyledText {
|
||||
Layout.leftMargin: 10
|
||||
color: Appearance.colors.colSubtext
|
||||
font.pixelSize: Appearance.font.pixelSize.smallie
|
||||
text: Translation.tr("Press Super+G to open the overlay and pin the crosshair")
|
||||
}
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
RippleButtonWithIcon {
|
||||
id: editorButton
|
||||
buttonRadius: Appearance.rounding.full
|
||||
materialIcon: "open_in_new"
|
||||
mainText: Translation.tr("Open editor")
|
||||
onClicked: {
|
||||
Qt.openUrlExternally(`https://www.vcrdb.net/builder?c=${Config.options.crosshair.code}`);
|
||||
}
|
||||
StyledToolTip {
|
||||
text: "www.vcrdb.net"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ContentSection {
|
||||
icon: "screenshot_frame_2"
|
||||
title: Translation.tr("Region selector (screen snipping/Google Lens)")
|
||||
|
||||
Reference in New Issue
Block a user