summaryrefslogtreecommitdiffstats
path: root/mobile-widgets/qml/MapWidgetContextMenu.qml
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2017-11-04 21:23:37 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-11-05 14:48:56 -0800
commit956b45ddfda060fcd818659ee05618ed2e4bfcab (patch)
tree1acb6ff91cba57e059e7eac8868ecd066539b230 /mobile-widgets/qml/MapWidgetContextMenu.qml
parent6ce4239884780fafdf641fa52a2a8c7a0a02450d (diff)
downloadsubsurface-956b45ddfda060fcd818659ee05618ed2e4bfcab.tar.gz
map-widget: move the widget and its resources to 'map-widget'
Move all the map widget platform agnostic files to the <subsurface-root>/map-widget folder. This avoids the confusion about the desktop version of subsurface using mobile components. The map widget is planned as a shared component between the mobile and desktop versions. desktop-widgets/mapwidget[.h/.cpp] still remain as those are specific to the desktop version. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Diffstat (limited to 'mobile-widgets/qml/MapWidgetContextMenu.qml')
-rw-r--r--mobile-widgets/qml/MapWidgetContextMenu.qml124
1 files changed, 0 insertions, 124 deletions
diff --git a/mobile-widgets/qml/MapWidgetContextMenu.qml b/mobile-widgets/qml/MapWidgetContextMenu.qml
deleted file mode 100644
index 17450a729..000000000
--- a/mobile-widgets/qml/MapWidgetContextMenu.qml
+++ /dev/null
@@ -1,124 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0
-import QtQuick 2.0
-
-Item {
- id: container
- signal actionSelected(int action)
-
- readonly property var actions: {
- "OPEN_LOCATION_IN_GOOGLE_MAPS": 0,
- "COPY_LOCATION_DECIMAL": 1,
- "COPY_LOCATION_SEXAGESIMAL": 2,
- "SELECT_VISIBLE_LOCATIONS": 3
- }
- readonly property var menuItemData: [
- { idx: actions.OPEN_LOCATION_IN_GOOGLE_MAPS, itemText: qsTr("Open location in Google Maps") },
- { idx: actions.COPY_LOCATION_DECIMAL, itemText: qsTr("Copy location to clipboard (decimal)") },
- { idx: actions.COPY_LOCATION_SEXAGESIMAL, itemText: qsTr("Copy location to clipboard (sexagesimal)") },
- { idx: actions.SELECT_VISIBLE_LOCATIONS, itemText: qsTr("Select visible dive locations") }
- ]
- readonly property real itemTextPadding: 10.0
- readonly property real itemHeight: 34.0
- readonly property int itemAnimationDuration: 100
- readonly property color colorItemBackground: "#dedede"
- readonly property color colorItemBackgroundSelected: "grey"
- readonly property color colorItemText: "black"
- readonly property color colorItemTextSelected: "#dedede"
- readonly property color colorItemBorder: "black"
- property int listViewIsVisible: -1
- property real maxItemWidth: 0.0
-
- Image {
- id: contextMenuImage
- x: -width
- source: "qrc:///mapwidget-context-menu"
-
- SequentialAnimation {
- id:contextMenuImageAnimation
- PropertyAnimation { target: contextMenuImage; property: "scale"; from: 1.0; to: 0.8; duration: 80 }
- PropertyAnimation { target: contextMenuImage; property: "scale"; from: 0.8; to: 1.0; duration: 60 }
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: {
- contextMenuImageAnimation.restart()
- listViewIsVisible = (listViewIsVisible !== 1) ? 1 : 0
- }
- }
- }
-
- ListModel {
- id: listModel
- property int selectedIdx: -1
- Component.onCompleted: {
- for (var i = 0; i < menuItemData.length; i++)
- append(menuItemData[i]);
- }
- }
-
- Component {
- id: listItemDelegate
- Rectangle {
- color: model.idx === listModel.selectedIdx ? colorItemBackgroundSelected : colorItemBackground
- width: maxItemWidth
- height: itemHeight
- border.color: colorItemBorder
- Text {
- x: itemTextPadding
- height: itemHeight
- verticalAlignment: Text.AlignVCenter
- text: model.itemText
- font.pointSize: 10.0
- color: model.idx === listModel.selectedIdx ? colorItemTextSelected : colorItemText
- onWidthChanged: {
- if (width + itemTextPadding * 2.0 > maxItemWidth)
- maxItemWidth = width + itemTextPadding * 2.0
- }
- Behavior on color { ColorAnimation { duration: itemAnimationDuration }}
- }
- Behavior on color { ColorAnimation { duration: itemAnimationDuration }}
- }
- }
-
- ListView {
- id: listView
- y: contextMenuImage.y + contextMenuImage.height + 10;
- width: maxItemWidth;
- height: listModel.count * itemHeight
- visible: false
- opacity: 0.0
- interactive: false
- model: listModel
- delegate: listItemDelegate
-
- onCountChanged: x = -maxItemWidth
- onVisibleChanged: listModel.selectedIdx = -1
- onOpacityChanged: visible = opacity != 0.0
-
- Timer {
- id: timerListViewVisible
- running: false
- repeat: false
- interval: itemAnimationDuration + 50
- onTriggered: listViewIsVisible = 0
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: {
- if (opacity < 1.0)
- return;
- var idx = listView.indexAt(mouseX, mouseY)
- listModel.selectedIdx = idx
- container.actionSelected(idx)
- timerListViewVisible.restart()
- }
- }
- states: [
- State { when: listViewIsVisible === 1; PropertyChanges { target: listView; opacity: 1.0 }},
- State { when: listViewIsVisible === 0; PropertyChanges { target: listView; opacity: 0.0 }}
- ]
- transitions: Transition { NumberAnimation { properties: "opacity"; easing.type: Easing.InOutQuad }}
- }
-}