Merge pull request #908 from oluijks/fix/color-temp-widgets

fix(night-light): replace day/night color temperature inputs with sliders
This commit is contained in:
Lysec
2025-11-29 12:07:19 +01:00
committed by GitHub
12 changed files with 146 additions and 57 deletions

View File

@@ -1258,10 +1258,12 @@
"label": "Nachtlicht"
},
"temperature": {
"day": "Tag",
"description": "Farbwärme für Nacht- und Tageszeit einstellen.",
"label": "Farbtemperatur",
"night": "Nacht"
"day": "Tag",
"day-description": "Steuert die Farbtemperatur tagsüber.",
"night": "Nacht",
"night-description": "Steuert die Farbtemperatur nachts."
}
},
"title": "Anzeige"

View File

@@ -1258,10 +1258,12 @@
"label": "Night Light"
},
"temperature": {
"day": "Day",
"description": "Set the color warmth for nighttime and daytime.",
"label": "Color temperature",
"night": "Night"
"day": "Day",
"day-description": "Controls the temperature during daytime.",
"night": "Night",
"night-description": "Controls the temperature during nighttime."
}
},
"title": "Display"

View File

@@ -1258,10 +1258,12 @@
"label": "Luz nocturna"
},
"temperature": {
"day": "Día",
"description": "Establece la calidez del color para la noche y el día.",
"label": "Temperatura de color",
"night": "Noche"
"day": "Día",
"day-description": "Controla la temperatura durante el día.",
"night": "Noche",
"night-description": "Controla la temperatura durante la noche."
}
},
"title": "Pantalla"

View File

@@ -1258,10 +1258,12 @@
"label": "Éclairage nocturne"
},
"temperature": {
"day": "Jour",
"description": "Réglez la chaleur des couleurs pour la nuit et le jour.",
"label": "Température de couleur",
"night": "Nuit"
"day": "Jour",
"day-description": "Contrôle la température pendant la journée.",
"night": "Nuit",
"night-description": "Contrôle la température pendant la nuit."
}
},
"title": "Affichage"

View File

@@ -1258,10 +1258,12 @@
"label": "夜間モード"
},
"temperature": {
"day": "日中",
"description": "日中と夜間の色温度(暖かさ)を設定します。",
"label": "色温度",
"night": "夜間"
"day": "日中",
"day-description": "昼間の色温度を調整します。",
"night": "夜間",
"night-description": "夜間の色温度を調整します。"
}
},
"title": "ディスプレイ"

View File

@@ -1258,10 +1258,12 @@
"label": "Nachtlicht"
},
"temperature": {
"day": "Dag",
"description": "Stel de kleurwarmte voor nacht en dag in.",
"label": "Kleurtemperatuur",
"night": "Nacht"
"day": "Dag",
"day-description": "Regelt de kleurtemperatuur overdag.",
"night": "Nacht",
"night-description": "Regelt de kleurtemperatuur 's nachts."
}
},
"title": "Beeldscherm"

View File

@@ -1258,10 +1258,12 @@
"label": "Luz noturna"
},
"temperature": {
"day": "Dia",
"description": "Defina o quão quente a cor será durante a noite e o dia.",
"label": "Temperatura da cor",
"night": "Noite"
"day": "Dia",
"day-description": "Controla a temperatura durante o dia.",
"night": "Noite",
"night-description": "Controla a temperatura durante a noite."
}
},
"title": "Tela"

View File

@@ -1258,10 +1258,12 @@
"label": "Ночной свет"
},
"temperature": {
"day": "День",
"description": "Установите цветовую температуру для ночного и дневного времени.",
"label": "Цветовая температура",
"night": "Ночь"
"day": "День",
"day-description": "Управляет цветовой температурой в дневное время.",
"night": "Ночь",
"night-description": "Управляет цветовой температурой в ночное время."
}
},
"title": "Дисплей"

View File

@@ -1258,10 +1258,12 @@
"label": "Gece ışığı"
},
"temperature": {
"day": "Gündüz",
"description": "Gece ve gündüz için renk sıcaklığını ayarlayın.",
"label": "Renk sıcaklığı",
"night": "Gece"
"day": "Gündüz",
"day-description": "Gündüz saatlerindeki renk sıcaklığını kontrol eder.",
"night": "Gece",
"night-description": "Gece saatlerindeki renk sıcaklığını kontrol eder."
}
},
"title": "Görüntü"

View File

@@ -1258,10 +1258,12 @@
"label": "Нічне світло"
},
"temperature": {
"day": "День",
"description": "Встановіть теплоту кольору для нічного та денного часу.",
"label": "Колірна температура",
"night": "Ніч"
"day": "День",
"day-description": "Керує колірною температурою вдень.",
"night": "Ніч",
"night-description": "Керує колірною температурою вночі."
}
},
"title": "Дисплей"

View File

@@ -1258,10 +1258,12 @@
"label": "夜间模式"
},
"temperature": {
"day": "白天",
"description": "设置夜间和白天的颜色温暖度。",
"label": "色温",
"night": "夜间"
"day": "白天",
"day-description": "控制白天的色温。",
"night": "夜间",
"night-description": "控制夜间的色温。"
}
},
"title": "显示"

