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