diff --git a/share/qtcreator/templates/qtquickapp/qmlapplicationviewer/qmlapplicationviewer.cpp b/share/qtcreator/templates/qtquickapp/qmlapplicationviewer/qmlapplicationviewer.cpp index 2aeda06921ee35d76c5af7b6288476ee24e03c7d..68613375665c6ec40e39f0d2f3084d7f4fa4a4fb 100644 --- a/share/qtcreator/templates/qtquickapp/qmlapplicationviewer/qmlapplicationviewer.cpp +++ b/share/qtcreator/templates/qtquickapp/qmlapplicationviewer/qmlapplicationviewer.cpp @@ -78,9 +78,6 @@ QmlApplicationViewer::QmlApplicationViewer(QWidget *parent) connect(engine(), SIGNAL(quit()), SLOT(close())); setResizeMode(QDeclarativeView::SizeRootObjectToView); -#ifdef Q_OS_ANDROID - engine()->setBaseUrl(QUrl::fromLocalFile(QLatin1String("/"))); -#endif // Qt versions prior to 4.8.0 don't have QML/JS debugging services built in #if defined(QMLJSDEBUGGER) && QT_VERSION < 0x040800 #if !defined(NO_JSDEBUGGER) @@ -105,7 +102,11 @@ QmlApplicationViewer *QmlApplicationViewer::create() void QmlApplicationViewer::setMainQmlFile(const QString &file) { d->mainQmlFile = QmlApplicationViewerPrivate::adjustPath(file); +#ifdef Q_OS_ANDROID + setSource(QUrl(QLatin1String("assets:/")+d->mainQmlFile)); +#else setSource(QUrl::fromLocalFile(d->mainQmlFile)); +#endif } void QmlApplicationViewer::addImportPath(const QString &path) diff --git a/src/plugins/android/android.pro b/src/plugins/android/android.pro index 324fd6d3875f3db25162b627beddb66d0252d45c..7add49bad7fac363b43dce10f25c51945b25a131 100644 --- a/src/plugins/android/android.pro +++ b/src/plugins/android/android.pro @@ -36,7 +36,8 @@ HEADERS += \ androidcreatekeystorecertificate.h \ javaparser.h \ androidplugin.h \ - androiddevicefactory.h + androiddevicefactory.h \ + androiddevice.h SOURCES += \ androidconfigurations.cpp \ @@ -63,7 +64,8 @@ SOURCES += \ androidcreatekeystorecertificate.cpp \ javaparser.cpp \ androidplugin.cpp \ - androiddevicefactory.cpp + androiddevicefactory.cpp \ + androiddevice.cpp FORMS += \ diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index cfce5f6ea129199d104464dc832b3afdaa220733..633e54daa039da902885db7221baf5aa80159b16 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -90,7 +90,7 @@ namespace { QFileInfo(Core::ICore::settings(QSettings::SystemScope)->fileName()).absolutePath()); } - bool androidDevicesLessThan(const AndroidDevice &dev1, const AndroidDevice &dev2) + bool androidDevicesLessThan(const AndroidDeviceInfo &dev1, const AndroidDeviceInfo &dev2) { return dev1.sdk < dev2.sdk; } @@ -233,7 +233,7 @@ QStringList AndroidConfigurations::sdkTargets(int minApiLevel) const return targets; } while (proc.canReadLine()) { - QString line = proc.readLine(); + QString line = proc.readLine().trimmed(); int index = line.indexOf(QLatin1String("\"android-")); if (index == -1) continue; @@ -392,9 +392,9 @@ Utils::FileName AndroidConfigurations::jarsignerPath() const QString AndroidConfigurations::getDeployDeviceSerialNumber(int *apiLevel) const { - QVector<AndroidDevice> devices = connectedDevices(); + QVector<AndroidDeviceInfo> devices = connectedDevices(); - foreach (AndroidDevice device, devices) { + foreach (AndroidDeviceInfo device, devices) { if (device.sdk >= *apiLevel) { *apiLevel = device.sdk; return device.serialNumber; @@ -403,9 +403,9 @@ QString AndroidConfigurations::getDeployDeviceSerialNumber(int *apiLevel) const return startAVD(apiLevel); } -QVector<AndroidDevice> AndroidConfigurations::connectedDevices(int apiLevel) const +QVector<AndroidDeviceInfo> AndroidConfigurations::connectedDevices(int apiLevel) const { - QVector<AndroidDevice> devices; + QVector<AndroidDeviceInfo> devices; QProcess adbProc; adbProc.start(adbToolPath().toString(), QStringList() << QLatin1String("devices")); if (!adbProc.waitForFinished(-1)) { @@ -414,7 +414,7 @@ QVector<AndroidDevice> AndroidConfigurations::connectedDevices(int apiLevel) con } QList<QByteArray> adbDevs = adbProc.readAll().trimmed().split('\n'); adbDevs.removeFirst(); - AndroidDevice dev; + AndroidDeviceInfo dev; foreach (const QByteArray &device, adbDevs) { dev.serialNumber = QString::fromLatin1(device.left(device.indexOf('\t')).trimmed()); dev.sdk = getSDKVersion(dev.serialNumber); @@ -480,9 +480,9 @@ bool AndroidConfigurations::removeAVD(const QString &name) const return !proc.exitCode(); } -QVector<AndroidDevice> AndroidConfigurations::androidVirtualDevices() const +QVector<AndroidDeviceInfo> AndroidConfigurations::androidVirtualDevices() const { - QVector<AndroidDevice> devices; + QVector<AndroidDeviceInfo> devices; QProcess proc; proc.start(androidToolPath().toString(), QStringList() << QLatin1String("list") << QLatin1String("avd")); // list available AVDs @@ -492,7 +492,7 @@ QVector<AndroidDevice> AndroidConfigurations::androidVirtualDevices() const } QList<QByteArray> avds = proc.readAll().trimmed().split('\n'); avds.removeFirst(); - AndroidDevice dev; + AndroidDeviceInfo dev; for (int i = 0; i < avds.size(); i++) { QString line = QLatin1String(avds[i]); if (!line.contains(QLatin1String("Name:"))) @@ -523,12 +523,12 @@ QString AndroidConfigurations::startAVD(int *apiLevel, const QString &name) cons connect(m_avdProcess, SIGNAL(finished(int)), m_avdProcess, SLOT(deleteLater())); QString avdName = name; - QVector<AndroidDevice> devices; + QVector<AndroidDeviceInfo> devices; bool createAVDOnce = false; while (true) { if (avdName.isEmpty()) { devices = androidVirtualDevices(); - foreach (AndroidDevice device, devices) + foreach (AndroidDeviceInfo device, devices) if (device.sdk >= *apiLevel) { // take first emulator how supports this package *apiLevel = device.sdk; avdName = device.serialNumber; @@ -575,7 +575,7 @@ QString AndroidConfigurations::startAVD(int *apiLevel, const QString &name) cons // get connected devices devices = connectedDevices(*apiLevel); - foreach (AndroidDevice device, devices) + foreach (AndroidDeviceInfo device, devices) if (device.sdk == *apiLevel) return device.serialNumber; // this should not happen, but ... diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index 31eedb4573ecf586d87cef82bf328bf3df2a6730..fd5c327facee3690ce6d03cc2adbc412a1a86213 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -80,7 +80,7 @@ public: unsigned partitionSize; }; -struct AndroidDevice { +struct AndroidDeviceInfo { QString serialNumber; QString cpuABI; int sdk; @@ -112,8 +112,8 @@ public: QString getDeployDeviceSerialNumber(int *apiLevel) const; bool createAVD(const QString &target, const QString &name, int sdcardSize) const; bool removeAVD(const QString &name) const; - QVector<AndroidDevice> connectedDevices(int apiLevel = -1) const; - QVector<AndroidDevice> androidVirtualDevices() const; + QVector<AndroidDeviceInfo> connectedDevices(int apiLevel = -1) const; + QVector<AndroidDeviceInfo> androidVirtualDevices() const; QString startAVD(int *apiLevel, const QString &name = QString()) const; QString bestMatch(const QString &targetAPI) const; diff --git a/src/plugins/android/androidconstants.h b/src/plugins/android/androidconstants.h index 0f849e41989c14a41a3b9bbe89fc551d2c0cb603..7a4577bf026fd7c006e2fb2f11aca3633e85cb8e 100644 --- a/src/plugins/android/androidconstants.h +++ b/src/plugins/android/androidconstants.h @@ -67,7 +67,9 @@ const char ANDROID_SETTINGS_TR_CATEGORY[] = QT_TRANSLATE_NOOP("Android", "Androi const char ANDROID_SETTINGS_CATEGORY_ICON[] = ":/android/images/QtAndroid.png"; const char ANDROID_TOOLCHAIN_ID[] = "Qt4ProjectManager.ToolChain.Android"; const char ANDROIDQT[] = "Qt4ProjectManager.QtVersion.Android"; + const char ANDROID_DEVICE_TYPE[] = "Android.Device.Type"; +const char ANDROID_DEVICE_ID[] = "Android Device"; } } // namespace Android diff --git a/src/plugins/android/androiddeployconfiguration.cpp b/src/plugins/android/androiddeployconfiguration.cpp index 8a936d790a32f658b77636457e5f0d54036c2644..cb198d09a260a1ff4b3eb18f30ab3a185751cec4 100644 --- a/src/plugins/android/androiddeployconfiguration.cpp +++ b/src/plugins/android/androiddeployconfiguration.cpp @@ -30,6 +30,7 @@ ** **************************************************************************/ +#include "androidconstants.h" #include "androiddeploystep.h" #include "androidpackageinstallationstep.h" #include "androidpackagecreationstep.h" @@ -65,7 +66,9 @@ AndroidDeployConfiguration::AndroidDeployConfiguration(ProjectExplorer::Target * AndroidDeployConfigurationFactory::AndroidDeployConfigurationFactory(QObject *parent) : ProjectExplorer::DeployConfigurationFactory(parent) -{ setObjectName(QLatin1String("AndroidDeployConfigurationFactory"));} +{ + setObjectName(QLatin1String("AndroidDeployConfigurationFactory")); +} bool AndroidDeployConfigurationFactory::canCreate(ProjectExplorer::Target *parent, const Core::Id id) const { @@ -86,15 +89,14 @@ ProjectExplorer::DeployConfiguration *AndroidDeployConfigurationFactory::create( bool AndroidDeployConfigurationFactory::canRestore(ProjectExplorer::Target *parent, const QVariantMap &map) const { - if (!canHandle(parent)) - return false; - return ProjectExplorer::idFromMap(map).toString().startsWith(ANDROID_DC_PREFIX); + return canCreate(parent, ProjectExplorer::idFromMap(map)); } ProjectExplorer::DeployConfiguration *AndroidDeployConfigurationFactory::restore(ProjectExplorer::Target *parent, const QVariantMap &map) { if (!canRestore(parent, map)) return 0; + AndroidDeployConfiguration *dc = new AndroidDeployConfiguration(parent, ProjectExplorer::idFromMap(map)); if (dc->fromMap(map)) return dc; @@ -119,14 +121,24 @@ ProjectExplorer::DeployConfiguration *AndroidDeployConfigurationFactory::clone(P QList<Core::Id> AndroidDeployConfigurationFactory::availableCreationIds(ProjectExplorer::Target *parent) const { - QList<Core::Id> result; - if (!canHandle(parent)) - return result; - - Qt4ProjectManager::Qt4Project *project = static_cast<Qt4ProjectManager::Qt4Project *>(parent->project()); - foreach (const QString &id, project->applicationProFilePathes(QLatin1String(ANDROID_DC_PREFIX))) - result << Core::Id(id); - return result; + QList<Core::Id> ids; + if (!qobject_cast<Qt4ProjectManager::Qt4Project *>(parent->project())) + return ids; + + if (!parent->project()->supportsProfile(parent->profile())) + return ids; + + ProjectExplorer::ToolChain *tc + = ProjectExplorer::ToolChainProfileInformation::toolChain(parent->profile()); + + if (!tc || tc->targetAbi().osFlavor() != ProjectExplorer::Abi::AndroidLinuxFlavor) + return ids; + + if (QtSupport::QtProfileInformation::qtVersion(parent->profile())->type() != QLatin1String(Constants::ANDROIDQT)) + return ids; + + ids << Core::Id(ANDROID_DEPLOYCONFIGURATION_ID); + return ids; } QString AndroidDeployConfigurationFactory::displayNameForId(const Core::Id id) const diff --git a/src/plugins/android/androiddevice.cpp b/src/plugins/android/androiddevice.cpp new file mode 100644 index 0000000000000000000000000000000000000000..10b2ba179ed0e35cecdcdfa62acb4b80597355e1 --- /dev/null +++ b/src/plugins/android/androiddevice.cpp @@ -0,0 +1,92 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2012 BogDan Vatra <bog_dan_ro@yahoo.com> +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** +** 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 qt-info@nokia.com. +** +**************************************************************************/ + +#include "androiddevice.h" +#include "androidconstants.h" + +#include <QCoreApplication> + +namespace Android { +namespace Internal { + +AndroidDevice::AndroidDevice(): + ProjectExplorer::IDevice(Core::Id(Constants::ANDROID_DEVICE_TYPE), IDevice::AutoDetected, + Core::Id(Constants::ANDROID_DEVICE_ID)) +{ + setDisplayName(QCoreApplication::translate("ProjectExplorer::AndroidDevice", "Run on Android")); + setDeviceState(DeviceReadyToUse); +} + +AndroidDevice::AndroidDevice(const AndroidDevice &other): + ProjectExplorer::IDevice(other) +{ } + + +ProjectExplorer::IDevice::DeviceInfo AndroidDevice::deviceInformation() const +{ + return ProjectExplorer::IDevice::DeviceInfo(); +} + +QString AndroidDevice::displayType() const +{ + return QCoreApplication::translate("ProjectExplorer::AndroidDevice", "Android"); +} + +ProjectExplorer::IDeviceWidget *AndroidDevice::createWidget() +{ + return 0; +} + +QList<Core::Id> AndroidDevice::actionIds() const +{ + return QList<Core::Id>()<<Core::Id(Constants::ANDROID_DEVICE_ID); +} + +QString AndroidDevice::displayNameForActionId(Core::Id actionId) const +{ + Q_UNUSED(actionId) + return QString(); +} + +void AndroidDevice::executeAction(Core::Id actionId, QWidget *parent) const +{ + Q_UNUSED(actionId) + Q_UNUSED(parent) +} + +ProjectExplorer::IDevice::Ptr AndroidDevice::clone() const +{ + return ProjectExplorer::IDevice::Ptr(new AndroidDevice(*this)); +} + +} // namespace Internal +} // namespace Android diff --git a/src/plugins/android/androiddevice.h b/src/plugins/android/androiddevice.h new file mode 100644 index 0000000000000000000000000000000000000000..d5d31d02e8758ba2b7116122584a04c747a3a1da --- /dev/null +++ b/src/plugins/android/androiddevice.h @@ -0,0 +1,68 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2012 BogDan Vatra <bog_dan_ro@yahoo.com> +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** +** 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 qt-info@nokia.com. +** +**************************************************************************/ + +#ifndef ANDROIDDEVICE_H +#define ANDROIDDEVICE_H + +#include <projectexplorer/devicesupport/idevice.h> + +namespace Android { +class AndroidPlugin; // needed for friend declaration + +namespace Internal { + +class AndroidDevice : public ProjectExplorer::IDevice +{ +public: + + ProjectExplorer::IDevice::DeviceInfo deviceInformation() const; + + virtual QString displayType() const; + virtual ProjectExplorer::IDeviceWidget *createWidget(); + virtual QList<Core::Id> actionIds() const; + virtual QString displayNameForActionId(Core::Id actionId) const; + virtual void executeAction(Core::Id actionId, QWidget *parent = 0) const; + + virtual ProjectExplorer::IDevice::Ptr clone() const; + + +protected: + friend class AndroidDeviceFactory; + friend class Android::AndroidPlugin; + AndroidDevice(); + AndroidDevice(const AndroidDevice &other); +}; + +} // namespace Internal +} // namespace Android + +#endif // ANDROIDDEVICE_H diff --git a/src/plugins/android/androiddevicefactory.cpp b/src/plugins/android/androiddevicefactory.cpp index adab2e55af4864e63132b2e860cc744085c560cb..df122738c355ee28e288bd9cd43a69dd6e3b8e4f 100644 --- a/src/plugins/android/androiddevicefactory.cpp +++ b/src/plugins/android/androiddevicefactory.cpp @@ -31,6 +31,7 @@ **************************************************************************/ #include "androiddevicefactory.h" +#include "androiddevice.h" #include "androidconstants.h" #include <coreplugin/id.h> @@ -39,7 +40,9 @@ namespace Android { namespace Internal { AndroidDeviceFactory::AndroidDeviceFactory() -{ setObjectName(QLatin1String("AndroidDeviceFactory")); } +{ + setObjectName(QLatin1String("AndroidDeviceFactory")); +} QString AndroidDeviceFactory::displayNameForId(Core::Id type) const { @@ -60,20 +63,19 @@ bool AndroidDeviceFactory::canCreate() const ProjectExplorer::IDevice::Ptr AndroidDeviceFactory::create(Core::Id id) const { - Q_UNUSED(id); + Q_UNUSED(id) return ProjectExplorer::IDevice::Ptr(); } bool AndroidDeviceFactory::canRestore(const QVariantMap &map) const { - Q_UNUSED(map); - return false; + return ProjectExplorer::IDevice::typeFromMap(map) == Core::Id(Constants::ANDROID_DEVICE_TYPE); } ProjectExplorer::IDevice::Ptr AndroidDeviceFactory::restore(const QVariantMap &map) const { - Q_UNUSED(map); - return ProjectExplorer::IDevice::Ptr(); + Q_UNUSED(map) + return ProjectExplorer::IDevice::Ptr(new AndroidDevice); } } // namespace Internal diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index d88f056d25285ac4b9968cd0d8a954dab401eda7..7b63d8691796e22ea6815b90028005ee542e4efd 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -408,16 +408,20 @@ bool AndroidManager::createAndroidTemplatesIfNecessary(ProjectExplorer::Target * Utils::FileName javaSrcPath = Utils::FileName::fromString(version->versionInfo()[QLatin1String("QT_INSTALL_PREFIX")]) - .append(QLatin1String("src/android/java")); + .appendPath(QLatin1String("src/android/java")); QDir projectDir(qt4Project->projectDirectory()); Utils::FileName androidPath = dirPath(target); QStringList m_ignoreFiles; bool forceUpdate = false; QDomDocument srcVersionDoc; - if (openXmlFile(target, srcVersionDoc, javaSrcPath.append(QLatin1String("version.xml")), false)) { + Utils::FileName srcVersionPath = javaSrcPath; + srcVersionPath.appendPath(QLatin1String("version.xml")); + if (openXmlFile(target, srcVersionDoc, srcVersionPath, false)) { QDomDocument dstVersionDoc; - if (openXmlFile(target, dstVersionDoc, androidPath.append(QLatin1String("version.xml")), false)) + Utils::FileName dstVersionPath=androidPath; + dstVersionPath.appendPath(QLatin1String("version.xml")); + if (openXmlFile(target, dstVersionDoc, dstVersionPath, false)) forceUpdate = (srcVersionDoc.documentElement().attribute(QLatin1String("value")).toDouble() > dstVersionDoc.documentElement().attribute(QLatin1String("value")).toDouble()); else @@ -458,7 +462,8 @@ bool AndroidManager::createAndroidTemplatesIfNecessary(ProjectExplorer::Target * if (it.fileInfo().isDir()) { projectDir.mkpath(AndroidDirName + it.filePath().mid(pos)); } else { - const Utils::FileName dstFile = androidPath.append(it.filePath().mid(pos)); + Utils::FileName dstFile = androidPath; + dstFile.appendPath(it.filePath().mid(pos)); if (m_ignoreFiles.contains(it.fileName())) { continue; } else { diff --git a/src/plugins/android/androidpackagecreationstep.cpp b/src/plugins/android/androidpackagecreationstep.cpp index 293201a8ec71e3a02ef15b6d242d4f111516577d..ed289711927349e52a5f632b9654f4b171538120 100644 --- a/src/plugins/android/androidpackagecreationstep.cpp +++ b/src/plugins/android/androidpackagecreationstep.cpp @@ -161,8 +161,7 @@ bool AndroidPackageCreationStep::init() androidLibPath = path.appendPath(QLatin1String("libs/armeabi-v7a")); else androidLibPath = path.appendPath(QLatin1String("libs/armeabi")); - path = m_androidDir; - m_gdbServerDestination = path.appendPath(QLatin1String("gdbserver")); + m_gdbServerDestination = androidLibPath.appendPath(QLatin1String("gdbserver")); m_gdbServerSource = AndroidConfigurations::instance().gdbServerPath(target()->activeRunConfiguration()->abi().architecture()); m_debugBuild = bc->qmakeBuildConfiguration() & QtSupport::BaseQtVersion::DebugBuild; diff --git a/src/plugins/android/androidplugin.cpp b/src/plugins/android/androidplugin.cpp index 9197ea4574b160971fe79ddc2f97e42131514e37..40f5bf8fe281fb98a71028c97c0e34928210e487 100644 --- a/src/plugins/android/androidplugin.cpp +++ b/src/plugins/android/androidplugin.cpp @@ -35,6 +35,7 @@ #include "androidconstants.h" #include "androidconfigurations.h" #include "androiddeploystepfactory.h" +#include "androiddevice.h" #include "androiddevicefactory.h" #include "androidconfigurations.h" #include "androidmanager.h" @@ -48,6 +49,8 @@ #include <QtPlugin> +#include <projectexplorer/devicesupport/devicemanager.h> + namespace Android { AndroidPlugin::AndroidPlugin() @@ -76,6 +79,9 @@ bool AndroidPlugin::initialize(const QStringList &arguments, addAutoReleasedObject(new Internal::AndroidToolChainFactory); addAutoReleasedObject(new Internal::AndroidDeployConfigurationFactory); addAutoReleasedObject(new Internal::AndroidDeviceFactory); + ProjectExplorer::DeviceManager *dm = ProjectExplorer::DeviceManager::instance(); + if (dm->find(Core::Id(Constants::ANDROID_DEVICE_ID)).isNull()) + dm->addDevice(ProjectExplorer::IDevice::Ptr(new Internal::AndroidDevice)); return true; } diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index ec6fca61d4f917ce2fe5e5985afb34fa26b20f1d..5fb4fb42d10fa8ea25aaae95d0b3479d3671aabc 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -49,7 +49,7 @@ namespace Android { namespace Internal { -void AVDModel::setAvdList(QVector<AndroidDevice> list) +void AVDModel::setAvdList(QVector<AndroidDeviceInfo> list) { m_list = list; reset(); @@ -147,7 +147,6 @@ QString AndroidSettingsWidget::searchKeywords() const void AndroidSettingsWidget::initGui() { m_ui->setupUi(this); - m_ui->toolchainVersionComboBox->clear(); if (checkSDK(m_androidConfig.sdkLocation)) m_ui->SDKLocationLineEdit->setText(m_androidConfig.sdkLocation.toUserOutput()); else @@ -167,6 +166,7 @@ void AndroidSettingsWidget::initGui() m_AVDModel.setAvdList(AndroidConfigurations::instance().androidVirtualDevices()); m_ui->AVDTableView->horizontalHeader()->setResizeMode(QHeaderView::Stretch); m_ui->AVDTableView->horizontalHeader()->setResizeMode(1, QHeaderView::ResizeToContents); + fillToolchainVersions(); } void AndroidSettingsWidget::saveSettings(bool saveNow) @@ -251,9 +251,9 @@ void AndroidSettingsWidget::ndkLocationEditingFinished() void AndroidSettingsWidget::fillToolchainVersions() { - m_ui->toolchainVersionComboBox->clear(); QStringList toolchainVersions = AndroidConfigurations::instance().ndkToolchainVersions(); QString toolchain = m_androidConfig.ndkToolchainVersion; + m_ui->toolchainVersionComboBox->clear(); foreach (const QString &item, toolchainVersions) m_ui->toolchainVersionComboBox->addItem(item); if (!toolchain.isEmpty()) diff --git a/src/plugins/android/androidsettingswidget.h b/src/plugins/android/androidsettingswidget.h index 8de720593d5cd6c96fc46b4e653a2e6888e0b590..0c8851dda86affa0c92ae9571e43efd67ed87012 100644 --- a/src/plugins/android/androidsettingswidget.h +++ b/src/plugins/android/androidsettingswidget.h @@ -55,7 +55,7 @@ class AVDModel: public QAbstractTableModel { Q_OBJECT public: - void setAvdList(QVector<AndroidDevice> list); + void setAvdList(QVector<AndroidDeviceInfo> list); QString avdName(const QModelIndex &index); protected: @@ -65,7 +65,7 @@ protected: int columnCount(const QModelIndex &parent = QModelIndex()) const; private: - QVector<AndroidDevice> m_list; + QVector<AndroidDeviceInfo> m_list; }; class AndroidSettingsWidget : public QWidget diff --git a/src/plugins/android/androidtoolchain.cpp b/src/plugins/android/androidtoolchain.cpp index d9955c805bc82ffda3dbbc869159835acef29225..3e99f6a9f8a3ba824311e9a8d3dfd49829ccd76b 100644 --- a/src/plugins/android/androidtoolchain.cpp +++ b/src/plugins/android/androidtoolchain.cpp @@ -38,9 +38,11 @@ #include "qt4projectmanager/qt4projectmanagerconstants.h" +#include <projectexplorer/target.h> #include <projectexplorer/toolchainmanager.h> #include <projectexplorer/projectexplorer.h> #include <qt4projectmanager/qt4project.h> +#include <qtsupport/qtprofileinformation.h> #include <qtsupport/qtversionmanager.h> #include <utils/environment.h> @@ -91,6 +93,11 @@ void AndroidToolChain::addToEnvironment(Utils::Environment &env) const // TODO this vars should be configurable in projects -> build tab // TODO invalidate all .pro files !!! + Qt4Project *qt4pro = qobject_cast<Qt4Project *>(ProjectExplorer::ProjectExplorerPlugin::instance()->currentProject()); + if (!qt4pro || !qt4pro->activeTarget() + || QtSupport::QtProfileInformation::qtVersion(qt4pro->activeTarget()->profile())->type() != QLatin1String(Constants::ANDROIDQT)) + return; + QString ndk_host = QLatin1String( #if defined(Q_OS_LINUX) "linux-x86" @@ -107,11 +114,6 @@ void AndroidToolChain::addToEnvironment(Utils::Environment &env) const env.set(QLatin1String("ANDROID_NDK_TOOLCHAIN_PREFIX"), AndroidConfigurations::toolchainPrefix(targetAbi().architecture())); env.set(QLatin1String("ANDROID_NDK_TOOLS_PREFIX"), AndroidConfigurations::toolsPrefix(targetAbi().architecture())); env.set(QLatin1String("ANDROID_NDK_TOOLCHAIN_VERSION"), AndroidConfigurations::instance().config().ndkToolchainVersion); - - // TODO that is very ugly and likely to be wrong... - Qt4Project *qt4pro = qobject_cast<Qt4Project *>(ProjectExplorer::ProjectExplorerPlugin::instance()->currentProject()); - if (!qt4pro || !qt4pro->activeTarget()) - return; env.set(QLatin1String("ANDROID_NDK_PLATFORM"), AndroidConfigurations::instance().bestMatch(AndroidManager::targetSDK(qt4pro->activeTarget()))); } diff --git a/src/plugins/qt4projectmanager/wizards/qtquickapp.cpp b/src/plugins/qt4projectmanager/wizards/qtquickapp.cpp index 79d7b8e6eb0077143b80462e4339784d7c13d765..e24dd57251e280d6917e3522683c2f9a32605e94 100644 --- a/src/plugins/qt4projectmanager/wizards/qtquickapp.cpp +++ b/src/plugins/qt4projectmanager/wizards/qtquickapp.cpp @@ -466,7 +466,7 @@ QString QtQuickApp::componentSetDir(ComponentSet componentSet) const } } -const int QtQuickApp::StubVersion = 20; +const int QtQuickApp::StubVersion = 21; } // namespace Internal } // namespace Qt4ProjectManager