diff --git a/AddonsPanel.qml b/AddonsPanel.qml
index 750ca18..0a52993 100644
--- a/AddonsPanel.qml
+++ b/AddonsPanel.qml
@@ -18,6 +18,7 @@ import QtQuick 2.9
import GitAddonsManager.engine 1.0
import QtQuick.Controls 2.4
import QtQuick.Layouts 1.3
+import QtQuick.Controls.Material 2.4
Page {
title: "Addons"
@@ -30,6 +31,7 @@ Page {
action: addAction
ToolTip.visible: hovered
ToolTip.text: "Download a new addon from a git repository"
+ Material.foreground: Material.background
}
ToolButton {
hoverEnabled: true
@@ -37,12 +39,14 @@ Page {
icon.name: availableUpdates > 0 ? "update-high" : "update-none"
ToolTip.visible: hovered
ToolTip.text: "Upgrade all addons"
+ Material.foreground: Material.background
}
ToolButton {
hoverEnabled: true
action: openAddonsFolder
ToolTip.visible: hovered
ToolTip.text: "Open addons folder externally"
+ Material.foreground: Material.background
}
Item {
@@ -55,6 +59,7 @@ Page {
action: refreshAction
ToolTip.visible: hovered
ToolTip.text: "Refresh addons list and check for updates"
+ Material.foreground: Material.background
}
}
}
diff --git a/ColorPicker.qml b/ColorPicker.qml
new file mode 100644
index 0000000..b4ed2a6
--- /dev/null
+++ b/ColorPicker.qml
@@ -0,0 +1,36 @@
+import QtQuick 2.9
+import QtQuick.Layouts 1.3
+import QtQuick.Controls 2.4
+
+RowLayout {
+ id: comp
+ property alias text: label.text
+ property alias model: colorBox.model
+ property int currentIndex
+ property color color: model.count>0?model.get(currentIndex).color:"transparent"
+ Label {
+ id: label
+ }
+ ComboBox {
+ id: colorBox
+ delegate: ItemDelegate{
+ width: colorBox.width
+ height: colorBox.height
+ background: Rectangle {
+ color: comp.model.get(index).color
+ }
+ }
+ indicator: Item {}
+ contentItem: Item {}
+ background: Button {
+ id: bg
+ onClicked: colorBox.popup.visible = true
+ contentItem: Rectangle {
+ radius: height/2
+ color: comp.color
+ }
+ }
+ currentIndex: comp.currentIndex
+ onActivated: comp.currentIndex = currentIndex
+ }
+}
diff --git a/Options.qml b/Options.qml
index 5cc5a15..8da743d 100644
--- a/Options.qml
+++ b/Options.qml
@@ -18,7 +18,9 @@ import QtQuick 2.9
import QtQuick.Controls 2.4
import GitAddonsManager.engine 1.0
import QtQuick.Layouts 1.3
-
+import QtQuick.Controls.Material 2.2
+import QtQuick.Controls.Universal 2.2
+import Qt.labs.settings 1.0
ColumnLayout {
RowLayout {
@@ -44,6 +46,7 @@ ColumnLayout {
}
}
CheckBox {
+ Layout.fillWidth: true
tristate: Engine.minimizeToTray == Engine.MinimizeToTrayAsk
onCheckedChanged: Engine.minimizeToTray = checked ? Engine.MinimizeToTrayYes : Engine.MinimizeToTrayNo
checkState: Engine.minimizeToTray == Engine.MinimizeToTrayAsk ?
@@ -55,20 +58,93 @@ ColumnLayout {
ToolTip.visible: hovered
ToolTip.text: qsTr("Minimize to System Tray when the main window is closed.")
}
- RowLayout {
- Label {
- text: qsTr("Style")
- }
- ComboBox {
- model: Engine.availableStyles
- currentIndex: Engine.availableStyles.indexOf(Engine.style)
- onActivated: {
- Engine.style = Engine.availableStyles[currentIndex]
- restartDialog.visible = true
+ GroupBox {
+ Layout.fillWidth: true
+ title: qsTr("Style")
+ Flow {
+ anchors.fill: parent
+ spacing: 4
+ ComboBox {
+ model: Engine.availableStyles
+ currentIndex: Engine.availableStyles.indexOf(Engine.style)
+ onActivated: {
+ Engine.style = Engine.availableStyles[currentIndex]
+ restartDialog.visible = true
+ }
+ ToolTip.text: qsTr("Requires restart")
+ ToolTip.visible: hovered
+ hoverEnabled: true
+ }
+ ComboBox {
+ id: materialTheme
+ visible: Engine.style == "Material"
+ model: ["Light", "Dark"]
+ onCurrentIndexChanged: window.Material.theme = currentIndex
+ }
+ ComboBox {
+ id: universalTheme
+ visible: Engine.style == "Universal"
+ model: ["Light", "Dark", "System"]
+ onActivated: window.Universal.theme = currentIndex
+ }
+ ListModel {
+ id: materialColors
+ dynamicRoles: true
+ Component.onCompleted: {
+ for (var i = 0; i < 19; i++)
+ append({"color": Material.color(i)})}
+ }
+ ListModel {
+ id: materialDarkColors
+ dynamicRoles: true
+ Component.onCompleted: {
+ for (var i = 0; i < 19; i++)
+ append({"color": Material.color(i,Material.Shade200)})}
+ }
+ ListModel {
+ id: universalColors
+ dynamicRoles: true
+ Component.onCompleted: {
+ for (var i = 0; i < 20; i++)
+ append({"color": Universal.color(i)})}
+ }
+
+ ColorPicker {
+ id: materialPrimary
+ visible: Engine.style == "Material"
+ text: qsTr("Primary:")
+ model: materialTheme.currentIndex === Material.Dark ? materialDarkColors : materialColors
+ currentIndex: Material.Indigo
+ onColorChanged: window.Material.primary = color
+ }
+ ColorPicker {
+ id: materialAccent
+ visible: Engine.style == "Material"
+ text: qsTr("Accent:")
+ model: materialTheme.currentIndex === Material.Dark ? materialDarkColors : materialColors
+ currentIndex: Material.Pink
+ onColorChanged: window.Material.accent = color
+ }
+ ColorPicker {
+ id: universalAccent
+ visible: Engine.style == "Universal"
+ text: qsTr("Accent:")
+ model: universalColors
+ currentIndex: Universal.Cobalt
+ onColorChanged: window.Universal.accent = color
+ }
+
+ Settings {
+ category: "Material"
+ property alias primary: materialPrimary.currentIndex
+ property alias accent: materialAccent.currentIndex
+ property alias theme: materialTheme.currentIndex
+ }
+ Settings {
+ category: "Universal"
+ property alias accent: universalAccent.currentIndex
+ property alias theme: universalTheme.currentIndex
}
- ToolTip.text: qsTr("Requires restart")
- ToolTip.visible: hovered
- hoverEnabled: true
}
}
Dialog {
diff --git a/main.qml b/main.qml
index 4e3c22c..87e3a37 100644
--- a/main.qml
+++ b/main.qml
@@ -125,7 +125,8 @@ ApplicationWindow {
}
Options {
- width: parent.width
+ Layout.fillWidth: true
+ Layout.fillHeight: true
}
ColumnLayout {
diff --git a/qml.qrc b/qml.qrc
index 44b5c42..bb6b373 100644
--- a/qml.qrc
+++ b/qml.qrc
@@ -19,5 +19,6 @@
icons/breeze/svg/view-refresh.svg
icons/breeze/COPYING-ICONS
icons/breeze/index.theme
+ ColorPicker.qml