mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
QML UI: reimplement context menu for dive details
With the mobile components fixed we can now simply switch between different menu content - no need to play games and redefine the actions on the fly. This also adds a cancel button for editing and cleans up when the user hits cancel. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
9a28807dd3
commit
e5f95daee8
3 changed files with 177 additions and 31 deletions
|
@ -27,8 +27,6 @@ MobileComponents.Page {
|
|||
property string date
|
||||
property string number
|
||||
property string weight
|
||||
property alias viewEditText: viewEditSelector.text
|
||||
|
||||
state: "view"
|
||||
|
||||
states: [
|
||||
|
@ -43,41 +41,66 @@ MobileComponents.Page {
|
|||
PropertyChanges { target: detailsEdit; opacity: 1 }
|
||||
}
|
||||
]
|
||||
|
||||
contextualActions: [
|
||||
property list<Action> viewActions: [
|
||||
Action {
|
||||
id: viewEditSelector
|
||||
text: checked ? "View" : "Edit"
|
||||
checkable: true
|
||||
iconName: checked ? "view-readermode" : "document-edit"
|
||||
id: editSelector
|
||||
text: "Edit"
|
||||
iconName: "document-edit"
|
||||
onTriggered: {
|
||||
if (diveDetailsWindow.state == "edit") {
|
||||
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.notesText)
|
||||
date = detailsEdit.dateText
|
||||
location = detailsEdit.locationText
|
||||
// gps = detailsEdit.gps
|
||||
duration = detailsEdit.durationText
|
||||
depth = detailsEdit.depthText
|
||||
airtemp = detailsEdit.airtempText
|
||||
watertemp = detailsEdit.watertempText
|
||||
suit = detailsEdit.suitText
|
||||
buddy = detailsEdit.buddyText
|
||||
divemaster = detailsEdit.divemasterText
|
||||
notes = detailsEdit.notesText
|
||||
diveDetailsWindow.viewEditText = "Edit"
|
||||
diveDetailsWindow.state = "view"
|
||||
} else {
|
||||
diveDetailsWindow.viewEditText = "Save"
|
||||
diveDetailsWindow.state = "edit"
|
||||
}
|
||||
diveDetailsWindow.state = "edit"
|
||||
contextDrawer.close()
|
||||
// close drawer?
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
property list<Action> editActions: [
|
||||
Action {
|
||||
id: cancelSelector
|
||||
text: "Cancel"
|
||||
iconName: "dialog-cancel"
|
||||
onTriggered: {
|
||||
// reset the fields in the edit screen
|
||||
detailsEdit.dateText = date
|
||||
detailsEdit.locationText = location
|
||||
detailsEdit.durationText = duration
|
||||
detailsEdit.depthText = depth
|
||||
detailsEdit.airtempText = airtemp
|
||||
detailsEdit.watertempText = watertemp
|
||||
detailsEdit.suitText = suit
|
||||
detailsEdit.buddyText = buddy
|
||||
detailsEdit.divemasterText = divemaster
|
||||
detailsEdit.notesText = notes
|
||||
// back to view state and close the drawer
|
||||
diveDetailsWindow.state = "view"
|
||||
contextDrawer.close()
|
||||
}
|
||||
},
|
||||
Action {
|
||||
id: saveSelector
|
||||
text: "Save"
|
||||
iconName: "document-save"
|
||||
onTriggered: {
|
||||
// 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.notesText)
|
||||
// apply the changes to the dive detail view
|
||||
date = detailsEdit.dateText
|
||||
location = detailsEdit.locationText
|
||||
duration = detailsEdit.durationText
|
||||
depth = detailsEdit.depthText
|
||||
airtemp = detailsEdit.airtempText
|
||||
watertemp = detailsEdit.watertempText
|
||||
suit = detailsEdit.suitText
|
||||
buddy = detailsEdit.buddyText
|
||||
divemaster = detailsEdit.divemasterText
|
||||
notes = detailsEdit.notesText
|
||||
// back to view state and close the drawer
|
||||
diveDetailsWindow.state = "view"
|
||||
contextDrawer.close()
|
||||
}
|
||||
}
|
||||
]
|
||||
contextualActions: diveDetailsWindow.state === "view" ? viewActions : editActions
|
||||
|
||||
ScrollView {
|
||||
anchors.fill: parent
|
||||
|
|
|
@ -45,5 +45,6 @@
|
|||
<file alias="org/kde/plasma/mobilecomponents/icons/document-edit.svg">mobilecomponents/icons/document-edit.svg</file>
|
||||
<file alias="org/kde/plasma/mobilecomponents/icons/document-save.svg">mobilecomponents/icons/document-save.svg</file>
|
||||
<file alias="org/kde/plasma/mobilecomponents/icons/view-readermode.svg">mobilecomponents/icons/view-readermode.svg</file>
|
||||
<file alias="org/kde/plasma/mobilecomponents/icons/dialog-cancel.svg">mobilecomponents/icons/dialog-cancel.svg</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
|
122
qt-mobile/qml/mobilecomponents/icons/dialog-cancel.svg
Normal file
122
qt-mobile/qml/mobilecomponents/icons/dialog-cancel.svg
Normal file
|
@ -0,0 +1,122 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" id="svg3869" version="1.1" inkscape:version="0.91 r13725" sodipodi:docname="dialog-cancel.svg">
|
||||
<defs id="defs3871">
|
||||
<style type="text/css" id="current-color-scheme">
|
||||
.ColorScheme-Text {
|
||||
color:#4d4d4d;
|
||||
}
|
||||
.ColorScheme-Background {
|
||||
color:#eff0f1;
|
||||
}
|
||||
.ColorScheme-Highlight {
|
||||
color:#3daee9;
|
||||
}
|
||||
.ColorScheme-ViewText {
|
||||
color:#31363b;
|
||||
}
|
||||
.ColorScheme-ViewBackground {
|
||||
color:#fcfcfc;
|
||||
}
|
||||
.ColorScheme-ViewHover {
|
||||
color:#93cee9;
|
||||
}
|
||||
.ColorScheme-ViewFocus{
|
||||
color:#3daee9;
|
||||
}
|
||||
.ColorScheme-ButtonText {
|
||||
color:#31363b;
|
||||
}
|
||||
.ColorScheme-ButtonBackground {
|
||||
color:#eff0f1;
|
||||
}
|
||||
.ColorScheme-ButtonHover {
|
||||
color:#93cee9;
|
||||
}
|
||||
.ColorScheme-ButtonFocus{
|
||||
color:#3daee9;
|
||||
}
|
||||
</style>
|
||||
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4146"/>
|
||||
<inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 12 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="24 : 12 : 1" inkscape:persp3d-origin="12 : 8 : 1" id="perspective4090"/>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath16">
|
||||
<path d="m 0,706.465 1490.926,0 L 1490.926,0 0,0 0,706.465 Z" id="path18"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath24">
|
||||
<path d="m 22.1953,686.117 1447.7347,0 0,-667.1902 -1447.7347,0 L 22.1953,686.117 Z" id="path26"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4534">
|
||||
<rect ry="15.999986" y="8.0000038" x="8.0000114" height="31.999971" width="31.999989" id="rect4536" style="fill:url(#linearGradient4538);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4584">
|
||||
<rect ry="15.999986" y="507.798" x="392.57144" height="31.999971" width="31.999989" id="rect4586" style="fill:url(#linearGradient4588);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4550">
|
||||
<rect ry="15.999986" y="507.798" x="392.57144" height="31.999971" width="31.999989" id="rect4552" style="fill:url(#linearGradient4554);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4568">
|
||||
<rect ry="15.999986" y="507.798" x="392.57144" height="31.999971" width="31.999989" id="rect4570" style="fill:url(#linearGradient4572);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4528">
|
||||
<rect ry="15.999986" y="8.0000038" x="8.0000114" height="31.999971" width="31.999989" id="rect4530" style="fill:url(#linearGradient4532);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4578">
|
||||
<rect ry="15.999986" y="507.798" x="392.57144" height="31.999971" width="31.999989" id="rect4580" style="fill:url(#linearGradient4582);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4562">
|
||||
<rect ry="15.999986" y="507.798" x="392.57144" height="31.999971" width="31.999989" id="rect4564" style="fill:url(#linearGradient4566);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4544">
|
||||
<rect ry="15.999986" y="507.798" x="392.57144" height="31.999971" width="31.999989" id="rect4546" style="fill:url(#linearGradient4548);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4390">
|
||||
<rect ry="15.999986" y="8.0000038" x="8.0000114" height="31.999971" width="31.999989" id="rect4392" style="fill:url(#linearGradient4532);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4407">
|
||||
<rect ry="15.999986" y="507.798" x="392.57144" height="31.999971" width="31.999989" id="rect4409" style="fill:url(#linearGradient4582);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4424">
|
||||
<rect ry="15.999986" y="507.798" x="392.57144" height="31.999971" width="31.999989" id="rect4426" style="fill:url(#linearGradient4566);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath clipPathUnits="userSpaceOnUse" id="clipPath4441">
|
||||
<rect ry="15.999986" y="507.798" x="392.57144" height="31.999971" width="31.999989" id="rect4443" style="fill:url(#linearGradient4548);fill-opacity:1;stroke:none"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4528-1" clipPathUnits="userSpaceOnUse">
|
||||
<rect style="fill:url(#linearGradient4532);fill-opacity:1;stroke:none" id="rect4530-7" width="31.999989" height="31.999971" x="8.0000114" y="8.0000038" ry="15.999986"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4578-8" clipPathUnits="userSpaceOnUse">
|
||||
<rect style="fill:url(#linearGradient4582);fill-opacity:1;stroke:none" id="rect4580-7" width="31.999989" height="31.999971" x="392.57144" y="507.798" ry="15.999986"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4562-8" clipPathUnits="userSpaceOnUse">
|
||||
<rect style="fill:url(#linearGradient4566);fill-opacity:1;stroke:none" id="rect4564-8" width="31.999989" height="31.999971" x="392.57144" y="507.798" ry="15.999986"/>
|
||||
</clipPath>
|
||||
<clipPath id="clipPath4544-1" clipPathUnits="userSpaceOnUse">
|
||||
<rect style="fill:url(#linearGradient4548);fill-opacity:1;stroke:none" id="rect4546-1" width="31.999989" height="31.999971" x="392.57144" y="507.798" ry="15.999986"/>
|
||||
</clipPath>
|
||||
</defs>
|
||||
<sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="22.627416" inkscape:cx="11.061087" inkscape:cy="12.032563" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="true" fit-margin-top="0" fit-margin-left="0" fit-margin-right="0" fit-margin-bottom="0" inkscape:window-width="1366" inkscape:window-height="709" inkscape:window-x="-4" inkscape:window-y="0" inkscape:window-maximized="1" inkscape:showpageshadow="false" inkscape:object-nodes="true" inkscape:snap-bbox="true">
|
||||
<inkscape:grid type="xygrid" id="grid4132"/>
|
||||
<sodipodi:guide position="4,18" orientation="18,0" id="guide4138"/>
|
||||
<sodipodi:guide position="5,3" orientation="0,18" id="guide4140"/>
|
||||
<sodipodi:guide position="20,2.0000174" orientation="-18,0" id="guide4142"/>
|
||||
<sodipodi:guide position="2,21" orientation="0,-18" id="guide4144"/>
|
||||
<sodipodi:guide position="3,19.000017" orientation="16,0" id="guide4146"/>
|
||||
<sodipodi:guide position="2,4" orientation="0,16" id="guide4148"/>
|
||||
<sodipodi:guide position="21,20" orientation="-16,0" id="guide4150"/>
|
||||
<sodipodi:guide position="2,20" orientation="0,-16" id="guide4152"/>
|
||||
</sodipodi:namedview>
|
||||
<metadata id="metadata3874">
|
||||
<rdf:RDF>
|
||||
<cc:Work rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
<dc:title/>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g inkscape:label="Capa 1" inkscape:groupmode="layer" id="layer1" transform="translate(-326,-532.3622)">
|
||||
<g transform="translate(-224.28572,-74.2857)" id="layer1-6" inkscape:label="Capa 1">
|
||||
<path id="rect4203" transform="translate(550.28572,606.6479)" d="M 12,4 C 9.9724023,4 8.1286798,4.7566937 6.71875,6 6.592511,6.1113202 6.4627201,6.2247799 6.34375,6.34375 L 6,6.71875 C 4.7566937,8.1286798 4,9.9724023 4,12 c 0,4.41828 3.58172,8 8,8 2.027598,0 3.87132,-0.756694 5.28125,-2 l 0.375,-0.34375 C 17.77522,17.53728 17.88868,17.407489 18,17.28125 19.243306,15.87132 20,14.027598 20,12 20,7.58172 16.41828,4 12,4 Z m 0,1 c 3.86599,0 7,3.13401 7,7 0,1.75366 -0.653215,3.334268 -1.71875,4.5625 L 7.4375,6.71875 C 8.6657315,5.6532151 10.24634,5 12,5 Z M 6.71875,7.4375 16.5625,17.28125 C 15.334268,18.346785 13.75366,19 12,19 8.13401,19 5,15.86599 5,12 5,10.24634 5.6532151,8.6657315 6.71875,7.4375 Z" style="fill:currentColor;fill-opacity:1;stroke:none" inkscape:connector-curvature="0" class="ColorScheme-Text"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 8.5 KiB |
Loading…
Add table
Reference in a new issue