Warning, /education/marble/src/apps/marble-maps/Bookmarks.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2016 Dennis Nienhüser <nienhueser@kde.org> 0004 // 0005 0006 import QtQuick 2.8 0007 import QtQuick.Controls 2.2 0008 import QtQuick.Window 2.2 0009 import QtQuick.Layouts 1.3 0010 import QtQml.Models 2.1 0011 import QtQuick.Controls.Material 2.1 0012 import QtGraphicalEffects 1.0 0013 0014 import org.kde.kirigami 2.0 as Kirigami 0015 0016 import org.kde.marble 0.20 0017 0018 Kirigami.Page { 0019 id: bookmarkPage 0020 title: "Bookmarks" 0021 0022 property variant marbleQuickItem 0023 signal backTriggered() 0024 0025 Flickable { 0026 id: root 0027 anchors.fill: parent 0028 property int currentIndex: 0 0029 0030 SystemPalette { 0031 id: palette 0032 colorGroup: SystemPalette.Active 0033 } 0034 0035 Column { 0036 id: column 0037 anchors { 0038 fill: parent 0039 margins: Screen.pixelDensity * 2 0040 } 0041 0042 Text { 0043 text: "<h3>Bookmarks</h3>" 0044 } 0045 0046 ListView { 0047 id: bookmarksView 0048 interactive: false 0049 width: parent.width 0050 spacing: 5 0051 height: contentHeight 0052 0053 model: DelegateModel { 0054 id: visualModel 0055 model: bookmarks.model 0056 0057 delegate: 0058 MouseArea { 0059 id: delegateRoot 0060 propagateComposedEvents: true 0061 property int visualIndex: DelegateModel.itemsIndex 0062 width: bookmarksView.width 0063 height: 100 0064 drag.target: icon 0065 drag.axis: Drag.YAxis 0066 0067 SwipeDelegate { 0068 id: delegate 0069 text: model.display 0070 width: parent.width 0071 height: Screen.pixelDensity * 2 + Math.max(bookmarkText.height, imageButton.height) 0072 0073 contentItem: Rectangle { 0074 id: icon 0075 width: parent.width 0076 height: Screen.pixelDensity + Math.max(bookmarkText.height, imageButton.height) 0077 0078 anchors { 0079 horizontalCenter: parent.horizontalCenter; 0080 verticalCenter: parent.verticalCenter 0081 } 0082 0083 Drag.active: delegateRoot.drag.active 0084 Drag.source: delegateRoot 0085 Drag.hotSpot.x: 50 0086 Drag.hotSpot.y: 50 0087 color: "transparent" 0088 0089 Text{ 0090 id: bookmarkText 0091 anchors.left: imageButton.right 0092 leftPadding: 5 0093 text: delegate.text 0094 elide: Text.ElideRight 0095 horizontalAlignment: Text.AlignLeft 0096 anchors.verticalCenter: parent.verticalCenter 0097 font.pointSize: 12 0098 color: palette.text 0099 } 0100 0101 Image { 0102 id: imageButton 0103 anchors { 0104 left: bookmarksView.left 0105 verticalCenter: parent.verticalCenter 0106 } 0107 source: "qrc:///material/place.svg" 0108 width: Screen.pixelDensity * 6 0109 verticalAlignment: Qt.AlignVCenter 0110 0111 height: width 0112 smooth: true 0113 } 0114 0115 ColorOverlay{ 0116 anchors.fill: imageButton 0117 source: imageButton 0118 color: palette.highlight 0119 } 0120 } 0121 0122 swipe.behind: Item { 0123 width: parent.width 0124 height: parent.height 0125 0126 Rectangle{ 0127 width: parent.width 0128 color: "#333333" 0129 height: parent.height 0130 z: 200 0131 Text { 0132 font.pointSize: 10 0133 text: qsTr("Removed") 0134 color: "white" 0135 0136 padding: 20 0137 anchors.fill: parent 0138 horizontalAlignment: Qt.AlignRight 0139 verticalAlignment: Qt.AlignVCenter 0140 0141 opacity: delegate.swipe.complete ? 1 : 0 0142 Behavior on opacity { 0143 NumberAnimation {} 0144 } 0145 } 0146 } 0147 0148 SwipeDelegate.onClicked: delegate.swipe.close() 0149 SwipeDelegate.onPressedChanged: undoTimer.stop() 0150 } 0151 0152 0153 Timer { 0154 id: undoTimer 0155 interval: 1600 0156 onTriggered: { 0157 var currentBookmark = bookmarks.placemark(index) 0158 bookmarks.removeBookmark(currentBookmark.longitude, currentBookmark.latitude) 0159 } 0160 } 0161 0162 swipe.onCompleted: undoTimer.start() 0163 swipe.onClosed: delegate.swipe.close() 0164 swipe.transition: Transition { 0165 SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } 0166 } 0167 0168 states: [ 0169 State { 0170 when: icon.Drag.active 0171 ParentChange { 0172 target: icon 0173 parent: root 0174 } 0175 0176 AnchorChanges { 0177 target: icon; 0178 anchors.horizontalCenter: undefined; 0179 anchors.verticalCenter: undefined 0180 } 0181 } 0182 ] 0183 0184 background: Rectangle { 0185 color: "transparent" 0186 } 0187 } 0188 0189 DropArea { 0190 anchors.fill: parent 0191 onEntered: visualModel.items.move(drag.source.visualIndex, delegateRoot.visualIndex) 0192 } 0193 } 0194 } 0195 0196 remove: Transition { 0197 SequentialAnimation { 0198 PauseAnimation { duration: 125 } 0199 NumberAnimation { property: "height"; to: 0; easing.type: Easing.InOutQuad } 0200 } 0201 } 0202 0203 displaced: Transition { 0204 SequentialAnimation { 0205 PauseAnimation { duration: 125 } 0206 NumberAnimation { property: "y"; easing.type: Easing.InOutQuad } 0207 } 0208 } 0209 } 0210 0211 Column { 0212 visible: bookmarksView.model.count === 0 0213 width: parent.width 0214 0215 Text { 0216 width: 0.8 * parent.width 0217 font.pointSize: 18 0218 color: paletteDisabled.text 0219 text: qsTr("Your bookmarks will appear here.") 0220 wrapMode: Text.WrapAtWordBoundaryOrAnywhere 0221 elide: Text.ElideRight 0222 } 0223 0224 Image { 0225 anchors.right: parent.right 0226 anchors.bottom: column.bottom 0227 width: 0.3 * parent.width 0228 fillMode: Image.PreserveAspectFit 0229 source: "qrc:/konqi/books.png" 0230 } 0231 } 0232 } 0233 0234 } 0235 0236 Bookmarks { 0237 id: bookmarks 0238 map: marbleQuickItem 0239 } 0240 }