ProjectWindow: More tree polish

- Remove 'panel memory effect' when switching kits

  Previously, each target entry memorized when its Build or
  Run page was used, and when switching to the target, that
  page came up.

  Now, don't use that when switching targets, but instead
  take the same page as is selected on the target we are
  switching from.

- Disable selection of the Build&Run and Project Settings
  "group entries"

Change-Id: I2214f8edc38be2e76a50f8984aa75d8f78b62026
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2016-10-07 16:21:17 +02:00
parent f7e4c2fb4c
commit a6032652ef
2 changed files with 15 additions and 11 deletions

View File

@@ -148,7 +148,7 @@ public:
Qt::ItemFlags flags(int) const override Qt::ItemFlags flags(int) const override
{ {
return Qt::ItemIsEnabled; return Qt::NoItemFlags;
} }
QVariant data(int column, int role) const override QVariant data(int column, int role) const override
@@ -179,13 +179,6 @@ public:
return true; return true;
} }
if (role == ItemActivatedDirectlyRole) {
m_currentPanelIndex = 0; // Use the first ('Editor') page.
parent()->setData(0, QVariant::fromValue(static_cast<TreeItem *>(this)),
ItemActivatedFromBelowRole);
return true;
}
return false; return false;
} }
@@ -541,10 +534,13 @@ void SelectorDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti
QStyleOptionViewItem opt = option; QStyleOptionViewItem opt = option;
if (TreeItem *item = model->itemForIndex(index)) { if (TreeItem *item = model->itemForIndex(index)) {
switch (item->level()) { switch (item->level()) {
case 2: case 2: {
QColor col = creatorTheme()->color(Theme::TextColorNormal);
opt.palette.setColor(QPalette::Text, col);
opt.font.setBold(true); opt.font.setBold(true);
opt.font.setPointSizeF(opt.font.pointSizeF() * 1.2); opt.font.setPointSizeF(opt.font.pointSizeF() * 1.2);
break; break;
}
} }
} }
QStyledItemDelegate::paint(painter, opt, index); QStyledItemDelegate::paint(painter, opt, index);

View File

@@ -313,6 +313,8 @@ class TargetItem : public TypedTreeItem<TreeItem, TargetGroupItem>
Q_DECLARE_TR_FUNCTIONS(TargetSettingsPanelWidget) Q_DECLARE_TR_FUNCTIONS(TargetSettingsPanelWidget)
public: public:
enum { DefaultPage = 1 }; // Run page.
TargetItem(Project *project, Id kitId) TargetItem(Project *project, Id kitId)
: m_project(project), m_kitId(kitId) : m_project(project), m_kitId(kitId)
{ {
@@ -405,10 +407,16 @@ public:
if (role == ItemActivatedDirectlyRole) { if (role == ItemActivatedDirectlyRole) {
QTC_ASSERT(!data.isValid(), return false); QTC_ASSERT(!data.isValid(), return false);
if (!isEnabled()) { if (!isEnabled()) {
m_currentChild = DefaultPage;
Kit *k = KitManager::find(m_kitId); Kit *k = KitManager::find(m_kitId);
m_project->addTarget(m_project->createTarget(k)); m_project->addTarget(m_project->createTarget(k));
} else { } else {
// Go to Run page, when on Run previously etc.
TargetItem *previousItem = parent()->currentTargetItem();
m_currentChild = previousItem ? previousItem->m_currentChild : DefaultPage;
SessionManager::setActiveTarget(m_project, target(), SetActive::Cascade); SessionManager::setActiveTarget(m_project, target(), SetActive::Cascade);
parent()->setData(column, QVariant::fromValue(static_cast<TreeItem *>(this)),
ItemActivatedFromBelowRole);
} }
return true; return true;
} }
@@ -506,7 +514,7 @@ public:
public: public:
QPointer<Project> m_project; // Not owned. QPointer<Project> m_project; // Not owned.
Id m_kitId; Id m_kitId;
int m_currentChild = 1; // Use run page by default. int m_currentChild = DefaultPage; // Use run page by default.
private: private:
enum class IconOverlay { enum class IconOverlay {
@@ -792,7 +800,7 @@ bool TargetGroupItem::setData(int column, const QVariant &data, int role)
Qt::ItemFlags TargetGroupItem::flags(int) const Qt::ItemFlags TargetGroupItem::flags(int) const
{ {
return Qt::ItemIsEnabled; return Qt::NoItemFlags;
} }
TargetItem *TargetGroupItem::currentTargetItem() const TargetItem *TargetGroupItem::currentTargetItem() const