From c991cbc30c577b72a5d004f13a407279d779c413 Mon Sep 17 00:00:00 2001 From: Tina Jin Date: Thu, 2 Nov 2017 10:43:14 -0700 Subject: [PATCH] Upload new samples Upload three new samples - Biometric Authentication, Secure Storage, Inter-App Communication --- Biometric Authentication/MyApp.qml | 251 ++++++++++++++++++ Biometric Authentication/MyApp.qmlproject | 32 +++ Biometric Authentication/README.md | 47 ++++ Biometric Authentication/appicon.png | Bin 0 -> 26669 bytes Biometric Authentication/appinfo.json | 76 ++++++ Biometric Authentication/default-app.png | Bin 0 -> 24553 bytes .../ic_action_check_circle.png | Bin 0 -> 2097 bytes Biometric Authentication/ic_action_error.png | Bin 0 -> 2368 bytes Biometric Authentication/ic_fingerprint.png | Bin 0 -> 2483 bytes Biometric Authentication/iteminfo.json | 57 ++++ .../qtquickcontrols2.conf | 10 + Biometric Authentication/thumbnail.png | Bin 0 -> 3435 bytes Inter-App Communication/MyApp.qml | 110 ++++++++ Inter-App Communication/MyApp.qmlproject | 32 +++ Inter-App Communication/README.md | 47 ++++ Inter-App Communication/appicon.png | Bin 0 -> 26669 bytes Inter-App Communication/appinfo.json | 75 ++++++ Inter-App Communication/assets/clear.png | Bin 0 -> 347 bytes Inter-App Communication/assets/info.png | Bin 0 -> 953 bytes .../controls/DescriptionPage.qml | 93 +++++++ .../controls/HeaderBar.qml | 59 ++++ Inter-App Communication/default-app.png | Bin 0 -> 24553 bytes Inter-App Communication/image | 0 Inter-App Communication/iteminfo.json | 57 ++++ Inter-App Communication/qtquickcontrols2.conf | 10 + Inter-App Communication/thumbnail.png | Bin 0 -> 1749 bytes Secure Storage/MyApp.qml | 182 +++++++++++++ Secure Storage/MyApp.qmlproject | 32 +++ Secure Storage/README.md | 45 ++++ Secure Storage/appicon.png | Bin 0 -> 26669 bytes Secure Storage/appinfo.json | 76 ++++++ Secure Storage/assets/clear.png | Bin 0 -> 347 bytes Secure Storage/assets/info.png | Bin 0 -> 953 bytes Secure Storage/controls/DescriptionPage.qml | 93 +++++++ Secure Storage/controls/HeaderBar.qml | 59 ++++ Secure Storage/default-app.png | Bin 0 -> 24553 bytes Secure Storage/image | 0 Secure Storage/iteminfo.json | 57 ++++ Secure Storage/qtquickcontrols2.conf | 10 + Secure Storage/thumbnail.png | Bin 0 -> 1932 bytes 40 files changed, 1510 insertions(+) create mode 100644 Biometric Authentication/MyApp.qml create mode 100644 Biometric Authentication/MyApp.qmlproject create mode 100644 Biometric Authentication/README.md create mode 100644 Biometric Authentication/appicon.png create mode 100644 Biometric Authentication/appinfo.json create mode 100644 Biometric Authentication/default-app.png create mode 100644 Biometric Authentication/ic_action_check_circle.png create mode 100644 Biometric Authentication/ic_action_error.png create mode 100644 Biometric Authentication/ic_fingerprint.png create mode 100644 Biometric Authentication/iteminfo.json create mode 100644 Biometric Authentication/qtquickcontrols2.conf create mode 100644 Biometric Authentication/thumbnail.png create mode 100644 Inter-App Communication/MyApp.qml create mode 100644 Inter-App Communication/MyApp.qmlproject create mode 100644 Inter-App Communication/README.md create mode 100644 Inter-App Communication/appicon.png create mode 100644 Inter-App Communication/appinfo.json create mode 100644 Inter-App Communication/assets/clear.png create mode 100644 Inter-App Communication/assets/info.png create mode 100644 Inter-App Communication/controls/DescriptionPage.qml create mode 100644 Inter-App Communication/controls/HeaderBar.qml create mode 100644 Inter-App Communication/default-app.png create mode 100644 Inter-App Communication/image create mode 100644 Inter-App Communication/iteminfo.json create mode 100644 Inter-App Communication/qtquickcontrols2.conf create mode 100644 Inter-App Communication/thumbnail.png create mode 100644 Secure Storage/MyApp.qml create mode 100644 Secure Storage/MyApp.qmlproject create mode 100644 Secure Storage/README.md create mode 100644 Secure Storage/appicon.png create mode 100644 Secure Storage/appinfo.json create mode 100644 Secure Storage/assets/clear.png create mode 100644 Secure Storage/assets/info.png create mode 100644 Secure Storage/controls/DescriptionPage.qml create mode 100644 Secure Storage/controls/HeaderBar.qml create mode 100644 Secure Storage/default-app.png create mode 100644 Secure Storage/image create mode 100644 Secure Storage/iteminfo.json create mode 100644 Secure Storage/qtquickcontrols2.conf create mode 100644 Secure Storage/thumbnail.png diff --git a/Biometric Authentication/MyApp.qml b/Biometric Authentication/MyApp.qml new file mode 100644 index 0000000..e5cd2dc --- /dev/null +++ b/Biometric Authentication/MyApp.qml @@ -0,0 +1,251 @@ +/* Copyright 2017 Esri + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import QtQuick 2.7 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.1 +import QtQuick.Controls.Material 2.1 +import QtGraphicalEffects 1.0 + +import ArcGIS.AppFramework 1.0 +import ArcGIS.AppFramework.Controls 1.0 +import ArcGIS.AppFramework.Authentication 1.0 + + +App { + id: app + width: 400 + height: 750 + function units(value) { + return AppFramework.displayScaleFactor * value + } + property bool isSmallScreen: (width || height) < units(400) + property real scaleFactor: AppFramework.displayScaleFactor + property bool isBiometricActivited: BiometricAuthenticator.activated + property bool isBiometricSupported: BiometricAuthenticator.supported + property string successMessage: qsTr ("Success!") + property string errorMessageText: BiometricAuthenticator.errorMessage + property string errorMessageDialogText + property color successColor: Material.color(Material.Teal) + property color errorColor: Material.color(Material.DeepOrange) + + property string turnPasscodeonMessage: qsTr("To continue, go to Settings > Touch ID & Passcode and Turn Passcode on") + property string addFingerprintMessage: Qt.platform.os === "ios" ? qsTr("To continue, go to Settings > Touch ID & Passcode and Add a Fingerprint") : qsTr("To continue, go to System Preferences > Touch ID and Add a Fingerprint") + + Rectangle { + + // If biometric authentication is activated, show successColor (teal), otherwise, show errorColor (DeepOrange) + + color: isBiometricActivited ? successColor : errorColor + anchors.fill: parent + + ColumnLayout { + anchors.centerIn: parent + spacing: 10 * scaleFactor + + Item { + Layout.fillWidth: true + height: 80 * scaleFactor + } + + Label { + Layout.fillWidth: true + text: qsTr("Fingerprint Authentication") + font.pixelSize: 20 * scaleFactor + font.bold: true + color: "white" + horizontalAlignment: Text.AlignHCenter + } + + //Show error message + + Label { + id: supportedmessage + Layout.fillWidth: true + text: errorMessageText + font.pixelSize: 16 * scaleFactor + color: "white" + horizontalAlignment: Text.AlignHCenter + visible: errorMessageText !== "No Error" + } + + Item { + Layout.fillWidth: true + height: 100 * scaleFactor + } + + ColumnLayout { + anchors.centerIn: parent + + Image { + id: image + horizontalAlignment: Image.AlignHCenter + source: "ic_fingerprint.png" + anchors.horizontalCenter: parent.horizontalCenter + smooth: true + } + + Label { + id: touchID + text: isBiometricSupported ? qsTr("Touch ID Login") : "" + anchors.horizontalCenter: parent.horizontalCenter + color: "white" + font.bold: true + } + + // Tab on fingerprint image to displays a native fingerprint authentication dialog box + + MouseArea { + anchors.fill: parent + onClicked: { + + // Specify authentication dialog message + + BiometricAuthenticator.message = "Authenticate to log into your account" + BiometricAuthenticator.authenticate() + } + } + + + Component.onCompleted: { + + if (errorMessageText !== "No Error") { + + if (errorMessageText === "Passcode not activated") { + errorMessageDialogText = turnPasscodeonMessage; + } + + if (errorMessageText === "Biometric not activated") { + errorMessageDialogText = addFingerprintMessage; + } + + else { + messageDialog.visible = false + } + } + else { + messageDialog.visible = false + } + } + } + + Item { + Layout.fillWidth: true + height: 30 * scaleFactor + } + + Row { + anchors.horizontalCenter: parent.horizontalCenter + spacing: 10 * scaleFactor + + Image { + id: icon + width: 30 * scaleFactor + height: 30 * scaleFactor + } + + Label { + id: statusMessage + color: "white" + font.bold: true + font.pointSize: 20 * scaleFactor + anchors.verticalCenter: icon.verticalCenter + } + } + + Item { + Layout.fillWidth: true + height: 40 * scaleFactor + } + } + } + + // When the authentication is successful, show successMessage ("Success!"). when the authentication has failed, show reason + Connections { + target: BiometricAuthenticator + + onAccepted : { + icon.source = "ic_action_check_circle.png" + statusMessage.text = successMessage + } + + onRejected : { + icon.source = "ic_action_error.png" + statusMessage.text = constructMessage(reason) + } + } + + function constructMessage(reason) { + var result = ""; + switch (reason) + { + case BiometricAuthenticator.CancelledByUser: + result = qsTr("Cancelled By User"); + break; + case BiometricAuthenticator.InValidCredentials: + result = qsTr("Invalid Credentials"); + break; + case BiometricAuthenticator.BiometricNotConfigured: + result = qsTr("Not Configured"); + break; + case BiometricAuthenticator.UserFallback: + result = qsTr("User Fallback"); + break; + case BiometricAuthenticator.PermissionDenied: + result = qsTr("Permission Denied"); + break; + case BiometricAuthenticator.BiometricNotSupported: + result = qsTr("Biometric Not Supported"); + break; + case BiometricAuthenticator.BadCapture: + result = qsTr("Bad Capture"); + break; + case BiometricAuthenticator.PlatformNotSupported: + result = qsTr("Platform Not Supported"); + break; + default: + result = qsTr("Unknown"); + } + return result; + } + + Dialog { + id: messageDialog + Material.accent: errorColor + title: errorMessageText + width: !isSmallScreen ? 300 * scaleFactor : parent.width * 0.8 + height: !isSmallScreen ? 200 * scaleFactor : parent.height * 0.35 + x: (parent.width - width)/2 + y: (parent.height - height)/2 + Material.theme: Material.Light + closePolicy: Popup.NoAutoClose + modal: true + font.pointSize: 14 * scaleFactor + standardButtons: Dialog.Ok + visible: true + // visible: errorMessageText === "Passcode not activated" && "Biometric not activated" ? true : false + + Label { + id: message + text: errorMessageDialogText + opacity: 0.9 + wrapMode: Label.Wrap + width: parent.width + height: implicitHeight + font.pointSize: 12 * scaleFactor + } + } +} diff --git a/Biometric Authentication/MyApp.qmlproject b/Biometric Authentication/MyApp.qmlproject new file mode 100644 index 0000000..b8ff5f5 --- /dev/null +++ b/Biometric Authentication/MyApp.qmlproject @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ + +import QmlProject 1.1 + +Project { + mainFile: "MyApp.qml" + + QmlFiles { + directory: "." + recursive: true + } + + JavaScriptFiles { + directory: "." + recursive: true + } + + ImageFiles { + directory: "." + recursive: true + } + + Files { + directory: "." + recursive: true + filter: "*.json;*.html;*.txt" + } + + importPaths: [ + ] +} + diff --git a/Biometric Authentication/README.md b/Biometric Authentication/README.md new file mode 100644 index 0000000..bac9c16 --- /dev/null +++ b/Biometric Authentication/README.md @@ -0,0 +1,47 @@ + +## Biometric Authentication + +If you have enrolled and activated fingerprint in your device, you will see a teal background. Tab on the fingnerprint image to display an authentication dialog. If the fingerprint is not activated in your device, you will see an orange background. + +Note: Biometric Authentication is currecntly supported on iOS, macOS, and Windows platform + +[ Biometric Authentication API Guide](http://doc.arcgis.com/en/appstudio/api-guide/apiauthentication.htm) + + +[Resource Level](https://geonet.esri.com/groups/appstudio/blog/2016/12/06/how-to-describe-our-resources-in-terms-of-difficulty-complexity-and-time-to-digest): 🍌 + + +## Instructions to run this sample in AppStudio Desktop + +1. Download the `.zip` file +2. Unzip and copy this folder into AppStudio Apps folder (Windows: `C:\Users\\ArcGIS\AppStudio\Apps` Mac or linux: `Home\ArcGIS\AppStudio\Apps`) +3. The new app will now appear in the AppStudio Desktop. Run the application or open it in the bundled Qt-Creator IDE to look at the code and modify. + +## Issues + +Find a bug or want to request a new feature? Please let us know by submitting an issue. + +## Contributing + +Esri welcomes contributions from anyone and everyone. Please see our [guidelines for contributing](https://github.com/esri/contributing). + +## Licensing +Copyright 2017 Esri + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +A copy of the license is available in the repository's [license.txt](license.txt) file. + + +[](Esri Tags: ArcGIS Runtime SDK Qt QML JavaScript iOS Android Xamarin Ionic PhoneGap Mac linux Windows Apps samples templates appstudio) +[](Esri Language: Qt QML JavaScript) diff --git a/Biometric Authentication/appicon.png b/Biometric Authentication/appicon.png new file mode 100644 index 0000000000000000000000000000000000000000..39504b966783aa4ec58c7086a74e03aa0a3bbe71 GIT binary patch literal 26669 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 literal 0 HcmV?d00001 diff --git a/Biometric Authentication/ic_action_check_circle.png b/Biometric Authentication/ic_action_check_circle.png new file mode 100644 index 0000000000000000000000000000000000000000..0d56bc570a8f2d05ea220691aa4b2924d7864187 GIT binary patch literal 2097 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 b8C~0d>~$25A5R(200000NkvXXu0mjfBY~!d literal 0 HcmV?d00001 diff --git a/Biometric Authentication/ic_action_error.png b/Biometric Authentication/ic_action_error.png new file mode 100644 index 0000000000000000000000000000000000000000..96a9b5ca4d1d9daf3d334cdb33f2709f0c53aa16 GIT binary patch literal 2368 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 literal 0 HcmV?d00001 diff --git a/Biometric Authentication/iteminfo.json b/Biometric Authentication/iteminfo.json new file mode 100644 index 0000000..667b5e9 --- /dev/null +++ b/Biometric Authentication/iteminfo.json @@ -0,0 +1,57 @@ +{ + "access": "public", + "accessInformation": null, + "appCategories": [ + ], + "avgRating": 0, + "banner": null, + "categories": [ + ], + "commentsEnabled": true, + "created": 1509643395000, + "culture": "en-au", + "description": "\n

If you have enrolled and activated fingerprint in your device, you will see a teal background. Tab on the fingnerprint image, an authentication dialog will be displayed. If the fingerprint is not activated in your device, you will see an orange background.

\n


\n

Note: Biometric Authentication is currecntly supported on iOS, macOS, and Windows platform

\n

Resource Level:🍌

", + "documentation": null, + "extent": [ + ], + "guid": null, + "id": null, + "industries": [ + ], + "itemControl": "admin", + "languages": [ + ], + "largeThumbnail": null, + "licenseInfo": null, + "listed": false, + "modified": 1509643398000, + "name": null, + "numComments": 1, + "numRatings": 0, + "numViews": 0, + "orgId": "2U3NfasNQ9o9LkLt", + "owner": null, + "ownerFolder": null, + "properties": null, + "protected": false, + "proxyFilter": null, + "screenshots": [ + ], + "size": 39778, + "snippet": "This sample demonstrates how to use Biometric Authentication plugin \n", + "spatialReference": null, + "tags": null, + "thumbnail": "thumbnail/thumbnail.png", + "title": "Biometric Authentication", + "type": "Native Application", + "typeKeywords": [ + "API_QML", + "App", + "Application", + "AppStudio", + "Configuration", + "Native", + "qml" + ], + "url": null +} diff --git a/Biometric Authentication/qtquickcontrols2.conf b/Biometric Authentication/qtquickcontrols2.conf new file mode 100644 index 0000000..1ddd1cd --- /dev/null +++ b/Biometric Authentication/qtquickcontrols2.conf @@ -0,0 +1,10 @@ +; This file can be edited to change the style of the application +; See Styling Qt Quick Controls 2 in the documentation for details: +; http://doc.qt.io/qt-5/qtquickcontrols2-styles.html + +[Controls] +Style=Material + +[Universal] +Theme=Light +;Accent=Steel diff --git a/Biometric Authentication/thumbnail.png b/Biometric Authentication/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9529201eaea38d6cb4ddc63698e753dd7c114d GIT binary patch literal 3435 zcmb7HXIB&25>0}D1O<@J5fdK%(d9*&#gdY3p_UJ4V z-3#EFBnAenw`n79|8-L`j83)7Kcl1J6UEXuIBg^2YT5#k0oq=B= zf-DImNrNe&4}lkS&R$9QKV66J$`}JYMy7Joi#YPz+bYj6O(r7|#%ZM!`;Ei-R@<}} zkw7GgB+rhtyzQ8pUs~n@R02K~7lA@k%SDFkecVzDHr?I}CV*zH^gT0zpwt0}ogp

CY2HPcZvGT0)1j!l9Y#4$}Gu%IV`C zQ-LEvwT+gVm#DjdPeSR-I~pH$NIJ1TPryC!S}w#cw97@B`xcut9{POz%f+r2f!_nS zC-`E@j1}TRGclk2J&-H2ZF0>1&IJC;MIQ#Z1BDP4h>1jDHyU;O=xCPD$HDI$*o7fW zumJdMeR9Y8P~N1Iga>N z7{L#?m(%9H@r>b_3at_*=+YQ9Y7CF);+{+|r#Ex0@aFL4PrZ5yVgK~038jX869Bv1 zWX$XQ3G~GS-_0mIWDa9v+|`j={HR2e ztixdg*d6LKezK1m>=|ExPc;vPF2;V`;s?86)Epss+lAQGF^$&|Of7FV1p6g>w%`iRbAP2Kmq4kA!v)i7jHDwyL;fd4|McGkj`D$2#nA6c%}wNePs6WeT3%zY3>F;i#>rao4L?z)Ou+$Y zj6Dg%3jL*>EuO&-t^f@?wsucud0j!|OVz=|n$rWT36gW|Q*YCRIjWry2-ybmNV!O% zmxKTQyDfp92BBMa_{Sho?cSZXko9it+}xCx504z)=?a3AX5&RD@sYt1SIeJ7@}FZm z;ZNOciwB9)+fO?gCWOaS7aH|3Y4;Q#Q*|JuFVl4vEF0!XUj?EU>fu#XJsac2?X0Bb zX$PCKW`PqfYjPU%-gi`PJntpsBl9eTRU&97bRc2eu(rEZdJQn7Fjyw*B{8M9AfH?T z10!dG%OUq7b1jlGUhz^KqIiO7R*n%nEe$D2n-M_wOvqq2?RmWI2K+ns;d z4c~kRx7&2ZE?pJNk--VeDD1aB!e9XQ3kJO_8cA&GF}lwOb6IdghiVdbVovlK>Kc{A z?<>(B-{)&$=TPH2$K=WP;U0}T*7kcuIpn2IwcudAxWxRRvSQz}Y^h=Ou-HZ{fj6|X zl{`E6#x+T14gZO<-;F)q;a*~)P$+%aV~#=6?U609FD9un8RS`v#N-{oCtCPfc^Z|*gedSF9Yq_Wk26~LRhpZ2%a;sj)wr3X{+^%5Axy##1#%Q%xwHoxjiTr$1Br-Alue40WX z7W%K0D1J7P;dp)Uchi^=MnGwo5?0CvDZO~LC|yc*gfIpNVrEiS>kd5GIVK% z*!EhO%v-koG~M}=so6yCaQ}Q)S$J!Wp!4uG5P&c#dV2?+-a>Cg!@!0)z8h)V679cr z&{|q5?dzc}~R&Qvq zOv}K3gg{;+&wdPQt==@jPnGzd1eD zh+u_X-W1*VfP1I23Q-~1f(1*WRn6qG(hthT3^Bxg=I}=H;b0lFf9fj?6!6rw;B~8o z;%B;VgvmZD$iI%Amqq7YZ9+7qz6V3<{5-{7e@=IRJRMM>PqPGZit z>|Ftcz522Ji#H5V>5JfXo<(O>jI^ji&CTwfP?Zmqlgl;fmFU|_?E52`wL9#bwzh9t z?R&F@h3(9#;q}IFpbE>6;lt*&g|{JFx+P5pws=#u3`Z)%FDJsum2~H%WlKD93mDlQ z$UZ%K2QvIsVG8EnGX0Vk?&c_p$Wpy*q#;vx7Ay!?nyQ=#d_kmnXQYUn6_7-(nDTuf zDW!k-Q$NIgBV{=hkFvJkR%28*bIe;(g%$^%yomtf|LEE7bFhO2yTtPfDc5V-SBKgq zbp#-;>XzPfhP$tplms@O1$gfoX;wk_Lwr%mFg5)4hp`IdZ&RgOpmGtfjh;Mi1Q?^ap(( zj2NOSQecB{#H2KvZr)g&5Bg7)O%uf1%M(j5zlp3a2|TSnQd{JCD#a}B;PU&CFC9Lh{stoq zmCL)S4sOkbEVVu4eSh7Y>+_3w_W0*8qgG~f4oLr?rv>Sm>x{%hD!lvzpoVc2MfT=c zocV*#JWBfuc%77dVsQH~Es_qHz?QkUzEN9d7xIEoXKJx)5{}RVdevMr%IJrg%7p$kC;fd+)5YrYDlmC|q(z9mo=?{U;hzDTlL z&*!lOoV4?hRhD4X^@hES_-F?%KV^u%R-S9sa6r6z59F1-ij}u%)UWF57_@D};qvVH zUk=h=65ZpT^anvu4~5XOm@GlVEEgDR{Ipi0CMtO0*jqk7wCeA7v0Br*>SqF;+Omi< z3@Xt&*WS2K=O=G&wySWikOIFes%c(Y;lmu%`<=fO?$UF-v9Zx7e1H@C=4BE?c~P+| zqR@$Pw6(afCwG#}#1HE++C>D^p$8}0G09T?>Kcx3M>T90uR`>J(TVSwI8QkShkae= zZf}W;4L4$xtOIZFpBu#jpr1E+j?4}`yG=XFs?)3?e2IDW3`-lj zv5-=MH||!@`m%S_Vpvx&CFi&vYIoDCUN%e0;oGRYx^>_Y9bB36A@|87v}+fzLEFv{lqPk4K3C}Eh3C=c z%YUK^om$*I55m>alX3)}!KSvhwz_oM)tFAF0tRwtbMvnU_wVlz<~B9V(=vUSNtUYb zG<{wsSqCfeEj;O$I%?c0Nc{RvzPqegxytl@&n3C*52xh=Oes6B>5TZo*10Y{+9{(u zlkbCFyj5^%=lh9^W|h4;UD>|8TJ-!fe-Yr5Li%!R zkIdfH zcV!@Un^ICzZqNH3XnGd@IUx2KCYLeJFbFB3gBdWgk10M_WQUtoU&1>EdWT8d@8^UN z;|HtgG-XyA^Q_4NuUt*bYrkdJ^xWoD&e$Pmx2_W=SgCqdy$FZ>eqIz&v*Foch z$|R63OT`!hkyEmJ|1XPub#2|bfXhDO$mhv_1w!>MgJut9{c!d&q+eVXmL^#exY>$* yS~&W}%3F#kKc*Z*XQxAztpBeF`JZf=VLWAq0)wH1S>Rt;1wf;WkkvX4asL5W=u}w% literal 0 HcmV?d00001 diff --git a/Inter-App Communication/MyApp.qml b/Inter-App Communication/MyApp.qml new file mode 100644 index 0000000..f9165ee --- /dev/null +++ b/Inter-App Communication/MyApp.qml @@ -0,0 +1,110 @@ +/* Copyright 2017 Esri + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +import QtQuick 2.7 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 2.1 +import QtQuick.Controls.Material 2.1 +import QtGraphicalEffects 1.0 +import QtQuick.Dialogs 1.2 + +import ArcGIS.AppFramework 1.0 +import ArcGIS.AppFramework.Controls 1.0 +import Esri.ArcGISRuntime 100.1 + +import "controls" as Controls + +App { + id: app + width: 414 + height: 736 + function units(value) { + return AppFramework.displayScaleFactor * value + } + property real scaleFactor: AppFramework.displayScaleFactor + property int baseFontSize : app.info.propertyValue("baseFontSize", 15 * scaleFactor) + (isSmallScreen ? 0 : 3) + property bool isSmallScreen: (width || height) < units(400) + + property url shareURL + + Page{ + anchors.fill: parent + header: ToolBar{ + id:header + width: parent.width + height: 50 * scaleFactor + Material.background: "#8f499c" + Controls.HeaderBar{} + } + + // sample starts here ------------------------------------------------------------------ + contentItem: Rectangle{ + anchors.top:header.bottom + + ColumnLayout { + anchors.fill: parent + spacing: 0 * scaleFactor + + anchors.centerIn: parent.Center + + + TextField { + id:inputText + placeholderText: "Enter Text or Url" + Material.accent: "#8f499c" + Layout.preferredWidth: parent.width * 0.7 + anchors.horizontalCenter: parent.horizontalCenter + } + + RowLayout { + spacing: 30 * scaleFactor + layoutDirection: Qt.LeftToRight + anchors.horizontalCenter: parent.horizontalCenter + + + Button { + text: "Share as text" + + onClicked: { + AppFramework.clipboard.share(inputText.text) + } + } + + Button { + text: "Share as Url" + + onClicked: { + shareURL = inputText.text + AppFramework.clipboard.share(shareURL) + } + } + } + + Item{ + height: 400 * scaleFactor + } + } + } + } + + + // sample ends here ------------------------------------------------------------------------ + Controls.DescriptionPage{ + id:descPage + visible: false + } +} + diff --git a/Inter-App Communication/MyApp.qmlproject b/Inter-App Communication/MyApp.qmlproject new file mode 100644 index 0000000..b8ff5f5 --- /dev/null +++ b/Inter-App Communication/MyApp.qmlproject @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ + +import QmlProject 1.1 + +Project { + mainFile: "MyApp.qml" + + QmlFiles { + directory: "." + recursive: true + } + + JavaScriptFiles { + directory: "." + recursive: true + } + + ImageFiles { + directory: "." + recursive: true + } + + Files { + directory: "." + recursive: true + filter: "*.json;*.html;*.txt" + } + + importPaths: [ + ] +} + diff --git a/Inter-App Communication/README.md b/Inter-App Communication/README.md new file mode 100644 index 0000000..4bd0ae7 --- /dev/null +++ b/Inter-App Communication/README.md @@ -0,0 +1,47 @@ + +## Inter-App Communication + +You can share text or URL to other apps using interapp communication functionality. + +Note: currently, this functionality is only supported on macOS, iOS, and Android platforms. + +[Interapp communication API Guide](http://doc.arcgis.com/en/appstudio/api-guide/apisystemfunctions.htm#ESRI_SECTION2_0B8E45C527124BDAAAB7BF8E53C6BEE9) + + +[Resource Level](https://geonet.esri.com/groups/appstudio/blog/2016/12/06/how-to-describe-our-resources-in-terms-of-difficulty-complexity-and-time-to-digest): 🍌 + + +## Instructions to run this sample in AppStudio Desktop + +1. Download the `.zip` file +2. Unzip and copy this folder into AppStudio Apps folder (Windows: `C:\Users\\ArcGIS\AppStudio\Apps` Mac or linux: `Home\ArcGIS\AppStudio\Apps`) +3. The new app will now appear in the AppStudio Desktop. Run the application or open it in the bundled Qt-Creator IDE to look at the code and modify. + +## Issues + +Find a bug or want to request a new feature? Please let us know by submitting an issue. + +## Contributing + +Esri welcomes contributions from anyone and everyone. Please see our [guidelines for contributing](https://github.com/esri/contributing). + +## Licensing +Copyright 2017 Esri + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +A copy of the license is available in the repository's [license.txt](license.txt) file. + + +[](Esri Tags: ArcGIS Runtime SDK Qt QML JavaScript iOS Android Xamarin Ionic PhoneGap Mac linux Windows Apps samples templates appstudio) +[](Esri Language: Qt QML JavaScript) diff --git a/Inter-App Communication/appicon.png b/Inter-App Communication/appicon.png new file mode 100644 index 0000000000000000000000000000000000000000..39504b966783aa4ec58c7086a74e03aa0a3bbe71 GIT binary patch literal 26669 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 bb%Xu~a~|hNXxfgr00000NkvXXu0mjfV)nVh literal 0 HcmV?d00001 diff --git a/Inter-App Communication/controls/DescriptionPage.qml b/Inter-App Communication/controls/DescriptionPage.qml new file mode 100644 index 0000000..0572ab6 --- /dev/null +++ b/Inter-App Communication/controls/DescriptionPage.qml @@ -0,0 +1,93 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 + +import ArcGIS.AppFramework 1.0 +import ArcGIS.AppFramework.Controls 1.0 + +Item { + id: descPage + width: parent.width + height: parent.height + + Rectangle{ + anchors.fill:parent + + ColumnLayout{ + anchors.fill:parent + spacing: 0 + clip:true + + Rectangle{ + id:descPageheader + color:"#8f499c" + Layout.preferredWidth: parent.width + Layout.preferredHeight: 50 * scaleFactor + + ImageButton { + source: "../assets/clear.png" + height: 30 * scaleFactor + width: 30 * scaleFactor + checkedColor : "transparent" + pressedColor : "transparent" + hoverColor : "transparent" + glowColor : "transparent" + anchors { + right: parent.right + rightMargin: 10 * scaleFactor + verticalCenter: parent.verticalCenter + } + onClicked: { + descPage.visible = 0 + } + } + + Text { + id: aboutApp + text:qsTr("About") + color:"white" + font.pixelSize: app.baseFontSize * 1.1 + font.bold: true + anchors.centerIn: parent + maximumLineCount: 2 + elide: Text.ElideRight + } + } + + Rectangle{ + color:"black" + Layout.fillWidth: true + Layout.fillHeight: true + + Flickable { + anchors.fill:parent + contentHeight: descText.height + clip:true + + Text{ + id: descText + y: 30 * scaleFactor + text:app.info.description + anchors.horizontalCenterOffset: 0 + color:"white" + width: 0.85 * parent.width + horizontalAlignment: Text.AlignLeft + linkColor: "#e5e6e7" + wrapMode: Text.WordWrap + elide: Text.ElideRight + anchors.horizontalCenter: parent.horizontalCenter + font { + pixelSize: app.baseFontSize + } + onLinkActivated: Qt.openUrlExternally(link) + } + } + } + } + } +} + + + + + diff --git a/Inter-App Communication/controls/HeaderBar.qml b/Inter-App Communication/controls/HeaderBar.qml new file mode 100644 index 0000000..2ddd736 --- /dev/null +++ b/Inter-App Communication/controls/HeaderBar.qml @@ -0,0 +1,59 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 + + +import ArcGIS.AppFramework 1.0 +import ArcGIS.AppFramework.Controls 1.0 + +RowLayout{ + anchors.fill: parent + spacing:0 + clip:true + + Rectangle{ + Layout.preferredWidth: 50*scaleFactor + } + + Text { + text:app.info.title + color:"white" + font.pixelSize: app.baseFontSize * 1.1 + font.bold: true + maximumLineCount:2 + wrapMode: Text.Wrap + elide: Text.ElideRight + anchors{ + verticalCenter: parent.verticalCenter + horizontalCenter:parent.horizontalCenter + } + } + + Rectangle{ + id:infoImageRect + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: 50*scaleFactor + + ImageButton { + id:infoImage + source: "../assets/info.png" + height: 30 * scaleFactor + width: 30 * scaleFactor + checkedColor : "transparent" + pressedColor : "transparent" + hoverColor : "transparent" + glowColor : "transparent" + anchors { + centerIn: parent + } + onClicked: { + descPage.visible = 1 + } + } + } +} + + + + + diff --git a/Inter-App Communication/default-app.png b/Inter-App Communication/default-app.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa9021601d248039e237f0a31607ed7c9cea37d GIT binary patch literal 24553 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 literal 0 HcmV?d00001 diff --git a/Inter-App Communication/image b/Inter-App Communication/image new file mode 100644 index 0000000..e69de29 diff --git a/Inter-App Communication/iteminfo.json b/Inter-App Communication/iteminfo.json new file mode 100644 index 0000000..efa65aa --- /dev/null +++ b/Inter-App Communication/iteminfo.json @@ -0,0 +1,57 @@ +{ + "access": "public", + "accessInformation": null, + "appCategories": [ + ], + "avgRating": 0, + "banner": null, + "categories": [ + ], + "commentsEnabled": true, + "created": 1509643363000, + "culture": "en-au", + "description": "\n

You can share text or URL to other apps using interapp communication functionality.

\n


\n

Note: currently, this functionality is only supported on macOS, iOS, and Android platforms.

\n


\n

Resource Level:🍌

", + "documentation": null, + "extent": [ + ], + "guid": null, + "id": null, + "industries": [ + ], + "itemControl": "admin", + "languages": [ + ], + "largeThumbnail": null, + "licenseInfo": null, + "listed": false, + "modified": 1509643846000, + "name": null, + "numComments": 3, + "numRatings": 0, + "numViews": 0, + "orgId": "2U3NfasNQ9o9LkLt", + "owner": null, + "ownerFolder": null, + "properties": null, + "protected": false, + "proxyFilter": null, + "screenshots": [ + ], + "size": 34547, + "snippet": "This sample demonstrates how to share text or URLs to other apps", + "spatialReference": null, + "tags": null, + "thumbnail": "thumbnail/thumbnail.png", + "title": "Inter-App Communication ", + "type": "Native Application", + "typeKeywords": [ + "API_QML", + "App", + "Application", + "AppStudio", + "Configuration", + "Native", + "qml" + ], + "url": null +} diff --git a/Inter-App Communication/qtquickcontrols2.conf b/Inter-App Communication/qtquickcontrols2.conf new file mode 100644 index 0000000..1ddd1cd --- /dev/null +++ b/Inter-App Communication/qtquickcontrols2.conf @@ -0,0 +1,10 @@ +; This file can be edited to change the style of the application +; See Styling Qt Quick Controls 2 in the documentation for details: +; http://doc.qt.io/qt-5/qtquickcontrols2-styles.html + +[Controls] +Style=Material + +[Universal] +Theme=Light +;Accent=Steel diff --git a/Inter-App Communication/thumbnail.png b/Inter-App Communication/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..36f57d96811988010ff3217e183274d6a5e29f1a GIT binary patch literal 1749 zcmcJQeKZq#7{^y>X4OawnHHVh(k7x(ElJ+r-?f=?y+wJMw+y3^muO5;BMi5+#D;}& z=k?kyuFCtJ86lMv&1)AOw(k6Q|G52i&;6bA{GRhXzw>;~^E~H!&hM_Hy~Q4|Di{C& z?6I;mb(Z=+q?QWWF1@oi)#Id2F3i$B5&(ewzGd5}CsIQ@=ew&pj!`-e3+GVN!e+Mb$lRKW9J3-xZ%iEm! zUMF_%-hCf#46EBW+|gmC9gQF#Z!`fVy^Y|M7#2M{pW=W0D0672me1!$aBPVW!_LMh zv;5qv1apuyUa-E4ZIt|tqfC@%wIGn)&pf^!-#RDBL|Dnn${xBX*-J4m9Z0ty9rVJ! z7>Pfjg1~J8Va&@6c71()!`e)Dx16tm;@wZ)dC%HeZ}4l2i(zeL>#zOvzKJFAhCgfP z<>e&=*ruBvIX#&RhT=UybJ|zfRNGnl@sucw*0Z7X zxRCJP(t%IECF-v&gXZQ(M5|b>PD#kzcvEzyZe@KcYyKf`>QPC_7U#3ii(hMMxTi*y zxQ#*fWh=AIQ3S#>e!ar5UHX%eV0|;EFE`OoM&=3Bxhk(0SfH#djM6C-3OCjk@;{Cm zV+HDDpBGprKX7J7c{+lFtE|KMuyNFD-#UXLdL0}b_T5bx6Tx9HxA0MkG4{JntxyXJ zwy@|D2G=`kezjJVX~#F5S0gZ@78`dV$%DcA9+gVI()ryhhw%*z$s2Jpi}YmZ^M?qI zSS&6o8lOPD(Jwr%06MD%DGXVhGPx%VjzC`(;A+R*tm%Uv{h#pz^LsuzYSyt7~}g=%fD7gq4<@%`eeo$z)Skh=qaikJh&2Lpq;k@ly-`uTI+9M=+3%@J&zs3 z!oxMxAdCxfB^t~H7wGi*dd#g`z5xLiIfyi#uI}Cf8jbb{G|4Q3_r|tNSe9M%(>svd zt^nSttgOt&>^H$q(luYMuC9)b61DU8$!I{qc6N3b5+oTt{!KkKv=w4Yu{B*F5S*J) zts-kMLywVb*zCVnMavx>sr*2S>EXyoovyCXrfu(NXH+S!$RbMw!U_yzU)e&x^smLZ z^+-=|uVKvF*6D(likxoO!`Yv1qTj#wwXwl%A*(;Ee4|pS(v2`?`HY`3rt3q^r=_qS zKfQcQCVMQTZSqh?N8Q!^ysoxZ*J=RN@!e6aD97zzOsGUNj1paQ{){M5o%_I7!G6?w0os@ z`Fd7k6lB;+4OlIQVuJ%PSS05Px|}@qm{sPA6fG>E$a-kBD#hHbZNu)!P=Eh@QiTtQ z5fBvQ0W~WfSYMuI;yh4ACR>UWi9}X8P>>9FidEH%x~ZUqg4#3q$eDN|5l5X-PSnuq z9GRNBt@X;hR9CI|M1I)mQbcp^1yXdEYcWjv>hXet{k}T zr*~*9WNDz(!o|f!3{M01VxudC!6A735yhaiG!CiH805W8E@dY|LFvAcwCdl3{*8?O zBM-XYFJUW(Z*PmwG`1tkzY-DJVpj^aP&{6YYLJrf?uIY78fVcfV`J}dQDADTS-56{3%ucT7qOi5PjnWlh`t`u$N@N;w?v8 zA@%)|GZ;FqCl3q 0 && key.text !== null) { + + // store key and value into Keychain + SecureStorage.setValue(key.text,value.text) + toastMessage.text = insertSuccessMessage + toastMessageRec.color = successColor + } + else { + toastMessage.text = failMessage; + toastMessageRec.color = errorColor; + } + } + } + + //Click on the button to retrive data + Button{ + id: retrieveButton + text: qsTr("Retrieve Data From Keychain") + onClicked: { + // Retrive value + retrieveData.text = qsTr("Value: ") + SecureStorage.value(key.text); + toastMessageRec.visible = false + retrieveData.visible = true + } + } + + //Click on the button to remove data from the keychain + Button { + id: removeButton + text: qsTr("Clear Entry From Keychain") + onClicked: { + retrieveData.visible = false + toastMessageRec.visible = true + // check if key and value is not null and not empty + if ( key.text.length > 0 && key.text !== null) { + // Remove key by setting vlaue as an empty string + SecureStorage.setValue(key.text,"") + toastMessage.text = removeSuccessMessage + toastMessageRec.color = successColor + key.text = "" + value.text = "" + } + else { + toastMessage.text = failMessage; + toastMessageRec.color = errorColor; + } + } + } + + //Display retrieved data + Text{ + id: retrieveData + Layout.fillWidth: true + font.pointSize: 10 + Layout.preferredWidth: parent.width + wrapMode: Text.Wrap + horizontalAlignment: Text.AlignLeft + } + } + } + + //Display toast message + Rectangle { + id: toastMessageRec + height: 40 * scaleFactor + width: toastMessage.text === "" ? 0 : toastMessage.width + 30 * scaleFactor + anchors.bottom: parent.bottom + anchors.bottomMargin: 50 * scaleFactor + anchors.horizontalCenter: parent.horizontalCenter + radius: 18 * scaleFactor + + Label { + id: toastMessage + anchors.centerIn: parent + font.bold: true + font.pointSize: 10 + color: "white" + } + } + } + + // sample ends here ------------------------------------------------------------------------ + Controls.DescriptionPage{ + id:descPage + visible: false + } +} + diff --git a/Secure Storage/MyApp.qmlproject b/Secure Storage/MyApp.qmlproject new file mode 100644 index 0000000..b8ff5f5 --- /dev/null +++ b/Secure Storage/MyApp.qmlproject @@ -0,0 +1,32 @@ +//------------------------------------------------------------------------------ + +import QmlProject 1.1 + +Project { + mainFile: "MyApp.qml" + + QmlFiles { + directory: "." + recursive: true + } + + JavaScriptFiles { + directory: "." + recursive: true + } + + ImageFiles { + directory: "." + recursive: true + } + + Files { + directory: "." + recursive: true + filter: "*.json;*.html;*.txt" + } + + importPaths: [ + ] +} + diff --git a/Secure Storage/README.md b/Secure Storage/README.md new file mode 100644 index 0000000..5c0e8a9 --- /dev/null +++ b/Secure Storage/README.md @@ -0,0 +1,45 @@ + +## Secure Storage + +This sample demonstrates how to insert, retrieve, and remove data from Keychain. + +[Secure Storage API Reference](http://appstudio-apihelp.s3-website-us-east-1.amazonaws.com/AppFrameworkOutput/qml-arcgis-appframework-securestorage-securestorage.html) + + +[Resource Level](https://geonet.esri.com/groups/appstudio/blog/2016/12/06/how-to-describe-our-resources-in-terms-of-difficulty-complexity-and-time-to-digest): 🍌 + + +## Instructions to run this sample in AppStudio Desktop + +1. Download the `.zip` file +2. Unzip and copy this folder into AppStudio Apps folder (Windows: `C:\Users\\ArcGIS\AppStudio\Apps` Mac or linux: `Home\ArcGIS\AppStudio\Apps`) +3. The new app will now appear in the AppStudio Desktop. Run the application or open it in the bundled Qt-Creator IDE to look at the code and modify. + +## Issues + +Find a bug or want to request a new feature? Please let us know by submitting an issue. + +## Contributing + +Esri welcomes contributions from anyone and everyone. Please see our [guidelines for contributing](https://github.com/esri/contributing). + +## Licensing +Copyright 2017 Esri + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +A copy of the license is available in the repository's [license.txt](license.txt) file. + + +[](Esri Tags: ArcGIS Runtime SDK Qt QML JavaScript iOS Android Xamarin Ionic PhoneGap Mac linux Windows Apps samples templates appstudio) +[](Esri Language: Qt QML JavaScript) diff --git a/Secure Storage/appicon.png b/Secure Storage/appicon.png new file mode 100644 index 0000000000000000000000000000000000000000..39504b966783aa4ec58c7086a74e03aa0a3bbe71 GIT binary patch literal 26669 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 bb%Xu~a~|hNXxfgr00000NkvXXu0mjfV)nVh literal 0 HcmV?d00001 diff --git a/Secure Storage/controls/DescriptionPage.qml b/Secure Storage/controls/DescriptionPage.qml new file mode 100644 index 0000000..0572ab6 --- /dev/null +++ b/Secure Storage/controls/DescriptionPage.qml @@ -0,0 +1,93 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 + +import ArcGIS.AppFramework 1.0 +import ArcGIS.AppFramework.Controls 1.0 + +Item { + id: descPage + width: parent.width + height: parent.height + + Rectangle{ + anchors.fill:parent + + ColumnLayout{ + anchors.fill:parent + spacing: 0 + clip:true + + Rectangle{ + id:descPageheader + color:"#8f499c" + Layout.preferredWidth: parent.width + Layout.preferredHeight: 50 * scaleFactor + + ImageButton { + source: "../assets/clear.png" + height: 30 * scaleFactor + width: 30 * scaleFactor + checkedColor : "transparent" + pressedColor : "transparent" + hoverColor : "transparent" + glowColor : "transparent" + anchors { + right: parent.right + rightMargin: 10 * scaleFactor + verticalCenter: parent.verticalCenter + } + onClicked: { + descPage.visible = 0 + } + } + + Text { + id: aboutApp + text:qsTr("About") + color:"white" + font.pixelSize: app.baseFontSize * 1.1 + font.bold: true + anchors.centerIn: parent + maximumLineCount: 2 + elide: Text.ElideRight + } + } + + Rectangle{ + color:"black" + Layout.fillWidth: true + Layout.fillHeight: true + + Flickable { + anchors.fill:parent + contentHeight: descText.height + clip:true + + Text{ + id: descText + y: 30 * scaleFactor + text:app.info.description + anchors.horizontalCenterOffset: 0 + color:"white" + width: 0.85 * parent.width + horizontalAlignment: Text.AlignLeft + linkColor: "#e5e6e7" + wrapMode: Text.WordWrap + elide: Text.ElideRight + anchors.horizontalCenter: parent.horizontalCenter + font { + pixelSize: app.baseFontSize + } + onLinkActivated: Qt.openUrlExternally(link) + } + } + } + } + } +} + + + + + diff --git a/Secure Storage/controls/HeaderBar.qml b/Secure Storage/controls/HeaderBar.qml new file mode 100644 index 0000000..2ddd736 --- /dev/null +++ b/Secure Storage/controls/HeaderBar.qml @@ -0,0 +1,59 @@ +import QtQuick 2.7 +import QtQuick.Controls 2.1 +import QtQuick.Layouts 1.1 + + +import ArcGIS.AppFramework 1.0 +import ArcGIS.AppFramework.Controls 1.0 + +RowLayout{ + anchors.fill: parent + spacing:0 + clip:true + + Rectangle{ + Layout.preferredWidth: 50*scaleFactor + } + + Text { + text:app.info.title + color:"white" + font.pixelSize: app.baseFontSize * 1.1 + font.bold: true + maximumLineCount:2 + wrapMode: Text.Wrap + elide: Text.ElideRight + anchors{ + verticalCenter: parent.verticalCenter + horizontalCenter:parent.horizontalCenter + } + } + + Rectangle{ + id:infoImageRect + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: 50*scaleFactor + + ImageButton { + id:infoImage + source: "../assets/info.png" + height: 30 * scaleFactor + width: 30 * scaleFactor + checkedColor : "transparent" + pressedColor : "transparent" + hoverColor : "transparent" + glowColor : "transparent" + anchors { + centerIn: parent + } + onClicked: { + descPage.visible = 1 + } + } + } +} + + + + + diff --git a/Secure Storage/default-app.png b/Secure Storage/default-app.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa9021601d248039e237f0a31607ed7c9cea37d GIT binary patch literal 24553 zcmc$`c|4Tw-#2{D7>s?C>}5!4Au3A}#!|E?q|Fv8q!6+*qim(5RoP{0u_XI0St^N; zeU~kJcE-%}Ij8UMdhYA`J@IpZ)z=PIpi1>2R?Nvm*$?byQc| z06}nYi9_%#@E>{e?mO@wo1^XpX9VHcfd0cYcKcEhgoqr~);QzdG0}a>Ch>x&)bFM# z3GBf$710vMwgqQK5Pt79I2s;S;}ZPxG5^L*RwH3kHlJ&yEeBr)I2pR>cRW?PAlPbp z!v2F&$(za-?KT!W-bdWtr)1n0ITr9rKu_bXp?tJ1F(KsGwlj6Fw~4&j=`FD9O3J>Z z6YDDy18Z}KPRk9&OuhBix;L#_HXXI(JzhgzZKd=%rFif5<6at&hlMlR43j@5$~1bl3N8g1N1w ztKGfRVo}R$lRv}hDh%s0cq6aoXsJQYZYXP+Wu_WMFH9@TE4%k27G4YQ&}Sv&+T4rB zf|yamBb=&nnDpxX%~rDR5ZFVDY3S^I@;bmr3G3h3R&ICac6VBd18wzW+qzS|Jr)6h zkgNq(l4kSFi-Nb^j=MB5PxrR+m}~#R)Q=!QUtc4~Ivje`XT0vTXd(Z-q0%tfUwl$W zLhpnNJlrBWAr=Vde_yg{)VBUd$---L_eaKKp9?KlA_Hhj4)ZeePh`zM2f*gXRrZJ8 z@q18X?%$o}aN93uGcyy)MqASffm)yV11@zfJ|9W={?Q#D7k}#u68RWDj;*P)cO&e2 zT3F_nJDk0RBHFZyV(6fM)tE>nSL5S^v+gW4Rhose`CNI(D;5+p- z4piRf=kLfdJnnzFz#vHR_gP}uqoqKZ)%aSA@~`zV!bCg;9Qx?|;*$TPj-^k!H`?ZX zgX2LZ-hY^pPnD*A{dpTbOa2RQaRJ!x(`TzCl?n`2Q$xqtqGJL7YNB7H!u)7G5B{}h=1Nqcz>dfZWC5)7)xm5mqlX<=dx)$m2vuak&p&%Wtb;Rt-t(&US z>+?s!Hr@y#JBRoY3ZL*BuApnq6{pqvx={KWeqCzo?%+r((6PAE|K=5vcz-j3?0h8q zOEYO!@3s7q8*{Ab6ToiiI(4?=b7gW;j7>yQ{#|pH;5^BFahd4`8x|z5WjFOm8G~RE zq%i*c6vwmb*LGA&=*H4rK=^Y|v!RW(LJBWgvdS95IE(p@1ERIc1vn{mm>|DnbUbpht z-&MBOa08ViWpuN{(o%~UaSNDu>}C$6Z^48KKO-z@(5ZC|}Hnc|Wqg7kr8NXZ`KJYl}BOo%8L z*yq%-mv7--p)7g2FXaA|spG~9+kE^7iamDJvX)23J=1kD2n*%g6>YHRP9nXrB* z-ZLS(CGlTA&ZyH`$yv*+ecO^U{TRP+Xg#@e4+Hx7__}AZuzgp0fVVj8AGHetfJmO5 zg=g|xLDE}gERy(GgN&Fw#rTmr+A&DtcikHYx{95<2gE2GyTSd|skDM`I=`3F3?%A4 z0B4l!V5D#(v9bEka29=Os>KYfR%JGJ+J1fegl|FXbF%BSv1)uCz3vG;j}h|bCZ_A! zh&Sq=tWKN(PwWpiz=_9!BHgsCRX>_tlDiS4dP;iqp};DuSJ2(=+a{o2-lwLtT$)znd>1m#U{T=}V9~Az`T=q8 z6rU@Vd05en+RQrHz(Mx#o9SmVBA6!pcW=l}y!VOoH%hv31bM@jF1wvL@D`(q-s08` zVw>HlN63S-0{p9c@hry%9Xj`tYHol%o>HfFnV`O^;SF;+aP!7W%4EnoBT_FKwVm(D zzM)d+HK5VG&U2EhX*dYrC!=>N)e2^8h<89rOr7 z15evwZOOCzF@bAtV!Kcpf^W~!v?pU18n>}7kCUT>3v%P(TRnYHEYSV$?Up|t%2Cd=L%50cDeil*0XT5Lj2bzA z3a{f(3l8i2{F4Z|xJJR8cWg>Hln;c^?dz@9DSQ&2P)++<(FAUOxAp4LBshwk!J4n& z8?Mfwr#C?mE?Q^=`S7MukgI9GQNZUoP)G1^TVPf9tw)miz`EfpFiuz1E6sPj(jY=> zqr`@72G93|w%-QjA$8)74DE8yEUzCx1})p`B#nJnuk_pIlb7N(;W*_3u`bG>!w|WJ zpZl(I7*qTCO4e25|9o<*0GQy)j7J?c>0th_tTE^Ooe;8)u;`1D>7%VUEaTzIgTkXr z@~Bd9<|j5TlhD)4Y{Q`v{n7{+54^<%YD(Kjn#Fn0^XJ3l_`3o4A&!F6w#6I4Olp`6 zwqU&%XKz~>fJAk30W5*XFdd9A0386~ea<=CfZ3YU4?!{im|PMH%TmOAr>^pm03uO0 z$^w3gSID~@sqUg->rFfpxhap8abQZ7`sARudgX4soD>OGxj zg+2gIoa*(l>E{t*!=f>XhY!_xB!r$SLp63jo<4Vn^DkJCz!R{D(0t$qc&t6MC`SNH zKLAiDfTRxhVj(r3Vj(nyLZ}5avg6ooQFX5XRN3DzkDOs$3j&tx0Mw$-N%SXF0BAdJ zYQpoZ+6IUL=WfU+j)Xb&(w_9IuN}Vv6gSz~(vB`q3g!f34H)F03?^n{`s;pV3I~E zI>6819O+0z>F_Dv%d=uuxob?(1LsNmG${p3bUi`Ns4p@|`5Qo)%Rg%9+vXR`-U#l^ zfmldgk0#4ughzwT9jMb_IL$XOdl!#Pb;d(1_FcFnzyDg75- zqM#v(-(M<`pC=i7k z1CTKNP=v&?K0+T?51d}tKPq0Bs*uMARw!6Xn{2&@N$hDYTR)fzKAi>UYTjSe%NAhQ z%c};(L){`k`DcU^*nb=bFVmkz_v(*4B1kkwMOOVs08%5uAJraBx7r`1a)hk!)W-kqfae;${{bUu{Ul@n#Hs-X;#0$AVLr) zE>PVr*x7#}N>dy}c}O?vWOg1AINAHQa0`HPQiLea`u>>|uai?LycS+mNoNa>dR(93>WH z>h+Gm5Kmf4#8w8eV%}U^`;z}e}y8F5K z%YU|O{8V-2z732Lv|cG3TrMu#pNfe@-=)n8&R7oEu@gs%%o*My#NB2AIaoM55Iyj@q3rv< z37)t)PS%M-S{MxksXPG)7w~cP+H@H33yv5oa)P-}<@`g`bA68}HG1~l?hwXXpot&w z{)Zn-|q*DlT)=? z5{K_X0r7Cc`88cG%{mzGBsqzSwZ19=!ci8CQ7(Ye5pj}9dlDYhT_Wk` z$T;KcO5>!x!p8=O`TU@MkPVRiw^;t4dd9ufpX!bZL?G+q(r)<8^1q7RW$=A436U-*kqs4^>v4bkO4^3tXAjDghlXGe{!HK zw(-lYaI~xeMYQ+esbQTz1xy)S7&O^kxS%rq>I|e!KU+K*^#j7z-qqPy+Cte*rb3|=*JllI1HPt^ojx{~=v8_3yh1lZ~J0p5CGDe=E!?0Fc9QFr04;2H z_mToTgq+9gHbO+pa6L4otuK#OJc7^_I8;x5gKDPcfsR%BbV@BdZ$HB(*nd<7kV~a5 zG-Z3O^>TvsXfQI$U6Q!q?>{&~9ReO)VM0w(s1+oFhR6q9d7HLk8IhPiqV5k)Aji^0 z7eHGVHI}aMh=ZPWn*tkuT8yw`7OzFiYSZgMkGnm1cXBTTKun!0VaFn$b4A2{R^&8J z@7C51p+h=k;`}4C>W{wrLM&}fOv<;PZjf+sieu}vk2;D3J_(d{Em~-?_@LJrTT*k;kPSl4X}uQW=`Zi~g1m)Gt!qbV1!C)K~O@+b1St_kz&IUS6}IC0dBc zx##XUf`eMm8((`0WcEV?6-HV=R^~s|pA?*GsGoe$nIora$hD%mXCry|FOKb&*&L={ zQ&by##K(2l{(7F^tvX2Daat3ZK6qMqX;GaW&9=tr+3|$U7x45}G?ZSMs;9vbQAELx zmU_d+KR$s__Q)g_pS*tr!iz@*H>z7;C_zw= zxOJNKb0Sn30URe1c%gi)N&k*knP$?0MY?nnkQU5wkTDzjM*~ zq5pSJaTGl%8Hgw@%QD3EQA!4GhJ^dI;%@fY+u#E1dkXg8D4d=%M{B>m#6z|Tz~j6) z2|>opOLq*Kjc!CI&gm7H&d-#=+&eMQskHRM!ru z+vn^P2LGOq`H=0CliF0 zqsFrg*+1^T+BEtM$n+%YuYKeht$QE0&7WMZWl-_p8 z0st1W-(-eLUxf`+o}G+@r`^L$p{DGK;)7sC;RsRr*jFbf-s;8*XmuxanocbCxq392dxgFRy>?{4Ls8`my&y`jV63JI{Z0JP8=}X1MP6&}QgA)YHBy9Ge`z_H|1BL#VN& zVP=CLs97gR6qs^6tz2lunt%I6@sb8+=F5u!tC?Usm^VC&A`gHS_0qcQt?W)_2rEbpdy&2!Vj|J-#@v~}ykwNci zI`@F9jTypKuyfXqH>LNX{yIWa$&ZUyVU)e=XX6s{Cni{!Fv=&PJp2x`a2AM^pIxN? zQCn*h`l7df-*c_k^qJT}mM}hG_wngAxyw%k7(}Tl4h|dC?{S3kGV0V_FSDS|S4?k-J# zolkogJLopYlww<_y1~;tx&8y%J|IXv9;+=NFNtl6Hw@9UuD7zXacZcLt4{y0K=;sR zW^-SRZv}q2T zNTfp?2|h9HC`U&vKkc|%y2F?*qc~eod9p}g3^)&)&6@!Walpb4b)jkW?&S;HVnXx= z;?>sdjp<8VxL?wtSd)R5SJCstiAXjGEcNx&Z;Jl}3@i4yZ?{o}mMc+7O4{4;NUr)* z{OKwL`8x{$TZ=4Qf~Ea;Jzs;<#X%xt0YxuO7tcpyBhA*IUcw5RIm$mW$uU64)xp`T zP^NfA5TMesL)dXh!(Ntyrr)MoV$$fQuQdLwIOc*M)N%U^PBZ=2uQOMdn>+|mSd2U&>+`==J!#98h%P-Y} zAUWCkW%8BnKh361uZ%gq<@KEL7tCUcLp2U6cDE*DCzUH~p&{|9`a^<~=RVMf)QBVJ z+@gCSwPL_{m;K0$YvstNxCX5lIjE(meQYmJNv6#BTr@8{waKckoGYAT2iwjTXC#Gz~<465PD zQWq8bkvwaAkFpglwJYw zMbk6+4m^s4uq?!RV&WU)`KR5{#?^b-cMRH{D>nlMP#Qd7z zmvj^tXBpmIbxVill126Y#d~E-p*O%urZ?Z8^-N#CQ#*S$!{>2flA3Kib9DbjQi%vC za^0~(ru3@^Q(C$nOO#*1Qe-zb*|aXX83g?X)L#6tGHVfyALp>J&Ythu!*lJ7j%UfU z;34ZlXYo4>8w{Js8*SPTMzrcyXo`3q0J%j9>+(FD1M82MC{GeumE{w+d{(V;S6!zU zpx7?1rf;*~N{%5!Z6*v7MgM5=hh6|s_g0|t6vqjN5KCx7l6WP~KzZ|8*5iBX$8#?1 zC4_~eB_eKApsbs3?O{k3j0{ zG490OLzBAVSCD|;dsR=%1#+EcE_($+SW_FbBhB}_oHYR{FNn}Js}~7Q#34O$HA`8% z-?ft<^a7H2L(LL`CEv$zgDGxb(fr=|+<9hEUAfpI)EOa0-8}}dDktPJDnnCb1o}Zc zNN_y&(c7Svf}rsT_^1NM+5{E2M4F5NU-3=d7=ZhSgI_{UrEw9L>~Lko+uQa! z@oBYc!pw=%Z_}ZhCob;4}Is%c{2jIB!a|KAeBeP+cvoz^?SSSQ~TsQCH09 zEGT=p?}0Xn#e+Tak{%yz1xQiQp*_Z%PBi~~#c6NUa3}Z7^_D@<>4VAVr?ONhaya-M z=uc=XygaU#O-!N3ceN~Q_XGX<-Foji`W8_C1>GQk=#;IGEjT_)OCRi3nReUBg%)~l zoZYuJQZL{H9h%>)nBLu8qtI z;4(m?{wS}zH`Pfn9`X=*lX~J&X)3C!iRJ%vi}A4nMsSeyx-hxDY&1ygL!XBJ^kFHy)5cyS0ICv*Knzt7pfi(Bv z?EOKnjA69T_}LLU3rtAkB<-QtF3m{j(Lj)9?ztWt8@<6ja2x|>P)e08vAMZmzIx+O zj|*R1-BjeQN#*9{%)!n}{Ihs~Nd}_J5*($UpDnn2|)_<$Y^%5>4-|dMwS)W_DQPkRkVsF8`m-}*VK(*596xpZDHX!4-e>IaI^;VE3#lWXyT#lW?|Lt_BaN%x%@)L z+&arB49({7jz?YfP1cLrmz=XXM3^wM*IPHVWy;}eB5dbo?zf7dyF;19pl3h0 zzzd@{f7b`RL^AAO%g{2?X?|(+N#8{w{O84v&;(O!$Qk(_ivtwg$2oSLCH&^|!Iwzx z!x$I(l$JGZE3_~UkUOE7VbL1he<4E$qEY+6B>i2)ZS$Sj3{H&Nn)^roMu%&AmuSUD z4r2dCN%kM&O?jNS`P8M<)~#?B&YRWaF1gH3W&j}esfs#6hlg4hOHbR%%b$4Hhox}t zP^aip6ME-2$GY0~;-5njC}`+fBMU%vbN|AKeVt4I+D5Fy^S+TkqR?duO|jppS=OZz zqZ@e<(rSCh!f)oyCY7^}zB4e7RXv?Ty# z7J#_|7FH`ZO4x4bT;!XpR3|&E6VXyF`=h;~nBqdW`EL-5j;?PA{}r=Krm5p-I%8mH zVZM@|iuQxWPe3VyFDPAgt=>#@xB$xBu4UA^Y2Rcq^6Z4Qm)p3~_qiHvXk|kIO0$xx z46|#a4;+tpVKC)mWgF2Ejj(3fnXV;E!hf*f2%PRojeXVxWl((66jI?cGU&-u6>Ln0gMxl}Qp zx^Sv*vJS?l%q@$=8tlkCXBZ#tr8x+8Cor1()hnaWsK(WQ4h?rbV(<+llkPAEFFBEby! zR3t7Oee{}kbhqaUrfeeAI?gBA+BXir(~@|}75X6uS^nN}RHqGpdAS_?lGSa`V+>K)8Rwc^E{7IB1hTx#Ld*BLaLv0%cS4BTOZ)J=rF8zZ zQWtCR`O>gC*8^K)vl0+bX4P%LkW%xOz}#Z$-){kM!5BrrX9`-N7tU+a%7{yWqg94Y zzLrv^^JH6T*l2p^Hml2xi%)*TG#G-1sLV7Pzw&(^qyJ&sp-5oI{!tlpPwL}bqw%Dm zg8e=ue;`$>f8SRUN%c+-O3iMleC?{>fYPl2j<^BUY_u0}qlko~A7yx9c6`Qyq{eJLCZ>=HHXEOJ`$JH0WL93Ipb=ixf6GQd zzslRQOTQ_ol^c~BrdYpa|5yOj#eDR{`=ARrpRo36Uwk|1RX!x(vc1^(QPq!m8NWwc zG&9fxhV|shzpdYo5b{&ea#**?3qQ)3B_YmiBM5HoctNjA%ZN}9lgaaV`{j0Ve*&2K z1Bp=uhz5tARrj9t--w~~tCm+8MQ#iYeR*@?S%gmT+7+{21(otpq)GcO8q=(Mi7$uoQ(n z?P?OK#6Je5RWbdF@|W(C^1~t>*PJ!QgP#scda|oZ!4onjwN8y6V?ac6@9OnD-W~o0 zsVF$lRKnjIhy$`#tskQLSdhN1kZhP|L;EV(Rr6_Y9gm)h9|29(UcVy!Ky~H4>s222 z5=J{ikgDTFt`?R3VK|DWEv5H6KR2889Ri)~jmw(*24EbyYr%K|T|NE`W18E(}g>sK(>s}+=L6n{Vlpd1GmPT{h5njr4^;kZJI9?>;+^kfq>@q$Aw@%Lq>;rq81BK_1$SfLqE*>> ze$P`N?eL-dTcY~!D>_$_?=;T-|;e739pS;lVPmSQuFZ0aP+vZ znAP(7d9Zq1rjfAop~Da3mq2)Z{U@YLexD?xb8OQlOS#HtV_S>vktR;ogAvz2#Bt;n zW*LpT<~)$&@EbrWG@ysw_HU03&pRWj0m$8tGOB@Yc}}#kOU=Q`!;se|1RaS|+&!{Z z0_TL{xm{>sY21f}*k5wscH>!@F;J(oar){5&EJIz`sPn1g(+$(+bH6X)br4ejq|~_ z{qf;8rdN*BVZb-Al!H;sRg5D@hJsW$LCP6tq|FWeNAeTGUw1FRc1^lbfcAA%4UIl? zLs?azCk=Dck{Gu|iwD{p?uWA?&*5yWwr;741kIKQaIqH50V7$;5}y#YCR9gxBp zp#W@&fYuLkPd(vg!D8Vgt#Z-fue0qa=D_D1mm7~^*ma$0j$fBYCum+6kcZxd*9XYV z`m&M^Jq10v^mU+>1Je-)L9F`e8MH5%bn}z+k2|0!G3KfB2gcd;Wg9v@0;vZsL4&H@ zfAO%V3DZDDI{$ne5e69E!2pF39+|r6ok>N0r zW$IuFGSH+PZ%&oJs-f-r&n@N7u6e!*c$3fbY1gg`ztF2E>VANOCp)xnIGGFD(+b*C zKF2d8%Qf6j1runK$%mT1CdC=L#5oI3zxg_VA)z-RCgsqKyB>7yr*#Spl*jRmaYDOa zobBZmA`#e3;ebrYlH5}Yc6)tDC`4=|?#n?Y3_w66$_=BuWY=|6;EKy{y+FUxyFijEIjZ+5w*Nzy54W`l z8lvzZAfmrZbb{C$t{U3nZC5BYwhwb=T>482q2j^AYi}Zi$u3XDRUAGAZD-Z8{nmNX zeG`M8%cJo;Q2>u3zE)Y~TwnvOZYKNcoKw_W(Fk<*krhN&CoZ5<3jNA3jCl`z2jHYf zL~k%K&Oi){j`}r}D+{5wQ6>~fs{9<6tuL9O6`djqAp4hXLx}!90s*)ZwiA%3;kn^% z80fhrPC|S9JlEHQYUTcZD|F!^RZR9d=yl9njUXs>y;+?jNih~iKKsi%+$Edh!=At6 z4q;S8sB)h+G0ukQ=78-d*WZWN6yCJ0_jRe8n3jgsHs6W|c2Vxj_?im1oe6?|7r3pu1CQvkHGTMUFR}DXs3ATqd*(7U<)D1HfYHSL$xf3Q6Zh#f3%c|!4A^3`9+a$PmTb-fuwDRHV*tjWdMR!0-y%P!y^G0&-3hW1<1AB zcWmrswgc2IE|ESqpLV(X6=Y}}tyoQM?-a%jY_9LE?WD(^%KoZ&(5Ya3w(}A&`Ssy) zsD(p^?9WFHv`rg&CZ6>$RH7t*q9sbwF7Up?Cyz&JQN~{Wn!urNBn-%FU-pDBJs$`D z(|;9M5PAPTJCtshzV*h7x8$W1~5+iZeCJM zk$m~s^OVoUu6)zumD3OHFyaTH7`~Trn9H&fUea5hd>tsOEmP^m$sM(EG=~1($I`JT z0y79!kcc302_W*G)JjR5ZpF_Kl+&Qr05mmn&zXiS9BT4-VvTa;==_EAoRStw)s56A z;I&7X?w}H{X}AN>-2Xk-b4loTa>m~q8*!TZzR*VZ62{|y%$nZc!Uxkr2YN0^j%OXK zkl0@IU6W_g58{;^ zA4oBf#;b{k)f5yRzWwcrjlU&+=$(EkHVTX11HV^z!|SJZ%Sd~A>jl7yt;AV$HVm#F z)=l@{IpsU0<%f^WxS;YoDWw5rMBCm+KbeY*;Q-g_UW$`MZ^xr!^)O%>gynssD77zZ zuy*bwgA=uitxt*{*_VN$r+)X^SVkc3(a|#D!2h7xTVELtG1JTde(B=h_^geK>@Ty6_6Ho8d{ASaP6}XP9mdwWrhmudgYq5t7lo z^x4V!GeyFZpw#Fq5o-A0&oGqwOy$!&Vf6%Br^wBXVE|%0`mz;jjvAN$My~gEbShLF z)o{TL^J()?o6s8F3n?hIEb81zYt@yRT%YN;11{kzV;q>m1(n}mL1&=@b4#akp5Vz? zxyU@?`)V=dA57jGigmYkhdMkRZK*#89s0>sLj0KV&u0IsRaR9vx-M=htMuEz!XJ2l zAl<%cyNWnTiJuGgpyb$hb!;VfwxC&PrmS_-1#`>b`k{YWW#T~`I>hdpXJW^!57kq{ zOm}{SaY~674W3`Mygw6SYvt9tOEaP;*1z4_jf0T+>RF&41>VE-30pl5o}Uv<^a*)P zeVSJ))fzkU{}Yt znnIte?HQr(qm=qN@8Hvq!JdTXpMyQ=yP}1NM@8QC?eFW(lq|%JgP=F_V9-h-OvqFP z1xtDm<6<-%KtDHBJ#7iU&>Z9N!-$b&t$0k#^IJl=%YJ;2aJoJ&53G)D?XjyKTB4cs zh9m}kPs=EPcow9!nG1uyx&SZk1q9)@-TaR=Ye?^&0A_cd%y?Y~aaoHVd;<>|cv~j9 zr;#cPCZfM5xrXK7s*1N!l~e3Ud<;rq{o>oSi?Ryh>GR4z!3o9ZmFb8F-@-S%L8kv= zqMZk|Z9KOtgF>@2Dp}uT?TmBGd|#_Hx&5vV6 zid$*+!|(>0*d6rm0zl$7x%Riv<(53{Z_jz*&bvS)+B0OiF9ssaF^Dz1MRoIkH))Wy zvz@f%!1FAk?do$=7lRW05h(k@NO$2YE&l;p*Ukq#2k03oz^5-)Y-)G%xEZg-$h;!n z1y~arfS~<-Q3+p`8sPXA4Ox`qbq&wMxlYnFhV2@@+-Pn{C&X=Z*kB5NBV-N=Ur@#a zW<)eE&If2c7buI4O6H!t(afr{0SmAY-b2!24hpWkMT{H2z3>=hJsZ`2(DdvG0#nR^ zv`4$Z&*laps0LSoID|AjkAkkbqu2_qKba9m=7J`#Uk3wK^EME|W~;Paj35sb@k#LK z`B5%RaLqr0B?Bb$w)}zIt-pFQf+yyTtYpV#EFg*>_c}==CWKKN-4xaBdExo@6?lIG zEfF-R@8iX0J9A6}Q>G1r&zrDd`D=YLRUXF$L9%W#Rl7DTaL@5x>I4>&D23+WZ;+3- zw8Sm}pfq_Tu6a`kZ?jgm1?Wz!2JFe!lA<=zME-dSro=|YUP1zk&Utt8W6?Je(cUu` zFLzCkNRV?wj}0pi}Ff#P}n17kB?^s=3F> zTlSFk7FX;d*-i(XV_8tX_@28SV-HW=4|q_Q!L`11_9}m}7eDq_lbFc^X5P-_ypOon zWV*2m>ZesJc~mQ9J;!QpBot>BBtPR-W5cwVAL+f=W$UJ8KSJ^o*EGy}VzE$_P)Z|* zp1MDVymv(bkx$rhr?MS-va|(op=J(Z9KFS>OiM}_Vd%x?uANTIy^Rley-e*A{@AjQ&t$I!_ zlfOtWeUtRr_@(&HYN_gqIi*t)92js;B`eC4MgrxpOXkuxfv?DGOwG~EYB31rP;5@H zylPP>)f%DEs3@TSz5a8`Lsj#5*6Cq0P8?sHvD9rSayN9`noaiP``#GqQ-GVYzvjB{ z5P44W1EHKm3hr4|Dhr{GsD0f^x;Zee4ozssQ%{GQ9Rg{+d%xDPI||bdFE|@@sPlf% zg^VE0k(7q1x z{aoQNNpA@TD6W5SGJOw)<3yd_;;&Q-zOymic{YAqF6zk~-e;U(X78_={5p;hKYKS* zSF>;>$T|Ic3CWgTc>{{E#Pn=;(^57;#W|jlidCg|v_X=XFD+sDg0l>9et2XqUA%nr8CwODOaUFHMQ=fTg07uHJWSNa#1{1?d*x*Hd7WXC|p2Q%@W@a z#xoD?%#K+35f&7#lrLPrp5CpD`<$Zg{#~Z+0wOvqeeb#6Vl%X&FBhY01_CqboF zh`_j8ZC~|p#QuA7i9mtFW^6t`!P9De==U@ACmnRz7F#!Fs4NoiiX#HD%hUUqsoT$* zA8LGs-#T+5e{3dmKXAiuxAt{!OX<{7cb9&;8r@Ovy*(GSy=P|1N_|fZnCr=yu1Rl| zTehyaG3>%veW-n%LutjnDU$^Z!MneI`d#x-$oiZ1FEQ&YZY!_woKppkk&y@gj14xV z=I{|Da%q3u%9cysv>(NkZ_B1b*V8`;G0APCpFBnDD$)~RWwC}Ojc@Ehp}LPP@lr-l zcZ)A1rLulF>3Ofrqhv7J7*_$LBqy`Lb&wF3P2R9e$EfN~@VYlKuAhwFOF3?a4aJzG z3Y^2Hle2_}#lG#_Q%S_-kG*f0=oH(;?KzXKCW6n8y4Yyy#x_Yu7r(vRMDfaUGI*@g z6QuiK=!HKLXFUse**f<3bGJ$D!#0TPmIXr8z%X^QNJGI#`$n==EHeg>Sc zNB|lpdq4y34&G|78QH6rLuct- z)x#YRI_~)Wkk69ynIyzDO$CBidWC86gl%c>!bM7tm|D<2c0H))-;?s({+9UxxkB;s z)!LtSven~5fv+&Ct*JSO97qUKW^&)DAo7Gj4EccdsF-Af)3vb<^)*y~u`TYfm|w9d zO@}u<^L?3~KsgZZzIrg}QdpmL)vD4tH|!bicY#hA#*H+)mW%ODXN-b(oBU*UY`WV= zI+S*(h@7^S)IJ$yiBUCFetU2jnnug}Hdx}Ph$-;T*x zf4!o2gmd|?Ir<9Csg%nB$T`!k5uM626U-8=wr-pE!!(Gye%H_NLWEzex2WZ%Ing7g zRL`_S=+{M3oPakvg=KPd_wNPo4raM5xf=uOj;LcoWprGN;=S6YY+4?H&V89LIDL|s z7ye#|{L9j4m~(;1IWD{cfe?HwtA%~RNlP40ep<_&}PHgAM_b;ba}BF`n10oF@gu zNq^m46(&6m4$(-vt4To+d%DEl!~AjT;^ov&1@*oeVLPu4F{h`^lrXkcae63CB7-ro zgRaM}o4Iy^E-Ii)pNhzN?z)enCKxNo0Sdb!jYGZI9lzbr7EgWS0{&}nr3)}!K~^_m z(Z>fjT8)&2cYoi>c`1zr`i2j`S{S|MY>)yJ(Z3QYH6l*2!}!(8+ohdWPTd6qUc`gR z`b_inz&>knlKn`zqine_klG*?aR18(WStw(NO~XvBCGcWpeo?LNF*>{HI8{xTp3s} zh-i{3G;x6c(hYR8rsKnR_8=6DKQi7M<%$B&sIlxK@mSXdF`y(!R=8CkGvE6)Yt2GA zhYwg5?{v9Mz|nIdmS;Z*B*uwl(A3ViNB0NBob7Z;X2>NKd&TO~$Fd)f!osup`ScUXg%Pzha_2kytU=;c`-pn3- zl_`$wq~dWH5xj(#1BWYsoWBF_AdQv)j|7l%iWX(|?%n{3WLjD1+d?wXc}Luj1$n;+ zMj%PqgCG>Ov?A|y@FScNlEO%N1P9=Aq!2+6&*Gjx3t~7#PFk`NL0T@t*>DZa@P>cF zt>+ow^e7fvU&2Dw|FKYT>$y_e9Rvw{<_`;Xz>xCag(NPXTUq77B7&}uuOWyXI`WPh zetg)@T~Je#*|hJlIUOQrf_R=Ylsl0Y16VsBya9R$d$=p`YFZLHMfl^9Pb5dQ>p5}g z7`_1=oal@~b@0eE^K|TKYLV6YRQf z_9*=JdH3ae4DKQ2%)f^MF<)VM_s{n9*XaJo(EY(;v~1Cr))C)iG(-d$q3^O)>bQ1F z!?ElnfrtqO@Wq{9(49{?sjQ&!2@9Z8ePy0iRvDoeBH29FF3xpJGV z!LVO&o@TP(E*+L`NYady-xe;yKw%hXdtQ1W21#Y?WLDCJUzyL;M3B2rPKgD17Q~}G z_~kgoh3E>;g^}QMAIy~flo;~^18J_Hdox`>LtD-0%?%3uFLwWRO4C@9&HfEF?|D%|>Z zAc)+qY*elCx9VU(=~7UgBx!%>EI2Kz1n;s79$awRdO6P--GI2O$XI;`7P<5Q`i{h@ z#Brqj{SWlD!8jcN5T})$O1Tli;;)aC55oyPe`nAi?X?g<1YheFiO^QXgcxrtjtfjp zJ%5M6P(HSII}L$}Q%Zr6HU&%wi$ts%H)Iry+hhZ$z+Ye8u@`Q@w0Ey+tZhab1X5}U zrYj)cOT^zpM?RN6t6)M(!hPPY0Xi)wZQ56L`ZM1qEb_hwK^eQj1BpB5B6=IxAYpC& z=Nl7(q@r(2SDJw6L89#724S%1R5<#Arp1{Kb+*6y;D*ZX9|tUWw*AH&f>4Uygo}t5 zO?IK;h+mre>1DluP>jJ(^>@EpLRnKDB7y|(7u!GrkqBx5d6E0(LFdYYcY!4^Eb&q| z3ht&PSCDce7j8IJFq`!X2=~Qi9B?*J))j2w(gWx~5r-MX-HMe(W_a53ly#Uvgq8Z@ zhMWb_#h|a^c~6wkwMoV1i>zjgNSI@a7&A9&8>BAVB__%*Cu!gZ>2?$s6@d9Y48jHp z4d*&&URWieFN6Lv6G4z^UpQ%{DR{nVSwyn3=-l*X3@C8eJmC^rI6#QiQ0Tc%gHYjk zknKRx4M74N!Bu61g$U14wbXpB--L`3a!0sKB~aim+;qXq5};C+*(+|}c;F&D5c!VB zmfP$fWQE^aEsx0|_ZNqIWz^y3{O5W_VAmAh9;#c1X%&d8d_jv+MzgL4+bJ%BT?uY= z7i-Vq5Wz=vbU2(AoMOp!x4 zgW%5z4~W%L9ASQ11o&GEpVsD%G@(ME-C zBIO4g#Dsrrn%kQ z5SBNv(0?MxvW94K>HH{yuzcU7i&Q>)=LkY67to|cJJ36^Y{;}CSQ5d_TIR7mVBco2 zy&15IRw_oTiW9j6nG=i@g2%4-9kPiTbLrPF*FOvw4gBo$3`x1ukh-p#T4tgkN}xPy zfU3pf4LvClxor5`3xUrUk0M8G=cWZkfP(xx0P<<`HR>X9IEvdQcs#fWIPF?`a_ud) zykY16Q^~bQHF;$52|*Hhgjh?ZKub_gv8&Z&*#*?yBs|K-mBWz=h$1xa9D9hCahj*(AaHvfWnC;>IJg5FTOf zKlDRVhlrnYkdRfEcWfbF9fReG!-~3=0N8sll@0i#F|r~HR*@!2N9u6c&>1hJ7Pv8} zG+^UcD%BbMQyYma;1KCg$fb(f97_YRTMrxW)OU#>ujiLb3eGw(-uf#{j?X+l$R=EG z`3nW7T2cUQ??_NwI9jr&|8{0OW+MGglju=<-t>Cjj=Xp-sr(!UgUIm4eU|LXGQ#`P zCFCN~$K~>E)>o{mT9{O8!7iMx$$s7@ehCXBJBPSQRdc*OCQd-6qaZB(+Gk;6Thxxs z`6js`_1ior! zFec&1p(Fv3t%fHDT9wbLT6M^Sc54mS-3T|lVTSoeG>bF^9AuK#W9O`-@idbREJsX^ zEX21J=$pns$o{x(y8`Cbr0HB6bsY7umd@r2GU8eWTfkY4v>IP%kLM*f5G1bI48G&W zv2hb990|!O01)>sd>P=X2ozhP6ZkP&&2a@o@vm!z4J)vs82=tkO%VmkE+{^-UmRxT z`*TYhT}@1QE7xnC%?A?{rcIX}$UjdXh;>8B#p^DME-9BAt`>hZv#6k zDn>w7PGBp&6$wXOKKp*v-Cr)E1ecvb^r5K%zIR96Z_YASV!ov;icL^xNuHeia~r8u zUA1ohPwH@#k-EtfAEG#uJX_eGm7lc_FC!4Dz8~`qAFBG)F66g0MLV5;UcWujn>`Vz zITQ?A!euNY%s_yb0iB7g=^1x%Al|k^!KgBJo0#`Z_U+EPzGBUs9?!>a_*AWr{y`~HGH`5L+UxRT zOUmK&1P@0NWJOdXh#U(y;7sTGpyBkCBVE^1aw8Qe2Js&P!C(O91SGOo^rrEg?Y^R& z@aw3eD5jg7tmg{_pYX(|u?r~x)pv&?(QG)!xV z<6_ZC%ijSUP)TtHoXKYBCBTjU)*Pd$0#i)WqC7>&ig;_92)3d1Y$^xD@WcN`9-Aey zPOez#Ni)@2xCs(o4hlW zS4IQ5_FqVJTTMr)DEo)KLM6}Mn8x8J80*p?q2MX-dotcSu`8VEr$%?^qHN;LZ*QQx zlHgtdc_IVFt9%c#>NDMVG3WkNjW1=CyP?pd%3?0(+oaK<(ui1q6;OSDl(N<9Q3ptf zo_!8T*Jqj1@7iZI(Yq{xw!gh6LdYW@399+e0ESgA&tz=6)Ic%iBnyfVzlz#kx;2+i zW~xWmkChbJmXP54u;_sxp&^saZ2H7Lax?k=#`&epZYTCSVZ(3`gRRw>x0nN*OpM-O zHF4-or-f*`d^YJis$ZUe8wssQQ#(J&Q*kpp{hG;>=UW2$j=(pi3e^qW}@2W+}vB?6Bj--@hWA# zRz$+PaDqs^vtA!!h#f1k&iqmf5Up4WsJzi}+w0*|MI;K6Th>IbfPjAHL-iNot z1_nO&vbhy|KYzXMmTh!R<9Z7)nc`S`|ak=!R_z3rL6)8IFlP9+j*5nnzUzR#i&!veEzSiLzUj3V~*V6ytNg<`; z)kz1obT_Nuw5N8lVc9*3uCD7H+Co$H5l)ba@L+jm&Me_Gf10i^9oK3c>@44&ED3|t zUdHqHUmeo-9WJw|zb61RLHrJ@w+J%1>s)u(FSI+yyG>!l0za!ZO_BJsgQVRiwc7Wh617J z2ek=2po6;T$Nc6a>6CVg2Ut9uj%V+@(9jRiEmCAVo!HL)0TvG*Z;>J^?L6(B=QSU# zBA%V@;X{k<@8-!luenIN2Usjb_gGV1q{#Eeo7Yql`YbfwV@-9QO)ipdp`m$p;pWY6 tUh~m(k7I~)8*Pyyi|t}9a;mjWHkSUmy86MAt1?Qr`Nimn$}nlh{{RD&wG{vW literal 0 HcmV?d00001 diff --git a/Secure Storage/image b/Secure Storage/image new file mode 100644 index 0000000..e69de29 diff --git a/Secure Storage/iteminfo.json b/Secure Storage/iteminfo.json new file mode 100644 index 0000000..c19adf2 --- /dev/null +++ b/Secure Storage/iteminfo.json @@ -0,0 +1,57 @@ +{ + "access": "public", + "accessInformation": null, + "appCategories": [ + ], + "avgRating": 0, + "banner": null, + "categories": [ + ], + "commentsEnabled": true, + "created": 1509643429000, + "culture": "en-au", + "description": "\n

This sample demonstrates how to insert, retrieve, and remove data from Keychain

\n


\n

Resource Level:🍌

", + "documentation": null, + "extent": [ + ], + "guid": null, + "id": null, + "industries": [ + ], + "itemControl": "admin", + "languages": [ + ], + "largeThumbnail": null, + "licenseInfo": null, + "listed": false, + "modified": 1509643437000, + "name": null, + "numComments": 2, + "numRatings": 0, + "numViews": 0, + "orgId": "2U3NfasNQ9o9LkLt", + "owner": null, + "ownerFolder": null, + "properties": null, + "protected": false, + "proxyFilter": null, + "screenshots": [ + ], + "size": 35195, + "snippet": "This sample demonstrates how to use Secure Storage plugin ", + "spatialReference": null, + "tags": null, + "thumbnail": "thumbnail/thumbnail.png", + "title": "Secure Storage", + "type": "Native Application", + "typeKeywords": [ + "API_QML", + "App", + "Application", + "AppStudio", + "Configuration", + "Native", + "qml" + ], + "url": null +} diff --git a/Secure Storage/qtquickcontrols2.conf b/Secure Storage/qtquickcontrols2.conf new file mode 100644 index 0000000..1ddd1cd --- /dev/null +++ b/Secure Storage/qtquickcontrols2.conf @@ -0,0 +1,10 @@ +; This file can be edited to change the style of the application +; See Styling Qt Quick Controls 2 in the documentation for details: +; http://doc.qt.io/qt-5/qtquickcontrols2-styles.html + +[Controls] +Style=Material + +[Universal] +Theme=Light +;Accent=Steel diff --git a/Secure Storage/thumbnail.png b/Secure Storage/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4184fc5a2436781dfb291ced4731a60eaa915e GIT binary patch literal 1932 zcmb7FjW-ht8(+FbKH5%+B1IuxOJq_LLtTt_#EY6;O?Nh#d~;_F>y7K9qBXJ1N3r3O zj~4T>p^Mv;k=KxSgm{H9^WHWa*7EMY=e&Qwea?BF-+9h?&hz}vbDodftG=Fk+D6&{ z06-7!btOQJZ`JyX)?T$eR^A3y!@f8#WFi2dbKp?}117>_p8=PTG@f zn_1>VxMoi{o*hy{U67a%Vr%G&siLp7Ov=*M%WeT?N{hk-^BcM7)qYLViO9p4&V6Q= z>Jz&_y^%#&L#hp}DH2ChrITed=NReVKzVqGG#n0H#)#UAWsOrep)P`>e&M;Xp3_OnPi|RjM z3Z%n6Dv0HTYtCo$QuH>cFE_(+j?@@jv#{M8w$H2u)e!6{_=SsJ#%^w&=lu&65ng9? z|M4Pw6f!K8*DX~X%L7v0w0(iH`@ev>T;NC5_B9|$Yi?}NW=Q&@abWVn9m5p7ed?u^xs@>YW{~JxO^!uE#Jr)c)k{)3mh7K9}m(@fy;>$4p44y}~3?u!Xx2XsU_&|HVC7Y2w3M}~Qhrdx!Yo$&5 z)op+9Ll!;&5ga<~ucygXh8cJGn`N@NK!c{dzL8}B+*-LHVFcy-A=wes^42ZenkZ*D z^kkyqB?RgUnGJKp$zKli;6C{5bO~{SFs(T|Js@m$cXownSAc~@<5-}#{Q@=66IP)O z!c%q&WB}wu1e`vEL!oJ`xS`Mbhr}%2UN58hY1zl@GX_<7`+ao^7bJ%3qJ^_MW~J4T%_Y(&TQ%#tBQm^)>RJH)U7#ShI68WwFR9@m{O_&u zi{QNd6fnOo`;XLdqY7qi{Cj8?i3uxsh0{=+2t zx;UMBFMN%@a7w58PE=|4d)BZ180n^Uf9Ha{Yt{wh)eJ?nr#d%R` z=$@i$mh=K)JSZL*wBf(1Pae$*^nlaPN5+p=;8X9KyGf(TE;Ot#lwm-8lEi9Xd&J$b z5h=j@K>asTmIMZwaGaLctV)8;VXiOzIK~)Bqj*oE@h75N>zZcQXBUVw`F80EiuLWS z+nZfn@*}(S0cmGfOdPX=dUN|C)~{X_2X@FA6rW?S4QpofY*?ZR-V7vLcf2*EA&LMi zxE{#%%dgz~c=31>JeFK6Y-^dCzhQO1l17hFXBG3guzX8b^V8!-1v2TK;~%osRLA*_ z?v|--aj%aC-Sram-Uu=tj=$}*^5j}tVNKw9@neP#1=RcR1d6z_qmUj%@J4gyG383p zvc{D=?A5tkCTwp;Pqr9&$o;|@eu7oEUkWJyoGWw5G}3wl9?+jwy8Rv7ivOwvD{Nn( zM7i*1EHB6>Ms%g${)QJM32KDha412+t+bL1fp14aPH#B$_L@KcsB$v-q9Tm#3h3Z) zIAH!4OT<_ie7jTwdqM=|waYyc%rbu-FqL#D=Y7`>+H(h`sV!_W0H4?bzZDBNkw2e6 z7tq_4ZwHUfOy<0wc9P8a>a-NW(6)v8E(uwwDA9_!^*r*<-R#plbv3l%Q>7)yLZNbT z3)fU$g|auMrldU0mk+(HQ{VR&<14(wPPMq@WeXHR`2P=cQ2(zytpCLZOUYw%b+$vF Rgav>4@E?4yG`fe~`!6D>usi?& literal 0 HcmV?d00001