QML UI: change the dive add/edit action button to be save

Remove the button on the page and instead use the action button to save
and the back key to cancel.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2016-02-13 21:25:10 -08:00
parent 5952b09b51
commit 0ce1dd80cc
2 changed files with 33 additions and 34 deletions

View file

@ -74,12 +74,10 @@ MobileComponents.Page {
]
*/
mainAction: Action {
iconName: state !== "view" ? "dialog-cancel" : "document-edit"
iconName: state !== "view" ? "document-save" : "document-edit"
onTriggered: {
if (state === "edit") {
endEditMode()
} else if (state === "add") {
endAddMode()
if (state === "edit" || state === "add") {
detailsEdit.saveData()
} else {
startEditMode()
}
@ -87,10 +85,14 @@ MobileComponents.Page {
}
onBackRequested: {
if (state === "edit" || state === "add") {
endEditMode();
if (state === "edit") {
endEditMode()
event.accepted = true;
} else if (state === "add") {
endAddMode()
event.accepted = true;
}
// if we were in view mode, don't accept the event and pop the page
}
function showDiveIndex(index) {

View file

@ -26,6 +26,30 @@ Item {
property alias endpressureText: txtEndPressure.text
property alias gasmixText: txtGasMix.text
function saveData() {
// apply the changes to the dive_table
manager.commitChanges(dive_id, detailsEdit.dateText, detailsEdit.locationText, detailsEdit.gpsText, detailsEdit.durationText,
detailsEdit.depthText, detailsEdit.airtempText, detailsEdit.watertempText, detailsEdit.suitText,
detailsEdit.buddyText, detailsEdit.divemasterText, detailsEdit.weightText, detailsEdit.notesText,
detailsEdit.startpressureText, detailsEdit.endpressureText, detailsEdit.gasmixText)
// apply the changes to the dive detail view - since the edit could have changed the order
// first make sure that we are looking at the correct dive - our model allows us to look
// up the index based on the unique dive_id
diveDetailsListView.currentIndex = diveModel.getIdxForId(dive_id)
diveDetailsListView.currentItem.modelData.date = detailsEdit.dateText
diveDetailsListView.currentItem.modelData.location = detailsEdit.locationText
diveDetailsListView.currentItem.modelData.duration = detailsEdit.durationText
diveDetailsListView.currentItem.modelData.depth = detailsEdit.depthText
diveDetailsListView.currentItem.modelData.airtemp = detailsEdit.airtempText
diveDetailsListView.currentItem.modelData.watertemp = detailsEdit.watertempText
diveDetailsListView.currentItem.modelData.suit = detailsEdit.suitText
diveDetailsListView.currentItem.modelData.buddy = detailsEdit.buddyText
diveDetailsListView.currentItem.modelData.divemaster = detailsEdit.divemasterText
diveDetailsListView.currentItem.modelData.notes = detailsEdit.notesText
diveDetailsPage.state = "view"
Qt.inputMethod.hide()
}
height: editArea.height
ColumnLayout {
id: editArea
@ -195,33 +219,6 @@ Item {
wrapMode: TextEdit.WrapAtWordBoundaryOrAnywhere
}
}
SubsurfaceButton {
anchors.horizontalCenter: parent.horizontalCenter
text: "Save"
onClicked: {
// apply the changes to the dive_table
manager.commitChanges(dive_id, detailsEdit.dateText, detailsEdit.locationText, detailsEdit.gpsText, detailsEdit.durationText,
detailsEdit.depthText, detailsEdit.airtempText, detailsEdit.watertempText, detailsEdit.suitText,
detailsEdit.buddyText, detailsEdit.divemasterText, detailsEdit.weightText, detailsEdit.notesText,
detailsEdit.startpressureText, detailsEdit.endpressureText, detailsEdit.gasmixText)
// apply the changes to the dive detail view - since the edit could have changed the order
// first make sure that we are looking at the correct dive - our model allows us to look
// up the index based on the unique dive_id
diveDetailsListView.currentIndex = diveModel.getIdxForId(dive_id)
diveDetailsListView.currentItem.modelData.date = detailsEdit.dateText
diveDetailsListView.currentItem.modelData.location = detailsEdit.locationText
diveDetailsListView.currentItem.modelData.duration = detailsEdit.durationText
diveDetailsListView.currentItem.modelData.depth = detailsEdit.depthText
diveDetailsListView.currentItem.modelData.airtemp = detailsEdit.airtempText
diveDetailsListView.currentItem.modelData.watertemp = detailsEdit.watertempText
diveDetailsListView.currentItem.modelData.suit = detailsEdit.suitText
diveDetailsListView.currentItem.modelData.buddy = detailsEdit.buddyText
diveDetailsListView.currentItem.modelData.divemaster = detailsEdit.divemasterText
diveDetailsListView.currentItem.modelData.notes = detailsEdit.notesText
diveDetailsPage.state = "view"
Qt.inputMethod.hide()
}
}
Item {
height: MobileComponents.Units.gridUnit * 3
width: height // just to make sure the spacer doesn't produce scrollbars, but also isn't null