diff options
-rw-r--r-- | Main.qml | 2 | ||||
-rw-r--r-- | README.md | 13 | ||||
-rw-r--r-- | am-config.yaml | 11 | ||||
-rw-r--r-- | apps/com.pelagicore.nestedwayland/icon.png | bin | 0 -> 1634 bytes | |||
-rw-r--r-- | apps/com.pelagicore.nestedwayland/info.yaml | 13 | ||||
-rw-r--r-- | apps/com.pelagicore.nestedwayland/main.qml | 95 | ||||
-rw-r--r-- | apps/com.theqtcompany.i18ndemo/README | 14 | ||||
-rwxr-xr-x | apps/com.theqtcompany.i18ndemo/translations/create_qm.sh | 95 | ||||
-rwxr-xr-x | apps/com.theqtcompany.i18ndemo/translations/create_ts.sh | 98 | ||||
-rw-r--r-- | doc/src/neptuneui-index.qdoc | 11 | ||||
-rw-r--r-- | imports/shared/utils/Style.qml | 4 | ||||
-rw-r--r-- | imports/system/models/ApplicationManagerInterface.qml | 21 | ||||
-rw-r--r-- | neptuneui.pro | 9 | ||||
-rw-r--r-- | plugins/comtqci18ndemo/comtqci18ndemo.pro | 54 | ||||
-rw-r--r-- | plugins/datasource/datasource.pro | 6 | ||||
-rw-r--r-- | plugins/screenmanager/screenmanager.pro | 6 | ||||
-rw-r--r-- | sysui/Cloud/Store/AppStore.qml | 2 |
17 files changed, 213 insertions, 241 deletions
@@ -41,7 +41,7 @@ import utils 1.0 Rectangle { id: root - property bool showClusterIfPossible: ApplicationManager.additionalConfiguration.showCluster + property bool showClusterIfPossible: ApplicationManager.systemProperties.showCluster property var cluster color: "black" @@ -1,6 +1,6 @@ # Prerequisite -Qt >= 5.5 +Qt >= 5.6 QtIvi Unix system Application Manager @@ -24,17 +24,16 @@ qmlscene/qmllive - have been moved to the application-manager repository. # Build -* Build and install screenmanager qml plugin - - $ cd plugins/screenmanager +* Build and install neptune-ui $ qmake && make && make install -* Build and install datasource qml plugin +This will build all neptune-ui plugins and installs the complete neptune-ui to /opt/neptune +To define the install location of neptune you can use the INSTALL_PREFIX config variable: - $ cd plugins/datasource + $ qmake INSTALL_PREFIX=$$PWD/install && make && make install - $ qmake && make && make install +This will install all qml files and plugins into the neptune subfolder of $$PWD/install * Run scripts within the plugins/scripts folder to scan the media on the system diff --git a/am-config.yaml b/am-config.yaml index 1c96486..21af701 100644 --- a/am-config.yaml +++ b/am-config.yaml @@ -18,12 +18,15 @@ ui: fullscreen: yes mainQml: "${CONFIG_PWD}/Main.qml" importPaths: [ "${CONFIG_PWD}/imports/shared", "${CONFIG_PWD}/imports/system" ] - additionalConfiguration: - appStoreServerUrl: 'http://chaos.pelagicore.net:8080' - styleConfig: "auto" - showCluster: yes windowIcon: "${CONFIG_PWD}/imports/shared/assets/icons/active/apps@96.png" +systemProperties: + public: + styleConfig: "Config1920x1080.qml" + showCluster: yes + private: + appStoreServerUrl: 'http://chaos.pelagicore.net:8080' + # development setup: no security flags: diff --git a/apps/com.pelagicore.nestedwayland/icon.png b/apps/com.pelagicore.nestedwayland/icon.png Binary files differnew file mode 100644 index 0000000..839444b --- /dev/null +++ b/apps/com.pelagicore.nestedwayland/icon.png diff --git a/apps/com.pelagicore.nestedwayland/info.yaml b/apps/com.pelagicore.nestedwayland/info.yaml new file mode 100644 index 0000000..6a4f7ba --- /dev/null +++ b/apps/com.pelagicore.nestedwayland/info.yaml @@ -0,0 +1,13 @@ +formatVersion: 1 +formatType: am-application +--- +id: 'com.pelagicore.nestedwayland' +icon: 'icon.png' +code: 'main.qml' +runtime: 'qml' +name: + en: 'Nested Compositor' + +categories: [ 'app' ] + +built-in: yes diff --git a/apps/com.pelagicore.nestedwayland/main.qml b/apps/com.pelagicore.nestedwayland/main.qml new file mode 100644 index 0000000..08cbc7f --- /dev/null +++ b/apps/com.pelagicore.nestedwayland/main.qml @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2017 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Neptune IVI UI. +** +** $QT_BEGIN_LICENSE:GPL-QTAS$ +** Commercial License Usage +** Licensees holding valid commercial Qt Automotive Suite licenses may use +** this file in accordance with the commercial license agreement provided +** with the Software or, alternatively, in accordance with the terms +** contained in a written agreement between you and The Qt Company. For +** licensing terms and conditions see https://www.qt.io/terms-conditions. +** For further information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: GPL-3.0 +** +****************************************************************************/ + +import QtQuick 2.5 +import QtWayland.Compositor 1.0 + +import controls 1.0 +import utils 1.0 + + +AppUIScreen { + id: mainWindow + + UIScreen { + id: ui + + Label { + id: compositorLabel + anchors.fill: parent + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + text: "You can open windows on this nested Wayland compositor by setting\nWAYLAND_DISPLAY=" + comp.socketName + } + + onBackScreen: { + mainWindow.back() + } + + WaylandCompositor { + id: comp + socketName: "wlsock-nested" + + WaylandOutput { + id: output + window: mainWindow + compositor: comp + } + + + Component { + id: waylandWindow + WaylandQuickItem { } + } + + Component { + id: surfaceComponent + WaylandSurface { } + } + + extensions: [ + WlShell { + id: wlShell + }, + QtWindowManager { + id: qtWindowManager + } + ] + + onSurfaceRequested: { + var surface = surfaceComponent.createObject(comp, { } ); + surface.initialize(comp, client, id, version); + + var obj = waylandWindow.createObject(ui, { "surface": surface } ); + } + } + } +} diff --git a/apps/com.theqtcompany.i18ndemo/README b/apps/com.theqtcompany.i18ndemo/README index 0296c53..cb00897 100644 --- a/apps/com.theqtcompany.i18ndemo/README +++ b/apps/com.theqtcompany.i18ndemo/README @@ -1,12 +1,4 @@ -* First time steps -Run create_qm.sh script inside translations sub-folder to generate translated files. - - * Add support for additional language -(1) Change directory to "translations" sub-folder. - -(2) Create file named "i18napp_<languageCode>.ts" - -(3) Run create_ts.sh to populate the .ts file created in step (2) above. - -(4) Edit "Languages.qml". Locate VirtualKeyboardSettings.activeLocales and add the languageCode to the existing list +(1) Edit "comtqci18ndemo.pro". Locate 'supportedLocales' and add the languageCode to the existing list. +(2) Edit "Languages.qml". Locate VirtualKeyboardSettings.activeLocales and add the languageCode to the existing list. +(3) Run "make ts" to generate/update translation catalogs. diff --git a/apps/com.theqtcompany.i18ndemo/translations/create_qm.sh b/apps/com.theqtcompany.i18ndemo/translations/create_qm.sh deleted file mode 100755 index 7983757..0000000 --- a/apps/com.theqtcompany.i18ndemo/translations/create_qm.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/sh -#**************************************************************************** -#** -#** Copyright (C) 2016 The Qt Company. -#** Contact: https://www.qt.io/licensing/ -#** -#** This file is part of the Neptune IVI UI. -#** -#** $QT_BEGIN_LICENSE:GPL-QTAS$ -#** Commercial License Usage -#** Licensees holding valid commercial Qt Automotive Suite licenses may use -#** this file in accordance with the commercial license agreement provided -#** with the Software or, alternatively, in accordance with the terms -#** contained in a written agreement between you and The Qt Company. For -#** licensing terms and conditions see https://www.qt.io/terms-conditions. -#** For further information use the contact form at https://www.qt.io/contact-us. -#** -#** GNU General Public License Usage -#** Alternatively, this file may be used under the terms of the GNU -#** General Public License version 3 or (at your option) any later version -#** approved by the KDE Free Qt Foundation. The licenses are as published by -#** the Free Software Foundation and appearing in the file LICENSE.GPL3 -#** included in the packaging of this file. Please review the following -#** information to ensure the GNU General Public License requirements will -#** be met: https://www.gnu.org/licenses/gpl-3.0.html. -#** -#** $QT_END_LICENSE$ -#** -#** SPDX-License-Identifier: GPL-3.0 -#** -#**************************************************************************** - -QTBINPATH=~/Qt/5.7/gcc_64/bin -INPUTFILESPATH=".." - -usageHelp() -{ - echo "$0" - echo "\t-h --help : Show this display usage" - echo "\t--qtdir=<path_to_qt_bin folder> : Sets path to lrelease executable" - echo "\t default value is $QTBINPATH" - echo "" -} - -while [ "$1" != "" ]; do - PARAM=`echo $1 | awk -F= '{print $1}'` - VALUE=`echo $1 | awk -F= '{print $2}'` -# echo "Param is " $PARAM -# echo "Value is " $VALUE - - case $PARAM in - -h | --help) - usageHelp - exit - ;; - --qtdir) - QTBINPATH=$VALUE - ;; - *) - echo "ERROR: unknown parameter \"$PARAM\"" - usage - exit 1 - ;; - esac - shift -done - -# TODO: If you intend to support new language, create a file as "i18napp_<langCode>.ts" -langFileList=`ls *.ts` - -# Name of the file shall match the pattern as, i18napp_<langCode> -# see the existing list above, de - german, ar - arabic, fr - french, etc. - -# TODO: Change this to match the path on your machine, if you have to -translationCommand=$QTBINPATH/lrelease - -if [ ! -f $translationCommand ]; -then - echo "Set correct path pointing to location where lrelease binary can be found" - echo "Usually it is inside <QtInstallDir>/bin folder" - echo "Uage help:" - echo - usageHelp - exit -fi - -echo -echo "List of languages translated to: " $langFileList -echo - -echo -echo "Generating translation files" -for tsFileName in $langFileList; do - $translationCommand -idbased $tsFileName -qm `basename -s .ts $tsFileName`.qm -done diff --git a/apps/com.theqtcompany.i18ndemo/translations/create_ts.sh b/apps/com.theqtcompany.i18ndemo/translations/create_ts.sh deleted file mode 100755 index e7ebb5e..0000000 --- a/apps/com.theqtcompany.i18ndemo/translations/create_ts.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/bin/sh -#/**************************************************************************** -#** -#** Copyright (C) 2016 The Qt Company. -#** Contact: https://www.qt.io/licensing/ -#** -#** This file is part of the Neptune IVI UI. -#** -#** $QT_BEGIN_LICENSE:GPL-QTAS$ -#** Commercial License Usage -#** Licensees holding valid commercial Qt Automotive Suite licenses may use -#** this file in accordance with the commercial license agreement provided -#** with the Software or, alternatively, in accordance with the terms -#** contained in a written agreement between you and The Qt Company. For -#** licensing terms and conditions see https://www.qt.io/terms-conditions. -#** For further information use the contact form at https://www.qt.io/contact-us. -#** -#** GNU General Public License Usage -#** Alternatively, this file may be used under the terms of the GNU -#** General Public License version 3 or (at your option) any later version -#** approved by the KDE Free Qt Foundation. The licenses are as published by -#** the Free Software Foundation and appearing in the file LICENSE.GPL3 -#** included in the packaging of this file. Please review the following -#** information to ensure the GNU General Public License requirements will -#** be met: https://www.gnu.org/licenses/gpl-3.0.html. -#** -#** $QT_END_LICENSE$ -#** -#** SPDX-License-Identifier: GPL-3.0 -#** -#****************************************************************************/ - -QTBINPATH=~/Qt/5.7/gcc_64/bin -INPUTFILESPATH=".." - -usageHelp() -{ - echo "$0" - echo "\t-h --help : Show this display usage" - echo "\t--qtdir=<path_to_qt_bin folder> : Sets path to lupdate executable" - echo "\t default value is $QTBINPATH" - echo "" -} - -while [ "$1" != "" ]; do - PARAM=`echo $1 | awk -F= '{print $1}'` - VALUE=`echo $1 | awk -F= '{print $2}'` -# echo "Param is " $PARAM -# echo "Value is " $VALUE - - case $PARAM in - -h | --help) - usageHelp - exit - ;; - --qtdir) - QTBINPATH=$VALUE - ;; - *) - echo "ERROR: unknown parameter \"$PARAM\"" - usage - exit 1 - ;; - esac - shift -done - -appPrefix="i18napp_" - -# TODO: If you intend to support new language, add to this list -langFileList="en_GB fi_FI de_DE ar_AR fr_FR ko_KR ja_JP ru_RU zh_CN zh_TW" -# Name of the file shall match the pattern as, i18napp_<langCode> -# see the existing list above, de - german, ar - arabic, fr - french, etc. - -# TODO: Change this to match the path on your machine, if you have to -translationCommand=$QTBINPATH/lupdate - -if [ ! -f $translationCommand ]; -then - echo "Set correct path pointing to location where lupdate binary can be found" - echo "Usually it is inside <QtInstallDir>/bin folder" - echo "Uage help:" - echo - usageHelp - exit -fi - -inputFiles=$INPUTFILESPATH/*.qml - -echo -echo "List of languages supported are: " $langFileList -echo - -echo -echo "Generating input files for translation" -for tsFileName in $langFileList; do - $translationCommand $inputFiles -ts $appPrefix$tsFileName.ts -done diff --git a/doc/src/neptuneui-index.qdoc b/doc/src/neptuneui-index.qdoc index 71b890f..e532504 100644 --- a/doc/src/neptuneui-index.qdoc +++ b/doc/src/neptuneui-index.qdoc @@ -164,12 +164,15 @@ fullscreen: yes mainQml: "Main.qml" importPaths: [ "imports/shared", "imports/system" ] - additionalConfiguration: - appStoreServerUrl: 'http://chaos.pelagicore.net:8080' - styleConfig: "auto" - showCluster: yes windowIcon: "imports/shared/assets/icons/active/apps@96.png" + systemProperties: + public: + styleConfig: "Config1920x1080.qml" + showCluster: yes + private: + appStoreServerUrl: 'http://chaos.pelagicore.net:8080' + # development setup: no security flags: diff --git a/imports/shared/utils/Style.qml b/imports/shared/utils/Style.qml index cf7f20f..8b2aef3 100644 --- a/imports/shared/utils/Style.qml +++ b/imports/shared/utils/Style.qml @@ -86,8 +86,8 @@ QtObject { property url fonts: Qt.resolvedUrl('../assets/fonts/') property bool isClient: typeof ApplicationInterface !== 'undefined' - property string styleConfig: isClient ? ApplicationInterface.additionalConfiguration.styleConfig : ApplicationManager.additionalConfiguration.styleConfig - property bool showClusterIfPossible: isClient ? ApplicationInterface.additionalConfiguration.showCluster :ApplicationManager.additionalConfiguration.showCluster + property string styleConfig: isClient ? ApplicationInterface.systemProperties.styleConfig : ApplicationManager.systemProperties.styleConfig + property bool showClusterIfPossible: isClient ? ApplicationInterface.systemProperties.showCluster :ApplicationManager.systemProperties.showCluster property Loader styleLoader: Loader { property bool showClusterIfPossible: root.showClusterIfPossible diff --git a/imports/system/models/ApplicationManagerInterface.qml b/imports/system/models/ApplicationManagerInterface.qml index 2dd32da..147e813 100644 --- a/imports/system/models/ApplicationManagerInterface.qml +++ b/imports/system/models/ApplicationManagerInterface.qml @@ -73,17 +73,17 @@ QtObject { } function windowReadyHandler(index, item) { - print(":::LaunchController::: WindowManager:windowReadyHandler", index, item) - var isInWidgetState = (WindowManager.windowProperty(item, "windowType") === "widgetMap") - print(":::LaunchController:::isWidget", isInWidgetState) + var isMapWidget = (WindowManager.windowProperty(item, "windowType") === "widgetMap") var isClusterWidget = (WindowManager.windowProperty(item, "windowType") === "clusterWidget") - print(":::LaunchController:::isClusterWidget", isClusterWidget) + + print("AMI.windowReadyHandler: index:" + index + ", item:" + item + ", map:" + + (isMapWidget ? "yes" : "no") + ", cluster:" + (isClusterWidget ? "yes" : "no")) var acceptWindow = true; var appID = WindowManager.get(index).applicationId; var isMinimized = false; - if (isInWidgetState) { + if (isMapWidget) { windowTypes[item] = "widget" if (ApplicationManager.get(appID).categories[0] === "navigation") { root.mapWidget = item @@ -127,12 +127,11 @@ QtObject { root.applicationSurfaceReady(item, isMinimized) } else { root.unhandledSurfaceReceived(item) - console.error("window was not accepted: ", item) + console.error("AMI.windowReadyHandler: window was not accepted: ", item) } } function windowPropertyChanged(window, name, value) { - //print(":::LaunchController::: WindowManager:windowPropertyChanged", window, name, value) if (name === "visibility" && value === false ) { root.releaseApplicationSurface(window) } @@ -174,18 +173,16 @@ QtObject { } function applicationActivated(appId, appAliasId) { - print(":::LaunchController::: WindowManager:raiseApplicaitonWindow" + appId + " " + WindowManager.count) + print("AMI.applicationActivated: appId:" + appId + ", appAliasId:" + appAliasId) root.activeAppId = appId for (var i = 0; i < WindowManager.count; i++) { if (!WindowManager.get(i).isClosing && WindowManager.get(i).applicationId === appId) { var item = WindowManager.get(i).windowItem - print(":::LaunchController::: App found. Running the app " + appId + " Item: " + item) - var isWidget = (WindowManager.windowProperty(item, "windowType") === "widget") var isMapWidget = (WindowManager.windowProperty(item, "windowType") === "widgetMap") var isClusterWidget = (WindowManager.windowProperty(item, "windowType") === "clusterWidget") - print(":::LaunchController:::isClusterWidget", isClusterWidget) - print(":::LaunchController:::isWidget", isWidget, isMapWidget) + print("AMI.applicationActivated: appId:" + appId + " found item:" + item + ", map:" + + (isMapWidget ? "yes" : "no") + ", cluster:" + (isClusterWidget ? "yes" : "no")) if (!isMapWidget && !isClusterWidget) { if (windowTypes[item] === "minimized") diff --git a/neptuneui.pro b/neptuneui.pro index ac69c48..397ddc8 100644 --- a/neptuneui.pro +++ b/neptuneui.pro @@ -1,10 +1,17 @@ include(doc/doc.pri) + TEMPLATE = subdirs SUBDIRS = plugins/datasource \ plugins/screenmanager \ plugins/comtqci18ndemo -qml.files = apps imports sysui i18n am-config.yaml Main*.qml +isEmpty(INSTALL_PREFIX) { + INSTALL_PREFIX=/opt +} +qml.files = apps imports sysui i18n am-config.yaml Main*.qml +qml.path = $$INSTALL_PREFIX/neptune INSTALLS += qml + +OTHER_FILES += $$files($$PWD/*.qml, true) diff --git a/plugins/comtqci18ndemo/comtqci18ndemo.pro b/plugins/comtqci18ndemo/comtqci18ndemo.pro index bc692c0..3f4034f 100644 --- a/plugins/comtqci18ndemo/comtqci18ndemo.pro +++ b/plugins/comtqci18ndemo/comtqci18ndemo.pro @@ -23,8 +23,58 @@ OTHER_FILES = qmldir PRE_TARGETDEPS += $$copy_qmldir.target } +isEmpty(INSTALL_PREFIX) { + INSTALL_PREFIX=/opt +} + qmldir.files = qmldir -installPath = $$[QT_INSTALL_QML]/$$replace(uri, \\., /) +installPath = $$INSTALL_PREFIX/neptune/imports/shared/$$replace(uri, \\., /) qmldir.path = $$installPath + +# var, prepend, append +defineReplace(prependAll) { + for(a,$$1):result += $$2$${a}$$3 + return($$result) +} + +qmlAppPath = $$PWD/../../apps/com.theqtcompany.i18ndemo +# See qml files to scan while running lupdate/lrelease +lupdate_only { + SOURCES += $$files($$shell_quote($$shell_path($${qmlAppPath}/))*.qml, true) +} + target.path = $$installPath -INSTALLS += target qmldir + +supportedLocales = \ + ar_AR \ + de_DE \ + en_GB \ + fi_FI \ + fr_FR \ + ja_JP \ + ko_KR \ + ru_RU \ + zh_CN \ + zh_TW + +TRANSLATIONS = $$prependAll(supportedLocales, $$qmlAppPath/translations/i18napp_, .ts) + +qtPrepareTool(LUPDATE, lupdate) +qtPrepareTool(LRELEASE, lrelease) + +ts.commands = $$LUPDATE $$shell_quote($$_PRO_FILE_) +QMAKE_EXTRA_TARGETS += ts + +qm.input = TRANSLATIONS +qm.output = $$shadowed($$qmlAppPath/translations)/${QMAKE_FILE_BASE}.qm +qm.variable_out = PRE_TARGETDEPS +qm.commands = $${LRELEASE} -idbased ${QMAKE_FILE_IN} -qm ${QMAKE_FILE_OUT} +qm.name = LRELEASE ${QMAKE_FILE_IN} +qm.CONFIG += no_link +QMAKE_EXTRA_COMPILERS += qm + +qmfiles.files = $$prependAll(supportedLocales, $$shadowed($$qmlAppPath/translations)/i18napp_, .qm) +qmfiles.path = $$INSTALL_PREFIX/neptune/apps/com.theqtcompany.i18ndemo/translations +qmfiles.CONFIG += no_check_exist + +INSTALLS += target qmldir qmfiles diff --git a/plugins/datasource/datasource.pro b/plugins/datasource/datasource.pro index 0877426..2db0949 100644 --- a/plugins/datasource/datasource.pro +++ b/plugins/datasource/datasource.pro @@ -23,7 +23,9 @@ HEADERS += \ OTHER_FILES = qmldir - +isEmpty(INSTALL_PREFIX) { + INSTALL_PREFIX=/opt +} !equals(_PRO_FILE_PWD_, $$OUT_PWD) { copy_qmldir.target = $$OUT_PWD/qmldir @@ -34,7 +36,7 @@ OTHER_FILES = qmldir } qmldir.files = qmldir -installPath = $$[QT_INSTALL_QML]/$$replace(uri, \\., /) +installPath = $$INSTALL_PREFIX/neptune/imports/shared/$$replace(uri, \\., /) qmldir.path = $$installPath target.path = $$installPath INSTALLS += target qmldir diff --git a/plugins/screenmanager/screenmanager.pro b/plugins/screenmanager/screenmanager.pro index 2681be6..00073fc 100644 --- a/plugins/screenmanager/screenmanager.pro +++ b/plugins/screenmanager/screenmanager.pro @@ -23,8 +23,12 @@ OTHER_FILES = qmldir PRE_TARGETDEPS += $$copy_qmldir.target } +isEmpty(INSTALL_PREFIX) { + INSTALL_PREFIX=/opt +} + qmldir.files = qmldir -installPath = $$[QT_INSTALL_QML]/$$replace(uri, \\., /) +installPath = $$INSTALL_PREFIX/neptune/imports/shared/$$replace(uri, \\., /) qmldir.path = $$installPath target.path = $$installPath INSTALLS += target qmldir diff --git a/sysui/Cloud/Store/AppStore.qml b/sysui/Cloud/Store/AppStore.qml index 72f22a3..234e917 100644 --- a/sysui/Cloud/Store/AppStore.qml +++ b/sysui/Cloud/Store/AppStore.qml @@ -37,7 +37,7 @@ Item { property bool serverOnline: false property string serverReason - property string server: ApplicationManager.additionalConfiguration.appStoreServerUrl + property string server: ApplicationManager.systemProperties.appStoreServerUrl signal loginSuccessful() |