From e4b96e823eeb0d888ef85981cc7e16cdd1577096 Mon Sep 17 00:00:00 2001
From: Akira Ohgaki <akiraohgaki@gmail.com>
Date: Wed, 26 Oct 2016 06:11:19 +0900
Subject: [PATCH] Import qt-libs

---
 src/libs/utils/android.cpp | 38 ++++++++++++++++++++++++++++++++++++++
 src/libs/utils/android.h   | 28 ++++++++++++++++++++++++++++
 src/libs/utils/config.cpp  | 11 +++++++++++
 src/libs/utils/config.h    | 16 ++++++++++++----
 src/libs/utils/file.cpp    | 11 +++++++++++
 src/libs/utils/file.h      | 16 ++++++++++++----
 src/libs/utils/json.cpp    | 11 +++++++++++
 src/libs/utils/json.h      | 16 ++++++++++++----
 src/libs/utils/network.cpp | 11 +++++++++++
 src/libs/utils/network.h   | 16 ++++++++++++----
 src/libs/utils/package.cpp | 11 +++++++++++
 src/libs/utils/package.h   | 16 ++++++++++++----
 12 files changed, 181 insertions(+), 20 deletions(-)
 create mode 100644 src/libs/utils/android.cpp
 create mode 100644 src/libs/utils/android.h

diff --git a/src/libs/utils/android.cpp b/src/libs/utils/android.cpp
new file mode 100644
index 0000000..9cca280
--- /dev/null
+++ b/src/libs/utils/android.cpp
@@ -0,0 +1,38 @@
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
+#include "android.h"
+
+#include <QAndroidJniObject>
+
+namespace utils {
+
+Android::Android(QObject *parent) : QObject(parent)
+{}
+
+bool Android::openApk(const QString &uri)
+{
+    QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
+    if (activity.isValid()) {
+        QAndroidJniObject fileUri = QAndroidJniObject::fromString(uri);
+        QAndroidJniObject parsedUri = QAndroidJniObject::callStaticObjectMethod("android/net/Uri", "parse", "(Ljava/lang/String;)Landroid/net/Uri;", fileUri.object());
+        QAndroidJniObject mimeType = QAndroidJniObject::fromString("application/vnd.android.package-archive");
+        QAndroidJniObject activityKind = QAndroidJniObject::fromString("android.intent.action.VIEW");
+        QAndroidJniObject intent("android/content/Intent", "(Ljava/lang/String;)V", activityKind.object());
+        intent = intent.callObjectMethod("setDataAndType", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;", parsedUri.object(), mimeType.object());
+        intent = intent.callObjectMethod("setFlags", "(I)Landroid/content/Intent;", 0x10000000); // 0x10000000 = FLAG_ACTIVITY_NEW_TASK
+        activity.callObjectMethod("startActivity", "(Landroid/content/Intent;)V", intent.object());
+        return true;
+    }
+    return false;
+}
+
+} // namespace utils
diff --git a/src/libs/utils/android.h b/src/libs/utils/android.h
new file mode 100644
index 0000000..bbbccd3
--- /dev/null
+++ b/src/libs/utils/android.h
@@ -0,0 +1,28 @@
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
+#pragma once
+
+#include <QObject>
+
+namespace utils {
+
+class Android : public QObject
+{
+    Q_OBJECT
+
+public:
+    explicit Android(QObject *parent = 0);
+
+    static bool openApk(const QString &uri);
+};
+
+} // namespace utils
diff --git a/src/libs/utils/config.cpp b/src/libs/utils/config.cpp
index 6da4ada..13b1018 100644
--- a/src/libs/utils/config.cpp
+++ b/src/libs/utils/config.cpp
@@ -1,3 +1,14 @@
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
 #include "config.h"
 
 #include "file.h"
diff --git a/src/libs/utils/config.h b/src/libs/utils/config.h
index 02a3f67..9949407 100644
--- a/src/libs/utils/config.h
+++ b/src/libs/utils/config.h
@@ -1,5 +1,15 @@
-#ifndef UTILS_CONFIG_H
-#define UTILS_CONFIG_H
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
+#pragma once
 
 #include <QObject>
 #include <QJsonObject>
@@ -22,5 +32,3 @@ private:
 };
 
 } // namespace utils
