Merge branch 'krita' into 'master'

New app: org.krita

See merge request fdroid/fdroiddata!8255
This commit is contained in:
Licaon_Kter 2021-02-04 09:11:55 +00:00
commit f2dd02f34d
2 changed files with 638 additions and 0 deletions

226
metadata/org.krita.yml Normal file
View file

@ -0,0 +1,226 @@
Categories:
- Graphics
- Multimedia
License: GPL-3.0-only
AuthorName: The Krita Foundation
WebSite: https://krita.org/en/
SourceCode: https://invent.kde.org/graphics/krita
IssueTracker: https://bugs.kde.org/
Donate: https://krita.org/en/support-us/donations
Description: |-
Krita is a professional painting program.
It is made by artists that want to see affordable
art tools for everyone.
It's designed primarily for digital painting and
2D animation and features an OpenGL-accelerated canvas,
colour management support, an advanced brush engine,
non-destructive layers and masks, group-based layer
management, vector artwork support and switchable
customisation profiles.
Note: android version of krita is optimized only
for tablets and may behave poorly on phone screens.
RepoType: git
Repo: https://invent.kde.org/graphics/krita
Builds:
- versionName: 4.4.2
versionCode: 1040404
commit: v4.4.2
timeout: 30000
sudo:
- find ./android-sdk/platforms -type d -mindepth 1 -maxdepth 1 -not -name "android-21"
-not -name "android-28" -exec rm -rf {} \;
- apt update || apt update
- apt install -y build-essential
- apt install -y -t stretch-backports-sloppy libarchive13
- apt install -y -t stretch-backports cmake
patch:
- remove_billing.patch
output: build/krita_build_apk/build/outputs/apk/release/krita_build_apk-release-unsigned.apk
scanignore:
- plugins/extensions/pykrita/plugin/krita/sceditor/rope.zip
- libs/flake/tests/data/store.zip
- libs/flake/tests/data/odf_frame_resource_store.zip
build:
- export DEP_COMMIT=460108860d50af4a2e4205453c1549fc10ff89a3
- export ANDROID_ABI=armeabi-v7a
- export BUILD_ROOT=$(pwd)
- export ANDROID_API_LEVEL=23
- export CMAKE_ANDROID_NDK=$$NDK$$
- export ANDROID_SDK_ROOT=$$SDK$$
- export SUBDIR=${BUILD_ROOT}/packaging/android
- mkdir -p ${BUILD_ROOT}/build
- git reset --hard $DEP_COMMIT
- echo 'gradle "$@"' > ${SUBDIR}/apk/gradlew
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=boost
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=qt
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=3rdparty
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=kf5
- git reset --hard $$COMMIT$$
- git apply remove_billing_actual.patch
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=krita-bin
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=apk
ndk: r21d
- versionName: 4.4.2
versionCode: 2040404
commit: v4.4.2
timeout: 30000
sudo:
- find ./android-sdk/platforms -type d -mindepth 1 -maxdepth 1 -not -name "android-21"
-not -name "android-28" -exec rm -rf {} \;
- apt update || apt update
- apt install -y build-essential
- apt install -y -t stretch-backports-sloppy libarchive13
- apt install -y -t stretch-backports cmake
patch:
- remove_billing.patch
output: build/krita_build_apk/build/outputs/apk/release/krita_build_apk-release-unsigned.apk
scanignore:
- plugins/extensions/pykrita/plugin/krita/sceditor/rope.zip
- libs/flake/tests/data/store.zip
- libs/flake/tests/data/odf_frame_resource_store.zip
build:
- export DEP_COMMIT=0945e06a20d830d33ff0b9b5a1b03c71fc745ae9
- export ANDROID_ABI=arm64-v8a
- export BUILD_ROOT=$(pwd)
- export ANDROID_API_LEVEL=23
- export CMAKE_ANDROID_NDK=$$NDK$$
- export ANDROID_SDK_ROOT=$$SDK$$
- export SUBDIR=${BUILD_ROOT}/packaging/android
- mkdir -p ${BUILD_ROOT}/build
- git reset --hard $DEP_COMMIT
- echo 'gradle "$@"' > ${SUBDIR}/apk/gradlew
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=boost
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=qt
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=3rdparty
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=kf5
- git reset --hard $$COMMIT$$
- git apply remove_billing_actual.patch
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=krita-bin
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=apk
ndk: r21d
- versionName: 4.4.2
versionCode: 3040404
commit: v4.4.2
timeout: 30000
sudo:
- find ./android-sdk/platforms -type d -mindepth 1 -maxdepth 1 -not -name "android-21"
-not -name "android-28" -exec rm -rf {} \;
- apt update || apt update
- apt install -y build-essential
- apt install -y -t stretch-backports-sloppy libarchive13
- apt install -y -t stretch-backports cmake
patch:
- remove_billing.patch
output: build/krita_build_apk/build/outputs/apk/release/krita_build_apk-release-unsigned.apk
scanignore:
- plugins/extensions/pykrita/plugin/krita/sceditor/rope.zip
- libs/flake/tests/data/store.zip
- libs/flake/tests/data/odf_frame_resource_store.zip
build:
- export DEP_COMMIT=460108860d50af4a2e4205453c1549fc10ff89a3
- export ANDROID_ABI=x86
- export BUILD_ROOT=$(pwd)
- export ANDROID_API_LEVEL=23
- export CMAKE_ANDROID_NDK=$$NDK$$
- export ANDROID_SDK_ROOT=$$SDK$$
- export SUBDIR=${BUILD_ROOT}/packaging/android
- mkdir -p ${BUILD_ROOT}/build
- git reset --hard $DEP_COMMIT
- echo 'gradle "$@"' > ${SUBDIR}/apk/gradlew
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=boost
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=qt
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=3rdparty
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=kf5
- git reset --hard $$COMMIT$$
- git apply remove_billing_actual.patch
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=krita-bin
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=apk
ndk: r21d
- versionName: 4.4.2
versionCode: 4040404
commit: v4.4.2
timeout: 30000
sudo:
- find ./android-sdk/platforms -type d -mindepth 1 -maxdepth 1 -not -name "android-21"
-not -name "android-28" -exec rm -rf {} \;
- apt update || apt update
- apt install -y build-essential
- apt install -y -t stretch-backports-sloppy libarchive13
- apt install -y -t stretch-backports cmake
patch:
- remove_billing.patch
output: build/krita_build_apk/build/outputs/apk/release/krita_build_apk-release-unsigned.apk
scanignore:
- plugins/extensions/pykrita/plugin/krita/sceditor/rope.zip
- libs/flake/tests/data/store.zip
- libs/flake/tests/data/odf_frame_resource_store.zip
build:
- export DEP_COMMIT=460108860d50af4a2e4205453c1549fc10ff89a3
- export ANDROID_ABI=x86_64
- export BUILD_ROOT=$(pwd)
- export ANDROID_API_LEVEL=23
- export CMAKE_ANDROID_NDK=$$NDK$$
- export ANDROID_SDK_ROOT=$$SDK$$
- export SUBDIR=${BUILD_ROOT}/packaging/android
- mkdir -p ${BUILD_ROOT}/build
- git reset --hard $DEP_COMMIT
- echo 'gradle "$@"' > ${SUBDIR}/apk/gradlew
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=boost
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=qt
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=3rdparty
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=kf5
- git reset --hard $$COMMIT$$
- git apply remove_billing_actual.patch
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=krita-bin
- ${SUBDIR}/androidbuild.sh --src=${BUILD_ROOT} --build-type=Release --build-root=${BUILD_ROOT}/build
-p=apk
ndk: r21d
MaintainerNotes: |-
- Dependencies are built using different commit than the app itself.
- All google play donation code was added in 5e323fb7, remove_billing.patch is based on that commit.
- Compilation fails unless only SDK versions 21 and are present in SDK, so we're removing them.
- Patch at metadata/org.krita/remove_billing.patch actually creates another patch in project's
- Root dir since otherwise fdroid lint fails with unused file.
- New versions and exact commits for deps and app itself can be found on KDE jenkins:
- https://binary-factory.kde.org/job/Krita_Release_Android_arm64-v8a_Build
- https://binary-factory.kde.org/job/Krita_Android_arm64-v8a_Dependency_Build
- Version code schema, taken from build.gradle:
- project.ext.versionCodes = ['armeabi-v7a': 1, 'arm64-v8a': 2, 'x86': 3, 'x86_64': 4]
- project.ext.versionCodes[abi] * 1000000 + versionMajor * 10000 + versionMinor * 100 + versionRelease
AutoUpdateMode: None
UpdateCheckMode: None
CurrentVersion: 4.4.2
CurrentVersionCode: 4040404

