diff --git a/nymea-app/images.qrc b/nymea-app/images.qrc index dabaebe0..c16b3c8c 100644 --- a/nymea-app/images.qrc +++ b/nymea-app/images.qrc @@ -80,7 +80,7 @@ ui/images/find.svg ui/images/fingerprint.svg ui/images/go-down.svg - ui/images/guh-logo.svg + ui/images/nymea-logo.svg ui/images/info.svg ui/images/light-off.svg ui/images/light-on.svg @@ -256,6 +256,6 @@ ui/images/sensors/water.svg ui/images/zigbee/deCONZ.svg ui/images/zigbee/NXP.svg - ui/images/nymea-splash-horizontal.svg + ui/images/nymea-splash.svg diff --git a/nymea-app/main.cpp b/nymea-app/main.cpp index 377210aa..03cbe386 100644 --- a/nymea-app/main.cpp +++ b/nymea-app/main.cpp @@ -81,7 +81,6 @@ int main(int argc, char *argv[]) QCommandLineOption styleOption = QCommandLineOption({"s", "style"}, "Override the style. Style in settings will be disabled.", "style"); parser.addOption(styleOption); QCommandLineOption defaultStyleOption = QCommandLineOption({"d", "default-style"}, "The default style to be used if there is no style explicitly selected by the user yet.", "style"); - defaultStyleOption.setDefaultValue("light"); parser.addOption(defaultStyleOption); #endif QCommandLineOption defaultViewsOption = QCommandLineOption({"v", "default-views"}, "The main views enabled by default if there is no configuration done by the user and the style doesn't dictate them, comma separated.", "mainviews"); @@ -119,9 +118,17 @@ int main(int argc, char *argv[]) StyleController styleController(BRANDING); styleController.lockToStyle(BRANDING); #else - StyleController styleController(parser.value(defaultStyleOption)); + QString defaultStyle; + if (parser.isSet(defaultStyleOption)) { + defaultStyle = parser.value(defaultStyleOption); + } else if (PlatformHelper::instance()->darkModeEnabled()) { + defaultStyle = "dark"; + } else { + defaultStyle = "light"; + } + StyleController styleController(defaultStyle); if (parser.isSet(styleOption)) { - qCInfo(dcApplication()) << "Setting style to" << parser.value(styleOption); + qCInfo(dcApplication()) << "Setting style to" << defaultStyle; styleController.lockToStyle(parser.value(styleOption)); } #endif diff --git a/nymea-app/nymea-app.pro b/nymea-app/nymea-app.pro index 50757505..328e48c8 100644 --- a/nymea-app/nymea-app.pro +++ b/nymea-app/nymea-app.pro @@ -55,10 +55,6 @@ win32 { QT += webview } -linux:!android: { - PKGCONFIG += ply-boot-client -} - android { include(../3rdParty/android/android_openssl/openssl.pri) @@ -145,7 +141,6 @@ ios: { QMAKE_BUNDLE = nymeaApp # Configure generated xcode project to have our bundle id xcode_product_bundle_identifier_setting.value = $${QMAKE_TARGET_BUNDLE_PREFIX}.$${QMAKE_BUNDLE} - QMAKE_ASSET_CATALOGS += ../packaging/ios/AppIcons.xcassets plist.input = ../packaging/ios/Info.plist.in plist.output = $$OUT_PWD/Info.plist QMAKE_SUBSTITUTES += plist @@ -154,9 +149,10 @@ ios: { ../packaging/ios/pushnotifications.entitlements \ ../packaging/ios/GoogleService-Info.plist - ios_icon_files.files += $$files(../packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon*.png) - ios_launch_images.files += $$files(../packaging/ios/LaunchImage*.png) ../packaging/ios/LaunchScreen1.xib - QMAKE_BUNDLE_DATA += ios_icon_files ios_launch_images + QMAKE_ASSET_CATALOGS += ../packaging/ios/Assets.xcassets + + ios_launch_images.files += ../packaging/ios/NymeaLaunchScreen.storyboard + QMAKE_BUNDLE_DATA += ios_launch_images IOS_DEVELOPMENT_TEAM.name = DEVELOPMENT_TEAM IOS_DEVELOPMENT_TEAM.value = Z45PLKLTHM diff --git a/nymea-app/platformhelper.cpp b/nymea-app/platformhelper.cpp index fcf84a4b..4e01fb86 100644 --- a/nymea-app/platformhelper.cpp +++ b/nymea-app/platformhelper.cpp @@ -173,6 +173,11 @@ void PlatformHelper::setBottomPanelColor(const QColor &color) } } +bool PlatformHelper::darkModeEnabled() const +{ + return false; +} + bool PlatformHelper::splashVisible() const { return m_splashVisible; diff --git a/nymea-app/platformhelper.h b/nymea-app/platformhelper.h index f3ad8edb..8e8a30ec 100644 --- a/nymea-app/platformhelper.h +++ b/nymea-app/platformhelper.h @@ -53,6 +53,7 @@ class PlatformHelper : public QObject Q_PROPERTY(int screenBrightness READ screenBrightness WRITE setScreenBrightness NOTIFY screenBrightnessChanged) Q_PROPERTY(QColor topPanelColor READ topPanelColor WRITE setTopPanelColor NOTIFY topPanelColorChanged) Q_PROPERTY(QColor bottomPanelColor READ bottomPanelColor WRITE setBottomPanelColor NOTIFY bottomPanelColorChanged) + Q_PROPERTY(bool darkModeEnabled READ darkModeEnabled NOTIFY darkModeEnabledChanged) public: enum HapticsFeedback { @@ -86,6 +87,8 @@ public: virtual QColor bottomPanelColor() const; virtual void setBottomPanelColor(const QColor &color); + virtual bool darkModeEnabled() const; + virtual bool splashVisible() const; virtual void setSplashVisible(bool splashVisible); Q_INVOKABLE virtual void hideSplashScreen(); @@ -105,6 +108,7 @@ signals: void screenBrightnessChanged(); void topPanelColorChanged(); void bottomPanelColorChanged(); + void darkModeEnabledChanged(); void splashVisibleChanged(); protected: diff --git a/nymea-app/platformintegration/android/java/io/guh/nymeaapp/NymeaAppActivity.java b/nymea-app/platformintegration/android/java/io/guh/nymeaapp/NymeaAppActivity.java index 92e24bf2..fc24626d 100644 --- a/nymea-app/platformintegration/android/java/io/guh/nymeaapp/NymeaAppActivity.java +++ b/nymea-app/platformintegration/android/java/io/guh/nymeaapp/NymeaAppActivity.java @@ -12,18 +12,28 @@ import android.provider.Settings.Secure; import android.os.Vibrator; import android.net.Uri; import android.support.v4.content.FileProvider; +import android.content.res.Configuration; public class NymeaAppActivity extends org.qtproject.qt5.android.bindings.QtActivity { private static final String TAG = "nymea-app: NymeaAppActivity"; private static Context context = null; + private static native void darkModeEnabledChangedJNI(); + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.context = getApplicationContext(); } + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + NymeaAppActivity.darkModeEnabledChangedJNI(); + } + + public static Context getAppContext() { return NymeaAppActivity.context; } @@ -66,4 +76,8 @@ public class NymeaAppActivity extends org.qtproject.qt5.android.bindings.QtActiv Log.d(TAG, "Intent not resolved"); } } + + public boolean nightModeEnabled() { + return (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES; + } } diff --git a/nymea-app/platformintegration/android/platformhelperandroid.cpp b/nymea-app/platformintegration/android/platformhelperandroid.cpp index e058da4c..318fa18e 100644 --- a/nymea-app/platformintegration/android/platformhelperandroid.cpp +++ b/nymea-app/platformintegration/android/platformhelperandroid.cpp @@ -42,8 +42,28 @@ // View #define SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 0x00002000 +static PlatformHelperAndroid *m_instance = nullptr; -static PlatformHelperAndroid *m_instance; +static JNINativeMethod methods[] = { + { "darkModeEnabledChangedJNI", "()V", (void *)PlatformHelperAndroid::darkModeEnabledChangedJNI }, +}; + +JNIEXPORT jint JNI_OnLoad(JavaVM* vm, void* /*reserved*/) +{ + JNIEnv* env; + if (vm->GetEnv(reinterpret_cast(&env), JNI_VERSION_1_6) != JNI_OK) { + return JNI_ERR; + } + + jclass javaClass = env->FindClass("io/guh/nymeaapp/NymeaAppActivity"); + if (!javaClass) + return JNI_ERR; + + if (env->RegisterNatives(javaClass, methods, sizeof(methods) / sizeof(methods[0])) < 0) { + return JNI_ERR; + } + return JNI_VERSION_1_6; +} static QAndroidJniObject getAndroidWindow() { @@ -54,6 +74,7 @@ static QAndroidJniObject getAndroidWindow() PlatformHelperAndroid::PlatformHelperAndroid(QObject *parent) : PlatformHelper(parent) { m_instance = this; + } void PlatformHelperAndroid::requestPermissions() @@ -178,6 +199,11 @@ void PlatformHelperAndroid::setBottomPanelColor(const QColor &color) return; } +bool PlatformHelperAndroid::darkModeEnabled() const +{ + return QtAndroid::androidActivity().callMethod("darkModeEnabled"); +} + void PlatformHelperAndroid::shareFile(const QString &fileName) { QtAndroid::androidActivity().callMethod("shareFile", "(Ljava/lang/String;)V", @@ -193,6 +219,13 @@ void PlatformHelperAndroid::permissionRequestFinished(const QtAndroid::Permissio emit m_instance->permissionsRequestFinished(); } +void PlatformHelperAndroid::darkModeEnabledChangedJNI() +{ + if (m_instance) { + emit m_instance->darkModeEnabledChanged(); + } +} + void PlatformHelperAndroid::setTopPanelTheme(PlatformHelperAndroid::Theme theme) { if (QtAndroid::androidSdkVersion() < 23) diff --git a/nymea-app/platformintegration/android/platformhelperandroid.h b/nymea-app/platformintegration/android/platformhelperandroid.h index 62980518..bfbe5c7e 100644 --- a/nymea-app/platformintegration/android/platformhelperandroid.h +++ b/nymea-app/platformintegration/android/platformhelperandroid.h @@ -62,8 +62,12 @@ public: void setTopPanelTheme(Theme theme); void setBottomPanelColor(const QColor &color) override; + bool darkModeEnabled() const override; + void shareFile(const QString &fileName) override; + static void darkModeEnabledChangedJNI(); + private: static void permissionRequestFinished(const QtAndroid::PermissionResultMap &); }; diff --git a/nymea-app/platformintegration/generic/screenhelper.cpp b/nymea-app/platformintegration/generic/screenhelper.cpp index 96b234a9..833a3b52 100644 --- a/nymea-app/platformintegration/generic/screenhelper.cpp +++ b/nymea-app/platformintegration/generic/screenhelper.cpp @@ -87,8 +87,16 @@ ScreenHelper::ScreenHelper(QObject *parent) : QObject(parent) foreach (QWindow *w, qApp->topLevelWindows()) { w->installEventFilter(this); + m_watchedWindows.append(w); } + connect(qApp, &QGuiApplication::focusWindowChanged, this, [=](QWindow *w){ + if (!m_watchedWindows.contains(w)) { + w->installEventFilter(this); + m_watchedWindows.append(w); + } + }); + QSettings settings; m_currentBrightness = settings.value("screenBrightness", 80).toInt(); @@ -122,6 +130,7 @@ int ScreenHelper::screenTimeout() const void ScreenHelper::setScreenTimeout(int timeout) { + qCInfo(dcPlatformIntegration()) << "Set screen timeout to" << timeout << "ms"; m_screenDimTimer.setInterval(timeout); QSettings settings; settings.setValue("screenOffTimeout", timeout); diff --git a/nymea-app/platformintegration/generic/screenhelper.h b/nymea-app/platformintegration/generic/screenhelper.h index 956b45ca..035a5782 100644 --- a/nymea-app/platformintegration/generic/screenhelper.h +++ b/nymea-app/platformintegration/generic/screenhelper.h @@ -35,6 +35,8 @@ #include #include +class QWindow; + class ScreenHelper : public QObject { Q_OBJECT @@ -63,6 +65,8 @@ private: QFile m_powerFile; QFile m_brightnessFile; + QList m_watchedWindows; + bool m_cursorHidden = false; int m_maxBrightness = -1; diff --git a/nymea-app/platformintegration/ios/platformhelperios.h b/nymea-app/platformintegration/ios/platformhelperios.h index ec431e47..f28e2e81 100644 --- a/nymea-app/platformintegration/ios/platformhelperios.h +++ b/nymea-app/platformintegration/ios/platformhelperios.h @@ -57,6 +57,8 @@ public: void setTopPanelColor(const QColor &color) override; void setBottomPanelColor(const QColor &color) override; + bool darkModeEnabled() const override; + void shareFile(const QString &fileName) override; private: diff --git a/nymea-app/styles/light/logo.svg b/nymea-app/styles/light/logo.svg index 9d1907c3..03fb23c5 100644 --- a/nymea-app/styles/light/logo.svg +++ b/nymea-app/styles/light/logo.svg @@ -15,7 +15,6 @@ version="1.1" inkscape:version="0.92.3 (2405546, 2018-03-11)" sodipodi:docname="logo.svg" - inkscape:export-filename="/home/micha/Develop/mea/mea/guh-logo-256x256.png" inkscape:export-xdpi="96" inkscape:export-ydpi="96"> + height="595.28003" + inkscape:export-filename="/home/micha/Develop/nymea-app/packaging/linux-common/nymea-splash.png" + inkscape:export-xdpi="218.94" + inkscape:export-ydpi="218.94"> @@ -41,14 +44,15 @@ inkscape:window-height="873" id="namedview106" showgrid="true" - inkscape:zoom="0.44473763" - inkscape:cx="248.2707" - inkscape:cy="236.96862" + inkscape:zoom="0.48384218" + inkscape:cx="372.45009" + inkscape:cy="442.5357" inkscape:window-x="60" inkscape:window-y="27" inkscape:window-maximized="1" inkscape:current-layer="Layer_1" - units="px"> + units="px" + inkscape:document-rotation="0"> @@ -476,18 +480,224 @@ style="stop-color:#57BAAE" id="stop158" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Artboard 1 copy 5 Kopie 2 @@ -799,23 +1009,33 @@ + class="cls-4" + d="m 458.45974,254.10869 -0.15,0.1 z" + id="path1063" + style="fill:url(#linear-gradient-3-5)" /> + d="m 342.16974,376.39868 c 1,-0.25 2.33,-0.52 4,-0.8 a 34.89,34.89 0 0 1 5.74,-0.42 12.38,12.38 0 0 1 4.84,0.82 7.7,7.7 0 0 1 3.08,2.3 9.12,9.12 0 0 1 1.62,3.55 20.81,20.81 0 0 1 0.47,4.56 v 13.73 h -4.37 v -12.74 a 21.09,21.09 0 0 0 -0.31,-3.85 6.47,6.47 0 0 0 -1,-2.59 4,4 0 0 0 -1.88,-1.43 8.16,8.16 0 0 0 -2.91,-0.45 c -0.47,0 -1,0 -1.46,0.05 -0.46,0.05 -1,0.07 -1.43,0.12 -0.43,0.05 -0.87,0.10001 -1.23,0.16001 l -0.77,0.14 v 20.63999 h -4.37 z" + id="path1079" + style="fill:#fffff8;fill-opacity:1" /> + d="m 373.04974,404.68868 a 7.7,7.7 0 0 0 1.34,0.45 6.55,6.55 0 0 0 1.61,0.26 6.35,6.35 0 0 0 4,-1.15 11.64,11.64 0 0 0 2.77,-4.06 128.42,128.42 0 0 1 -5.66,-11.63999 103.32,103.32 0 0 1 -4.25,-12.81001 h 4.7 c 0.34,1.42001 0.76,2.94 1.24,4.56001 0.48,1.62 1,3.31 1.63,5 0.63,1.68999 1.23,3.44999 1.92,5.17 0.69,1.72 1.41,3.39 2.17,5 q 1.79,-4.94 3.1,-9.78 1.31,-4.84 2.49,-10 h 4.51 q -1.69,6.91 -3.76,13.28 -2.07,6.37 -4.46,11.92 a 24.85,24.85 0 0 1 -2,3.64 10.55,10.55 0 0 1 -2.23,2.51 8,8 0 0 1 -2.75,1.45999 11.85,11.85 0 0 1 -3.45,0.47001 8,8 0 0 1 -1.08,-0.07 c -0.38,-0.05 -0.75,-0.11 -1.11,-0.19 a 9.18,9.18 0 0 1 -1,-0.26 5.09,5.09 0 0 1 -0.64,-0.23 z" + id="path1081" + style="fill:#fffff8;fill-opacity:1" /> + d="m 404.86974,376.39868 c 1,-0.25 2.33,-0.52 4,-0.8 a 34.43,34.43 0 0 1 5.71,-0.42 10.83,10.83 0 0 1 3.95,0.63 7,7 0 0 1 2.68,1.86 c 0.22,-0.16 0.56,-0.38 1,-0.66 a 11.94,11.94 0 0 1 1.74,-0.82 18.64,18.64 0 0 1 2.31,-0.71 11.75,11.75 0 0 1 2.72,-0.3 11.06,11.06 0 0 1 4.61,0.82 6.54,6.54 0 0 1 2.79,2.33 9,9 0 0 1 1.37,3.57 27.44,27.44 0 0 1 0.35,4.51 v 13.73 h -4.37 v -12.74 a 28.09,28.09 0 0 0 -0.21,-3.71 7.19,7.19 0 0 0 -0.8,-2.58999 3.66,3.66 0 0 0 -1.6,-1.52 5.94,5.94 0 0 0 -2.6,-0.46 8.47,8.47 0 0 0 -3.54,0.89 12.23,12.23 0 0 0 -2,1.09 11.82,11.82 0 0 1 0.45,2.31 23,23 0 0 1 0.19,3.05 v 13.73 h -4.32 v -12.79001 a 24.63,24.63 0 0 0 -0.24,-3.71 7.38,7.38 0 0 0 -0.82,-2.58999 3.61,3.61 0 0 0 -1.6,-1.52 5.78,5.78 0 0 0 -2.56,-0.5 c -0.44,0 -0.91,0 -1.41,0.05 -0.5,0.05 -1,0.07 -1.43,0.12 -0.43,0.05 -0.87,0.1 -1.25,0.16 l -0.75,0.14 v 20.64 h -4.37 z" + id="path1083" + style="fill:#fffff8;fill-opacity:1" /> + d="m 490.31974,375.07868 a 12.47,12.47 0 0 1 4.44,0.69 7.17,7.17 0 0 1 2.92,1.92 7.34,7.34 0 0 1 1.57,3 14.51,14.51 0 0 1 0.47,3.79001 v 15.18 c -0.38,0.09 -1,0.24 -1.64,0.35 -0.64,0.11 -1.37,0.21 -2.21,0.31 -0.84,0.1 -1.76,0.18 -2.75,0.25 -0.99,0.07 -2,0.12 -2.94,0.12 a 16.23,16.23 0 0 1 -3.81,-0.42 8.4,8.4 0 0 1 -3,-1.34 6.12,6.12 0 0 1 -2,-2.42 8.47,8.47 0 0 1 -0.7,-3.62 6.94,6.94 0 0 1 0.82,-3.48 6.61,6.61 0 0 1 2.23,-2.35001 10.44,10.44 0 0 1 3.29,-1.31 17.46,17.46 0 0 1 4,-0.43 c 0.44,0 0.89,0 1.36,0.07 0.47,0.07 0.92,0.11 1.34,0.19 l 1.11,0.21 0.65,0.14 v -1.22 a 9.67,9.67 0 0 0 -0.23,-2.14 5,5 0 0 0 -0.85,-1.88 4.27,4.27 0 0 0 -1.67,-1.31 6.48,6.48 0 0 0 -2.74,-0.5 19.9,19.9 0 0 0 -3.73,0.36 11.47,11.47 0 0 0 -2.42,0.82 l -0.71,-3.62 a 12.45,12.45 0 0 1 3,-1 24,24 0 0 1 4.2,-0.36 z m 0.38,21.91 c 1,0 1.95,0 2.75,-0.07 a 12.76,12.76 0 0 0 2,-0.26 v -7.26001 a 5.81,5.81 0 0 0 -1.52,-0.4 17.06,17.06 0 0 0 -2.56,-0.16 17.48,17.48 0 0 0 -2.1,0.14 6.32,6.32 0 0 0 -2,0.59 4.13,4.13 0 0 0 -1.52,1.22 3.2,3.2 0 0 0 -0.62,2 3.52,3.52 0 0 0 1.51,3.27 7.82,7.82 0 0 0 4.06,0.93 z" + id="path1085" + style="fill:#fffff8;fill-opacity:1" /> + diff --git a/nymea-app/ui/images/nymea-splash.svg b/nymea-app/ui/images/nymea-splash.svg new file mode 100644 index 00000000..471beede --- /dev/null +++ b/nymea-app/ui/images/nymea-splash.svg @@ -0,0 +1,1040 @@ + + + + + + image/svg+xml + + Artboard 1 copy 5 Kopie 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Artboard 1 copy 5 Kopie 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/android/appicon.svg b/packaging/android/appicon.svg index fb743ef7..fcdd3b76 100644 --- a/packaging/android/appicon.svg +++ b/packaging/android/appicon.svg @@ -15,7 +15,6 @@ version="1.1" inkscape:version="0.92.3 (2405546, 2018-03-11)" sodipodi:docname="appicon.svg" - inkscape:export-filename="/home/micha/Develop/mea/mea/guh-logo-256x256.png" inkscape:export-xdpi="96" inkscape:export-ydpi="96"> + + + + + + + + diff --git a/packaging/android/res/drawable/splash.xml b/packaging/android/res/drawable/splash.xml index e155ae71..129bf592 100644 --- a/packaging/android/res/drawable/splash.xml +++ b/packaging/android/res/drawable/splash.xml @@ -5,6 +5,6 @@ - diff --git a/packaging/android/res/mipmap-anydpi/nymea_splash.xml b/packaging/android/res/mipmap-anydpi/nymea_splash.xml new file mode 100644 index 00000000..1f84a9b4 --- /dev/null +++ b/packaging/android/res/mipmap-anydpi/nymea_splash.xml @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/android/res/mipmap-anydpi/nymea_splash_dark.xml b/packaging/android/res/mipmap-anydpi/nymea_splash_dark.xml new file mode 100644 index 00000000..24827502 --- /dev/null +++ b/packaging/android/res/mipmap-anydpi/nymea_splash_dark.xml @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/android/res/mipmap-anydpi/nymea_splash_horizontal.xml b/packaging/android/res/mipmap-anydpi/nymea_splash_horizontal.xml deleted file mode 100644 index 2f251e9a..00000000 --- a/packaging/android/res/mipmap-anydpi/nymea_splash_horizontal.xml +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packaging/android/res/values-night/colors.xml b/packaging/android/res/values-night/colors.xml new file mode 100644 index 00000000..e5a8857a --- /dev/null +++ b/packaging/android/res/values-night/colors.xml @@ -0,0 +1,4 @@ + + + #ffffff + diff --git a/packaging/android/res/values-night/splashscreentheme.xml b/packaging/android/res/values-night/splashscreentheme.xml new file mode 100644 index 00000000..915db62c --- /dev/null +++ b/packaging/android/res/values-night/splashscreentheme.xml @@ -0,0 +1,6 @@ + + + + diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon1024x1024.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon1024x1024.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon1024x1024.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon1024x1024.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon167x167~ipad.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon167x167~ipad.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon167x167~ipad.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon167x167~ipad.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon20x20.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon20x20.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon20x20.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon20x20.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon20x20@2x-1.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@2x-1.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon20x20@2x-1.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@2x-1.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon20x20@2x.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@2x.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon20x20@2x.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@2x.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon20x20@3x.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@3x.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon20x20@3x.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon20x20@3x.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon29x29.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon29x29.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon29x29.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon29x29.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon29x29@2x-1.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x-1.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon29x29@2x-1.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x-1.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@2x.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon29x29@3x.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon40x40.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon40x40.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon40x40.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon40x40.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon40x40@2x-1.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x-1.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon40x40@2x-1.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x-1.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@2x.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon40x40@3x.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@2x.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon60x60@3x.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon76x76.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon76x76.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon76x76.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon76x76.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon76x76@2x.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon76x76@2x.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon76x76@2x.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon76x76@2x.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon83.5x83.5@2x.png b/packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon83.5x83.5@2x.png similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/AppIcon83.5x83.5@2x.png rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/AppIcon83.5x83.5@2x.png diff --git a/packaging/ios/AppIcons.xcassets/AppIcon.appiconset/Contents.json b/packaging/ios/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from packaging/ios/AppIcons.xcassets/AppIcon.appiconset/Contents.json rename to packaging/ios/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/packaging/ios/Assets.xcassets/Contents.json b/packaging/ios/Assets.xcassets/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/packaging/ios/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/packaging/ios/Assets.xcassets/LaunchImage.imageset/Contents.json b/packaging/ios/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000..6a20736e --- /dev/null +++ b/packaging/ios/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,56 @@ +{ + "images" : [ + { + "filename" : "LaunchScreenL@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "LaunchScreenD@1x.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "LaunchScreenL@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "LaunchScreenD@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "LaunchScreenL@3x.png", + "idiom" : "universal", + "scale" : "3x" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "filename" : "LaunchScreenD@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenD@1x.png b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenD@1x.png new file mode 100644 index 00000000..52413457 Binary files /dev/null and b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenD@1x.png differ diff --git a/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenD@2x.png b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenD@2x.png new file mode 100644 index 00000000..3909a034 Binary files /dev/null and b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenD@2x.png differ diff --git a/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenD@3x.png b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenD@3x.png new file mode 100644 index 00000000..2881fb03 Binary files /dev/null and b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenD@3x.png differ diff --git a/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenL@1x.png b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenL@1x.png new file mode 100644 index 00000000..2c498457 Binary files /dev/null and b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenL@1x.png differ diff --git a/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenL@2x.png b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenL@2x.png new file mode 100644 index 00000000..77d234d4 Binary files /dev/null and b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenL@2x.png differ diff --git a/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenL@3x.png b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenL@3x.png new file mode 100644 index 00000000..b5420c41 Binary files /dev/null and b/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenL@3x.png differ diff --git a/packaging/ios/Info.plist.in b/packaging/ios/Info.plist.in index 43508eeb..0001caa9 100644 --- a/packaging/ios/Info.plist.in +++ b/packaging/ios/Info.plist.in @@ -25,7 +25,7 @@ NOTE This file was generated by Qt/QMake. UILaunchStoryboardName - LaunchScreen1 + NymeaLaunchScreen UISupportedInterfaceOrientations UIInterfaceOrientationPortrait diff --git a/packaging/ios/LaunchImage-iOS7@2x.png b/packaging/ios/LaunchImage-iOS7@2x.png deleted file mode 100644 index 0f37e19d..00000000 Binary files a/packaging/ios/LaunchImage-iOS7@2x.png and /dev/null differ diff --git a/packaging/ios/LaunchScreen1.xib b/packaging/ios/LaunchScreen1.xib deleted file mode 100644 index fde31be0..00000000 --- a/packaging/ios/LaunchScreen1.xib +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packaging/ios/NymeaLaunchScreen.storyboard b/packaging/ios/NymeaLaunchScreen.storyboard new file mode 100644 index 00000000..225c3438 --- /dev/null +++ b/packaging/ios/NymeaLaunchScreen.storyboard @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/ios/platformhelperios.mm b/packaging/ios/platformhelperios.mm index 22d6fb6a..d64de231 100644 --- a/packaging/ios/platformhelperios.mm +++ b/packaging/ios/platformhelperios.mm @@ -128,6 +128,14 @@ void PlatformHelperIOS::setBottomPanelColorInternal(const QColor &color) app.windows.firstObject.backgroundColor = [UIColor colorWithRed:color.redF() green:color.greenF() blue:color.blueF() alpha:color.alphaF()]; } +bool PlatformHelperIOS::darkModeEnabled() const +{ + if (@available(iOS 12.0, *)) { + return UIScreen.mainScreen.traitCollection.userInterfaceStyle == UIUserInterfaceStyleDark; + } + return false; +} + void PlatformHelperIOS::shareFile(const QString &fileName) { UIActivityViewController *activityController = [[UIActivityViewController alloc] initWithActivityItems:@[[NSURL fileURLWithPath:fileName.toNSString()]] applicationActivities:nil]; diff --git a/packaging/ios/splash-dark.svg b/packaging/ios/splash-dark.svg new file mode 100644 index 00000000..3aa0a028 --- /dev/null +++ b/packaging/ios/splash-dark.svg @@ -0,0 +1,1034 @@ + + + + + + image/svg+xml + + Artboard 1 copy 5 Kopie 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Artboard 1 copy 5 Kopie 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packaging/osx/AppIcon.svg b/packaging/ios/splash-light.svg similarity index 52% rename from packaging/osx/AppIcon.svg rename to packaging/ios/splash-light.svg index 301ab05e..b02c3ef1 100644 --- a/packaging/osx/AppIcon.svg +++ b/packaging/ios/splash-light.svg @@ -1,25 +1,262 @@ - - + sodipodi:docname="splash-light.svg" + inkscape:version="1.0.2 (e86c8708, 2021-01-15)" + width="320" + height="480" + inkscape:export-filename="/Users/micha/Develop/nymea-app/packaging/ios/Assets.xcassets/LaunchImage.imageset/LaunchScreenL@3x.png" + inkscape:export-xdpi="337.5" + inkscape:export-ydpi="337.5"> + + + + image/svg+xml + + Artboard 1 copy 5 Kopie 2 + + + + + + + id="defs69"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + id="stop46-3" /> + id="stop48-6" /> + id="stop50-7" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - image/svg+xml - - - - - + Artboard 1 copy 5 Kopie 2 + id="g1326" + transform="translate(-172.98244,-97.427641)"> @@ -409,7 +814,7 @@ style="fill:url(#SVGID_4_)" inkscape:connector-curvature="0" d="m 457.6,234.5 c -0.1,0 -0.1,0.1 -0.1,0.1 0,0 0.1,0 0.1,-0.1 z" - id="path91" /> + id="path91-5" /> @@ -599,5 +1004,30 @@ id="path160" /> + + + + + + diff --git a/packaging/linux-common/nymea-app-plain.svg b/packaging/linux-common/nymea-app-plain.svg deleted file mode 100644 index 064fcc23..00000000 --- a/packaging/linux-common/nymea-app-plain.svg +++ /dev/null @@ -1,555 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packaging/linux-common/nymea-splash-horizontal.png b/packaging/linux-common/nymea-splash-horizontal.png deleted file mode 100644 index 40f2abcd..00000000 Binary files a/packaging/linux-common/nymea-splash-horizontal.png and /dev/null differ diff --git a/packaging/linux-common/nymea-splash.png b/packaging/linux-common/nymea-splash.png new file mode 100644 index 00000000..bf47e43d Binary files /dev/null and b/packaging/linux-common/nymea-splash.png differ diff --git a/packaging/linux-common/nymea-splashscreen.service b/packaging/linux-common/nymea-splashscreen.service index 4364719b..25c2a786 100644 --- a/packaging/linux-common/nymea-splashscreen.service +++ b/packaging/linux-common/nymea-splashscreen.service @@ -6,7 +6,7 @@ ConditionKernelCommandLine=!nosplash ConditionKernelCommandLine=splash [Service] -ExecStart=/usr/bin/fbi --noverbose -d /dev/fb0 -a /usr/share/nymea-splashscreen/nymea-splash-horizontal.png -fitwidth +ExecStart=/usr/bin/fbi --noverbose -d /dev/fb0 -a /usr/share/nymea-splashscreen/nymea-splash.png -fitwidth StandardInput=tty StandardOutput=tty #TTYPath=/dev/tty1 diff --git a/packaging/ubuntu/click/appicon.svg b/packaging/ubuntu/click/appicon.svg index 7f1ddd65..b8f096ee 100644 --- a/packaging/ubuntu/click/appicon.svg +++ b/packaging/ubuntu/click/appicon.svg @@ -15,7 +15,6 @@ version="1.1" inkscape:version="0.92.3 (2405546, 2018-03-11)" sodipodi:docname="appicon.svg" - inkscape:export-filename="/home/micha/Develop/mea/mea/guh-logo-256x256.png" inkscape:export-xdpi="96" inkscape:export-ydpi="96"> = 9.0.0), qtconnectivity5-dev, qtdeclarative5-dev, qtquickcontrols2-5-dev, - libplymouth-dev, Package: nymea-app Architecture: any diff --git a/packaging/ubuntu/debian/nymea-splashscreen.install b/packaging/ubuntu/debian/nymea-splashscreen.install index 8b35f7bc..5bfae213 100644 --- a/packaging/ubuntu/debian/nymea-splashscreen.install +++ b/packaging/ubuntu/debian/nymea-splashscreen.install @@ -1,2 +1,2 @@ packaging/linux-common/nymea-splashscreen.service /lib/systemd/system/ -packaging/linux-common/nymea-splash-horizontal.png /usr/share/nymea-splashscreen/ +packaging/linux-common/nymea-splash.png /usr/share/nymea-splashscreen/