From f92d6d85020ed7d941a81e9436c277485374038e Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 21 Oct 2011 15:07:47 +0200 Subject: [PATCH] RemoteLinux: Guide user to project file from deploy widget. Change-Id: I52b3885ef0c671e856840fb48136fe5433bc5d8f Reviewed-by: Christian Kandeler --- .../remotelinuxdeployconfigurationwidget.cpp | 57 +++++++++++++++++-- .../remotelinuxdeployconfigurationwidget.h | 1 + .../remotelinuxdeployconfigurationwidget.ui | 40 ------------- 3 files changed, 54 insertions(+), 44 deletions(-) diff --git a/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.cpp b/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.cpp index c3439238e15..ff663e79a2d 100644 --- a/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.cpp +++ b/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.cpp @@ -38,18 +38,41 @@ #include "remotelinuxsettingspages.h" #include "typespecificdeviceconfigurationlistmodel.h" +#include #include #include +#include + using namespace ProjectExplorer; namespace RemoteLinux { namespace Internal { +namespace { +class MyTableView : public QTableView +{ + Q_OBJECT +public: + MyTableView(QWidget *parent = 0) : QTableView(parent) {} + +signals: + void doubleClicked(); + +private: + void mouseDoubleClickEvent(QMouseEvent *event) + { + emit doubleClicked(); + QTableView::mouseDoubleClickEvent(event); + } +}; + +} // anonymous namespace class RemoteLinuxDeployConfigurationWidgetPrivate { public: Ui::RemoteLinuxDeployConfigurationWidget ui; + MyTableView tableView; RemoteLinuxDeployConfiguration *deployConfiguration; }; @@ -61,6 +84,15 @@ RemoteLinuxDeployConfigurationWidget::RemoteLinuxDeployConfigurationWidget(QWidg DeployConfigurationWidget(parent), d(new RemoteLinuxDeployConfigurationWidgetPrivate) { d->ui.setupUi(this); + d->tableView.setTextElideMode(Qt::ElideMiddle); + d->tableView.setShowGrid(false); + d->tableView.setWordWrap(false); + d->tableView.horizontalHeader()->setMinimumSectionSize(100); + d->tableView.horizontalHeader()->setDefaultSectionSize(400); + d->tableView.horizontalHeader()->setHighlightSections(false); + d->tableView.horizontalHeader()->setStretchLastSection(true); + d->tableView.verticalHeader()->setVisible(false); + layout()->addWidget(&d->tableView); } RemoteLinuxDeployConfigurationWidget::~RemoteLinuxDeployConfigurationWidget() @@ -75,6 +107,7 @@ void RemoteLinuxDeployConfigurationWidget::init(DeployConfiguration *dc) connect(d->ui.manageDevConfsLabel, SIGNAL(linkActivated(QString)), SLOT(showDeviceConfigurations())); + connect(&d->tableView, SIGNAL(doubleClicked()), SLOT(openProjectFile())); d->ui.deviceConfigsComboBox->setModel(d->deployConfiguration->deviceConfigModel().data()); connect(d->ui.deviceConfigsComboBox, SIGNAL(activated(int)), @@ -111,7 +144,7 @@ DeployableFilesPerProFile *RemoteLinuxDeployConfigurationWidget::currentModel() void RemoteLinuxDeployConfigurationWidget::handleModelListToBeReset() { - d->ui.tableView->setModel(0); + d->tableView.setModel(0); } void RemoteLinuxDeployConfigurationWidget::handleModelListReset() @@ -120,10 +153,13 @@ void RemoteLinuxDeployConfigurationWidget::handleModelListReset() == d->ui.projectsComboBox->count(), return); if (d->deployConfiguration->deploymentInfo()->modelCount() > 0) { + d->tableView.setToolTip(tr("Double-click to edit the project file")); if (d->ui.projectsComboBox->currentIndex() == -1) d->ui.projectsComboBox->setCurrentIndex(0); else setModel(d->ui.projectsComboBox->currentIndex()); + } else { + d->tableView.setToolTip(QString()); } } @@ -131,9 +167,9 @@ void RemoteLinuxDeployConfigurationWidget::setModel(int row) { DeployableFilesPerProFile * const proFileInfo = row == -1 ? 0 : d->deployConfiguration->deploymentInfo()->modelAt(row); - d->ui.tableView->setModel(proFileInfo); + d->tableView.setModel(proFileInfo); if (proFileInfo) - d->ui.tableView->resizeRowsToContents(); + d->tableView.resizeRowsToContents(); emit currentModelChanged(proFileInfo); } @@ -159,7 +195,20 @@ void RemoteLinuxDeployConfigurationWidget::handleDeviceConfigurationListChanged( void RemoteLinuxDeployConfigurationWidget::showDeviceConfigurations() { Core::ICore::instance()->showOptionsDialog(LinuxDeviceConfigurationsSettingsPage::pageCategory(), - LinuxDeviceConfigurationsSettingsPage::pageId()); + LinuxDeviceConfigurationsSettingsPage::pageId()); +} + +void RemoteLinuxDeployConfigurationWidget::openProjectFile() +{ + const int row = d->ui.projectsComboBox->currentIndex(); + if (row == -1) + return; + const DeployableFilesPerProFile * const proFileInfo = + d->deployConfiguration->deploymentInfo()->modelAt(row); + Core::EditorManager::instance()->openEditor(proFileInfo->proFilePath(), QString(), + Core::EditorManager::ModeSwitch); } } // namespace RemoteLinux + +#include "remotelinuxdeployconfigurationwidget.moc" diff --git a/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.h b/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.h index 45af354ef72..e91fd594f1c 100644 --- a/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.h +++ b/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.h @@ -67,6 +67,7 @@ private slots: void handleSelectedDeviceConfigurationChanged(int index); void handleDeviceConfigurationListChanged(); void showDeviceConfigurations(); + void openProjectFile(); private: Internal::RemoteLinuxDeployConfigurationWidgetPrivate * const d; diff --git a/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.ui b/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.ui index 8b2ca89497a..5f66ee9205b 100644 --- a/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.ui +++ b/src/plugins/remotelinux/remotelinuxdeployconfigurationwidget.ui @@ -86,46 +86,6 @@ - - - - - 0 - 150 - - - - Edit the project file to add or remove entries. - - - Qt::ElideMiddle - - - QAbstractItemView::ScrollPerPixel - - - false - - - false - - - 400 - - - false - - - 100 - - - true - - - false - - -