QML UI: show the available GPS fixes

So far the user can't interact with these. We should implement an ability to
visualize the GPS fix and to delete it.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2016-01-07 21:40:15 -08:00
parent 06dcc9ab8d
commit b6ae6979e5
5 changed files with 133 additions and 0 deletions

113
qt-mobile/qml/GpsList.qml Normal file
View file

@ -0,0 +1,113 @@
import QtQuick 2.3
import QtQuick.Controls 1.2
import QtQuick.Controls.Styles 1.2
import QtQuick.Window 2.2
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.1
import QtQuick.Window 2.2
import org.subsurfacedivelog.mobile 1.0
import org.kde.plasma.mobilecomponents 0.2 as MobileComponents
MobileComponents.Page {
id: gpsListWindow
width: parent.width - MobileComponents.Units.gridUnit
anchors.margins: MobileComponents.Units.gridUnit / 2
objectName: "gpsList"
contextualActions: [
Action {
id: closeLog
text: "Close GPS list"
iconName: "view-readermode"
onTriggered: {
stackView.pop()
contextDrawer.close()
}
}
]
Component {
id: gpsDelegate
MobileComponents.ListItem {
id: gpsFix
enabled: true
width: parent.width
property int horizontalPadding: MobileComponents.Units.gridUnit / 2 - MobileComponents.Units.smallSpacing + 1
Item {
width: parent.width - MobileComponents.Units.gridUnit
height: childrenRect.height - MobileComponents.Units.smallSpacing
GridLayout {
columns: 4
id: timeAndName
anchors {
left: parent.left
leftMargin: horizontalPadding
right: parent.right
rightMargin: horizontalPadding
}
MobileComponents.Label {
text: 'Date: '
opacity: 0.6
font.pointSize: subsurfaceTheme.smallPointSize
}
MobileComponents.Label {
text: when
width: Math.max(parent.width / 5, paintedWidth) // helps vertical alignment throughout listview
font.pointSize: subsurfaceTheme.smallPointSize
}
MobileComponents.Label {
text: 'Name: '
opacity: 0.6
font.pointSize: subsurfaceTheme.smallPointSize
}
MobileComponents.Label {
text: name
width: Math.max(parent.width / 5, paintedWidth) // helps vertical alignment throughout listview
font.pointSize: subsurfaceTheme.smallPointSize
}
MobileComponents.Label {
text: 'Latitude: '
opacity: 0.6
font.pointSize: subsurfaceTheme.smallPointSize
}
MobileComponents.Label {
text: latitude
font.pointSize: subsurfaceTheme.smallPointSize
}
MobileComponents.Label {
text: 'Longitude: '
opacity: 0.6
font.pointSize: subsurfaceTheme.smallPointSize
}
MobileComponents.Label {
text: longitude
font.pointSize: subsurfaceTheme.smallPointSize
}
}
}
}
}
ScrollView {
anchors.fill: parent
ListView {
id: gpsListView
anchors.fill: parent
model: gpsModel
currentIndex: -1
delegate: gpsDelegate
boundsBehavior: Flickable.StopAtBounds
maximumFlickVelocity: parent.height * 5
cacheBuffer: parent.height *5
focus: true
clip: true
header: MobileComponents.Heading {
x: MobileComponents.Units.gridUnit / 2
height: paintedHeight + MobileComponents.Units.gridUnit / 2
verticalAlignment: Text.AlignBottom
text: "List of stored GPS fixes"
}
}
}
}

View file

@ -104,6 +104,14 @@ MobileComponents.ApplicationWindow {
}
}
Action {
text: "Show GPS fixes"
onTriggered: {
manager.populateGpsData();
stackView.push(gpsWindow)
}
}
Action {
text: "Clear GPS cache"
onTriggered: {
@ -224,6 +232,10 @@ MobileComponents.ApplicationWindow {
visible: false
}
GpsList {
id: gpsWindow
}
ThemeTest {
id: themetest
visible: false

View file

@ -9,6 +9,7 @@
<file>DiveDetailsEdit.qml</file>
<file>DiveDetailsView.qml</file>
<file>DownloadFromDiveComputer.qml</file>
<file>GpsList.qml</file>
<file>Log.qml</file>
<file>TopBar.qml</file>
<file>ThemeTest.qml</file>

View file

@ -507,9 +507,15 @@ void QMLManager::downloadGpsData()
locationProvider->updateModel();
}
void QMLManager::populateGpsData()
{
locationProvider->updateModel();
}
void QMLManager::clearGpsData()
{
locationProvider->clearGpsData();
locationProvider->updateModel();
}
QString QMLManager::logText() const

View file

@ -78,6 +78,7 @@ public slots:
void applyGpsData();
void sendGpsData();
void downloadGpsData();
void populateGpsData();
void clearGpsData();
void finishSetup();
void showMap(QString location);