Merge remote-tracking branch 'origin/3.1'

Conflicts:
	README
	tests/auto/debugger/tst_dumpers.cpp

Change-Id: Ib9aef37a246bc3bb9bca0c32a902af3b09ef3146
This commit is contained in:
Oswald Buddenhagen
2014-03-11 13:39:55 +01:00
279 changed files with 3131 additions and 1418 deletions

View File

@@ -431,7 +431,12 @@ QVector<AndroidDeviceInfo> AndroidConfig::connectedDevices(QString *error) const
dev.type = serialNo.startsWith(QLatin1String("emulator")) ? AndroidDeviceInfo::Emulator : AndroidDeviceInfo::Hardware;
dev.sdk = getSDKVersion(dev.serialNumber);
dev.cpuAbi = getAbis(dev.serialNumber);
dev.unauthorized = (deviceType == QLatin1String("unauthorized"));
if (deviceType == QLatin1String("unauthorized"))
dev.state = AndroidDeviceInfo::UnAuthorizedState;
else if (deviceType == QLatin1String("offline"))
dev.state = AndroidDeviceInfo::OfflineState;
else
dev.state = AndroidDeviceInfo::OkState;
devices.push_back(dev);
}
@@ -575,7 +580,7 @@ QVector<AndroidDeviceInfo> AndroidConfig::androidVirtualDevices() const
// armeabi-v7a devices can also run armeabi code
if (dev.cpuAbi == QStringList(QLatin1String("armeabi-v7a")))
dev.cpuAbi << QLatin1String("armeabi");
dev.unauthorized = false;
dev.state = AndroidDeviceInfo::OkState;
dev.type = AndroidDeviceInfo::Emulator;
devices.push_back(dev);
}
@@ -1077,7 +1082,7 @@ QStringList AndroidDeviceInfo::adbSelector(const QString &serialNumber)
return QStringList() << QLatin1String("-s") << serialNumber;
}
AndroidConfig AndroidConfigurations::currentConfig()
const AndroidConfig &AndroidConfigurations::currentConfig()
{
return m_instance->m_config; // ensure that m_instance is initialized
}

View File

@@ -56,6 +56,8 @@ struct AndroidDeviceInfo
QString serialNumber;
QStringList cpuAbi;
int sdk;
enum State { OkState, UnAuthorizedState, OfflineState };
State state;
bool unauthorized;
enum AndroidDeviceType { Hardware, Emulator };
AndroidDeviceType type;
@@ -173,7 +175,7 @@ class AndroidConfigurations : public QObject
Q_OBJECT
public:
static AndroidConfig currentConfig();
static const AndroidConfig &currentConfig();
static void setConfig(const AndroidConfig &config);
static AndroidConfigurations *instance();

View File

@@ -243,7 +243,7 @@ bool AndroidDeployQtStep::init()
QString inputFile = node->singleVariableValue(QmakeProjectManager::AndroidDeploySettingsFile);
if (inputFile.isEmpty()) { // should never happen
emit addOutput(tr("Internal Error: Unknown android deployment json file location"), BuildStep::ErrorMessageOutput);
emit addOutput(tr("Internal Error: Unknown Android deployment JSON file location."), BuildStep::ErrorMessageOutput);
return false;
}

View File