-
-#endif // UTILS_CONFIG_H
diff --git a/src/libs/utils/file.cpp b/src/libs/utils/file.cpp
index 0548269..04195c3 100644
--- a/src/libs/utils/file.cpp
+++ b/src/libs/utils/file.cpp
@@ -1,3 +1,14 @@
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
 #include "file.h"
 
 #include <QIODevice>
diff --git a/src/libs/utils/file.h b/src/libs/utils/file.h
index 6fbfa91..01cf4d6 100644
--- a/src/libs/utils/file.h
+++ b/src/libs/utils/file.h
@@ -1,5 +1,15 @@
-#ifndef UTILS_FILE_H
-#define UTILS_FILE_H
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
+#pragma once
 
 #include <QObject>
 
@@ -34,5 +44,3 @@ public:
 };
 
 } // namespace utils
-
-#endif // UTILS_FILE_H
diff --git a/src/libs/utils/json.cpp b/src/libs/utils/json.cpp
index 027405b..1573c84 100644
--- a/src/libs/utils/json.cpp
+++ b/src/libs/utils/json.cpp
@@ -1,3 +1,14 @@
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
 #include "json.h"
 
 #include <QJsonDocument>
diff --git a/src/libs/utils/json.h b/src/libs/utils/json.h
index d78c6b5..f53527a 100644
--- a/src/libs/utils/json.h
+++ b/src/libs/utils/json.h
@@ -1,5 +1,15 @@
-#ifndef UTILS_JSON_H
-#define UTILS_JSON_H
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
+#pragma once
 
 #include <QObject>
 
@@ -18,5 +28,3 @@ public:
 };
 
 } // namespace utils
-
-#endif // UTILS_JSON_H
diff --git a/src/libs/utils/network.cpp b/src/libs/utils/network.cpp
index d299eed..2256a94 100644
--- a/src/libs/utils/network.cpp
+++ b/src/libs/utils/network.cpp
@@ -1,3 +1,14 @@
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
 #include "network.h"
 
 #include <QEventLoop>
diff --git a/src/libs/utils/network.h b/src/libs/utils/network.h
index a8cf812..fcb8350 100644
--- a/src/libs/utils/network.h
+++ b/src/libs/utils/network.h
@@ -1,5 +1,15 @@
-#ifndef UTILS_NETWORK_H
-#define UTILS_NETWORK_H
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
+#pragma once
 
 #include <QObject>
 
@@ -31,5 +41,3 @@ private:
 };
 
 } // namespace utils
-
-#endif // UTILS_NETWORK_H
diff --git a/src/libs/utils/package.cpp b/src/libs/utils/package.cpp
index 2edfba7..6196c06 100644
--- a/src/libs/utils/package.cpp
+++ b/src/libs/utils/package.cpp
@@ -1,3 +1,14 @@
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
 #include "package.h"
 
 #include <QJsonObject>
diff --git a/src/libs/utils/package.h b/src/libs/utils/package.h
index 2fe8cfb..9f086dd 100644
--- a/src/libs/utils/package.h
+++ b/src/libs/utils/package.h
@@ -1,5 +1,15 @@
-#ifndef UTILS_PACKAGE_H
-#define UTILS_PACKAGE_H
+/**
+ * A library for Qt app
+ *
+ * LICENSE: The GNU Lesser General Public License, version 3.0
+ *
+ * @author      Akira Ohgaki <akiraohgaki@gmail.com>
+ * @copyright   Akira Ohgaki
+ * @license     https://opensource.org/licenses/LGPL-3.0  The GNU Lesser General Public License, version 3.0
+ * @link        https://github.com/akiraohgaki/qt-libs
+ */
+
+#pragma once
 
 #include <QObject>
 
@@ -23,5 +33,3 @@ private:
 };
 
 } // namespace utils
-
-#endif // UTILS_PACKAGE_H
-- 
GitLab