From b259939755fa6037db1af7053f8cf9493ef8eb23 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 16 Sep 2016 13:27:22 +0200 Subject: [PATCH] ProjectWindow: Make kit activation easier Add a [+] icon for inactive kit entries, add a "Click to activate" to the tool tip, and allow single click activation. Change-Id: I1219eb54b4e3a077ef133afaf71134bb35e14fb7 Reviewed-by: Tobias Hunger --- src/plugins/projectexplorer/projectwindow.cpp | 3 +- .../projectexplorer/targetsettingspanel.cpp | 29 ++++++++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 33f71fad58f..f9e8d73adbf 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include @@ -430,7 +431,7 @@ public: // SelectorTree // -class SelectorTree : public NavigationTreeView +class SelectorTree : public BaseTreeView { public: SelectorTree() diff --git a/src/plugins/projectexplorer/targetsettingspanel.cpp b/src/plugins/projectexplorer/targetsettingspanel.cpp index 320127cfff0..64e03b9d77c 100644 --- a/src/plugins/projectexplorer/targetsettingspanel.cpp +++ b/src/plugins/projectexplorer/targetsettingspanel.cpp @@ -52,6 +52,7 @@ #include #include +#include #include #include #include @@ -333,9 +334,7 @@ public: Qt::ItemFlags flags(int column) const override { Q_UNUSED(column) - if (isEnabled()) - return Qt::ItemFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); - return Qt::ItemIsSelectable; + return Qt::ItemFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled); } QVariant data(int column, int role) const override @@ -348,6 +347,8 @@ public: } case Qt::DecorationRole: { + if (!isEnabled()) + return Utils::Icons::PLUS.icon(); Kit *k = KitManager::find(m_kitId); QTC_ASSERT(k, return QVariant()); if (!k->isValid()) @@ -357,6 +358,11 @@ public: break; } + case Qt::TextColorRole: { + if (!isEnabled()) + return Utils::creatorTheme()->color(Theme::TextColorDisabled); + } + case Qt::FontRole: { QFont font = parent()->data(column, role).value(); if (TargetItem *targetItem = parent()->currentTargetItem()) @@ -369,7 +375,11 @@ public: case Qt::ToolTipRole: { Kit *k = KitManager::find(m_kitId); QTC_ASSERT(k, return QVariant()); - return k->toHtml(); + QString toolTip; + if (!isEnabled()) + toolTip = "

" + tr("Click to activate:") + "

"; + toolTip += k->toHtml(); + return toolTip; } case PanelWidgetRole: @@ -396,6 +406,17 @@ public: return true; } + if (role == BaseTreeView::ItemClickedRole) { + if (!isEnabled()) { + Kit *k = KitManager::find(m_kitId); + Target *t = m_project->createTarget(k); + m_project->addTarget(t); + QTC_ASSERT(!data.isValid(), return false); + SessionManager::setActiveTarget(m_project, target(), SetActive::Cascade); + return true; + } + } + if (role == ItemActivatedFromBelowRole) { // I.e. 'Build' and 'Run' items were present and user clicked on them. int child = children().indexOf(data.value());