diff --git a/.gitignore b/.gitignore index dcf0c87..70f48b9 100644 --- a/.gitignore +++ b/.gitignore @@ -53,6 +53,10 @@ installer/packages/HanoiTowers/parts installer/packages/HanoiTowers/prime installer/packages/HanoiTowers/stage installer/packages/HanoiTowers/data/* +HanoiTowers/client/android/src/com/falsinsoft/ +HanoiTowers/client/android/aidl/ +HanoiTowers/client/android/src/com/google/ + .snapcraft Distro # QtCreator diff --git a/.gitmodules b/.gitmodules index d0b4f7f..883d016 100644 --- a/.gitmodules +++ b/.gitmodules @@ -16,3 +16,6 @@ [submodule "HanoiTowers/client/Credits"] path = submodules/Credits url = https://github.com/QuasarApp/Credits +[submodule "submodules/QtAndroidTools"] + path = submodules/QtAndroidTools + url = https://github.com/QuasarApp/QtAndroidTools.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 59e9e03..0c042e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,13 +11,12 @@ project(HanoiTowers) set(BUILD_SHARED_LIBS ON) - include(submodules/Heart/QuasarAppLib/CMake/QuasarApp.cmake) include(submodules/Heart/QuasarAppLib/CMake/Version.cmake) +initAll() if (DEFINED TARGET_PLATFORM_TOOLCHAIN) if (${TARGET_PLATFORM_TOOLCHAIN} STREQUAL "wasm32") - initAll() return() endif() endif() @@ -28,6 +27,8 @@ endif() if(ONLINE_FUNCTIONS) add_definitions(-DONLINE_FUNCTIONS) +else() + set(HEART_SSL OFF) endif() if (NOT DEFINED HANOI_TESTS) @@ -45,7 +46,7 @@ if (NOT DEFINED HANOI_SERVER) set(HANOI_SERVER OFF) endif() - if (ONLINE_FUNCTIONS) + if ( NOT ONLINE_FUNCTIONS) set(HANOI_SERVER OFF) endif() @@ -65,8 +66,8 @@ SET(PRODUCT_VER_Mn 6) SET(PRODUCT_VER_Re 0) file(MAKE_DIRECTORY ${TARGET_DIR}) - initAll() + addDoc(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/doxygen.conf) find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) @@ -97,7 +98,35 @@ if (HANOI_CLIENT) add_subdirectory(submodules/SimpleQmlNotify) add_subdirectory(submodules/ViewSolutions) add_subdirectory(submodules/Credits) + + if (ANDROID) + set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/HanoiTowers/client/android") + set(QTAT_APP_PERMISSIONS OFF) + set(QTAT_APK_EXPANSION_FILES OFF) + set(QTAT_APK_INFO OFF) + set(QTAT_SCREEN OFF) + set(QTAT_SYSTEM OFF) + set(QTAT_BATTERY_STATE OFF) + set(QTAT_SIGNAL_STRENGTH OFF) + set(QTAT_IMAGES OFF) + set(QTAT_NOTIFICATION OFF) + set(QTAT_ADMOB_BANNER OFF) + set(QTAT_ADMOB_INTERSTITIAL ON) + set(QTAT_ADMOB_REWARDED_VIDEO OFF) + set(QTAT_PLAY_STORE OFF) + set(QTAT_GOOGLE_ACCOUNT OFF) + set(QTAT_GOOGLE_DRIVE OFF) + set(QTAT_SHARING OFF) + set(QTAT_USER_MESSAGING_PLATFORM OFF) + set(QTAT_AUDIO OFF) + + add_subdirectory(submodules/QtAndroidTools/QtAndroidTools) + include_directories(submodules/QtAndroidTools/QtAndroidTools) + + endif() + add_subdirectory(HanoiTowers/client) + endif() if (HANOI_SERVER) @@ -105,6 +134,3 @@ if (HANOI_SERVER) add_subdirectory(HanoiTowers/Server) endif() - - - diff --git a/Deploy/Client.json b/Deploy/Client.json index 6b24e38..571ccb2 100755 --- a/Deploy/Client.json +++ b/Deploy/Client.json @@ -21,5 +21,6 @@ "qif": "./../installer", "icon": "./../HanoiTowers/client/res/iconInstall.png", "deb": true, + "zip": true, "targetDir": "./../Distro" } diff --git a/HanoiTowers/Protockol/src/userpreview.h b/HanoiTowers/Protockol/src/userpreview.h index 07adce9..ca62271 100644 --- a/HanoiTowers/Protockol/src/userpreview.h +++ b/HanoiTowers/Protockol/src/userpreview.h @@ -14,8 +14,8 @@ #include "hanoitowersprotockol_global.h" struct HANOITOWERSPROTOCOL_EXPORT UserPreview: public QH::StreamBase { - explicit UserPreview(); - explicit UserPreview(const QString& id); + UserPreview(); + UserPreview(const QString& id); QString id; QString userName; diff --git a/HanoiTowers/client/CMakeLists.txt b/HanoiTowers/client/CMakeLists.txt index 2145bf5..de7101d 100644 --- a/HanoiTowers/client/CMakeLists.txt +++ b/HanoiTowers/client/CMakeLists.txt @@ -49,18 +49,31 @@ if (ANDROID) Credits QmlNotyfyService) + find_package(QT NAMES Qt6 Qt5 COMPONENTS AndroidExtras REQUIRED) + find_package(Qt${QT_VERSION_MAJOR} COMPONENTS AndroidExtras REQUIRED) + addDeployAPK(${CURRENT_PROJECT} "${CMAKE_CURRENT_LIST_DIR}/android" "digitalface" "${SIGN_PATH}/DigitalFaceMobily.keystore" "${SIGN_STORE_PASSWORD}" "${TARGET_DIR}" "${HANOI_EXTRA_LIBS}") + target_link_libraries(${CURRENT_PROJECT} PRIVATE QtAndroidTools Qt${QT_VERSION_MAJOR}::AndroidExtras) + + file(GLOB java_files + "android/src/com/quasarapp/androidtools/*.java" + ) + + add_custom_target(${name}Android + SOURCES ${java_files} + ) + else() # Desctop deploying addDeployFromCustomFile("Client" "${CMAKE_SOURCE_DIR}/Deploy/Client.json") -# if (UNIX) -# #addDeployQIF("Client" ${INSTALLER_DIR} ${TARGET_DIR} "${INSTALLER_DIR}/config/configLinux.xml") -# #addDeploySnap("Client" ${TARGET_DIR}) + if (UNIX) + #addDeployQIF("Client" ${INSTALLER_DIR} ${TARGET_DIR} "${INSTALLER_DIR}/config/configLinux.xml") + addDeploySnap("Client" ${TARGET_DIR}) -# #addReleaseSnap("Client") + #addReleaseSnap("Client") -# endif() + endif() endif() #addReleaseQif("Client" ${DATA_DIR} ${TARGET_DIR}) diff --git a/HanoiTowers/client/activityhandler.cpp b/HanoiTowers/client/activityhandler.cpp new file mode 100644 index 0000000..27b8043 --- /dev/null +++ b/HanoiTowers/client/activityhandler.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (C) 2021-2021 QuasarApp. + * Distributed under the lgplv3 software license, see the accompanying + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. +*/ + +#include "activityhandler.h" + +#ifdef Q_OS_ANDROID + +#include + +const int REQUEST_CODE = 123; +const jint RESULT_OK = QAndroidJniObject::getStaticField("android/app/Activity", "RESULT_OK"); + +ActivityHandler *ActivityHandler::m_instance = nullptr; + +ActivityHandler::ActivityHandler(QObject *parent) : QObject(parent) { + m_instance = this; +} + +void ActivityHandler::showSecondActivity() { + QAndroidIntent activityIntent(QtAndroid::androidActivity().object(), + "org/qtproject/example/activityhandler/CustomActivity"); + + QtAndroid::startActivity( + activityIntent.handle(), REQUEST_CODE, + [this](int requestCode, int resultCode, const QAndroidJniObject &data) { + activityReceiver(requestCode, resultCode, data); + }); +} + +void ActivityHandler::activityReceiver(int requestCode, + int resultCode, + const QAndroidJniObject &data) { + if (requestCode == REQUEST_CODE) { + if (resultCode == RESULT_OK) { + const QAndroidJniObject key = QAndroidJniObject::fromString("message"); + const QAndroidJniObject message = data.callObjectMethod( + "getStringExtra", "(Ljava/lang/String;)Ljava/lang/String;", key.object()); + if (message.isValid()) + emit ActivityHandler::instance()->receiveFromActivityResult(message.toString()); + } else { + emit ActivityHandler::instance()->receiveFromActivityResult("Rejected!"); + } + } +} +#endif diff --git a/HanoiTowers/client/activityhandler.h b/HanoiTowers/client/activityhandler.h new file mode 100644 index 0000000..34f266d --- /dev/null +++ b/HanoiTowers/client/activityhandler.h @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2021-2021 QuasarApp. + * Distributed under the lgplv3 software license, see the accompanying + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. +*/ + + +#ifndef ACTIVITYHANDLER_H +#define ACTIVITYHANDLER_H +#include + +#ifdef Q_OS_ANDROID +#include + +class ActivityHandler : public QObject +{ + Q_OBJECT + +public: + ActivityHandler(QObject *parent = nullptr); + static ActivityHandler *instance() { return m_instance; } + + Q_INVOKABLE void showSecondActivity(); + void activityReceiver(int requestCode, int resultCode, const QAndroidJniObject &data); + +signals: + void receiveFromActivityResult(const QString &message); + +private: + static ActivityHandler *m_instance; +}; + +#endif + +#endif // ACTIVITYHANDLER_H diff --git a/HanoiTowers/client/admod/AdMobInterstitialAndroid.qml b/HanoiTowers/client/admod/AdMobInterstitialAndroid.qml new file mode 100644 index 0000000..a4f6457 --- /dev/null +++ b/HanoiTowers/client/admod/AdMobInterstitialAndroid.qml @@ -0,0 +1,11 @@ +import QtQuick 2.15 +import QtAndroidTools 1.0 + +QtAndroidAdMobInterstitial { + id: interstitial + unitId: "ca-app-pub-5799112356811682/5211864198" + nonPersonalizedAds: false + onLoading: interstitialState.text = "Loading" + onLoaded: interstitialState.text = "Loaded" + onLoadError: interstitialState.text = "Error " + errorId +} diff --git a/HanoiTowers/client/android/AndroidManifest.xml b/HanoiTowers/client/android/AndroidManifest.xml index f1556fc..20fb6d5 100644 --- a/HanoiTowers/client/android/AndroidManifest.xml +++ b/HanoiTowers/client/android/AndroidManifest.xml @@ -10,7 +10,9 @@ - + + + @@ -75,4 +77,7 @@ + + + diff --git a/HanoiTowers/client/android/build.gradle b/HanoiTowers/client/android/build.gradle index b6d056b..d68dcc1 100644 --- a/HanoiTowers/client/android/build.gradle +++ b/HanoiTowers/client/android/build.gradle @@ -18,6 +18,7 @@ apply plugin: 'com.android.application' dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar']) + implementation 'com.google.android.gms:play-services-ads:19.+' } android { @@ -71,6 +72,7 @@ android { defaultConfig { resConfig "en" + multiDexEnabled true minSdkVersion = 22 targetSdkVersion = 30 } diff --git a/HanoiTowers/client/android/gradle.properties b/HanoiTowers/client/android/gradle.properties index fded106..e14afc2 100644 --- a/HanoiTowers/client/android/gradle.properties +++ b/HanoiTowers/client/android/gradle.properties @@ -9,3 +9,7 @@ org.gradle.jvmargs=-Xmx2048m # build with the same inputs. However, over time, the cache size will # grow. Uncomment the following line to enable it. #org.gradle.caching=true + +android.useAndroidX=true + +android.enableJetifier=true diff --git a/HanoiTowers/client/android/src/com/quasarapp/androidtools/MainActivity.java b/HanoiTowers/client/android/src/com/quasarapp/androidtools/MainActivity.java new file mode 100644 index 0000000..d9b7bb6 --- /dev/null +++ b/HanoiTowers/client/android/src/com/quasarapp/androidtools/MainActivity.java @@ -0,0 +1,50 @@ +/* + * Copyright (C) 2021-2021 QuasarApp. + * Distributed under the lgplv3 software license, see the accompanying + * Everyone is permitted to copy and distribute verbatim copies + * of this license document, but changing it is not allowed. +*/ + +package com.quasarapp.androidtools; + +import org.qtproject.qt5.android.bindings.QtActivity; +import android.view.View; + +public class MainActivity extends QtActivity +{ +@Override +public void onWindowFocusChanged(boolean hasFocus) { + super.onWindowFocusChanged(hasFocus); + if (hasFocus) { + hideSystemUI(); + } +} + +private void hideSystemUI() { + // Enables regular immersive mode. + // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE. + // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE_STICKY + View decorView = getWindow().getDecorView(); + decorView.setSystemUiVisibility( + View.SYSTEM_UI_FLAG_IMMERSIVE + // Set the content to appear under the system bars so that the + // content doesn't resize when the system bars hide and show. + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + // Hide the nav bar and status bar + | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_FULLSCREEN); +} + +// Shows the system bars by removing all the flags +// except for the ones that make the content appear under the system bars. +private void showSystemUI() { + View decorView = getWindow().getDecorView(); + decorView.setSystemUiVisibility( + View.SYSTEM_UI_FLAG_LAYOUT_STABLE + | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); +} + +} diff --git a/HanoiTowers/client/hanoitowers.cpp b/HanoiTowers/client/hanoitowers.cpp index c2fa98e..739109c 100644 --- a/HanoiTowers/client/hanoitowers.cpp +++ b/HanoiTowers/client/hanoitowers.cpp @@ -220,6 +220,14 @@ QObject *HanoiTowers::selectedUser() { return &_selectedUser; } +bool HanoiTowers::isAndroid() const{ +#ifdef Q_OS_ANDROID + return true; +#else + return false; +#endif +} + void HanoiTowers::handleChangeName(const QString &) { emit profileChanged(); } diff --git a/HanoiTowers/client/hanoitowers.h b/HanoiTowers/client/hanoitowers.h index da289d3..4913668 100644 --- a/HanoiTowers/client/hanoitowers.h +++ b/HanoiTowers/client/hanoitowers.h @@ -108,6 +108,8 @@ public: QObject *bestUser(); QObject *selectedUser(); + Q_INVOKABLE bool isAndroid() const; + public slots: diff --git a/HanoiTowers/client/languages/en.ts b/HanoiTowers/client/languages/en.ts index 14466b9..68fd91f 100644 --- a/HanoiTowers/client/languages/en.ts +++ b/HanoiTowers/client/languages/en.ts @@ -192,12 +192,12 @@ Tower height: - + Tower height: Tower height: - + step step @@ -266,68 +266,68 @@ User data updated successful - + login error Login error - + Failed to login into online account, please check your password and username Failed to login into online account, please check your password and username - + Register online error Register online error - + Failed to register this account, if this account was created by you, try to restore it. Failed to register this account, if this account was created by you, try to restore it. - - + + Server error Server error - + User with this id is not registered. If it you then use please the sigup form. User with this id is not registered. If it you then use please the sigup form. - + User with this id already registered. If it you then use please the login form. User with this id already registered. If it you then use please the login form. - + Create user error User create error - + Failed to create a new user, The name %0 alredy used. Failed to create a new user, This name %0 alredy used. - + Remove online error Remove online error - + current profile not online! Current profile is offline! - + Remove Local user Remove Local user - + Failed to remove the local user data Failed to remove the local user data diff --git a/HanoiTowers/client/languages/ja.ts b/HanoiTowers/client/languages/ja.ts index 54b4d22..65bcf9a 100644 --- a/HanoiTowers/client/languages/ja.ts +++ b/HanoiTowers/client/languages/ja.ts @@ -210,12 +210,12 @@ 塔の高さ: - + Tower height: タワーの高さ: - + step ステップ @@ -284,68 +284,68 @@ ユーザーデータが正常に更新されました - + login error ログインエラー - + Failed to login into online account, please check your password and username オンラインアカウントにログインできませんでした。パスワードとユーザー名を確認してください - + Register online error 登録オンラインエラー - + Failed to register this account, if this account was created by you, try to restore it. このアカウントが登録されなかった場合、このアカウントが作成された場合、それを元に戻してください。 - - + + Server error サーバエラー - + User with this id is not registered. If it you then use please the sigup form. このIDのユーザーは登録されていません。 それを使用する場合は、サインアップフォームを使用してください。 - + User with this id already registered. If it you then use please the login form. このIDのユーザーはすでに登録されています。 それを使用する場合は、ログインフォームを使用してください。 - + Create user error ユーザーエラーの作成 - + Failed to create a new user, The name %0 alredy used. 新しいユーザーの作成に失敗しました。名前 %0 はすでに使用されています。 - + Remove online error オンラインユーザーデータの削除中にエラーが発生しました - + current profile not online! 現在のプロファイルはオフラインです! - + Remove Local user ローカルユーザーを削除する - + Failed to remove the local user data ローカルユーザーデータの削除に失敗しました diff --git a/HanoiTowers/client/languages/ru.ts b/HanoiTowers/client/languages/ru.ts index 949411f..cee96ed 100644 --- a/HanoiTowers/client/languages/ru.ts +++ b/HanoiTowers/client/languages/ru.ts @@ -217,12 +217,12 @@ Высота башни - + Tower height: Высота башни: - + step Шаг @@ -291,68 +291,68 @@ Данные пользователя обновлены - + login error Ошибка входа - + Failed to login into online account, please check your password and username Ошибка входа в онлайн аккаунт, пожалуйста проверте свой логин и пароль - + Register online error Ошибка регистрации - + Failed to register this account, if this account was created by you, try to restore it. Не удалось зарегистрировать аккаунт, если этот аккаунт был создан вами попробуйте восстановить его. - - + + Server error Ошибка сервера - + User with this id is not registered. If it you then use please the sigup form. Пользователь с этим id не зарегистрирован. Пожалуйста, заполните форму регистрации. - + User with this id already registered. If it you then use please the login form. Пользователь с этим id уже зарегистрирован. Если это вы, пожалуйста используйте форму входа. - + Create user error Ошибка создания пользователя - + Failed to create a new user, The name %0 alredy used. Не удалось создать пользователя. Данное имя %0 уже используется - + Remove online error Ошибка удаления онлайн аккаунта - + current profile not online! Текущий профиль не в сети! - + Remove Local user Удалить локального.пользователя - + Failed to remove the local user data Ошибка удаления локального пользователя diff --git a/HanoiTowers/client/languages/tr.ts b/HanoiTowers/client/languages/tr.ts index 53c541f..33f2e97 100644 --- a/HanoiTowers/client/languages/tr.ts +++ b/HanoiTowers/client/languages/tr.ts @@ -218,12 +218,12 @@ Bu seviye için minimum adımlar: %2 Kule yüksekliği: - + Tower height: Kule yüksekliği: - + step adım @@ -292,68 +292,68 @@ Bu seviye için minimum adımlar: %2 Kullanıcı verileri başarıyla güncellendi - + login error sisteme giriş hatası - + Failed to login into online account, please check your password and username Çevrimiçi hesaba giriş yapılamadı, lütfen şifrenizi ve kullanıcı adınızı kontrol edin - + Register online error Çevrimiçi kayıt hatası - + Failed to register this account, if this account was created by you, try to restore it. Bu hesap kaydedilemedi, bu hesap sizin tarafınızdan oluşturulduysa, geri yüklemeyi deneyin. - - + + Server error Server hatası - + User with this id is not registered. If it you then use please the sigup form. Bu kimliğe sahip kullanıcı kayıtlı değil. Daha sonra kullanırsanız, lütfen kayıt formunu kullanın. - + User with this id already registered. If it you then use please the login form. Bu kimliğe sahip kullanıcı zaten kayıtlı. Eğer öyleyse, lütfen giriş formunu kullanın. - + Create user error Kullanıcı hatası oluştur - + Failed to create a new user, The name %0 alredy used. Yeni bir kullanıcı oluşturulamadı, %0 adı kullanıldı. - + Remove online error Çevrimiçi kullanıcı verilerini kaldırma hatası - + current profile not online! Mevcut profil çevrimdışı! - + Remove Local user Yerel kullanıcıyı kaldır - + Failed to remove the local user data Yerel kullanıcı verileri kaldırılamadı diff --git a/HanoiTowers/client/languages/uk.ts b/HanoiTowers/client/languages/uk.ts index 5d2a2f6..3569dc7 100644 --- a/HanoiTowers/client/languages/uk.ts +++ b/HanoiTowers/client/languages/uk.ts @@ -220,12 +220,12 @@ Висота вежі: - + Tower height: Висота вежі: - + step крок @@ -294,68 +294,68 @@ Дані користувачів оновлено успішно - + login error Помилка входу - + Failed to login into online account, please check your password and username Не вдалося увійти в онлайн-акаунт, перевірте свій пароль та ім’я користувача - + Register online error Помилка реєстрації в Інтернеті - + Failed to register this account, if this account was created by you, try to restore it. Не вдалося зареєструвати цей обліковий запис, якщо цей обліковий запис був створений вами, спробуйте відновити його. - - + + Server error Помилка серверу - + User with this id is not registered. If it you then use please the sigup form. Користувач з цим id не зареєстрований. Якщо ви це використовуєте, будь ласка, будь ласка, зареєструйтесь. - + User with this id already registered. If it you then use please the login form. Користувач з цим ідентифікатором вже зареєстрований. Якщо ви використовуєте його, будь ласка, увійдіть у форму для входу. - + Create user error Помилка створення користувача - + Failed to create a new user, The name %0 alredy used. Не вдалося створити нового користувача, ім’я %0 вже використовується. - + Remove online error Помилка видалення онлайн даних користувачів - + current profile not online! Поточний профіль офлайн! - + Remove Local user Видалити локального користувача - + Failed to remove the local user data Не вдалося видалити локальні дані користувача diff --git a/HanoiTowers/client/main.cpp b/HanoiTowers/client/main.cpp index ae5fab7..ab13357 100644 --- a/HanoiTowers/client/main.cpp +++ b/HanoiTowers/client/main.cpp @@ -12,11 +12,14 @@ #include #include #include +#include "activityhandler.h" #include "hanoitowers.h" #include #include #include - +#ifdef Q_OS_ANDROID +#include +#endif int main(int argc, char *argv[]) { @@ -29,7 +32,7 @@ int main(int argc, char *argv[]) QLocale locale = QLocale::system(); if(argc > 1) { - locale = QString::fromLatin1(argv[1]); + locale = QLocale(QString::fromLatin1(argv[1])); } if(!QuasarAppUtils::Locales::init(locale, {":/languages/languages/", @@ -51,6 +54,13 @@ int main(int argc, char *argv[]) return 2; } +#ifdef Q_OS_ANDROID + QtAndroidTools::initializeQmlTools(); + + ActivityHandler *activityHandler = new ActivityHandler(&app); + engine.rootContext()->setContextProperty(QLatin1String("activityHandler"), activityHandler); +#endif + root->setContextProperty("backEnd", &back); root->setContextProperty("OnlineStatusQml", QVariant::fromValue(OnlineStatusQml{})); diff --git a/HanoiTowers/client/main.qml b/HanoiTowers/client/main.qml index 7169a3f..9a6df4e 100644 --- a/HanoiTowers/client/main.qml +++ b/HanoiTowers/client/main.qml @@ -20,6 +20,25 @@ ApplicationWindow { width: 1240 height: 720 title: qsTr("Hanoi Towers") + property var admodbanner: null + + function createSpriteObjects(url, parent) { + if (!backEnd.isAndroid()) { + return null; + } + const component = Qt.createComponent(url); + return component.createObject(parent); + } + + Component.onCompleted: { + + const obj = createSpriteObjects("qrc:/admod/AdMobInterstitialAndroid.qml", this); + if (obj) { + admodbanner = obj; + admodbanner.load() + admodbanner.show(); + } + } header: Menu.ToolBarPage { id: toolBar @@ -47,6 +66,17 @@ ApplicationWindow { anchors.fill: parent interactive: false + onCurrentIndexChanged: { + if (currentIndex) + return; + + if (admodbanner) { + admodbanner.load() + admodbanner.show(); + + } + } + background: Item {} Menu.MainMenu { @@ -142,6 +172,7 @@ ApplicationWindow { ] } + NotificationServiceView { anchors.fill: parent; } diff --git a/HanoiTowers/client/menu/GameStateWidget.qml b/HanoiTowers/client/menu/GameStateWidget.qml index 07458ad..6b5d7ee 100644 --- a/HanoiTowers/client/menu/GameStateWidget.qml +++ b/HanoiTowers/client/menu/GameStateWidget.qml @@ -1,6 +1,5 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 -import QtQuick.Dialogs 1.3 import QtQuick.Layouts 1.15 import QtQuick.Window 2.1 import ".." diff --git a/HanoiTowers/client/menu/UserView.qml b/HanoiTowers/client/menu/UserView.qml index 5c4681e..353f8bb 100644 --- a/HanoiTowers/client/menu/UserView.qml +++ b/HanoiTowers/client/menu/UserView.qml @@ -3,7 +3,7 @@ import QtQuick.Controls 2.15 import QtQuick.Controls.Material 2.15 import QtQuick.Layouts 1.15 import QtQuick.Window 2.15 -import QtQuick.Dialogs 1.1 +import QtQuick.Dialogs 1.2 GridLayout { id: mainLayout diff --git a/HanoiTowers/client/qml.qrc b/HanoiTowers/client/qml.qrc index a9d0a88..e3f5f38 100644 --- a/HanoiTowers/client/qml.qrc +++ b/HanoiTowers/client/qml.qrc @@ -22,6 +22,7 @@ menu/LocalUsersTable.qml Background.qml HelpPage.qml + admod/AdMobInterstitialAndroid.qml res/fogBack.png diff --git a/snap/gui/Hanoi-Tower.desktop b/snap/gui/Hanoi-Tower.desktop index e7661f2..64ac115 100755 --- a/snap/gui/Hanoi-Tower.desktop +++ b/snap/gui/Hanoi-Tower.desktop @@ -1,5 +1,5 @@ [Desktop Entry] -Version=1.5.2 +Version=1.6.0 Name=Hanoi Towers Comment=Hanoi Towers Game. Exec=hanoi-tower @@ -10,6 +10,6 @@ Categories=Games;Application; X-GNOME-Bugzilla-Bugzilla=GNOME X-GNOME-Bugzilla-Product=hanoi-tower X-GNOME-Bugzilla-Component=General -X-GNOME-Bugzilla-Version=1.5.2 +X-GNOME-Bugzilla-Version=1.6.0 StartupNotify=true -Name[ru_RU]=Hanoi-Tower +Name[ru_RU]=Ханойские башни diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 3912adf..9322a56 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -9,16 +9,14 @@ description: | grade: stable # must be 'stable' to release into candidate/stable channels confinement: strict # use 'strict' once you have the right plugs and slots -base: core18 -icon: installer/packages/HanoiTowers/data/icons/icon.png +base: core20 +icon: installer/config/logo.png apps: hanoi-tower: - command: desktop-launch $SNAP/HanoiTowers.sh - + command: bin/desktop-launch $SNAP/HanoiTowers.sh plugs: [desktop, unity7, home, opengl, x11, wayland, gsettings] - parts: hanoi-tower: plugin: nil @@ -26,13 +24,21 @@ parts: - libasn1-8-heimdal - libgssapi3-heimdal - libldap-2.4-2 - after: [libsgl, qtlib] - - + after: [libsgl, qtlib, desktop-qt5] + + override-stage: | + snapcraftctl stage + chmod +x -R "$SNAPCRAFT_STAGE" + + desktop-qt5: + source: https://github.com/ubuntu/snapcraft-desktop-helpers.git + source-subdir: qt + plugin: make + qtlib: plugin: dump - source: installer/packages/HanoiTowers/data - + source: Distro/HanoiTowers.zip + libsgl: plugin: nil stage-packages: diff --git a/submodules/Credits b/submodules/Credits index a765010..afb5e5a 160000 --- a/submodules/Credits +++ b/submodules/Credits @@ -1 +1 @@ -Subproject commit a765010efa2b4eafcb6a151e7f56ede04d0a9333 +Subproject commit afb5e5a40501066673c480adeed3314fe2b6b197 diff --git a/submodules/Heart b/submodules/Heart index 239fc7d..755f956 160000 --- a/submodules/Heart +++ b/submodules/Heart @@ -1 +1 @@ -Subproject commit 239fc7dae74a4e88fc379162428d3ca5217d2a5a +Subproject commit 755f9565dc1696ced7c40dc2dec998b808b9d942 diff --git a/submodules/Patronum b/submodules/Patronum index a7b22da..edafe48 160000 --- a/submodules/Patronum +++ b/submodules/Patronum @@ -1 +1 @@ -Subproject commit a7b22dac24bd8e2a079d758d4dde9921fef23056 +Subproject commit edafe48668f01058e724d763669e3af865566edc diff --git a/submodules/QMLLoginView b/submodules/QMLLoginView index 055445a..ec0d9a9 160000 --- a/submodules/QMLLoginView +++ b/submodules/QMLLoginView @@ -1 +1 @@ -Subproject commit 055445ac2b5983125d77bcbe41b4d9a2774287b1 +Subproject commit ec0d9a9904e1b48df90c1583de769dab920a5f14 diff --git a/submodules/QtAndroidTools b/submodules/QtAndroidTools new file mode 160000 index 0000000..d3f1c40 --- /dev/null +++ b/submodules/QtAndroidTools @@ -0,0 +1 @@ +Subproject commit d3f1c400719858fc22eefa0cbfe9485b8e9666af diff --git a/submodules/SimpleQmlNotify b/submodules/SimpleQmlNotify index 099a83c..cdeab90 160000 --- a/submodules/SimpleQmlNotify +++ b/submodules/SimpleQmlNotify @@ -1 +1 @@ -Subproject commit 099a83ccf6c0a72acfef772884ae08d0594dd489 +Subproject commit cdeab90d82ee95edbe86afa1da5ac6dd16cee7bb diff --git a/submodules/ViewSolutions b/submodules/ViewSolutions index 220b9b7..5e765f1 160000 --- a/submodules/ViewSolutions +++ b/submodules/ViewSolutions @@ -1 +1 @@ -Subproject commit 220b9b7035bcdc7b1cc79e0f0d8e31f0c10e5359 +Subproject commit 5e765f171ae73e18a6fa6c75139cb9e8274373ad