@@ -331,9 +331,12 @@ void AndroidDeviceModel::setDevices(const QVector<AndroidDeviceInfo> &devices)
AndroidDeviceModelNode *incompatibleDevices = 0; // created on demand
foreach (const AndroidDeviceInfo &device, devices) {
QString error;
if (device.unauthorized) {
if (device.state == AndroidDeviceInfo::UnAuthorizedState) {
error = AndroidDeviceDialog::tr("Unauthorized. Please check the confirmation dialog on your device %1.")
.arg(device.serialNumber);
}else if (device.state == AndroidDeviceInfo::OfflineState) {
error = AndroidDeviceDialog::tr("Offline. Please check the state of your device %1.")
.arg(device.serialNumber);
} else if (!device.cpuAbi.contains(m_abi)) {
error = AndroidDeviceDialog::tr("ABI is incompatible, device supports ABIs: %1.")
.arg(device.cpuAbi.join(QLatin1String(" ")));

View File

@@ -499,7 +499,7 @@ bool AndroidManifestEditorWidget::open(QString *errorString, const QString &file
return true;
}
}
// some error occured
// some error occurred
updateInfoBar(error, errorLine, errorColumn);
setActivePage(Source);
return true;

View File

@@ -163,7 +163,7 @@ void AndroidRunner::checkPID()
emit remoteProcessFinished(QLatin1String("\n\n") + tr("\"%1\" died.").arg(m_packageName));
} else {
if (++m_tries > 3)
emit remoteProcessFinished(QLatin1String("\n\n") + tr("Unable to start \"%1\"").arg(m_packageName));
emit remoteProcessFinished(QLatin1String("\n\n") + tr("Unable to start \"%1\".").arg(m_packageName));
}
} else if (!m_wasStarted){
if (m_useCppDebugger) {

View File

@@ -155,20 +155,10 @@ void AndroidSettingsWidget::check(AndroidSettingsWidget::Mode mode)
{
if (mode & Sdk) {
m_sdkState = Okay;
if (m_androidConfig.sdkLocation().isEmpty()) {
if (m_androidConfig.sdkLocation().isEmpty())
m_sdkState = NotSet;
} else {
Utils::FileName adb = m_androidConfig.sdkLocation();
Utils::FileName androidExe = m_androidConfig.sdkLocation();
Utils::FileName androidBat = m_androidConfig.sdkLocation();
Utils::FileName emulator = m_androidConfig.sdkLocation();
if (!adb.appendPath(QLatin1String("platform-tools/adb" QTC_HOST_EXE_SUFFIX)).toFileInfo().exists()
|| (!androidExe.appendPath(QLatin1String("/tools/android" QTC_HOST_EXE_SUFFIX)).toFileInfo().exists()
&& !androidBat.appendPath(QLatin1String("/tools/android" ANDROID_BAT_SUFFIX)).toFileInfo().exists())
|| !emulator.appendPath(QLatin1String("/tools/emulator" QTC_HOST_EXE_SUFFIX)).toFileInfo().exists()) {
m_sdkState = Error;
}
}
else if (!(sdkLocationIsValid() && sdkPlatformToolsInstalled()))
m_sdkState = Error;
}
if (mode & Ndk) {
@@ -241,7 +231,10 @@ void AndroidSettingsWidget::applyToUi(AndroidSettingsWidget::Mode mode)
m_ui->sdkWarningIconLabel->setVisible(true);
m_ui->sdkWarningLabel->setVisible(true);
Utils::FileName location = Utils::FileName::fromUserInput(m_ui->SDKLocationLineEdit->text());
m_ui->sdkWarningLabel->setText(tr("\"%1\" does not seem to be an Android SDK top folder.").arg(location.toUserOutput()));
if (sdkLocationIsValid())
m_ui->sdkWarningLabel->setText(tr("The Platform tools are missing. Please use the Android SDK Manager to install them."));
else
m_ui->sdkWarningLabel->setText(tr("\"%1\" does not seem to be an Android SDK top folder.").arg(location.toUserOutput()));
} else {
m_ui->sdkWarningIconLabel->setVisible(false);
m_ui->sdkWarningLabel->setVisible(false);
@@ -300,6 +293,22 @@ void AndroidSettingsWidget::applyToUi(AndroidSettingsWidget::Mode mode)
}
}
bool AndroidSettingsWidget::sdkLocationIsValid() const
{
Utils::FileName androidExe = m_androidConfig.sdkLocation();
Utils::FileName androidBat = m_androidConfig.sdkLocation();
Utils::FileName emulator = m_androidConfig.sdkLocation();
return (androidExe.appendPath(QLatin1String("/tools/android" QTC_HOST_EXE_SUFFIX)).toFileInfo().exists()
|| androidBat.appendPath(QLatin1String("/tools/android" ANDROID_BAT_SUFFIX)).toFileInfo().exists())
&& emulator.appendPath(QLatin1String("/tools/emulator" QTC_HOST_EXE_SUFFIX)).toFileInfo().exists();
}
bool AndroidSettingsWidget::sdkPlatformToolsInstalled() const
{
Utils::FileName adb = m_androidConfig.sdkLocation();
return adb.appendPath(QLatin1String("platform-tools/adb" QTC_HOST_EXE_SUFFIX)).toFileInfo().exists();
}
void AndroidSettingsWidget::saveSettings()
{
sdkLocationEditingFinished();
@@ -405,19 +414,19 @@ void AndroidSettingsWidget::browseNDKLocation()
void AndroidSettingsWidget::browseAntLocation()
{
QString dir;
QString antApp;
QString filter;
if (Utils::HostOsInfo::isWindowsHost()) {
dir = QDir::homePath();
antApp = QLatin1String("ant.bat");
dir = QDir::homePath() + QLatin1String("/ant.bat");
filter = QLatin1String("ant (ant.bat)");
} else {
dir = QLatin1String("/usr/bin/ant");
antApp = QLatin1String("ant");
filter = QLatin1String("ant (ant)");
}
const QString file =
QFileDialog::getOpenFileName(this, tr("Select ant Script"), dir, antApp);
QFileDialog::getOpenFileName(this, tr("Select ant Script"), dir, filter);
if (!file.length())
return;
m_ui->AntLocationLineEdit->setText(file);
m_ui->AntLocationLineEdit->setText(QDir::toNativeSeparators(file));
antLocationEditingFinished();
}

View File

@@ -98,6 +98,8 @@ private:
enum State { NotSet = 0, Okay = 1, Error = 2 };
void check(Mode mode);
void applyToUi(Mode mode);
bool sdkLocationIsValid() const;
bool sdkPlatformToolsInstalled() const;
State m_sdkState;
State m_ndkState;