View file

@ -0,0 +1,412 @@
diff --git a/remove_billing_actual.patch b/remove_billing_actual.patch
new file mode 100644
index 0000000000..d1bea8e661
--- /dev/null
+++ b/remove_billing_actual.patch
@@ -0,0 +1,406 @@
+diff --git a/libs/ui/KisWelcomePageWidget.cpp b/libs/ui/KisWelcomePageWidget.cpp
+index b4077b5f0f..b65fe659e5 100644
+--- a/libs/ui/KisWelcomePageWidget.cpp
++++ b/libs/ui/KisWelcomePageWidget.cpp
+@@ -46,20 +46,6 @@
+ #include <KisPart.h>
+ #include <utils/KisFileIconCreator.h>
+
+-#include <kritaversion.h>
+-#include <QSysInfo>
+-#include <kis_config.h>
+-#include <kis_image_config.h>
+-#include "opengl/kis_opengl.h"
+-
+-#ifdef Q_OS_ANDROID
+-#include <QtAndroid>
+-
+-
+-QPushButton* KisWelcomePageWidget::donationLink;
+-QLabel* KisWelcomePageWidget::donationBannerImage;
+-#endif
+-
+
+ KisWelcomePageWidget::KisWelcomePageWidget(QWidget *parent)
+ : QWidget(parent)
+@@ -117,35 +103,22 @@ KisWelcomePageWidget::KisWelcomePageWidget(QWidget *parent)
+ helpTitleLabel_2->hide();
+ chkShowNews->hide();
+
+- donationLink = new QPushButton(dropFrameBorder);
+- donationLink->setFlat(true);
++ donationLink = new QLabel(dropFrameBorder);
++ donationLink->setOpenExternalLinks(true);
++ donationLink->setTextInteractionFlags(Qt::TextBrowserInteraction);
++
+ QFont f = font();
+ f.setPointSize(15);
+- f.setUnderline(true);
+ donationLink->setFont(f);
+
+- connect(donationLink, SIGNAL(clicked(bool)), this, SLOT(slotStartDonationFlow()));
+-
+ verticalLayout_3->addWidget(donationLink);
+- verticalLayout_3->setAlignment(donationLink, Qt::AlignTop);
+ verticalLayout_3->setSpacing(20);
+
+- donationBannerImage = new QLabel(dropFrameBorder);
++ QLabel *donationBannerImage = new QLabel(dropFrameBorder);
+ QString bannerPath = QStandardPaths::locate(QStandardPaths::AppDataLocation, "share/krita/donation/banner.png");
+ donationBannerImage->setPixmap(QPixmap(bannerPath));
+
+ verticalLayout_3->addWidget(donationBannerImage);
+-
+- jboolean bannerPurchased = QAndroidJniObject::callStaticMethod<jboolean>("org/krita/android/DonationHelper", "isBadgePurchased", "()Z");
+- if (bannerPurchased) {
+- donationLink->hide();
+- donationBannerImage->show();
+- QAndroidJniObject::callStaticMethod<void>("org/krita/android/DonationHelper", "endConnection", "()V");
+- } else {
+- donationLink->show();
+- donationBannerImage->hide();
+- }
+-
+ #endif
+
+
+@@ -282,8 +255,8 @@ void KisWelcomePageWidget::slotUpdateThemeColors()
+
+
+ #ifdef Q_OS_ANDROID
+- donationLink->setStyleSheet(blendedStyle);
+- donationLink->setText(QString(i18n("Get your Krita Supporter Badge here!")));
++ donationLink->setText(QString("<a style=\"color: " + blendedColor.name() + " \" href=\"https://krita.org/en/support-us/donations?" + analyticsString + "donations" + "\">")
++ .append(i18n("Krita is free and open source.")).append("<br>").append(i18n("Support Krita's Development!")).append("</a>"));
+ #endif
+ // re-populate recent files since they might have themed icons
+ populateRecentDocuments();
+@@ -400,13 +373,6 @@ void KisWelcomePageWidget::slotUpdateVersionMessage()
+
+ }
+
+-#ifdef Q_OS_ANDROID
+-void KisWelcomePageWidget::slotStartDonationFlow()
+-{
+- QAndroidJniObject::callStaticMethod<void>("org/krita/android/DonationHelper", "startBillingFlow", "()V");
+-}
+-#endif
+-
+ void KisWelcomePageWidget::dragEnterEvent(QDragEnterEvent *event)
+ {
+ //qDebug() << "dragEnterEvent formats" << event->mimeData()->formats() << "urls" << event->mimeData()->urls() << "has images" << event->mimeData()->hasImage();
+@@ -477,13 +443,3 @@ void KisWelcomePageWidget::slotOpenFileClicked()
+ m_mainWindow->slotFileOpen();
+ }
+
+-#ifdef Q_OS_ANDROID
+-extern "C" JNIEXPORT void JNICALL
+-Java_org_krita_android_JNIWrappers_donationSuccessful(JNIEnv* /*env*/,
+- jobject /*obj*/,
+- jint /*n*/)
+-{
+- KisWelcomePageWidget::donationLink->hide();
+- KisWelcomePageWidget::donationBannerImage->show();
+-}
+-#endif
+diff --git a/libs/ui/KisWelcomePageWidget.h b/libs/ui/KisWelcomePageWidget.h
+index 4b192325a8..b41b248eb1 100644
+--- a/libs/ui/KisWelcomePageWidget.h
++++ b/libs/ui/KisWelcomePageWidget.h
+@@ -52,10 +52,6 @@ public Q_SLOTS:
+
+ void slotUpdateVersionMessage();
+
+-#ifdef Q_OS_ANDROID
+- void slotStartDonationFlow();
+-#endif
+-
+ protected:
+
+ // QWidget overrides
+@@ -85,11 +81,9 @@ private:
+ QColor blendedColor;
+ QString blendedStyle;
+
+-#ifdef Q_OS_ANDROID
+-public:
+- static QPushButton* donationLink;
+- static QLabel* donationBannerImage;
+-#endif
++
++
++ QLabel* donationLink;
+
+ private Q_SLOTS:
+ void slotNewFileClicked();
+diff --git a/packaging/android/apk/AndroidManifest.xml b/packaging/android/apk/AndroidManifest.xml
+index 426a354914..2b5ab3da57 100644
+--- a/packaging/android/apk/AndroidManifest.xml
++++ b/packaging/android/apk/AndroidManifest.xml
+@@ -137,6 +137,5 @@
+
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+- <uses-permission android:name="com.android.vending.BILLING" />
+
+ </manifest>
+diff --git a/packaging/android/apk/build.gradle b/packaging/android/apk/build.gradle
+index 3ebdc632b3..30bd0c3ce8 100644
+--- a/packaging/android/apk/build.gradle
++++ b/packaging/android/apk/build.gradle
+@@ -143,8 +143,3 @@ android {
+ preBuild.dependsOn(copyAssets)
+ preBuild.dependsOn(removeDuplicateAssets)
+ }
+-
+-dependencies {
+- implementation 'com.android.billingclient:billing:2.2.0'
+-}
+-
+diff --git a/packaging/android/apk/res/values/strings.xml b/packaging/android/apk/res/values/strings.xml
+index 482f93ed44..c3545fe5f3 100644
+--- a/packaging/android/apk/res/values/strings.xml
++++ b/packaging/android/apk/res/values/strings.xml
+@@ -8,7 +8,5 @@
+ <string name="remote_action_swiperight">Swipe Right</string>
+ <string name="remote_action_circlecw">Circle Clockwise</string>
+ <string name="remote_action_circleccw">Circle Counter-Clockwise</string>
+- <string name="something_wrong">Something went wrong...</string>
+- <string name="cancelled">Cancelled</string>
+ </resources>
+
+diff --git a/packaging/android/apk/src/org/krita/android/DonationHelper.java b/packaging/android/apk/src/org/krita/android/DonationHelper.java
+deleted file mode 100644
+index 43537f1312..0000000000
+--- a/packaging/android/apk/src/org/krita/android/DonationHelper.java
++++ /dev/null
+@@ -1,204 +0,0 @@
+-/*
+- * This file is part of the KDE project
+- * Copyright (C) 2020 Sharaf Zaman <sharafzaz121@gmail.com>
+- *
+- * This program is free software; you can redistribute it and/or modify
+- * it under the terms of the GNU General Public License as published by
+- * the Free Software Foundation; either version 2 of the License, or
+- * (at your option) any later version.
+- *
+- * This program is distributed in the hope that it will be useful,
+- * but WITHOUT ANY WARRANTY; without even the implied warranty of
+- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+- * GNU General Public License for more details.
+- *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
+- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+- */
+-
+-package org.krita.android;
+-
+-import android.util.Log;
+-import android.widget.Toast;
+-
+-import com.android.billingclient.api.AcknowledgePurchaseParams;
+-import com.android.billingclient.api.AcknowledgePurchaseResponseListener;
+-import com.android.billingclient.api.BillingClient;
+-import com.android.billingclient.api.BillingClientStateListener;
+-import com.android.billingclient.api.BillingFlowParams;
+-import com.android.billingclient.api.BillingResult;
+-import com.android.billingclient.api.Purchase;
+-import com.android.billingclient.api.PurchasesUpdatedListener;
+-import com.android.billingclient.api.SkuDetails;
+-import com.android.billingclient.api.SkuDetailsParams;
+-import com.android.billingclient.api.SkuDetailsResponseListener;
+-
+-import org.krita.R;
+-import org.qtproject.qt5.android.QtNative;
+-
+-import java.util.ArrayList;
+-import java.util.List;
+-
+-public class DonationHelper implements PurchasesUpdatedListener, BillingClientStateListener, SkuDetailsResponseListener {
+-
+- private final String LOG_TAG = "krita.DonationHelper";
+-
+- private BillingClient mBillingClient;
+- private List<SkuDetails> mSkuDetails;
+-
+- private static DonationHelper sInstance;
+-
+- private DonationHelper() {
+-
+- mBillingClient = BillingClient.newBuilder(QtNative.getContext())
+- .setListener(this)
+- .enablePendingPurchases()
+- .build();
+- mBillingClient.startConnection(this);
+- }
+-
+- public static DonationHelper getInstance() {
+- if (sInstance == null) {
+- sInstance = new DonationHelper();
+- }
+- return sInstance;
+- }
+-
+- @Override
+- public void onBillingSetupFinished(BillingResult billingResult) {
+- if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
+- querySkuDetails();
+- }
+- }
+-
+- private void querySkuDetails() {
+- List<String> skus = new ArrayList<>();
+- skus.add("thankyoukiki");
+-
+- SkuDetailsParams params = SkuDetailsParams.newBuilder()
+- .setType(BillingClient.SkuType.INAPP)
+- .setSkusList(skus)
+- .build();
+-
+- mBillingClient.querySkuDetailsAsync(params, this);
+- }
+-
+- @Override
+- public void onSkuDetailsResponse(BillingResult billingResult, List<SkuDetails> list) {
+- if (billingResult == null) {
+- Log.e(LOG_TAG, "null billingResult");
+- return;
+- }
+-
+- if (billingResult.getResponseCode() == BillingClient.BillingResponseCode.OK) {
+- if (list != null) {
+- mSkuDetails = list;
+- }
+- }
+- }
+-
+- @Override
+- public void onBillingServiceDisconnected() {
+-
+- }
+-
+-
+- @Override
+- public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
+- if (billingResult == null) {
+- Log.e(LOG_TAG, "null billingResult");
+- return;
+- }
+- switch (billingResult.getResponseCode()) {
+- case BillingClient.BillingResponseCode.OK:
+- // only one item, for now
+- for (Purchase purchase: purchases) {
+- handlePurchase(purchase);
+- }
+- break;
+-
+- case BillingClient.BillingResponseCode.ITEM_ALREADY_OWNED:
+- // this shouldn't happen with our current logic!
+- Log.w(LOG_TAG, "Item already owned");
+- JNIWrappers.donationSuccessful();
+- break;
+-
+- case BillingClient.BillingResponseCode.DEVELOPER_ERROR:
+- Log.e(LOG_TAG, "Dev Error: " + billingResult.getDebugMessage());
+- break;
+-
+- case BillingClient.BillingResponseCode.USER_CANCELED:
+- showToast(R.string.cancelled);
+- break;
+-
+- default:
+- showToast(R.string.something_wrong);
+- }
+- }
+-
+- private void handlePurchase(Purchase purchase) {
+- if (purchase.getPurchaseState() == Purchase.PurchaseState.PURCHASED) {
+- ackPurchase(purchase);
+- JNIWrappers.donationSuccessful();
+- }
+- }
+-
+- private void ackPurchase(Purchase purchase) {
+- AcknowledgePurchaseParams params = AcknowledgePurchaseParams
+- .newBuilder()
+- .setPurchaseToken(purchase.getPurchaseToken())
+- .build();
+- mBillingClient.acknowledgePurchase(params, new AcknowledgePurchaseResponseListener() {
+- @Override
+- public void onAcknowledgePurchaseResponse(BillingResult billingResult) {
+- Log.d(LOG_TAG, "BillingResult: " + billingResult.getResponseCode());
+- }
+- });
+- }
+-
+- private static void showToast(final int resourceId) {
+- QtNative.activity().runOnUiThread(new Runnable() {
+- @Override
+- public void run() {
+- Toast.makeText(QtNative.getContext(), resourceId, Toast.LENGTH_LONG).show();
+- }
+- });
+- }
+-
+- public static void startBillingFlow() {
+- if (!getInstance().mBillingClient.isReady()) {
+- getInstance().mBillingClient.startConnection(sInstance);
+- showToast(R.string.something_wrong);
+- return;
+- }
+-
+- if (getInstance().mSkuDetails != null) {
+- // there's only one for nwo
+- for (SkuDetails detail: getInstance().mSkuDetails) {
+- BillingFlowParams flowParams = BillingFlowParams.newBuilder()
+- .setSkuDetails(detail)
+- .build();
+-
+- getInstance().mBillingClient.launchBillingFlow(QtNative.activity(), flowParams);
+- }
+- }
+- }
+-
+- // This method will be called from C++ side, to see if the banner has been purchased.
+- // We only have one item right now, so this will do.
+- public static boolean isBadgePurchased() {
+- Purchase.PurchasesResult purchasesResult =
+- getInstance().mBillingClient.queryPurchases(BillingClient.SkuType.INAPP);
+-
+- if (purchasesResult.getPurchasesList() != null)
+- return !purchasesResult.getPurchasesList().isEmpty();
+- else
+- return false;
+- }
+-
+- public static void endConnection() {
+- getInstance().mBillingClient.endConnection();
+- sInstance = null;
+- }
+-}
+diff --git a/packaging/android/apk/src/org/krita/android/JNIWrappers.java b/packaging/android/apk/src/org/krita/android/JNIWrappers.java
+index 781a6ac7cd..d91a899436 100644
+--- a/packaging/android/apk/src/org/krita/android/JNIWrappers.java
++++ b/packaging/android/apk/src/org/krita/android/JNIWrappers.java
+@@ -22,7 +22,6 @@ package org.krita.android;
+ class JNIWrappers {
+ public static native void saveState();
+ public static native void exitFullScreen();
+- public static native void donationSuccessful();
+ public static native void openFileFromIntent(String uri);
+ }
+
+diff --git a/packaging/android/apk/src/org/krita/android/MainActivity.java b/packaging/android/apk/src/org/krita/android/MainActivity.java
+index 9e7cb47280..4a4f9c8554 100644
+--- a/packaging/android/apk/src/org/krita/android/MainActivity.java
++++ b/packaging/android/apk/src/org/krita/android/MainActivity.java
+@@ -54,8 +54,6 @@ public class MainActivity extends QtActivity {
+
+ super.onCreate(savedInstanceState);
+ new ConfigsManager().handleAssets(this);
+-
+- DonationHelper.getInstance();
+ }
+
+ @Override