diff --git a/mea.pri b/mea.pri
index c8469b13..4ecb2afc 100644
--- a/mea.pri
+++ b/mea.pri
@@ -3,3 +3,7 @@ CONFIG += c++11
top_srcdir=$$PWD
top_builddir=$$shadowed($$PWD)
+
+MEA_VERSION=$$cat(version.txt)
+DEFINES+=MEA_VERSION=\\\"$${MEA_VERSION}\\\"
+android:QMAKE_POST_LINK += cp $$top_srcdir/version.txt $$top_builddir/
diff --git a/mea.pro b/mea.pro
index 5d7badf5..9c5735eb 100644
--- a/mea.pro
+++ b/mea.pro
@@ -1,3 +1,5 @@
+include(mea.pri)
+
TEMPLATE=subdirs
SUBDIRS = libnymea-common libmea-core mea
@@ -16,24 +18,28 @@ withtests: {
wininstaller.depends = mea
equals(BRANDING, "") {
APP_NAME = mea
- PACKAGE_DIR = packaging\windows
+ PACKAGE_DIR = $$shell_path($$PWD)\packaging\windows
PACKAGE_NAME = mea-win-installer
} else {
APP_NAME = $${BRANDING}
PACKAGE_NAME = $${BRANDING}-win-installer
- PACKAGE_DIR = packaging\windows_$${APP_NAME}
+ PACKAGE_DIR = $$shell_path($$PWD)\packaging\windows_$${APP_NAME}
}
+OLDSTRING=".*"
+NEWSTRING="$${MEA_VERSION}"
+wininstaller.commands += @powershell -Command \"(gc $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\meta\package.xml) -replace \'$${OLDSTRING}\',\'$${NEWSTRING}\' | sc $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\meta\package.xml\" &&
wininstaller.commands += rmdir /S /Q $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\data & mkdir $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\data &&
wininstaller.commands += copy $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\meta\logo.ico $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\data\logo.ico &&
-wininstaller.commands += copy mea\release\mea.exe $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\data\\$${APP_NAME}.exe &&
+CONFIG(debug,debug|release):wininstaller.commands += copy mea\debug\mea.exe $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\data\\$${APP_NAME}.exe &&
+CONFIG(release,debug|release):wininstaller.commands += copy mea\release\mea.exe $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\data\\$${APP_NAME}.exe &&
!equals(SSL_LIBS, "") {
message("Deploying SSL libs from $${SSL_LIBS} to package.")
wininstaller.commands += copy $${SSL_LIBS}\libeay32.dll $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\data &&
wininstaller.commands += copy $${SSL_LIBS}\ssleay32.dll $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\data &&
}
-wininstaller.commands += windeployqt --compiler-runtime --qmldir mea\ui $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\data\ &&
+wininstaller.commands += windeployqt --compiler-runtime --qmldir \"$${top_srcdir}\"\mea\ui $${PACKAGE_DIR}\packages\io.guh.$${APP_NAME}\data\ &&
wininstaller.commands += binarycreator -c $${PACKAGE_DIR}\config\config.xml -p $${PACKAGE_DIR}\packages\ $${PACKAGE_NAME}
-
+message("cmd: $${wininstaller.commands}")
QMAKE_EXTRA_TARGETS += wininstaller
TRANSLATIONS += $$files(mea/translations/*.ts, true)
diff --git a/mea/main.cpp b/mea/main.cpp
index a9fe502e..b257ecf1 100644
--- a/mea/main.cpp
+++ b/mea/main.cpp
@@ -70,6 +70,8 @@ int main(int argc, char *argv[])
#else
engine->rootContext()->setContextProperty("appBranding", "");
#endif
+ engine->rootContext()->setContextProperty("appVersion", MEA_VERSION);
+ engine->rootContext()->setContextProperty("qtVersion", QT_VERSION_STR);
StyleController styleController;
engine->rootContext()->setContextProperty("styleController", &styleController);
diff --git a/mea/mea.pro b/mea/mea.pro
index eb4ee70c..f859f739 100644
--- a/mea/mea.pro
+++ b/mea/mea.pro
@@ -30,18 +30,20 @@ contains(ANDROID_TARGET_ARCH,armeabi-v7a) {
/opt/android-openssl/prebuilt/armeabi-v7a/libssl.so
}
-DISTFILES += \
- android/AndroidManifest.xml \
- android/gradle/wrapper/gradle-wrapper.jar \
- android/gradlew \
- android/res/values/libs.xml \
- android/build.gradle \
- android/gradle/wrapper/gradle-wrapper.properties \
- android/gradlew.bat \
- LICENSE
-
+android {
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/../packaging/android
+DISTFILES += \
+ $$ANDROID_PACKAGE_SOURCE_DIR/AndroidManifest.xml \
+ $$ANDROID_PACKAGE_SOURCE_DIR/gradle/wrapper/gradle-wrapper.jar \
+ $$ANDROID_PACKAGE_SOURCE_DIR/gradlew \
+ $$ANDROID_PACKAGE_SOURCE_DIR/res/values/libs.xml \
+ $$ANDROID_PACKAGE_SOURCE_DIR/build.gradle \
+ $$ANDROID_PACKAGE_SOURCE_DIR/gradle/wrapper/gradle-wrapper.properties \
+ $$ANDROID_PACKAGE_SOURCE_DIR/gradlew.bat \
+ $$ANDROID_PACKAGE_SOURCE_DIR/LICENSE
+}
+
BR=$$BRANDING
!equals(BR, "") {
DEFINES += BRANDING=\\\"$${BR}\\\"
diff --git a/mea/resources.qrc b/mea/resources.qrc
index 8a0bf8e9..e6527835 100644
--- a/mea/resources.qrc
+++ b/mea/resources.qrc
@@ -166,5 +166,6 @@
ui/delegates/ThingDelegate.qml
ui/images/network-secure.svg
ui/images/lock-broken.svg
+ ui/AboutPage.qml
diff --git a/mea/ui/AboutPage.qml b/mea/ui/AboutPage.qml
new file mode 100644
index 00000000..58233f26
--- /dev/null
+++ b/mea/ui/AboutPage.qml
@@ -0,0 +1,45 @@
+import QtQuick 2.5
+import QtQuick.Controls 2.1
+import QtQuick.Controls.Material 2.1
+import QtQuick.Layouts 1.1
+import Mea 1.0
+import "components"
+
+Page {
+ id: root
+ header: GuhHeader {
+ text: qsTr("About %1").arg(app.systemName)
+ backButtonVisible: true
+ onBackPressed: pageStack.pop()
+ }
+
+ GridLayout {
+ anchors { left: parent.left; right: parent.right; top: parent.top; margins: app.margins }
+ rowSpacing: app.margins
+ columns: 2
+
+
+ Image {
+ Layout.preferredHeight: app.iconSize * 5
+ Layout.columnSpan: 2
+ Layout.fillWidth: true
+ fillMode: Image.PreserveAspectFit
+ horizontalAlignment: Image.AlignHCenter
+ source: "../guh-logo.svg"
+ }
+
+ Label {
+ text: qsTr("App version:")
+ }
+ Label {
+ text: appVersion
+ }
+ Label {
+ text: qsTr("Qt version:")
+ }
+ Label {
+ text: qtVersion
+ }
+
+ }
+}
diff --git a/mea/ui/AppSettingsPage.qml b/mea/ui/AppSettingsPage.qml
index a17ee5b9..94b2a32a 100644
--- a/mea/ui/AppSettingsPage.qml
+++ b/mea/ui/AppSettingsPage.qml
@@ -109,6 +109,26 @@ Page {
}
}
+ ThinDivider {}
+ ItemDelegate {
+ Layout.fillWidth: true
+
+ contentItem: RowLayout {
+ Label {
+ Layout.fillWidth: true
+ text: qsTr("About %1").arg(app.systemName)
+ }
+ Image {
+ source: "images/next.svg"
+ Layout.preferredHeight: parent.height
+ Layout.preferredWidth: height
+ }
+ }
+
+ onClicked: {
+ pageStack.push(Qt.resolvedUrl("AboutPage.qml"))
+ }
+ }
}
diff --git a/packaging/android/gradlew b/packaging/android/gradlew
index 91a7e269..8a0fc299 100755
--- a/packaging/android/gradlew
+++ b/packaging/android/gradlew
@@ -1,164 +1,7 @@
-#!/usr/bin/env bash
+#!/bin/sh
-##############################################################################
-##
-## Gradle start up script for UN*X
-##
-##############################################################################
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS=""
-
-APP_NAME="Gradle"
-APP_BASE_NAME=`basename "$0"`
-
-# Use the maximum available, or set MAX_FD != -1 to use that value.
-MAX_FD="maximum"
-
-warn ( ) {
- echo "$*"
-}
-
-die ( ) {
- echo
- echo "$*"
- echo
- exit 1
-}
-
-# OS specific support (must be 'true' or 'false').
-cygwin=false
-msys=false
-darwin=false
-case "`uname`" in
- CYGWIN* )
- cygwin=true
- ;;
- Darwin* )
- darwin=true
- ;;
- MINGW* )
- msys=true
- ;;
-esac
-
-# For Cygwin, ensure paths are in UNIX format before anything is touched.
-if $cygwin ; then
- [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
-fi
-
-# Attempt to set APP_HOME
-# Resolve links: $0 may be a link
-PRG="$0"
-# Need this for relative symlinks.
-while [ -h "$PRG" ] ; do
- ls=`ls -ld "$PRG"`
- link=`expr "$ls" : '.*-> \(.*\)$'`
- if expr "$link" : '/.*' > /dev/null; then
- PRG="$link"
- else
- PRG=`dirname "$PRG"`"/$link"
- fi
-done
-SAVED="`pwd`"
-cd "`dirname \"$PRG\"`/" >&-
-APP_HOME="`pwd -P`"
-cd "$SAVED" >&-
-
-CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
-
-# Determine the Java command to use to start the JVM.
-if [ -n "$JAVA_HOME" ] ; then
- if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
- # IBM's JDK on AIX uses strange locations for the executables
- JAVACMD="$JAVA_HOME/jre/sh/java"
- else
- JAVACMD="$JAVA_HOME/bin/java"
- fi
- if [ ! -x "$JAVACMD" ] ; then
- die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
- fi
-else
- JAVACMD="java"
- which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
-
-Please set the JAVA_HOME variable in your environment to match the
-location of your Java installation."
-fi
-
-# Increase the maximum file descriptors if we can.
-if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
- MAX_FD_LIMIT=`ulimit -H -n`
- if [ $? -eq 0 ] ; then
- if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
- MAX_FD="$MAX_FD_LIMIT"
- fi
- ulimit -n $MAX_FD
- if [ $? -ne 0 ] ; then
- warn "Could not set maximum file descriptor limit: $MAX_FD"
- fi
- else
- warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
- fi
-fi
-
-# For Darwin, add options to specify how the application appears in the dock
-if $darwin; then
- GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
-fi
-
-# For Cygwin, switch paths to Windows format before running java
-if $cygwin ; then
- APP_HOME=`cygpath --path --mixed "$APP_HOME"`
- CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
-
- # We build the pattern for arguments to be converted via cygpath
- ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
- SEP=""
- for dir in $ROOTDIRSRAW ; do
- ROOTDIRS="$ROOTDIRS$SEP$dir"
- SEP="|"
- done
- OURCYGPATTERN="(^($ROOTDIRS))"
- # Add a user-defined pattern to the cygpath arguments
- if [ "$GRADLE_CYGPATTERN" != "" ] ; then
- OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
- fi
- # Now convert the arguments - kludge to limit ourselves to /bin/sh
- i=0
- for arg in "$@" ; do
- CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
- CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
-
- if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
- eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
- else
- eval `echo args$i`="\"$arg\""
- fi
- i=$((i+1))
- done
- case $i in
- (0) set -- ;;
- (1) set -- "$args0" ;;
- (2) set -- "$args0" "$args1" ;;
- (3) set -- "$args0" "$args1" "$args2" ;;
- (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
- (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
- (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
- (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
- (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
- (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
- esac
-fi
-
-# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
-function splitJvmOpts() {
- JVM_OPTS=("$@")
-}
-eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
-JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
-
-exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
+BASEDIR=$(dirname "$0")
+MEA_VERSION=`cat $BASEDIR/../version.txt`
+echo "Setting version to $MEA_VERSION"
+sed -i "s/android:versionName=\"[0-9\.a-zA-Z$_]*\"/android:versionName=\"$MEA_VERSION\"/" AndroidManifest.xml
+./gradlew.upstream $@
diff --git a/packaging/android/gradlew.upstream b/packaging/android/gradlew.upstream
new file mode 100755
index 00000000..91a7e269
--- /dev/null
+++ b/packaging/android/gradlew.upstream
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# For Cygwin, ensure paths are in UNIX format before anything is touched.
+if $cygwin ; then
+ [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
+fi
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >&-
+APP_HOME="`pwd -P`"
+cd "$SAVED" >&-
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/version.txt b/version.txt
new file mode 100644
index 00000000..3eefcb9d
--- /dev/null
+++ b/version.txt
@@ -0,0 +1 @@
+1.0.0