Installing on a drive other than C: for Symbian OS

Silent installation added to Sumbian's Run Configuration UI

Reviewed-by: Tobias Hunger
This commit is contained in:
Pawel Polanski
2010-07-20 13:37:15 +02:00
parent d980e37e24
commit c7278acda0
8 changed files with 125 additions and 12 deletions

View File

@@ -55,6 +55,7 @@
#include <QtGui/QSpacerItem>
#include <QtGui/QMainWindow>
#include <QtGui/QMessageBox>
#include <QtGui/QCheckBox>
Q_DECLARE_METATYPE(SymbianUtils::SymbianDevice)
@@ -67,6 +68,9 @@ enum { wantUpdateSerialDevicesButton = 1 };
namespace Qt4ProjectManager {
namespace Internal {
const char STARTING_DRIVE_LETTER = 'C';
const char LAST_DRIVE_LETTER = 'Z';
S60DeviceRunConfigurationWidget::S60DeviceRunConfigurationWidget(
S60DeviceRunConfiguration *runConfiguration,
QWidget *parent)
@@ -80,7 +84,9 @@ S60DeviceRunConfigurationWidget::S60DeviceRunConfigurationWidget(
m_deviceInfoButton(new QToolButton),
m_deviceInfoDescriptionLabel(new QLabel(tr("Device:"))),
m_deviceInfoLabel(new QLabel),
m_infoTimeOutTimer(0)
m_infoTimeOutTimer(0),
m_installationDriveCombo(new QComboBox),
m_silentInstallCheckBox(new QCheckBox(tr("Silent installation")))
{
m_detailsWidget->setState(Utils::DetailsWidget::NoSummary);
updateTargetInformation();
@@ -105,6 +111,23 @@ S60DeviceRunConfigurationWidget::S60DeviceRunConfigurationWidget(
formLayout->addRow(tr("Arguments:"), m_argumentsLineEdit);
formLayout->addRow(tr("Installation file:"), m_sisFileLabel);
// Installation Drive control
updateInstallationDrives();
m_installationDriveCombo->setSizeAdjustPolicy(QComboBox::AdjustToContents);
connect(m_installationDriveCombo, SIGNAL(activated(int)), this, SLOT(setInstallationDrive(int)));
QHBoxLayout *installationDriveHBoxLayout = new QHBoxLayout;
installationDriveHBoxLayout->addWidget(m_installationDriveCombo);
installationDriveHBoxLayout->addSpacerItem(new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Ignored));
formLayout->addRow(tr("Installation drive:"), installationDriveHBoxLayout);
// Non-silent installs are a fallback if one wants to override missing dependencies.
m_silentInstallCheckBox->setChecked(m_runConfiguration->silentInstall());
m_silentInstallCheckBox->setToolTip(tr("Silent installation is an installation mode "
"that does not require user's intervention. "
"In case it fails the non silent installation is launched."));
connect(m_silentInstallCheckBox, SIGNAL(stateChanged(int)), this, SLOT(silentInstallChanged(int)));
formLayout->addRow(m_silentInstallCheckBox);
updateSerialDevices();
connect(SymbianUtils::SymbianDeviceManager::instance(), SIGNAL(updated()),
this, SLOT(updateSerialDevices()));
@@ -144,6 +167,25 @@ S60DeviceRunConfigurationWidget::S60DeviceRunConfigurationWidget(
this, SLOT(updateTargetInformation()));
}
void S60DeviceRunConfigurationWidget::updateInstallationDrives()
{
m_installationDriveCombo->clear();
for (int i = STARTING_DRIVE_LETTER; i <= LAST_DRIVE_LETTER; ++i) {
m_installationDriveCombo->addItem(QString("%1:").arg((char)i), qVariantFromValue(i));
}
int index = (char)QChar::toUpper((uint)m_runConfiguration->installationDrive())-STARTING_DRIVE_LETTER;
Q_ASSERT(index>= 0 && index <= LAST_DRIVE_LETTER-STARTING_DRIVE_LETTER);
m_installationDriveCombo->setCurrentIndex(index);
}
void S60DeviceRunConfigurationWidget::silentInstallChanged(int state)
{
bool isSilent = state == Qt::Checked;
m_runConfiguration->setSilentInstall(isSilent);
}
void S60DeviceRunConfigurationWidget::updateSerialDevices()
{
m_serialPortsCombo->clear();
@@ -208,6 +250,11 @@ void S60DeviceRunConfigurationWidget::updateTargetInformation()
m_sisFileLabel->setText(QDir::toNativeSeparators(m_runConfiguration->signedPackage()));
}
void S60DeviceRunConfigurationWidget::setInstallationDrive(int index)
{
m_runConfiguration->setInstallationDrive((char)(STARTING_DRIVE_LETTER + index));
}
void S60DeviceRunConfigurationWidget::setSerialPort(int index)
{
const SymbianUtils::SymbianDevice d = device(index);