Add missing resources.
This commit is contained in:
257
src/contents/ui/main.qml
Normal file
257
src/contents/ui/main.qml
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
import QtQuick 2.6
|
||||||
|
import org.kde.kirigami 2.6 as Kirigami
|
||||||
|
import QtQuick.Controls 2.0 as Controls
|
||||||
|
import QtQuick.Layouts 1.12 as Layouts
|
||||||
|
|
||||||
|
Kirigami.ApplicationWindow {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
title: "Vehicle Voyage"
|
||||||
|
|
||||||
|
|
||||||
|
pageStack.initialPage: mainPageComponent
|
||||||
|
contextDrawer: Kirigami.ContextDrawer {}
|
||||||
|
/*
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: mainPageComponent
|
||||||
|
|
||||||
|
Kirigami.Page {
|
||||||
|
id: mainPage
|
||||||
|
mainAction: Kirigami.Action {
|
||||||
|
iconName: "view-refresh"
|
||||||
|
text: qsTr("Query Device")
|
||||||
|
onTriggered: {
|
||||||
|
deviceSelect.open();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
contextualActions: [
|
||||||
|
Kirigami.Action {
|
||||||
|
iconName: "help-about"
|
||||||
|
text: qsTr("About")
|
||||||
|
onTriggered: {
|
||||||
|
pageStack.replace(aboutPageComponent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
title: "Monitor"
|
||||||
|
leftPadding: 0
|
||||||
|
rightPadding: 0
|
||||||
|
|
||||||
|
Layouts.ColumnLayout {
|
||||||
|
anchors.fill: parent
|
||||||
|
Kirigami.InlineMessage {
|
||||||
|
Layouts.Layout.fillWidth: true
|
||||||
|
Layouts.Layout.leftMargin: 10
|
||||||
|
Layouts.Layout.rightMargin: 10
|
||||||
|
z: 9997
|
||||||
|
type: Kirigami.MessageType.Error
|
||||||
|
id: errorMessage
|
||||||
|
showCloseButton: true
|
||||||
|
Connections {
|
||||||
|
target: qiflora
|
||||||
|
onErrorHappened: {
|
||||||
|
errorMessage.text = description;
|
||||||
|
errorMessage.visible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.CardsListView {
|
||||||
|
Layouts.Layout.fillWidth: true
|
||||||
|
Layouts.Layout.fillHeight: true
|
||||||
|
id: monitorView
|
||||||
|
model: ListModel {
|
||||||
|
id: monitorTypes
|
||||||
|
ListElement{
|
||||||
|
chartType: "temperature"
|
||||||
|
title: "Temperature"
|
||||||
|
icon: "filename-bpm-amarok"
|
||||||
|
lineColor: "red"
|
||||||
|
units: "°C"
|
||||||
|
yMin: -20
|
||||||
|
yMax: 40
|
||||||
|
modelCol: 1
|
||||||
|
}
|
||||||
|
ListElement{
|
||||||
|
chartType: "moisture"
|
||||||
|
title: "Moisture"
|
||||||
|
icon: "colors-chromablue"
|
||||||
|
lineColor: "cyan"
|
||||||
|
units: "%"
|
||||||
|
yMin: 0
|
||||||
|
yMax: 75
|
||||||
|
modelCol: 3
|
||||||
|
}
|
||||||
|
ListElement{
|
||||||
|
chartType: "conductivity"
|
||||||
|
title: "Conductivity"
|
||||||
|
icon: "quickopen"
|
||||||
|
lineColor: "gold"
|
||||||
|
units: "µS/cm"
|
||||||
|
yMin: 0
|
||||||
|
yMax: 6000
|
||||||
|
modelCol: 4
|
||||||
|
}
|
||||||
|
ListElement{
|
||||||
|
chartType: "brightness"
|
||||||
|
title: "Brightness"
|
||||||
|
icon: "contrast"
|
||||||
|
lineColor: "orange"
|
||||||
|
units: "lux"
|
||||||
|
yMin: 0
|
||||||
|
yMax: 30000
|
||||||
|
modelCol: 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate: Kirigami.Card {
|
||||||
|
id: card
|
||||||
|
banner {
|
||||||
|
title: qsTr(model.title)
|
||||||
|
titleIcon: model.icon
|
||||||
|
titleLevel: 2
|
||||||
|
}
|
||||||
|
header: Row {
|
||||||
|
layoutDirection: Qt.RightToLeft
|
||||||
|
topPadding: 10.0
|
||||||
|
rightPadding: 10.0
|
||||||
|
Layouts.ColumnLayout {
|
||||||
|
Kirigami.Heading {
|
||||||
|
Layouts.Layout.alignment: Qt.AlignCenter
|
||||||
|
level: 4
|
||||||
|
text: qsTr("Last Measured")
|
||||||
|
}
|
||||||
|
Kirigami.Heading {
|
||||||
|
Layouts.Layout.alignment: Qt.AlignCenter
|
||||||
|
level: 3
|
||||||
|
text: {
|
||||||
|
if(model.chartType == "temperature") Math.round(qiflora.temperature*10)/10 + "°C\n" + (Math.round((qiflora.temperature*1.8+32)*10)/10) + "°F"
|
||||||
|
else if(model.chartType == "moisture") qiflora.moisture + "%"
|
||||||
|
else if(model.chartType == "conductivity") qiflora.conduction + " µS/cm"
|
||||||
|
else if(model.chartType == "brightness") qiflora.brightness + " lux"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
contentItem: Item {
|
||||||
|
implicitWidth: 300
|
||||||
|
implicitHeight: 200
|
||||||
|
Charts.ChartView {
|
||||||
|
id: chart
|
||||||
|
antialiasing: true
|
||||||
|
backgroundColor: Kirigami.Theme.buttonBackgroundColor
|
||||||
|
titleColor: Kirigami.Theme.textColor
|
||||||
|
legend.visible: false
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
Charts.LineSeries {
|
||||||
|
id: series
|
||||||
|
axisX: Charts.DateTimeAxis {
|
||||||
|
id: dateAx
|
||||||
|
labelsColor: Kirigami.Theme.textColor
|
||||||
|
format: "MMM d yyyy ha"
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
//On load, change date span to last 24 to remove awkward 1969 empty dates.
|
||||||
|
var yesterday = new Date();
|
||||||
|
yesterday.setDate(yesterday.getDate() -1);
|
||||||
|
dateAx.min = yesterday;
|
||||||
|
dateAx.max = new Date();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
axisY: Charts.ValueAxis {
|
||||||
|
id: valueAx
|
||||||
|
labelFormat: "%d "+units
|
||||||
|
labelsColor: Kirigami.Theme.textColor
|
||||||
|
min: yMin
|
||||||
|
max: yMax
|
||||||
|
}
|
||||||
|
color: model.lineColor
|
||||||
|
name: model.title
|
||||||
|
|
||||||
|
Charts.VXYModelMapper {
|
||||||
|
model: qiflora.model
|
||||||
|
xColumn: 0
|
||||||
|
yColumn: modelCol
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Connections {
|
||||||
|
target: qiflora.model
|
||||||
|
onRowsInserted: {
|
||||||
|
//Readjust graphs to show date range from earliest item.
|
||||||
|
dateAx.max = new Date();
|
||||||
|
dateAx.min = qiflora.model.data(qiflora.model.index(0,0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Controls.ScrollBar.vertical: Controls.ScrollBar {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.OverlaySheet {
|
||||||
|
id: deviceSelect
|
||||||
|
showCloseButton: false
|
||||||
|
contentItem: ListView {
|
||||||
|
header: Column {
|
||||||
|
Rectangle {
|
||||||
|
height: 10
|
||||||
|
color: "transparent"
|
||||||
|
}
|
||||||
|
Kirigami.Heading {
|
||||||
|
text: qsTr("Select Device to Query")
|
||||||
|
}
|
||||||
|
Rectangle {
|
||||||
|
height: 10
|
||||||
|
color: "transparent"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
id: deviceList
|
||||||
|
model: qiflora.devices
|
||||||
|
delegate: Kirigami.AbstractListItem {
|
||||||
|
Layouts.ColumnLayout {
|
||||||
|
Kirigami.Heading {
|
||||||
|
text:model.modelData.name
|
||||||
|
level: 2
|
||||||
|
}
|
||||||
|
Kirigami.Heading {
|
||||||
|
text:model.modelData.address
|
||||||
|
level: 5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onClicked: {
|
||||||
|
qiflora.updateDataFromDevice(model.modelData.address);
|
||||||
|
deviceSelect.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onSheetOpenChanged: {
|
||||||
|
if(!sheetOpen) {
|
||||||
|
qiflora.stopSearch();
|
||||||
|
} else {
|
||||||
|
qiflora.startSearch();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id:aboutPageComponent
|
||||||
|
Kirigami.AboutPage {
|
||||||
|
id: aboutPage
|
||||||
|
actions.main: Kirigami.Action {
|
||||||
|
iconName: "window-close"
|
||||||
|
text: qsTr("Close")
|
||||||
|
onTriggered: {
|
||||||
|
pageStack.clear();
|
||||||
|
pageStack.push(mainPageComponent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
aboutData: appAboutData
|
||||||
|
}
|
||||||
|
}*/
|
||||||
|
}
|
||||||
5
src/resources.qrc
Normal file
5
src/resources.qrc
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<RCC>
|
||||||
|
<qresource prefix="/">
|
||||||
|
<file alias="main.qml">contents/ui/main.qml</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
||||||
Reference in New Issue
Block a user