View File

@@ -232,63 +232,130 @@ ColumnLayout {
// Temperature
ColumnLayout {
spacing: Style.marginXS
Layout.alignment: Qt.AlignVCenter
visible: Settings.data.nightLight.enabled
spacing: Style.marginM
Layout.fillWidth: true
// Night temperature
NLabel {
label: I18n.tr("settings.display.night-light.temperature.label")
description: I18n.tr("settings.display.night-light.temperature.description")
label: I18n.tr("settings.display.night-light.temperature.night")
description: I18n.tr("settings.display.night-light.temperature.night-description")
Layout.fillWidth: true
}
RowLayout {
visible: Settings.data.nightLight.enabled
Layout.fillWidth: true
spacing: Style.marginM
Layout.fillWidth: false
Layout.fillHeight: true
Layout.alignment: Qt.AlignVCenter
NText {
text: I18n.tr("settings.display.night-light.temperature.night")
pointSize: Style.fontSizeM
color: Color.mOnSurfaceVariant
Layout.alignment: Qt.AlignVCenter
}
NSlider {
id: nightSlider
Layout.fillWidth: true
NTextInput {
text: Settings.data.nightLight.nightTemp
inputMethodHints: Qt.ImhDigitsOnly
Layout.alignment: Qt.AlignVCenter
onEditingFinished: {
var nightTemp = parseInt(text);
from: 1000
to: 6500
value: Settings.data.nightLight.nightTemp
// Clamp as the thumb moves, but do NOT change Settings here
onValueChanged: {
var dayTemp = parseInt(Settings.data.nightLight.dayTemp);
if (!isNaN(nightTemp) && !isNaN(dayTemp)) {
// Clamp value between [1000 .. (dayTemp-500)]
var clampedValue = Math.min(dayTemp - 500, Math.max(1000, nightTemp));
text = Settings.data.nightLight.nightTemp = clampedValue.toString();
var v = Math.round(value);
if (!isNaN(dayTemp)) {
var maxNight = dayTemp - 500;
v = Math.min(maxNight, Math.max(1000, v));
} else {
v = Math.max(1000, v);
}
if (v !== value)
value = v;
}
// Only write back to Settings when the user releases the slider
onPressedChanged: {
if (!pressed) {
var dayTemp = parseInt(Settings.data.nightLight.dayTemp);
var v = Math.round(value);
if (!isNaN(dayTemp)) {
var maxNight = dayTemp - 500;
v = Math.min(maxNight, Math.max(1000, v));
} else {
v = Math.max(1000, v);
}
Settings.data.nightLight.nightTemp = v;
}
}
}
NText {
text: I18n.tr("settings.display.night-light.temperature.day")
text: nightSlider.value + "K"
pointSize: Style.fontSizeM
color: Color.mOnSurfaceVariant
Layout.alignment: Qt.AlignVCenter
}
NTextInput {
text: Settings.data.nightLight.dayTemp
inputMethodHints: Qt.ImhDigitsOnly
Layout.alignment: Qt.AlignVCenter
onEditingFinished: {
var dayTemp = parseInt(text);
}
// Day temperature
NLabel {
label: I18n.tr("settings.display.night-light.temperature.day")
description: I18n.tr("settings.display.night-light.temperature.day-description")
Layout.fillWidth: true
}
RowLayout {
Layout.fillWidth: true
spacing: Style.marginM
NSlider {
id: daySlider
Layout.fillWidth: true
from: 1000
to: 6500
value: Settings.data.nightLight.dayTemp
// Clamp as the thumb moves, but do NOT change Settings here
onValueChanged: {
var nightTemp = parseInt(Settings.data.nightLight.nightTemp);
if (!isNaN(nightTemp) && !isNaN(dayTemp)) {
// Clamp value between [(nightTemp+500) .. 6500]
var clampedValue = Math.max(nightTemp + 500, Math.min(6500, dayTemp));
text = Settings.data.nightLight.dayTemp = clampedValue.toString();
var v = Math.round(value);
if (!isNaN(nightTemp)) {
var minDay = nightTemp + 500;
v = Math.max(minDay, Math.min(6500, v));
} else {
v = Math.min(6500, v);
}
if (v !== value)
value = v;
}
// Only write back to Settings when the user releases the slider
onPressedChanged: {
if (!pressed) {
var nightTemp = parseInt(Settings.data.nightLight.nightTemp);
var v = Math.round(value);
if (!isNaN(nightTemp)) {
var minDay = nightTemp + 500;
v = Math.max(minDay, Math.min(6500, v));
} else {
v = Math.min(6500, v);
}
Settings.data.nightLight.dayTemp = v;
}
}
}
NText {
text: daySlider.value + "K"
pointSize: Style.fontSizeM
color: Color.mOnSurfaceVariant
Layout.alignment: Qt.AlignVCenter
}
}
}