Warning, /education/marble/examples/qml/cloud-sync/cloudsync.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-License-Identifier: LGPL-2.1-or-later 0002 // 0003 // SPDX-FileCopyrightText: 2013 Dennis Nienhüser <nienhueser@kde.org> 0004 0005 import QtQuick 1.0 0006 import org.kde.marble 0.20 0007 0008 Rectangle { 0009 id: screen 0010 width: 1024; height: 768 0011 0012 MarbleWidget { 0013 id: map 0014 anchors.top: parent.top 0015 anchors.right: parent.right 0016 anchors.bottom: parent.bottom 0017 anchors.left: routeView.right 0018 0019 mapThemeId: "earth/openstreetmap/openstreetmap.dgml" 0020 activeFloatItems: [ "compass", "scalebar", "progress" ] 0021 } 0022 0023 CloudSync { 0024 id: cloudSync 0025 map: map 0026 } 0027 0028 Column { 0029 id: credentialsColumn 0030 anchors.top: parent.top 0031 anchors.left: parent.left 0032 anchors.margins: 10 0033 width: routeView.width 0034 spacing: 10 0035 0036 InputField { 0037 label: "Server:" 0038 text: "myowncloudserver.com" 0039 onAccepted: cloudSync.owncloudServer = text 0040 } 0041 0042 InputField { 0043 label: "User:" 0044 text: "myuser" 0045 onAccepted: cloudSync.owncloudUsername = text 0046 } 0047 0048 InputField { 0049 label: "Password:" 0050 text: "mypassword" 0051 onAccepted: cloudSync.owncloudPassword = text 0052 echoMode: TextInput.Password 0053 } 0054 } 0055 0056 ListView { 0057 id: routeView 0058 anchors.top: credentialsColumn.bottom 0059 anchors.topMargin: 5 0060 anchors.left: parent.left 0061 anchors.bottom: parent.bottom 0062 width: 400 0063 clip: true 0064 0065 model: cloudSync.routeModel 0066 delegate: routeViewDelegate 0067 spacing: 5 0068 } 0069 0070 Component { 0071 id: routeViewDelegate 0072 0073 Rectangle { 0074 width: routeView.width 0075 height: Math.max( previewImage.height, nameText.height+buttonRow.height ) 0076 0077 Image { 0078 id: previewImage 0079 source: previewUrl 0080 width: 128; height: 128 0081 anchors.left: parent.left 0082 } 0083 0084 Text { 0085 id: nameText 0086 text: name 0087 anchors.left: previewImage.right 0088 anchors.leftMargin: 5 0089 anchors.right: parent.right 0090 wrapMode: Text.WrapAtWordBoundaryOrAnywhere 0091 } 0092 0093 Row { 0094 id: buttonRow 0095 anchors.top: nameText.bottom 0096 anchors.left: nameText.left 0097 anchors.leftMargin: 5 0098 spacing: 5 0099 0100 Button { 0101 id: downloadArea 0102 visible: !isCached && isOnCloud 0103 0104 label: "Download" 0105 color: "green" 0106 0107 onClicked: { 0108 cloudSync.downloadRoute( identifier ) 0109 } 0110 } 0111 0112 Button { 0113 id: deleteFromCloudArea 0114 visible: !isCached 0115 0116 label: "Delete from cloud" 0117 color: "red" 0118 0119 onClicked: { 0120 cloudSync.deleteRouteFromCloud( identifier ) 0121 } 0122 } 0123 0124 Button { 0125 id: openArea 0126 visible: isCached 0127 0128 label: "Open" 0129 color: "blue" 0130 0131 onClicked: { 0132 cloudSync.openRoute( identifier ) 0133 } 0134 } 0135 0136 Button { 0137 id: removeFromCacheArea 0138 visible: isCached 0139 0140 label: "Remove from device" 0141 color: "yellow" 0142 0143 onClicked: { 0144 cloudSync.removeRouteFromDevice( identifier ) 0145 } 0146 } 0147 0148 Button { 0149 id: uploadArea 0150 visible: isCached && !isOnCloud 0151 0152 label: "Upload" 0153 color: "grey" 0154 0155 onClicked: { 0156 cloudSync.uploadRoute( identifier ) 0157 } 0158 } 0159 } 0160 } 0161 } 0162 }