diff --git a/qml/SettingsDialog.qml b/qml/SettingsDialog.qml
index b9ceb40..1d38580 100644
--- a/qml/SettingsDialog.qml
+++ b/qml/SettingsDialog.qml
@@ -20,6 +20,7 @@ import QtMultimedia 5.8
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
import QtQuick.Layouts 1.3
+import QtGraphicalEffects 1.0
import "./components"
import "./styles"
@@ -31,7 +32,7 @@ Popup {
height: startButt.height
modal: true
dim: false
- scale: 0
+ opacity: 0
property var connections
@@ -56,28 +57,86 @@ Popup {
}
enter: Transition {
- NumberAnimation { properties: "scale"; to: 1; duration: 300; easing.type: Easing.Linear }
+ NumberAnimation { properties: "opacity"; to: 1; duration: 300; easing.type: Easing.InOutQuad }
}
exit: Transition {
- NumberAnimation { properties: "scale"; to: 0; duration: 300; easing.type: Easing.Linear }
+ NumberAnimation { properties: "opacity"; to: 0; duration: 300; easing.type: Easing.InOutQuad }
}
background: Rectangle {
radius: width * 0.5
color: StyleSettings.viewColor
border.color: StyleSettings.lineColor
- border.width: 1
+ border.width: 0
+
+ RectangularGlow {
+ id: effect_2
+ glowRadius: 7
+ spread: 0.02
+ color: "black"
+ opacity: 0.18
+ anchors.fill: headlineUnderline
+ scale: 1
+
+ }
+
+ Canvas {
+
+ id: headerBackground
- Label {
- id: head_text
- text: options_stack.currentItem.title
- font.pixelSize: headlineUnderline.width * 0.05
- color: enabled ? StyleSettings.textColor:StyleSettings.disabledTextColor
anchors {
- horizontalCenter: parent.horizontalCenter
+ left: parent.left
+ right: parent.right
top: parent.top
- topMargin: headlineUnderline.anchors.topMargin / 2 - height / 2
+ bottom: headlineUnderline.bottom
+ }
+
+ height: header.height
+ width: header.width
+
+ property color color: StyleSettings.viewColor
+
+ onColorChanged: {
+ requestPaint()
+ }
+
+ onPaint: {
+ var ctx = getContext("2d");
+ ctx.reset();
+
+ var centreX = root.width / 2;
+ var centreY = root.height / 2;
+
+ ctx.beginPath();
+ ctx.fillStyle = headerBackground.color
+ ctx.moveTo(centreX, centreY);
+ ctx.arc(centreX, centreY, root.width / 2, 1 * Math.PI, 2*Math.PI, false);
+ //ctx.lineTo(centreX, centreY);
+ ctx.fill();
+ }
+ }
+
+ Item {
+ id: header
+
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: parent.top
+ bottom: headlineUnderline.bottom
+ }
+
+ Label {
+ id: head_text
+ text: options_stack.currentItem.title
+ font.pixelSize: headlineUnderline.width * 0.05
+ color: enabled ? StyleSettings.textColor:StyleSettings.disabledTextColor
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ top: parent.top
+ topMargin: headlineUnderline.anchors.topMargin / 2 - height / 2
+ }
}
}
@@ -86,6 +145,7 @@ Popup {
height: 1
width: parent.width
color: StyleSettings.lineColor
+ visible: false
anchors {
top: parent.top
left: parent.left
@@ -96,7 +156,7 @@ Popup {
}
}
- Button {
+ FancyButton {
id: head_back
anchors {
left: parent.left
@@ -107,21 +167,13 @@ Popup {
height: parent.height * 0.13
width: height
- opacity: root.closePolicy === Popup.NoAutoClose ? 0:1
+ //opacity: root.closePolicy === Popup.NoAutoClose ? 0:1
enabled: opacity > 0
- background: Rectangle {
- radius: width * 0.5
- color: parent.pressed ? StyleSettings.buttonPressedColor:StyleSettings.buttonColor
- border.color: StyleSettings.buttonBorderColor
- border.width: 1
- Image {
- anchors.fill: parent
- anchors.margins: parent.width * 0.2
- source: StyleSettings.backIcon
+ glowOpacity: Math.pow( root.opacity, 100 )
- }
- }
+ backgroundColor: StyleSettings.buttonColor
+ image: StyleSettings.backIcon
onClicked: {
options_stack.depth > 1 ? options_stack.pop():root.close()
diff --git a/qml/components/FancyButton.qml b/qml/components/FancyButton.qml
new file mode 100644
index 0000000..96dd6a4
--- /dev/null
+++ b/qml/components/FancyButton.qml
@@ -0,0 +1,70 @@
+import QtQuick 2.9
+import QtQuick.Controls 2.4
+import QtGraphicalEffects 1.0
+
+Button {
+ id: control
+
+ property string image
+ property color backgroundColor: "white"
+ property real imageScale: 1
+ property double glowRadius: 0.001
+ property double glowSpread: 0.2
+ property bool glowVisible: true
+ property double glowScale: 0.75
+ property double glowOpacity: 1
+
+
+
+ scale: control.pressed ? 0.8:1
+
+ Behavior on scale {
+ PropertyAnimation {
+ duration: 100
+ }
+ }
+
+ background: Item {
+ id: controlBackgroundContainer
+
+ RectangularGlow {
+ id: effect
+ glowRadius: control.glowRadius
+ spread: control.glowSpread
+ color: "black"
+
+ visible: control.glowVisible
+
+ cornerRadius: controlBackground.radius
+ anchors.fill: controlBackground
+ scale: control.glowScale
+ opacity: control.glowOpacity
+ }
+
+ Rectangle {
+ id: controlBackground
+
+ anchors.fill: parent
+
+ radius: height * 0.5
+
+ color: control.backgroundColor
+
+ Image {
+ id: buttonIcon
+ source: control.image
+
+ anchors.centerIn: parent
+ height: parent.height * 0.5
+ width: height
+
+ mipmap: true
+
+ fillMode: Image.PreserveAspectFit
+
+ scale: control.imageScale
+ }
+ }
+ }
+
+}
diff --git a/qml/main.qml b/qml/main.qml
index c33c812..f80c3c4 100644
--- a/qml/main.qml
+++ b/qml/main.qml
@@ -19,6 +19,7 @@ import QtQuick 2.9
import QtMultimedia 5.8
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
+import QtGraphicalEffects 1.0
import "."
import "./components"
import "./styles"
@@ -66,12 +67,15 @@ Window {
break;
case 1:
stateString = "STARTING"
+ settingsDialog.close()
break;
case 2:
stateString = "RUNNING"
+ settingsDialog.close()
break;
case 3:
stateString = "STOPPED"
+ settingsDialog.close()
}
root.state = stateString
}
@@ -80,6 +84,16 @@ Window {
/*------------------------
Timer text an upper line
------------------------*/
+ RectangularGlow {
+ id: effect_2
+ glowRadius: 7
+ spread: 0.02
+ color: "black"
+ opacity: 0.18
+ anchors.fill: time_container
+ scale: 1
+ }
+
Item {
id: time_container
anchors {
@@ -136,12 +150,13 @@ Window {
anchors.left: root.landscape() ? time_container.right:parent.left
anchors.top: root.landscape() ? parent.top:time_container.bottom
anchors.bottom: root.landscape() ? parent.bottom:undefined
+ visible: false
}
/*----------------------
Start / Stop / Reset button
----------------------*/
- Button {
+ FancyButton {
id : startButt
text: qsTr("start")
@@ -158,21 +173,18 @@ Window {
height: root.landscape() ? size > parent.height * 0.9 ? parent.height * 0.9:size : size
width: root.landscape() ? size : size > parent.width * 0.9 ? parent.width * 0.9:size
- background: Rectangle {
- color: parent.pressed ? StyleSettings.buttonPressedColor:StyleSettings.buttonColor
- border.color: StyleSettings.buttonBorderColor
- border.width: 1
- radius: width / 2
- Label {
- id: startButt_text
- text: startButt.text
- anchors.centerIn: parent
- font.pixelSize: parent.height * 0.16
- font.family: "Helvetica"
- color: enabled ? StyleSettings.textColor:StyleSettings.disabledTextColor
- }
+ Label {
+ id: startButt_text
+ text: startButt.text
+ anchors.centerIn: parent
+ font.pixelSize: parent.height * 0.16
+ font.family: "Helvetica"
+ color: enabled ? StyleSettings.textColor:StyleSettings.disabledTextColor
}
+
+ backgroundColor: StyleSettings.buttonColor
+
Behavior on text {
//animate a text change
enabled: true
@@ -201,6 +213,8 @@ Window {
anchors.fill: startButt
opacity: root.state === "STARTING" || root.state === "IDLE" ? 1:0
+ scale: startButt.scale
+
lineWidth: 5
arcBegin: 0
@@ -220,7 +234,7 @@ Window {
/*----------------------
Cancel button
----------------------*/
- RoundButton {
+ FancyButton {
id: cancelButt
text: qsTr("cancel")
@@ -246,20 +260,17 @@ Window {
duration: 200
}
}
- background: Rectangle {
- color: parent.pressed ? StyleSettings.buttonPressedColor:StyleSettings.buttonColor
- border.color: StyleSettings.buttonBorderColor
- border.width: 1
- radius: width / 2
- Label {
- id: cancelButt_text
- text: cancelButt.text
- anchors.centerIn: parent
- font.pixelSize: parent.height * 0.16
- font.family: "Helvetica"
- color: StyleSettings.textColor
- }
+
+ Label {
+ id: cancelButt_text
+ text: cancelButt.text
+ anchors.centerIn: parent
+ font.pixelSize: parent.height * 0.16
+ font.family: "Helvetica"
+ color: StyleSettings.textColor
}
+
+ backgroundColor: StyleSettings.buttonColor
}
/*------
@@ -294,13 +305,26 @@ Window {
/*-------------------
lower line and menu
-------------------*/
+
Rectangle {
+ id: lowerLine
width: root.landscape() ? 1:parent.width
height: root.landscape() ? parent.height:1
color: StyleSettings.lineColor
anchors.right: root.landscape() ? menu_container.left:parent.right
anchors.bottom: root.landscape() ? parent.bottom:menu_container.top
anchors.top: root.landscape() ? parent.top:undefined
+ visible: false
+ }
+
+ RectangularGlow {
+ id: effect
+ glowRadius: 7
+ spread: 0.02
+ color: "black"
+ opacity: 0.18
+ anchors.fill: menu_container
+ scale: 1
}
Item {
@@ -315,11 +339,12 @@ Window {
}
Rectangle {
+ id: lowerMenuBackground
anchors.fill: parent
color: StyleSettings.menuColor
}
- RoundButton {
+ FancyButton {
id: settingsButt
anchors {
@@ -344,21 +369,10 @@ Window {
settingsDialog.open()
}
- background: Rectangle {
- color: parent.pressed ? StyleSettings.buttonPressedColor:StyleSettings.buttonColor
- border.color: StyleSettings.buttonBorderColor
- border.width: 1
- radius: width / 2
+ image: StyleSettings.settIcon
+
+ backgroundColor: parent.pressed ? StyleSettings.buttonPressedColor:StyleSettings.buttonColor
- Image {
- id: settungsButt_Image
- source: StyleSettings.settIcon
- anchors.centerIn: parent
- height: parent.height * 0.7
- width: parent.width * 0.7
- mipmap: true
- }
- }
}
/*
diff --git a/qml/qml.qrc b/qml/qml.qrc
index 9ae381b..b006d3e 100644
--- a/qml/qml.qrc
+++ b/qml/qml.qrc
@@ -11,10 +11,10 @@
styles/qmldir
styles/Dark.js
styles/Light.js
- styles/Default.js
components/ConnectionIcon.qml
SpeedTimer.qml
components/NextPageDelegate.qml
ErrorDialog.qml
+ components/FancyButton.qml
diff --git a/qml/styles/Default.js b/qml/styles/Default.js
deleted file mode 100644
index ffa9aeb..0000000
--- a/qml/styles/Default.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Colors
-var backgroundColor = "white"
-
-// buttons
-var buttonColor = "white"
-var buttonPressedColor = "lightgrey"
-var buttonBorderColor = "grey"
-var disabledButtonColor = Qt.darker("white", 1.2)
-
-var viewColor = "white"
-var menuColor = "white"
-
-//delegates
-var delegate1Color = Qt.darker(viewColor, 1.2)
-var delegate2Color = Qt.lighter(viewColor, 1.2)
-
-//text
-var textColor = "black"
-var textDarkColor = "#232323"
-var disabledTextColor = "grey"
-
-var sliderColor = "#6ccaf2"
-
-var errorColor = "#ba3f62"
-var infoColor = "#3fba62"
-
-var lineColor = "grey"
-
-// Icons
-var backIcon = "qrc:/graphics/icons/back_black.png"
-var settIcon = "qrc:/graphics/icons/settings_black.png"
diff --git a/qml/styles/StyleSettings.qml b/qml/styles/StyleSettings.qml
index fa8af42..329346a 100644
--- a/qml/styles/StyleSettings.qml
+++ b/qml/styles/StyleSettings.qml
@@ -52,13 +52,11 @@ pragma Singleton
import QtQuick 2.5
import "./Dark.js" as Dark
import "./Light.js" as Light
-import "./Default.js" as Default
Item {
property int wHeight
property int wWidth
- property var theme: _cppAppSettings.loadSetting("theme") === "Default" ? Default:
- _cppAppSettings.loadSetting("theme") === "Light" ? Light:
+ property var theme: _cppAppSettings.loadSetting("theme") === "Light" ? Light:
_cppAppSettings.loadSetting("theme") === "Dark" ? Dark:null
// Colors
readonly property color backgroundColor: theme.backgroundColor
@@ -111,14 +109,14 @@ Item {
function refreshTheme(){
switch(_cppAppSettings.loadSetting("theme")){
- case "Default":
- theme = Dark
- break
case "Dark":
theme = Light
break
case "Light":
- theme = Default
+ theme = Dark
+ break
+ default:
+ theme = Light
break
}
}
@@ -139,17 +137,17 @@ Item {
function setTheme()
{
switch(_cppAppSettings.loadSetting("theme")){
- case "Default":
- _cppAppSettings.writeSetting("theme", "Dark")
- theme = Dark
- break
case "Dark":
_cppAppSettings.writeSetting("theme", "Light")
theme = Light
break
case "Light":
- _cppAppSettings.writeSetting("theme", "Default")
- theme = Default
+ _cppAppSettings.writeSetting("theme", "Dark")
+ theme = Dark
+ break
+ default:
+ _cppAppSettings.writeSetting("theme", "Light")
+ theme = Light
break
}
}
diff --git a/sources/climbingrace.cpp b/sources/climbingrace.cpp
index f97f1a7..429910f 100644
--- a/sources/climbingrace.cpp
+++ b/sources/climbingrace.cpp
@@ -18,7 +18,7 @@ ClimbingRace::ClimbingRace(QObject *parent) : QObject(parent)
this->appSettings = new AppSettings;
this->baseConn = new BaseConn;
- this->baseConn->setIP("localhost");
+ this->baseConn->setIP("192.168.4.1");
connect(this->baseConn, &BaseConn::stateChanged, this, &ClimbingRace::baseStationStateChanged);
this->speedTimers.append( new SpeedTimer );