From 11b274a729624bf88b468297c0f10c121073f1a1 Mon Sep 17 00:00:00 2001
From: Akira Ohgaki <akiraohgaki@gmail.com>
Date: Mon, 27 Feb 2017 03:37:33 +0900
Subject: [PATCH] Remove qtlib

---
 lib/qtlib/.gitignore                    |   1 -
 lib/qtlib/README.md                     |   7 -
 lib/qtlib/qtlib.pri                     |  31 ---
 lib/qtlib/qtlib.pro                     |   3 -
 lib/qtlib/src/qtlib_config.cpp          |  62 -----
 lib/qtlib/src/qtlib_config.h            |  37 ---
 lib/qtlib/src/qtlib_dir.cpp             | 157 -------------
 lib/qtlib/src/qtlib_dir.h               |  51 -----
 lib/qtlib/src/qtlib_file.cpp            | 112 ---------
 lib/qtlib/src/qtlib_file.h              |  42 ----
 lib/qtlib/src/qtlib_json.cpp            | 100 --------
 lib/qtlib/src/qtlib_json.h              |  46 ----
 lib/qtlib/src/qtlib_networkresource.cpp | 289 ------------------------
 lib/qtlib/src/qtlib_networkresource.h   |  90 --------
 lib/qtlib/src/qtlib_ocsapi.cpp          | 197 ----------------
 lib/qtlib/src/qtlib_ocsapi.h            |  58 -----
 lib/qtlib/src/qtlib_package.cpp         | 171 --------------
 lib/qtlib/src/qtlib_package.h           |  49 ----
 18 files changed, 1503 deletions(-)
 delete mode 100644 lib/qtlib/.gitignore
 delete mode 100644 lib/qtlib/README.md
 delete mode 100644 lib/qtlib/qtlib.pri
 delete mode 100644 lib/qtlib/qtlib.pro
 delete mode 100644 lib/qtlib/src/qtlib_config.cpp
 delete mode 100644 lib/qtlib/src/qtlib_config.h
 delete mode 100644 lib/qtlib/src/qtlib_dir.cpp
 delete mode 100644 lib/qtlib/src/qtlib_dir.h
 delete mode 100644 lib/qtlib/src/qtlib_file.cpp
 delete mode 100644 lib/qtlib/src/qtlib_file.h
 delete mode 100644 lib/qtlib/src/qtlib_json.cpp
 delete mode 100644 lib/qtlib/src/qtlib_json.h
 delete mode 100644 lib/qtlib/src/qtlib_networkresource.cpp
 delete mode 100644 lib/qtlib/src/qtlib_networkresource.h
 delete mode 100644 lib/qtlib/src/qtlib_ocsapi.cpp
 delete mode 100644 lib/qtlib/src/qtlib_ocsapi.h
 delete mode 100644 lib/qtlib/src/qtlib_package.cpp
 delete mode 100644 lib/qtlib/src/qtlib_package.h

