From af57685ca896a971cbaf5ea39e4d0630b3991935 Mon Sep 17 00:00:00 2001 From: ck <qt-info@nokia.com> Date: Thu, 29 Jul 2010 14:35:08 +0200 Subject: [PATCH] Maemo: Improve remote mounts GUI. Reviewed-by: kh1 --- .../qt-maemo/maemoremotemountsmodel.cpp | 12 ++++- .../qt-maemo/maemoremotemountsmodel.h | 1 + .../qt-maemo/maemorunconfigurationwidget.cpp | 44 +++++++++++++++++-- .../qt-maemo/maemorunconfigurationwidget.h | 4 ++ 4 files changed, 56 insertions(+), 5 deletions(-) diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemountsmodel.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemountsmodel.cpp index 8bd045f65af..0fa6ce9f03e 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemountsmodel.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemountsmodel.cpp @@ -86,6 +86,16 @@ void MaemoRemoteMountsModel::setLocalDir(int pos, const QString &localDir) emit dataChanged(currentIndex, currentIndex); } +int MaemoRemoteMountsModel::validMountSpecificationCount() const +{ + int count = 0; + foreach (const MountSpecification &m, m_mountSpecs) { + if (m.isValid()) + ++count; + } + return count; +} + bool MaemoRemoteMountsModel::hasValidMountSpecifications() const { foreach (const MountSpecification &m, m_mountSpecs) { @@ -168,7 +178,7 @@ QVariant MaemoRemoteMountsModel::data(const QModelIndex &index, int role) const return mountSpec.remoteMountPoint; break; case PortRow: - if (role == Qt::DisplayRole) + if (role == Qt::DisplayRole || role == Qt::EditRole) return mountSpec.port; break; } diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemountsmodel.h b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemountsmodel.h index ed7a9bcbdb7..05fe1b9a857 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemoremotemountsmodel.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemoremotemountsmodel.h @@ -53,6 +53,7 @@ public: explicit MaemoRemoteMountsModel(QObject *parent = 0); int mountSpecificationCount() const { return m_mountSpecs.count(); } + int validMountSpecificationCount() const; MountSpecification mountSpecificationAt(int pos) const { return m_mountSpecs.at(pos); } bool hasValidMountSpecifications() const; diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp index 2301a136cd7..c5efebbfea5 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.cpp @@ -43,6 +43,7 @@ #include <coreplugin/icore.h> #include <projectexplorer/environmenteditmodel.h> +#include <utils/detailswidget.h> #include <QtGui/QComboBox> #include <QtGui/QFileDialog> @@ -99,12 +100,13 @@ MaemoRunConfigurationWidget::MaemoRunConfigurationWidget( formLayout->addRow(tr("Arguments:"), m_argsLineEdit); mainLayout->addSpacing(20); - QGroupBox *mountViewBox = new QGroupBox; + m_detailsContainer = new Utils::DetailsWidget(this); + QWidget *mountViewWidget = new QWidget; + m_detailsContainer->setWidget(mountViewWidget); #ifndef Q_OS_WIN - mainLayout->addWidget(mountViewBox); + mainLayout->addWidget(m_detailsContainer); #endif - mountViewBox->setTitle(tr("Local Directories to mount from device")); - QVBoxLayout *mountViewLayout = new QVBoxLayout(mountViewBox); + QVBoxLayout *mountViewLayout = new QVBoxLayout(mountViewWidget); QHBoxLayout *hostAddressLayout = new QHBoxLayout; mountViewLayout->addLayout(hostAddressLayout); QLabel *hostNameLabel @@ -160,6 +162,7 @@ MaemoRunConfigurationWidget::MaemoRunConfigurationWidget( handleCurrentDeviceConfigChanged(); enableOrDisableRemoveButton(); + handleRemoteMountsChanged(); connect(m_configNameLineEdit, SIGNAL(textEdited(QString)), this, SLOT(configNameEdited(QString))); @@ -175,6 +178,7 @@ MaemoRunConfigurationWidget::MaemoRunConfigurationWidget( SLOT(showSettingsDialog(QString))); connect(debuggerConfLabel, SIGNAL(linkActivated(QString)), this, SLOT(showSettingsDialog(QString))); + connect(addMountButton, SIGNAL(clicked()), this, SLOT(addMount())); connect(m_removeMountButton, SIGNAL(clicked()), this, SLOT(removeMount())); connect(m_mountView, SIGNAL(doubleClicked(QModelIndex)), this, @@ -182,6 +186,17 @@ MaemoRunConfigurationWidget::MaemoRunConfigurationWidget( connect(m_mountView->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(enableOrDisableRemoveButton())); + connect(m_runConfiguration->remoteMounts(), + SIGNAL(rowsInserted(QModelIndex, int, int)), this, + SLOT(handleRemoteMountsChanged())); + connect(m_runConfiguration->remoteMounts(), + SIGNAL(rowsRemoved(QModelIndex, int, int)), this, + SLOT(handleRemoteMountsChanged())); + connect(m_runConfiguration->remoteMounts(), + SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, + SLOT(handleRemoteMountsChanged())); + connect(m_runConfiguration->remoteMounts(), SIGNAL(modelReset()), this, + SLOT(handleRemoteMountsChanged())); connect(m_environmentWidget, SIGNAL(userChangesChanged()), this, SLOT(userChangesEdited())); @@ -335,5 +350,26 @@ void MaemoRunConfigurationWidget::userEnvironmentChangesChanged(const QList<Proj m_environmentWidget->setUserChanges(userChanges); } +void MaemoRunConfigurationWidget::handleRemoteMountsChanged() +{ + const int mountCount + = m_runConfiguration->remoteMounts()->validMountSpecificationCount(); + QString text; + switch (mountCount) { + case 0: + text = tr("No local directories to be mounted from the device."); + break; + case 1: + text = tr("One local directory to be mounted from the device."); + break; + default: + text = tr("%1 local directories to be mounted from the device.") + .arg(mountCount); + break; + } + m_detailsContainer->setSummaryText(QLatin1String("<b>") + text + + QLatin1String("</b>")); +} + } // namespace Internal } // namespace Qt4ProjectManager diff --git a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h index deb16f92edc..922e3b6c608 100644 --- a/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h +++ b/src/plugins/qt4projectmanager/qt-maemo/maemorunconfigurationwidget.h @@ -52,6 +52,8 @@ namespace ProjectExplorer { class EnvironmentWidget; } +namespace Utils { class DetailsWidget; } + namespace Qt4ProjectManager { namespace Internal { @@ -84,6 +86,7 @@ private slots: void baseEnvironmentChanged(); void systemEnvironmentChanged(); void userEnvironmentChangesChanged(const QList<ProjectExplorer::EnvironmentItem> &userChanges); + void handleRemoteMountsChanged(); private: QLineEdit *m_configNameLineEdit; @@ -93,6 +96,7 @@ private: QLineEdit *m_hostAddressLineEdit; QTableView *m_mountView; QToolButton *m_removeMountButton; + Utils::DetailsWidget *m_detailsContainer; MaemoRunConfiguration *m_runConfiguration; bool m_ignoreChange; -- GitLab