diff options
Diffstat (limited to 'src/plugins/android/androidmanager.h')
-rw-r--r-- | src/plugins/android/androidmanager.h | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/src/plugins/android/androidmanager.h b/src/plugins/android/androidmanager.h new file mode 100644 index 00000000000..6c99b325639 --- /dev/null +++ b/src/plugins/android/androidmanager.h @@ -0,0 +1,177 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2012 BogDan Vatra <[email protected]> +** +** Contact: Nokia Corporation ([email protected]) +** +** +** GNU Lesser General Public License Usage +** +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this file. +** Please review the following information to ensure the GNU Lesser General +** Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** Other Usage +** +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** If you have questions regarding the use of this file, please contact +** Nokia at [email protected]. +** +**************************************************************************/ + +#ifndef ANDROIDMANAGER_H +#define ANDROIDMANAGER_H + +#include <utils/fileutils.h> + +#include <QDomDocument> +#include <QObject> +#include <QStringList> + +namespace ProjectExplorer { class Target; } + +namespace Android { +class AndroidPlugin; + +namespace Internal { + +class AndroidManager : public QObject +{ + Q_OBJECT + +public: + enum BuildType + { + DebugBuild, + ReleaseBuildUnsigned, + ReleaseBuildSigned + }; + + static AndroidManager *instance(); + + ~AndroidManager(); + + static bool supportsAndroid(ProjectExplorer::Target *target); + + static QString packageName(ProjectExplorer::Target *target); + static bool setPackageName(ProjectExplorer::Target *target, const QString &name); + + static QString applicationName(ProjectExplorer::Target *target); + static bool setApplicationName(ProjectExplorer::Target *target, const QString &name); + + static QStringList permissions(ProjectExplorer::Target *target); + static bool setPermissions(ProjectExplorer::Target *target, const QStringList &permissions); + + static QString intentName(ProjectExplorer::Target *target); + static QString activityName(ProjectExplorer::Target *target); + + static int versionCode(ProjectExplorer::Target *target); + static bool setVersionCode(ProjectExplorer::Target *target, int version); + static QString versionName(ProjectExplorer::Target *target); + static bool setVersionName(ProjectExplorer::Target *target, const QString &version); + + static QIcon highDpiIcon(ProjectExplorer::Target *target); + static bool setHighDpiIcon(ProjectExplorer::Target *target, const QString &iconFilePath); + static QIcon mediumDpiIcon(ProjectExplorer::Target *target); + static bool setMediumDpiIcon(ProjectExplorer::Target *target, const QString &iconFilePath); + static QIcon lowDpiIcon(ProjectExplorer::Target *target); + static bool setLowDpiIcon(ProjectExplorer::Target *target, const QString &iconFilePath); + + static QStringList availableTargetApplications(ProjectExplorer::Target *target); + static QString targetApplication(ProjectExplorer::Target *target); + static bool setTargetApplication(ProjectExplorer::Target *target, const QString &name); + static QString targetApplicationPath(ProjectExplorer::Target *target); + + static QString targetSDK(ProjectExplorer::Target *target); + static bool setTargetSDK(ProjectExplorer::Target *target, const QString &sdk); + + static Utils::FileName dirPath(ProjectExplorer::Target *target); + static Utils::FileName manifestPath(ProjectExplorer::Target *target); + static Utils::FileName libsPath(ProjectExplorer::Target *target); + static Utils::FileName stringsPath(ProjectExplorer::Target *target); + static Utils::FileName defaultPropertiesPath(ProjectExplorer::Target *target); + static Utils::FileName srcPath(ProjectExplorer::Target *target); + static Utils::FileName apkPath(ProjectExplorer::Target *target, BuildType buildType); + + static bool createAndroidTemplatesIfNecessary(ProjectExplorer::Target *target); + static void updateTarget(ProjectExplorer::Target *target, const QString &targetSDK, + const QString &name = QString()); + + static Utils::FileName localLibsRulesFilePath(ProjectExplorer::Target *target); + static QString loadLocalLibs(ProjectExplorer::Target *target, int apiLevel); + static QString loadLocalJars(ProjectExplorer::Target *target, int apiLevel); + + static QStringList availableQtLibs(ProjectExplorer::Target *target); + static QStringList qtLibs(ProjectExplorer::Target *target); + static bool setQtLibs(ProjectExplorer::Target *target, const QStringList &libs); + + static QStringList availablePrebundledLibs(ProjectExplorer::Target *target); + static QStringList prebundledLibs(ProjectExplorer::Target *target); + static bool setPrebundledLibs(ProjectExplorer::Target *target, const QStringList &libs); + +private: + explicit AndroidManager(QObject *parent = 0); + + static void raiseError(const QString &reason); + static bool openXmlFile(ProjectExplorer::Target *target, QDomDocument &doc, + const Utils::FileName &fileName, bool createAndroidTemplates = false); + static bool saveXmlFile(ProjectExplorer::Target *target, QDomDocument &doc, const Utils::FileName &fileName); + static bool openManifest(ProjectExplorer::Target *target, QDomDocument &doc); + static bool saveManifest(ProjectExplorer::Target *target, QDomDocument &doc); + static bool openLibsXml(ProjectExplorer::Target *target, QDomDocument &doc); + static bool saveLibsXml(ProjectExplorer::Target *target, QDomDocument &doc); + static QStringList libsXml(ProjectExplorer::Target *target, const QString &tag); + static bool setLibsXml(ProjectExplorer::Target *target, const QStringList &libs, const QString &tag); + + enum ItemType + { + Lib, + Jar + }; + static QString loadLocal(ProjectExplorer::Target *target, int apiLevel, ItemType item); + + class Library + { + public: + Library() + { level = -1; } + int level; + QStringList dependencies; + QString name; + }; + typedef QMap<QString, Library> LibrariesMap; + + enum IconType + { + HighDPI, + MediumDPI, + LowDPI + }; + static QString iconPath(ProjectExplorer::Target *target, IconType type); + static QIcon icon(ProjectExplorer::Target *target, IconType type); + static bool setIcon(ProjectExplorer::Target *target, IconType type, const QString &iconFileName); + + static QStringList dependencies(const Utils::FileName &readelfPath, const QString &lib); + static int setLibraryLevel(const QString &library, LibrariesMap &mapLibs); + static bool qtLibrariesLessThan(const Library &a, const Library &b); + + static AndroidManager *m_instance; + + friend class Android::AndroidPlugin; +}; + +} // namespace Internal +} // namespace Android + +#endif // ANDROIDMANAGER_H |