diff --git a/lib/qtlib/.gitignore b/lib/qtlib/.gitignore
deleted file mode 100644
index 75c107b..0000000
--- a/lib/qtlib/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.pro.user
diff --git a/lib/qtlib/README.md b/lib/qtlib/README.md
deleted file mode 100644
index c042d94..0000000
--- a/lib/qtlib/README.md
+++ /dev/null
@@ -1,7 +0,0 @@
-# qtlib
-
-A library for Qt app.
-
-Copyright: Akira Ohgaki
-
-License: LGPL-3+
diff --git a/lib/qtlib/qtlib.pri b/lib/qtlib/qtlib.pri
deleted file mode 100644
index 8d8e381..0000000
--- a/lib/qtlib/qtlib.pri
+++ /dev/null
@@ -1,31 +0,0 @@
-QT += \
-    core \
-    network
-
-HEADERS += \
-    $${PWD}/src/qtlib_file.h \
-    $${PWD}/src/qtlib_dir.h \
-    $${PWD}/src/qtlib_json.h \
-    $${PWD}/src/qtlib_config.h \
-    $${PWD}/src/qtlib_networkresource.h \
-    $${PWD}/src/qtlib_ocsapi.h \
-    $${PWD}/src/qtlib_package.h
-
-SOURCES += \
-    $${PWD}/src/qtlib_file.cpp \
-    $${PWD}/src/qtlib_dir.cpp \
-    $${PWD}/src/qtlib_json.cpp \
-    $${PWD}/src/qtlib_config.cpp \
-    $${PWD}/src/qtlib_networkresource.cpp \
-    $${PWD}/src/qtlib_ocsapi.cpp \
-    $${PWD}/src/qtlib_package.cpp
-
-INCLUDEPATH += $${PWD}/src
-
-unix:!ios:!android {
-    DEFINES += QTLIB_UNIX
-}
-
-android {
-    QT += androidextras
-}
diff --git a/lib/qtlib/qtlib.pro b/lib/qtlib/qtlib.pro
deleted file mode 100644
index 9d4fe42..0000000
--- a/lib/qtlib/qtlib.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-include(qtlib.pri)
-
-DISTFILES += README.md
diff --git a/lib/qtlib/src/qtlib_config.cpp b/lib/qtlib/src/qtlib_config.cpp
deleted file mode 100644
index 0c7b396..0000000
--- a/lib/qtlib/src/qtlib_config.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#include "qtlib_config.h"
-
-#include "qtlib_file.h"
-#include "qtlib_dir.h"
-#include "qtlib_json.h"
-
-namespace qtlib {
-
-Config::Config(const QString &configDirPath, QObject *parent)
-    : QObject(parent), configDirPath_(configDirPath)
-{}
-
-Config::Config(const Config &other, QObject *parent)
-    : QObject(parent)
-{
-    setConfigDirPath(other.configDirPath());
-}
-
-Config &Config::operator =(const Config &other)
-{
-    setConfigDirPath(other.configDirPath());
-    return *this;
-}
-
-QString Config::configDirPath() const
-{
-    return configDirPath_;
-}
-
-void Config::setConfigDirPath(const QString &configDirPath)
-{
-    configDirPath_ = configDirPath;
-}
-
-QJsonObject Config::get(const QString &name)
-{
-    QString configFilePath = configDirPath() + "/" + name + ".json";
-    QByteArray json = qtlib::File(configFilePath).readData();
-    if (json.isEmpty()) {
-        json = QString("{}").toUtf8(); // Blank JSON data as default
-    }
-    return qtlib::Json(json).toObject();
-}
-
-bool Config::set(const QString &name, const QJsonObject &object)
-{
-    QString configFilePath = configDirPath() + "/" + name + ".json";
-    QByteArray json = qtlib::Json(object).toJson();
-    qtlib::Dir(configDirPath()).make();
-    return qtlib::File(configFilePath).writeData(json);
-}
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_config.h b/lib/qtlib/src/qtlib_config.h
deleted file mode 100644
index 456a9b6..0000000
--- a/lib/qtlib/src/qtlib_config.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#pragma once
-
-#include <QObject>
-#include <QJsonObject>
-
-namespace qtlib {
-
-class Config : public QObject
-{
-    Q_OBJECT
-
-public:
-    explicit Config(const QString &configDirPath = "", QObject *parent = 0);
-
-    Config(const Config &other, QObject *parent = 0);
-    Config &operator =(const Config &other);
-
-    QString configDirPath() const;
-    void setConfigDirPath(const QString &configDirPath);
-
-    QJsonObject get(const QString &name);
-    bool set(const QString &name, const QJsonObject &object);
-
-private:
-    QString configDirPath_;
-};
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_dir.cpp b/lib/qtlib/src/qtlib_dir.cpp
deleted file mode 100644
index 94512f2..0000000
--- a/lib/qtlib/src/qtlib_dir.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#include "qtlib_dir.h"
-
-#include <QDir>
-#include <QFile>
-#include <QFileInfo>
-#include <QStandardPaths>
-
-namespace qtlib {
-
-Dir::Dir(const QString &path, QObject *parent)
-    : QObject(parent), path_(path)
-{}
-
-Dir::Dir(const Dir &other, QObject *parent)
-    : QObject(parent)
-{
-    setPath(other.path());
-}
-
-Dir &Dir::operator =(const Dir &other)
-{
-    setPath(other.path());
-    return *this;
-}
-
-QString Dir::path() const
-{
-    return path_;
-}
-
-void Dir::setPath(const QString &path)
-{
-    path_ = path;
-}
-
-bool Dir::exists()
-{
-    return QDir(path()).exists();
-}
-
-QFileInfoList Dir::list()
-{
-    QDir dir(path());
-    dir.setFilter(QDir::AllEntries | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot);
-    //dir.setSorting(QDir::DirsFirst | QDir::Name);
-    return dir.entryInfoList();
-}
-
-bool Dir::make()
-{
-    // This function will create all parent directories
-    QDir dir(path());
-    if (!dir.exists() && dir.mkpath(path())) {
-        return true;
-    }
-    return false;
-}
-
-bool Dir::copy(const QString &newPath)
-{
-    // This function will copy files recursively
-    return copyRecursively(path(), newPath);
-}
-
-bool Dir::move(const QString &newPath)
-{
-    return QDir(path()).rename(path(), newPath);
-}
-
-bool Dir::remove()
-{
-    // This function will remove files recursively
-    return QDir(path()).removeRecursively();
-}
-
-QString Dir::rootPath()
-{
-    return QDir::rootPath();
-}
-
-QString Dir::tempPath()
-{
-    return QDir::tempPath();
-}
-
-QString Dir::homePath()
-{
-    return QDir::homePath();
-}
-
-QString Dir::genericDataPath()
-{
-    return QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
-}
-
-QString Dir::genericConfigPath()
-{
-    return QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
-}
-
-QString Dir::genericCachePath()
-{
-    return QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation);
-}
-
-QString Dir::kdehomePath()
-{
-    // KDE System Administration/Environment Variables
-    // https://userbase.kde.org/KDE_System_Administration/Environment_Variables
-
-    // KDE 4 maybe uses $KDEHOME
-    QString kdehomePath = QString::fromLocal8Bit(qgetenv("KDEHOME").constData());
-    if (kdehomePath.isEmpty()) {
-        kdehomePath = homePath() + "/.kde";
-    }
-    return kdehomePath;
-}
-
-bool Dir::copyRecursively(const QString &srcPath, const QString &newPath)
-{
-    QFileInfo fileInfo(srcPath);
-    if (fileInfo.isSymLink() && !fileInfo.exists()) {
-        // Ignore broken symlink
-        return true;
-    }
-    else if (fileInfo.isFile()) {
-        return QFile(srcPath).copy(newPath);
-    }
-    else if (fileInfo.isDir()) {
-        QDir newDir(newPath);
-        QString newDirName = newDir.dirName();
-        newDir.cdUp();
-        if (newDir.mkdir(newDirName)) {
-            QDir dir(srcPath);
-            dir.setFilter(QDir::AllEntries | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot);
-            QStringList entries = dir.entryList();
-            foreach (const QString &entry, entries) {
-                if (!copyRecursively(srcPath + "/" + entry, newPath + "/" + entry)) {
-                    return false;
-                }
-            }
-            return true;
-        }
-    }
-    return false;
-}
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_dir.h b/lib/qtlib/src/qtlib_dir.h
deleted file mode 100644
index a8b5a5e..0000000
--- a/lib/qtlib/src/qtlib_dir.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#pragma once
-
-#include <QObject>
-#include <QFileInfoList>
-
-namespace qtlib {
-
-class Dir : public QObject
-{
-    Q_OBJECT
-
-public:
-    explicit Dir(const QString &path = "", QObject *parent = 0);
-
-    Dir(const Dir &other, QObject *parent = 0);
-    Dir &operator =(const Dir &other);
-
-    QString path() const;
-    void setPath(const QString &path);
-
-    bool exists();
-    QFileInfoList list();
-    bool make();
-    bool copy(const QString &newPath);
-    bool move(const QString &newPath);
-    bool remove();
-
-    static QString rootPath();
-    static QString tempPath();
-    static QString homePath();
-    static QString genericDataPath();
-    static QString genericConfigPath();
-    static QString genericCachePath();
-    static QString kdehomePath();
-
-private:
-    bool copyRecursively(const QString &srcPath, const QString &newPath);
-
-    QString path_;
-};
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_file.cpp b/lib/qtlib/src/qtlib_file.cpp
deleted file mode 100644
index ac4f740..0000000
--- a/lib/qtlib/src/qtlib_file.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#include "qtlib_file.h"
-
-#include <QIODevice>
-#include <QTextStream>
-#include <QFile>
-
-namespace qtlib {
-
-File::File(const QString &path, QObject *parent)
-    : QObject(parent), path_(path)
-{}
-
-File::File(const File &other, QObject *parent)
-    : QObject(parent)
-{
-    setPath(other.path());
-}
-
-File &File::operator =(const File &other)
-{
-    setPath(other.path());
-    return *this;
-}
-
-QString File::path() const
-{
-    return path_;
-}
-
-void File::setPath(const QString &path)
-{
-    path_ = path;
-}
-
-bool File::exists()
-{
-    return QFile(path()).exists();
-}
-
-QByteArray File::readData()
-{
-    QByteArray data;
-    QFile file(path());
-    if (file.exists() && file.open(QIODevice::ReadOnly)) {
-        data = file.readAll();
-        file.close();
-    }
-    return data;
-}
-
-bool File::writeData(const QByteArray &data)
-{
-    QFile file(path());
-    if (file.open(QIODevice::WriteOnly)) {
-        file.write(data);
-        file.close();
-        return true;
-    }
-    return false;
-}
-
-QString File::readText()
-{
-    QString data;
-    QFile file(path());
-    if (file.exists() && file.open(QIODevice::ReadOnly | QIODevice::Text)) {
-        QTextStream in(&file);
-        in.setCodec("UTF-8");
-        data = in.readAll();
-        file.close();
-    }
-    return data;
-}
-
-bool File::writeText(const QString &data)
-{
-    QFile file(path());
-    if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
-        QTextStream out(&file);
-        out.setCodec("UTF-8");
-        out << data;
-        file.close();
-        return true;
-    }
-    return false;
-}
-
-bool File::copy(const QString &newPath)
-{
-    return QFile(path()).copy(newPath);
-}
-
-bool File::move(const QString &newPath)
-{
-    return QFile(path()).rename(newPath);
-}
-
-bool File::remove()
-{
-    return QFile(path()).remove();
-}
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_file.h b/lib/qtlib/src/qtlib_file.h
deleted file mode 100644
index 5804b19..0000000
--- a/lib/qtlib/src/qtlib_file.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#pragma once
-
-#include <QObject>
-
-namespace qtlib {
-
-class File : public QObject
-{
-    Q_OBJECT
-
-public:
-    explicit File(const QString &path = "", QObject *parent = 0);
-
-    File(const File &other, QObject *parent = 0);
-    File &operator =(const File &other);
-
-    QString path() const;
-    void setPath(const QString &path);
-
-    bool exists();
-    QByteArray readData();
-    bool writeData(const QByteArray &data);
-    QString readText();
-    bool writeText(const QString &data);
-    bool copy(const QString &newPath);
-    bool move(const QString &newPath);
-    bool remove();
-
-private:
-    QString path_;
-};
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_json.cpp b/lib/qtlib/src/qtlib_json.cpp
deleted file mode 100644
index 49faa10..0000000
--- a/lib/qtlib/src/qtlib_json.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#include "qtlib_json.h"
-
-#include <QJsonDocument>
-#include <QJsonParseError>
-
-namespace qtlib {
-
-Json::Json(const QByteArray &json, QObject *parent)
-    : QObject(parent), json_(json)
-{}
-
-Json::Json(const QJsonObject &object, QObject *parent)
-    : QObject(parent)
-{
-    fromObject(object);
-}
-
-Json::Json(const QJsonArray &array, QObject *parent)
-    : QObject(parent)
-{
-    fromArray(array);
-}
-
-Json::Json(const Json &other, QObject *parent)
-    : QObject(parent)
-{
-    setJson(other.json());
-}
-
-Json &Json::operator =(const Json &other)
-{
-    setJson(other.json());
-    return *this;
-}
-
-QByteArray Json::json() const
-{
-    return json_;
-}
-
-void Json::setJson(const QByteArray &json)
-{
-    json_ = json;
-}
-
-void Json::fromObject(const QJsonObject &object)
-{
-    setJson(QJsonDocument(object).toJson());
-}
-
-void Json::fromArray(const QJsonArray &array)
-{
-    setJson(QJsonDocument(array).toJson());
-}
-
-QByteArray Json::toJson()
-{
-    return QJsonDocument::fromJson(json()).toJson();
-}
-
-QJsonObject Json::toObject()
-{
-    return QJsonDocument::fromJson(json()).object();
-}
-
-QJsonArray Json::toArray()
-{
-    return QJsonDocument::fromJson(json()).array();
-}
-
-bool Json::isValid()
-{
-    QJsonParseError parseError;
-    QJsonDocument::fromJson(json(), &parseError);
-    if (parseError.error == QJsonParseError::NoError) {
-        return true;
-    }
-    return false;
-}
-
-bool Json::isObject()
-{
-    return QJsonDocument::fromJson(json()).isObject();
-}
-
-bool Json::isArray()
-{
-    return QJsonDocument::fromJson(json()).isArray();
-}
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_json.h b/lib/qtlib/src/qtlib_json.h
deleted file mode 100644
index 5cb9a60..0000000
--- a/lib/qtlib/src/qtlib_json.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#pragma once
-
-#include <QObject>
-#include <QJsonObject>
-#include <QJsonArray>
-
-namespace qtlib {
-
-class Json : public QObject
-{
-    Q_OBJECT
-
-public:
-    explicit Json(const QByteArray &json = QByteArray(), QObject *parent = 0);
-    explicit Json(const QJsonObject &object, QObject *parent = 0);
-    explicit Json(const QJsonArray &array, QObject *parent = 0);
-
-    Json(const Json &other, QObject *parent = 0);
-    Json &operator =(const Json &other);
-
-    QByteArray json() const;
-    void setJson(const QByteArray &json);
-
-    void fromObject(const QJsonObject &object);
-    void fromArray(const QJsonArray &array);
-    QByteArray toJson();
-    QJsonObject toObject();
-    QJsonArray toArray();
-    bool isValid();
-    bool isObject();
-    bool isArray();
-
-private:
-    QByteArray json_;
-};
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_networkresource.cpp b/lib/qtlib/src/qtlib_networkresource.cpp
deleted file mode 100644
index e7d415e..0000000
--- a/lib/qtlib/src/qtlib_networkresource.cpp
+++ /dev/null
@@ -1,289 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#include "qtlib_networkresource.h"
-
-#include <QEventLoop>
-
-#include "qtlib_file.h"
-
-namespace qtlib {
-
-NetworkResource::NetworkResource(const QString &id, const QUrl &url, bool async, QObject *parent)
-    : QObject(parent), id_(id), url_(url), async_(async)
-{
-    setManager(new QNetworkAccessManager(this));
-}
-
-NetworkResource::~NetworkResource()
-{
-    manager()->deleteLater();
-}
-
-NetworkResource::NetworkResource(const NetworkResource &other, QObject *parent)
-    : QObject(parent)
-{
-    setId(other.id());
-    setUrl(other.url());
-    setAsync(other.async());
-    setRequest(other.request());
-    setManager(new QNetworkAccessManager(this));
-}
-
-NetworkResource &NetworkResource::operator =(const NetworkResource &other)
-{
-    setId(other.id());
-    setUrl(other.url());
-    setAsync(other.async());
-    setRequest(other.request());
-    return *this;
-}
-
-QString NetworkResource::id() const
-{
-    return id_;
-}
-
-void NetworkResource::setId(const QString &id)
-{
-    id_ = id;
-}
-
-QUrl NetworkResource::url() const
-{
-    return url_;
-}
-
-void NetworkResource::setUrl(const QUrl &url)
-{
-    url_ = url;
-}
-
-bool NetworkResource::async() const
-{
-    return async_;
-}
-
-void NetworkResource::setAsync(bool async)
-{
-    async_ = async;
-}
-
-QNetworkRequest NetworkResource::request() const
-{
-    return request_;
-}
-
-void NetworkResource::setRequest(const QNetworkRequest &request)
-{
-    request_ = request;
-}
-
-QNetworkAccessManager *NetworkResource::manager() const
-{
-    return manager_;
-}
-
-QNetworkReply *NetworkResource::reply() const
-{
-    return reply_;
-}
-
-QString NetworkResource::method() const
-{
-    return method_;
-}
-
-QString NetworkResource::contentType() const
-{
-    return contentType_;
-}
-
-QByteArray NetworkResource::contentData() const
-{
-    return contentData_;
-}
-
-NetworkResource *NetworkResource::head()
-{
-    setMethod("HEAD");
-    return send(url(), async());
-}
-
-NetworkResource *NetworkResource::get()
-{
-    setMethod("GET");
-    return send(url(), async());
-}
-
-NetworkResource *NetworkResource::post(const QByteArray &contentData, const QString &contentType)
-{
-    setMethod("POST");
-    setContentType(contentType);
-    setContentData(contentData);
-    return send(url(), async());
-}
-
-NetworkResource *NetworkResource::post(const QUrlQuery &contentData)
-{
-    setMethod("POST");
-    setContentType("application/x-www-form-urlencoded");
-    setContentData(contentData.toString(QUrl::FullyEncoded).toUtf8());
-    return send(url(), async());
-}
-
-NetworkResource *NetworkResource::put(const QByteArray &contentData, const QString &contentType)
-{
-    setMethod("PUT");
-    setContentType(contentType);
-    setContentData(contentData);
-    return send(url(), async());
-}
-
-NetworkResource *NetworkResource::put(const QUrlQuery &contentData)
-{
-    setMethod("PUT");
-    setContentType("application/x-www-form-urlencoded");
-    setContentData(contentData.toString(QUrl::FullyEncoded).toUtf8());
-    return send(url(), async());
-}
-
-NetworkResource *NetworkResource::deleteResource()
-{
-    setMethod("DELETE");
-    return send(url(), async());
-}
-
-bool NetworkResource::isFinishedWithNoError()
-{
-    if (reply()->isFinished() && reply()->error() == QNetworkReply::NoError) {
-        return true;
-    }
-    return false;
-}
-
-QByteArray NetworkResource::readData()
-{
-    QByteArray data;
-    if (isFinishedWithNoError()) {
-        data = reply()->readAll();
-    }
-    return data;
-}
-
-bool NetworkResource::saveData(const QString &path)
-{
-    if (isFinishedWithNoError()) {
-        return qtlib::File(path).writeData(reply()->readAll());
-    }
-    return false;
-}
-
-void NetworkResource::abort()
-{
-    if (reply()->isRunning()) {
-        reply()->abort();
-    }
-}
-
-void NetworkResource::replyFinished()
-{
-    if (isFinishedWithNoError()) {
-        // Check if redirection
-        // Note: An auto redirection option is available since Qt 5.6
-        QUrl redirectUrl;
-        if (reply()->hasRawHeader("Location")) {
-            redirectUrl.setUrl(QString(reply()->rawHeader("Location")));
-        }
-        else if (reply()->hasRawHeader("Refresh")) {
-            redirectUrl.setUrl(QString(reply()->rawHeader("Refresh")).split("url=").last());
-        }
-        if (!redirectUrl.isEmpty()) {
-            if (redirectUrl.isRelative()) {
-                redirectUrl = reply()->url().resolved(redirectUrl);
-            }
-            reply()->deleteLater();
-            send(redirectUrl, true);
-            return;
-        }
-    }
-    emit finished(this);
-}
-
-void NetworkResource::replyDownloadProgress(qint64 bytesReceived, qint64 bytesTotal)
-{
-    emit downloadProgress(id(), bytesReceived, bytesTotal);
-}
-
-void NetworkResource::replyUploadProgress(qint64 bytesSent, qint64 bytesTotal)
-{
-    emit uploadProgress(id(), bytesSent, bytesTotal);
-}
-
-void NetworkResource::setManager(QNetworkAccessManager *manager)
-{
-    manager_ = manager;
-}
-
-void NetworkResource::setReply(QNetworkReply *reply)
-{
-    reply_ = reply;
-}
-
-void NetworkResource::setMethod(const QString &method)
-{
-    method_ = method;
-}
-
-void NetworkResource::setContentType(const QString &contentType)
-{
-    contentType_ = contentType;
-}
-
-void NetworkResource::setContentData(const QByteArray &contentData)
-{
-    contentData_ = contentData;
-}
-
-NetworkResource *NetworkResource::send(const QUrl &url, bool async)
-{
-    QNetworkRequest networkRequest = request();
-    networkRequest.setUrl(url);
-    if (method() == "HEAD") {
-        setReply(manager()->head(networkRequest));
-    }
-    else if (method() == "GET") {
-        setReply(manager()->get(networkRequest));
-    }
-    else if (method() == "POST") {
-        networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(contentType()));
-        setReply(manager()->post(networkRequest, contentData()));
-    }
-    else if (method() == "PUT") {
-        networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, QVariant(contentType()));
-        setReply(manager()->put(networkRequest, contentData()));
-    }
-    else if (method() == "DELETE") {
-        setReply(manager()->deleteResource(networkRequest));
-    }
-    else {
-        Q_ASSERT(false);
-    }
-    connect(reply(), &QNetworkReply::finished, this, &NetworkResource::replyFinished);
-    connect(reply(), &QNetworkReply::downloadProgress, this, &NetworkResource::replyDownloadProgress);
-    connect(reply(), &QNetworkReply::uploadProgress, this, &NetworkResource::replyUploadProgress);
-    if (!async) {
-        QEventLoop eventLoop;
-        connect(this, &NetworkResource::finished, &eventLoop, &QEventLoop::quit);
-        eventLoop.exec();
-    }
-    return this;
-}
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_networkresource.h b/lib/qtlib/src/qtlib_networkresource.h
deleted file mode 100644
index beae8fc..0000000
--- a/lib/qtlib/src/qtlib_networkresource.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#pragma once
-
-#include <QObject>
-#include <QUrl>
-#include <QUrlQuery>
-#include <QNetworkRequest>
-#include <QNetworkAccessManager>
-#include <QNetworkReply>
-
-namespace qtlib {
-
-class NetworkResource : public QObject
-{
-    Q_OBJECT
-
-public:
-    explicit NetworkResource(const QString &id = "", const QUrl &url = QUrl(), bool async = true, QObject *parent = 0);
-    ~NetworkResource();
-
-    NetworkResource(const NetworkResource &other, QObject *parent = 0);
-    NetworkResource &operator =(const NetworkResource &other);
-
-    QString id() const;
-    void setId(const QString &id);
-    QUrl url() const;
-    void setUrl(const QUrl &url);
-    bool async() const;
-    void setAsync(bool async);
-    QNetworkRequest request() const;
-    void setRequest(const QNetworkRequest &request);
-    QNetworkAccessManager *manager() const;
-    QNetworkReply *reply() const;
-    QString method() const;
-    QString contentType() const;
-    QByteArray contentData() const;
-
-    NetworkResource *head();
-    NetworkResource *get();
-    NetworkResource *post(const QByteArray &contentData, const QString &contentType);
-    NetworkResource *post(const QUrlQuery &contentData);
-    NetworkResource *put(const QByteArray &contentData, const QString &contentType);
-    NetworkResource *put(const QUrlQuery &contentData);
-    NetworkResource *deleteResource();
-    bool isFinishedWithNoError();
-    QByteArray readData();
-    bool saveData(const QString &path);
-
-signals:
-    void finished(NetworkResource *resource);
-    void downloadProgress(QString id, qint64 bytesReceived, qint64 bytesTotal);
-    void uploadProgress(QString id, qint64 bytesSent, qint64 bytesTotal);
-
-public slots:
-    void abort();
-
-private slots:
-    void replyFinished();
-    void replyDownloadProgress(qint64 bytesReceived, qint64 bytesTotal);
-    void replyUploadProgress(qint64 bytesSent, qint64 bytesTotal);
-
-private:
-    void setManager(QNetworkAccessManager *manager);
-    void setReply(QNetworkReply *reply);
-    void setMethod(const QString &method);
-    void setContentType(const QString &contentType);
-    void setContentData(const QByteArray &contentData);
-
-    NetworkResource *send(const QUrl &url, bool async);
-
-    QString id_;
-    QUrl url_;
-    bool async_;
-    QNetworkRequest request_;
-    QNetworkAccessManager *manager_;
-    QNetworkReply *reply_;
-    QString method_;
-    QString contentType_;
-    QByteArray contentData_;
-};
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_ocsapi.cpp b/lib/qtlib/src/qtlib_ocsapi.cpp
deleted file mode 100644
index f9f345d..0000000
--- a/lib/qtlib/src/qtlib_ocsapi.cpp
+++ /dev/null
@@ -1,197 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#include "qtlib_ocsapi.h"
-
-#include <QXmlStreamReader>
-
-#include "qtlib_json.h"
-#include "qtlib_networkresource.h"
-
-namespace qtlib {
-
-// OCS-API Specification
-// https://www.freedesktop.org/wiki/Specifications/open-collaboration-services/
-
-OcsApi::OcsApi(const QString &id, const QUrl &baseUrl, const QString &userName, const QString &password, QObject *parent)
-    : QObject(parent), id_(id), baseUrl_(baseUrl), userName_(userName), password_(password)
-{}
-
-OcsApi::OcsApi(const OcsApi &other, QObject *parent)
-    : QObject(parent)
-{
-    setId(other.id());
-    setBaseUrl(other.baseUrl());
-    setUserName(other.userName());
-    setPassword(other.password());
-}
-
-OcsApi &OcsApi::operator =(const OcsApi &other)
-{
-    setId(other.id());
-    setBaseUrl(other.baseUrl());
-    setUserName(other.userName());
-    setPassword(other.password());
-    return *this;
-}
-
-QString OcsApi::id() const
-{
-    return id_;
-}
-
-void OcsApi::setId(const QString &id)
-{
-    id_ = id;
-}
-
-QUrl OcsApi::baseUrl() const
-{
-    return baseUrl_;
-}
-
-void OcsApi::setBaseUrl(const QUrl &baseUrl)
-{
-    baseUrl_ = baseUrl;
-}
-
-QString OcsApi::userName() const
-{
-    return userName_;
-}
-
-void OcsApi::setUserName(const QString &userName)
-{
-    userName_ = userName;
-}
-
-QString OcsApi::password() const
-{
-    return password_;
-}
-
-void OcsApi::setPassword(const QString &password)
-{
-    password_ = password;
-}
-
-QJsonObject OcsApi::getConfig()
-{
-    QUrl url = baseUrl().resolved(QUrl("config"));
-    url.setQuery("format=json");
-    qtlib::NetworkResource resource(url.toString(), url, false);
-    return qtlib::Json(resource.get()->readData()).toObject();
-}
-
-QJsonObject OcsApi::checkPerson()
-{
-    QUrl url = baseUrl().resolved(QUrl("person/check"));
-    QUrlQuery formData;
-    formData.addQueryItem("login", userName());
-    formData.addQueryItem("password", password());
-    formData.addQueryItem("format", "json");
-    qtlib::NetworkResource resource(url.toString(), url, false);
-    return qtlib::Json(resource.post(formData)->readData()).toObject();
-}
-
-QJsonObject OcsApi::getPersonDataSet(const QUrlQuery &query)
-{
-    QUrl url = baseUrl().resolved(QUrl("person/data"));
-    url.setUserName(userName());
-    url.setPassword(password());
-    QUrlQuery newQuery(query);
-    newQuery.removeQueryItem("format");
-    newQuery.addQueryItem("format", "json");
-    url.setQuery(newQuery);
-    qtlib::NetworkResource resource(url.toString(), url, false);
-    return qtlib::Json(resource.get()->readData()).toObject();
-}
-
-QJsonObject OcsApi::getPersonData(const QString &personId)
-{
-    QUrl url = baseUrl().resolved(QUrl("person/data/" + personId));
-    url.setUserName(userName());
-    url.setPassword(password());
-    url.setQuery("format=json");
-    qtlib::NetworkResource resource(url.toString(), url, false);
-    return qtlib::Json(resource.get()->readData()).toObject();
-}
-
-QJsonObject OcsApi::getPersonSelf()
-{
-    QUrl url = baseUrl().resolved(QUrl("person/self"));
-    url.setUserName(userName());
-    url.setPassword(password());
-    url.setQuery("format=json");
-    qtlib::NetworkResource resource(url.toString(), url, false);
-    return qtlib::Json(resource.get()->readData()).toObject();
-}
-
-QJsonObject OcsApi::getContentCategories()
-{
-    QUrl url = baseUrl().resolved(QUrl("content/categories"));
-    url.setQuery("format=json");
-    qtlib::NetworkResource resource(url.toString(), url, false);
-    return qtlib::Json(resource.get()->readData()).toObject();
-}
-
-QJsonObject OcsApi::getContentDataSet(const QUrlQuery &query)
-{
-    QUrl url = baseUrl().resolved(QUrl("content/data"));
-    QUrlQuery newQuery(query);
-    newQuery.removeQueryItem("format");
-    newQuery.addQueryItem("format", "json");
-    url.setQuery(newQuery);
-    qtlib::NetworkResource resource(url.toString(), url, false);
-    return qtlib::Json(resource.get()->readData()).toObject();
-}
-
-QJsonObject OcsApi::getContentData(const QString &contentId)
-{
-    QUrl url = baseUrl().resolved(QUrl("content/data/" + contentId));
-    url.setQuery("format=json");
-    qtlib::NetworkResource resource(url.toString(), url, false);
-    return qtlib::Json(resource.get()->readData()).toObject();
-}
-
-QJsonObject OcsApi::getContentDownload(const QString &contentId, const QString &itemId)
-{
-    QUrl url = baseUrl().resolved(QUrl("content/download/" + contentId + "/" + itemId));
-    url.setQuery("format=json");
-    qtlib::NetworkResource resource(url.toString(), url, false);
-    return qtlib::Json(resource.get()->readData()).toObject();
-}
-
-QJsonArray OcsApi::getProviderFile(const QUrl &url)
-{
-    QJsonArray providers;
-    qtlib::NetworkResource resource(url.toString(), url, false);
-    QXmlStreamReader reader(resource.get()->readData());
-    QStringList whitelist;
-    whitelist << "id" << "location" << "name" << "icon" << "termsofuse" << "register";
-    while (!reader.atEnd() && !reader.hasError()) {
-        reader.readNext();
-        if (reader.isStartElement() && reader.name() == "provider") {
-            QJsonObject provider;
-            provider["_providerfile"] = url.toString();
-            providers.append(provider);
-            continue;
-        }
-        QString elementName = reader.name().toString();
-        if (!providers.isEmpty() && whitelist.contains(elementName)) {
-            int i(providers.size() - 1);
-            QJsonObject provider = providers[i].toObject();
-            provider[elementName] = reader.readElementText();
-            providers[i] = provider;
-        }
-    }
-    return providers;
-}
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_ocsapi.h b/lib/qtlib/src/qtlib_ocsapi.h
deleted file mode 100644
index 93346d8..0000000
--- a/lib/qtlib/src/qtlib_ocsapi.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#pragma once
-
-#include <QObject>
-#include <QUrl>
-#include <QUrlQuery>
-#include <QJsonObject>
-#include <QJsonArray>
-
-namespace qtlib {
-
-class OcsApi : public QObject
-{
-    Q_OBJECT
-
-public:
-    explicit OcsApi(const QString &id = "", const QUrl &baseUrl = QUrl(), const QString &userName = "", const QString &password = "", QObject *parent = 0);
-
-    OcsApi(const OcsApi &other, QObject *parent = 0);
-    OcsApi &operator =(const OcsApi &other);
-
-    QString id() const;
-    void setId(const QString &id);
-    QUrl baseUrl() const;
-    void setBaseUrl(const QUrl &baseUrl);
-    QString userName() const;
-    void setUserName(const QString &userName);
-    QString password() const;
-    void setPassword(const QString &password);
-
-    QJsonObject getConfig();
-    QJsonObject checkPerson();
-    QJsonObject getPersonDataSet(const QUrlQuery &query = QUrlQuery());
-    QJsonObject getPersonData(const QString &personId);
-    QJsonObject getPersonSelf();
-    QJsonObject getContentCategories();
-    QJsonObject getContentDataSet(const QUrlQuery &query = QUrlQuery());
-    QJsonObject getContentData(const QString &contentId);
-    QJsonObject getContentDownload(const QString &contentId, const QString &itemId);
-
-    static QJsonArray getProviderFile(const QUrl &url);
-
-private:
-    QString id_;
-    QUrl baseUrl_;
-    QString userName_;
-    QString password_;
-};
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_package.cpp b/lib/qtlib/src/qtlib_package.cpp
deleted file mode 100644
index fde7612..0000000
--- a/lib/qtlib/src/qtlib_package.cpp
+++ /dev/null
@@ -1,171 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#include "qtlib_package.h"
-
-#ifdef QTLIB_UNIX
-#include <QJsonObject>
-#include <QMimeDatabase>
-#include <QProcess>
-#endif
-
-#ifdef Q_OS_ANDROID
-#include <QAndroidJniObject>
-#endif
-
-namespace qtlib {
-
-Package::Package(const QString &path, QObject *parent)
-    : QObject(parent), path_(path)
-{}
-
-Package::Package(const Package &other, QObject *parent)
-    : QObject(parent)
-{
-    setPath(other.path());
-}
-
-Package &Package::operator =(const Package &other)
-{
-    setPath(other.path());
-    return *this;
-}
-
-QString Package::path() const
-{
-    return path_;
-}
-
-void Package::setPath(const QString &path)
-{
-    path_ = path;
-}
-
-#ifdef QTLIB_UNIX
-bool Package::installAsProgram(const QString &newPath)
-{
-    QStringList arguments;
-    arguments << "-m" << "755" << "-p" << path() << newPath;
-    return execute("install", arguments);
-}
-
-bool Package::installAsFile(const QString &newPath)
-{
-    QStringList arguments;
-    arguments << "-m" << "644" << "-p" << path() << newPath;
-    return execute("install", arguments);
-}
-
-bool Package::installAsArchive(const QString &destinationDirPath)
-{
-    QJsonObject archiveTypes;
-    archiveTypes["application/x-tar"] = QString("tar");
-    archiveTypes["application/x-gzip"] = QString("tar");
-    archiveTypes["application/gzip"] = QString("tar");
-    archiveTypes["application/x-bzip"] = QString("tar");
-    archiveTypes["application/x-bzip2"] = QString("tar");
-    archiveTypes["application/x-xz"] = QString("tar");
-    archiveTypes["application/x-lzma"] = QString("tar");
-    archiveTypes["application/x-lzip"] = QString("tar");
-    archiveTypes["application/x-compressed-tar"] = QString("tar");
-    archiveTypes["application/x-bzip-compressed-tar"] = QString("tar");
-    archiveTypes["application/x-bzip2-compressed-tar"] = QString("tar");
-    archiveTypes["application/x-xz-compressed-tar"] = QString("tar");
-    archiveTypes["application/x-lzma-compressed-tar"] = QString("tar");
-    archiveTypes["application/x-lzip-compressed-tar"] = QString("tar");
-    archiveTypes["application/zip"] = QString("zip");
-    archiveTypes["application/x-7z-compressed"] = QString("7z");
-    archiveTypes["application/x-rar"] = QString("rar");
-    archiveTypes["application/x-rar-compressed"] = QString("rar");
-
-    QString mimeType = QMimeDatabase().mimeTypeForFile(path()).name();
-
-    if (archiveTypes.contains(mimeType)) {
-        QString archiveType = archiveTypes[mimeType].toString();
-        QString program;
-        QStringList arguments;
-        if (archiveType == "tar") {
-            program = "tar";
-            arguments << "-xf" << path() << "-C" << destinationDirPath;
-        }
-        else if (archiveType == "zip") {
-            program = "unzip";
-            arguments << "-o" << path() << "-d" << destinationDirPath;
-        }
-        else if (archiveType == "7z") {
-            program = "7z";
-            arguments << "x" << path() << "-o" + destinationDirPath; // No space between -o and directory
-        }
-        else if (archiveType == "rar") {
-            program = "unrar";
-            arguments << "e" << path() << destinationDirPath;
-        }
-        return execute(program, arguments);
-    }
-    return false;
-}
-
-bool Package::installAsPlasmapkg(const QString &type)
-{
-    QStringList arguments;
-    arguments << "-t" << type << "-i" << path();
-    return execute("plasmapkg2", arguments);
-}
-
-bool Package::uninstallAsPlasmapkg(const QString &type)
-{
-    QStringList arguments;
-    arguments << "-t" << type << "-r" << path();
-    return execute("plasmapkg2", arguments);
-}
-#endif
-
-#ifdef Q_OS_ANDROID
-bool Package::installAsApk()
-{
-    QAndroidJniObject activity = QAndroidJniObject::callStaticObjectMethod("org/qtproject/qt5/android/QtNative", "activity", "()Landroid/app/Activity;");
-    if (activity.isValid()) {
-        QString filePath = path();
-        if (filePath.startsWith("file://", Qt::CaseInsensitive)) {
-            filePath.replace("file://localhost", "", Qt::CaseInsensitive);
-            filePath.replace("file://", "", Qt::CaseInsensitive);
-        }
-
-        QAndroidJniObject fileUri = QAndroidJniObject::fromString("file://" + filePath);
-        QAndroidJniObject uri = QAndroidJniObject::callStaticObjectMethod("android/net/Uri", "parse", "(Ljava/lang/String;)Landroid/net/Uri;", fileUri.object());
-        QAndroidJniObject mimeType = QAndroidJniObject::fromString("application/vnd.android.package-archive");
-
-        QAndroidJniObject ACTION_VIEW = QAndroidJniObject::getStaticObjectField("android/content/Intent", "ACTION_VIEW", "Ljava/lang/String");
-        QAndroidJniObject FLAG_ACTIVITY_NEW_TASK = QAndroidJniObject::getStaticObjectField("android/content/Intent", "FLAG_ACTIVITY_NEW_TASK", "Ljava/lang/Integer");
-
-        QAndroidJniObject intent("android/content/Intent", "(Ljava/lang/String;)V", ACTION_VIEW.object());
-        intent = intent.callObjectMethod("setDataAndType", "(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/Intent;", uri.object(), mimeType.object());
-        intent = intent.callObjectMethod("setFlags", "(I)Landroid/content/Intent;", FLAG_ACTIVITY_NEW_TASK.object());
-
-        activity.callMethod<void>("startActivity", "(Landroid/content/Intent;)V", intent.object());
-        return true;
-    }
-    return false;
-}
-#endif
-
-#ifdef QTLIB_UNIX
-bool Package::execute(const QString &program, const QStringList &arguments)
-{
-    QProcess process;
-    process.start(program, arguments);
-    if (process.waitForFinished()) {
-        process.waitForReadyRead();
-        return true;
-    }
-    return false;
-}
-#endif
-
-} // namespace qtlib
diff --git a/lib/qtlib/src/qtlib_package.h b/lib/qtlib/src/qtlib_package.h
deleted file mode 100644
index e5bd112..0000000
--- a/lib/qtlib/src/qtlib_package.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * qtlib
- *
- * @author      Akira Ohgaki <akiraohgaki@gmail.com>
- * @copyright   Akira Ohgaki
- * @license     https://opensource.org/licenses/LGPL-3.0
- * @link        https://github.com/akiraohgaki/qtlib
- */
-
-#pragma once
-
-#include <QObject>
-
-namespace qtlib {
-
-class Package : public QObject
-{
-    Q_OBJECT
-
-public:
-    explicit Package(const QString &path = "", QObject *parent = 0);
-
-    Package(const Package &other, QObject *parent = 0);
-    Package &operator =(const Package &other);
-
-    QString path() const;
-    void setPath(const QString &path);
-
-#ifdef QTLIB_UNIX
-    bool installAsProgram(const QString &newPath);
-    bool installAsFile(const QString &newPath);
-    bool installAsArchive(const QString &destinationDirPath);
-    bool installAsPlasmapkg(const QString &type = "plasmoid");
-    bool uninstallAsPlasmapkg(const QString &type = "plasmoid");
-#endif
-
-#ifdef Q_OS_ANDROID
-    bool installAsApk();
-#endif
-
-private:
-#ifdef QTLIB_UNIX
-    bool execute(const QString &program, const QStringList &arguments);
-#endif
-
-    QString path_;
-};
-
-} // namespace qtlib
-- 
GitLab