mirror of
https://github.com/noctalia-dev/noctalia-shell.git
synced 2026-05-11 17:08:27 +08:00
82 lines
2.3 KiB
QML
82 lines
2.3 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
import QtQuick.Layouts
|
|
import qs.Commons
|
|
import qs.Widgets
|
|
|
|
ColumnLayout {
|
|
id: root
|
|
spacing: Style.marginM
|
|
|
|
// Properties to receive data from parent
|
|
property var widgetData: null
|
|
property var widgetMetadata: null
|
|
|
|
signal settingsChanged(var settings)
|
|
|
|
// Local state
|
|
property bool valueHideWhenIdle: widgetData.hideWhenIdle !== undefined ? widgetData.hideWhenIdle : widgetMetadata.hideWhenIdle
|
|
property string valueColorName: widgetData.colorName !== undefined ? widgetData.colorName : widgetMetadata.colorName
|
|
|
|
function saveSettings() {
|
|
var settings = Object.assign({}, widgetData || {});
|
|
settings.width = parseInt(widthInput.text) || widgetMetadata.width;
|
|
settings.hideWhenIdle = valueHideWhenIdle;
|
|
settings.colorName = valueColorName;
|
|
return settings;
|
|
}
|
|
|
|
NTextInput {
|
|
id: widthInput
|
|
Layout.fillWidth: true
|
|
label: I18n.tr("common.width")
|
|
description: I18n.tr("bar.audio-visualizer.width-description")
|
|
text: widgetData.width || widgetMetadata.width
|
|
placeholderText: I18n.tr("placeholders.enter-width-pixels")
|
|
onEditingFinished: settingsChanged(saveSettings())
|
|
}
|
|
|
|
NComboBox {
|
|
Layout.fillWidth: true
|
|
label: I18n.tr("bar.audio-visualizer.color-name-label")
|
|
description: I18n.tr("bar.audio-visualizer.color-name-description")
|
|
model: [
|
|
{
|
|
"key": "primary",
|
|
"name": I18n.tr("common.primary")
|
|
},
|
|
{
|
|
"key": "secondary",
|
|
"name": I18n.tr("common.secondary")
|
|
},
|
|
{
|
|
"key": "tertiary",
|
|
"name": I18n.tr("common.tertiary")
|
|
},
|
|
{
|
|
"key": "onSurface",
|
|
"name": I18n.tr("common.on-surface")
|
|
},
|
|
{
|
|
"key": "error",
|
|
"name": I18n.tr("common.error")
|
|
}
|
|
]
|
|
currentKey: root.valueColorName
|
|
onSelected: key => {
|
|
root.valueColorName = key;
|
|
settingsChanged(saveSettings());
|
|
}
|
|
}
|
|
|
|
NToggle {
|
|
label: I18n.tr("bar.audio-visualizer.hide-when-idle-label")
|
|
description: I18n.tr("bar.audio-visualizer.hide-when-idle-description")
|
|
checked: valueHideWhenIdle
|
|
onToggled: checked => {
|
|
valueHideWhenIdle = checked;
|
|
settingsChanged(saveSettings());
|
|
}
|
|
}
|
|
}
|