forked from qt-creator/qt-creator
Debugger: Enable sorting in the settings page
As for the other tabs in the Kits category. Change-Id: Ibaed64336ed2ef57c463fe43ed5ca3e78aa673b2 Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <projectexplorer/devicesupport/devicemanager.h>
|
#include <projectexplorer/devicesupport/devicemanager.h>
|
||||||
|
#include <projectexplorer/kitoptionspage.h>
|
||||||
#include <projectexplorer/projectexplorerconstants.h>
|
#include <projectexplorer/projectexplorerconstants.h>
|
||||||
#include <projectexplorer/projectexplorericons.h>
|
#include <projectexplorer/projectexplorericons.h>
|
||||||
|
|
||||||
@@ -203,11 +204,13 @@ const DebuggerItem *findDebugger(const Predicate &pred)
|
|||||||
return titem ? &titem->m_item : nullptr;
|
return titem ? &titem->m_item : nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static QString genericCategoryDisplayName() { return Tr::tr("Generic"); }
|
||||||
|
|
||||||
DebuggerItemModel::DebuggerItemModel()
|
DebuggerItemModel::DebuggerItemModel()
|
||||||
{
|
{
|
||||||
setHeader({Tr::tr("Name"), Tr::tr("Path"), Tr::tr("Type")});
|
setHeader({Tr::tr("Name"), Tr::tr("Path"), Tr::tr("Type")});
|
||||||
|
|
||||||
auto generic = new StaticTreeItem(Tr::tr("Generic"));
|
auto generic = new StaticTreeItem(genericCategoryDisplayName());
|
||||||
auto autoDetected = new StaticTreeItem({ProjectExplorer::Constants::msgAutoDetected()},
|
auto autoDetected = new StaticTreeItem({ProjectExplorer::Constants::msgAutoDetected()},
|
||||||
{ProjectExplorer::Constants::msgAutoDetectedToolTip()});
|
{ProjectExplorer::Constants::msgAutoDetectedToolTip()});
|
||||||
rootItem()->appendChild(generic);
|
rootItem()->appendChild(generic);
|
||||||
@@ -942,12 +945,19 @@ public:
|
|||||||
m_container->setState(DetailsWidget::NoSummary);
|
m_container->setState(DetailsWidget::NoSummary);
|
||||||
m_container->setVisible(false);
|
m_container->setVisible(false);
|
||||||
|
|
||||||
|
m_sortModel = new KitSettingsSortModel(this);
|
||||||
|
m_sortModel->setSourceModel(&itemModel());
|
||||||
|
m_sortModel->setSortedCategories({genericCategoryDisplayName(),
|
||||||
|
ProjectExplorer::Constants::msgAutoDetected(),
|
||||||
|
ProjectExplorer::Constants::msgManual()});
|
||||||
m_debuggerView = new QTreeView(this);
|
m_debuggerView = new QTreeView(this);
|
||||||
m_debuggerView->setModel(&itemModel());
|
m_debuggerView->setModel(m_sortModel);
|
||||||
m_debuggerView->setUniformRowHeights(true);
|
m_debuggerView->setUniformRowHeights(true);
|
||||||
m_debuggerView->setSelectionMode(QAbstractItemView::SingleSelection);
|
m_debuggerView->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
m_debuggerView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
m_debuggerView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
m_debuggerView->expandAll();
|
m_debuggerView->expandAll();
|
||||||
|
m_debuggerView->setSortingEnabled(true);
|
||||||
|
m_debuggerView->sortByColumn(0, Qt::AscendingOrder);
|
||||||
|
|
||||||
auto header = m_debuggerView->header();
|
auto header = m_debuggerView->header();
|
||||||
header->setStretchLastSection(false);
|
header->setStretchLastSection(false);
|
||||||
@@ -1003,6 +1013,7 @@ public:
|
|||||||
void currentDebuggerChanged(const QModelIndex &newCurrent);
|
void currentDebuggerChanged(const QModelIndex &newCurrent);
|
||||||
void updateButtons();
|
void updateButtons();
|
||||||
|
|
||||||
|
KitSettingsSortModel *m_sortModel;
|
||||||
QTreeView *m_debuggerView;
|
QTreeView *m_debuggerView;
|
||||||
QPushButton *m_addButton;
|
QPushButton *m_addButton;
|
||||||
QPushButton *m_cloneButton;
|
QPushButton *m_cloneButton;
|
||||||
@@ -1027,7 +1038,7 @@ void DebuggerSettingsPageWidget::cloneDebugger()
|
|||||||
newItem.setGeneric(item->isGeneric());
|
newItem.setGeneric(item->isGeneric());
|
||||||
newItem.setEngineType(item->engineType());
|
newItem.setEngineType(item->engineType());
|
||||||
auto addedItem = itemModel().addDebuggerItem(newItem, true);
|
auto addedItem = itemModel().addDebuggerItem(newItem, true);
|
||||||
m_debuggerView->setCurrentIndex(itemModel().indexForItem(addedItem));
|
m_debuggerView->setCurrentIndex(m_sortModel->mapFromSource(itemModel().indexForItem(addedItem)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerSettingsPageWidget::addDebugger()
|
void DebuggerSettingsPageWidget::addDebugger()
|
||||||
@@ -1038,7 +1049,7 @@ void DebuggerSettingsPageWidget::addDebugger()
|
|||||||
item.setUnexpandedDisplayName(itemModel().uniqueDisplayName(Tr::tr("New Debugger")));
|
item.setUnexpandedDisplayName(itemModel().uniqueDisplayName(Tr::tr("New Debugger")));
|
||||||
item.setAutoDetected(false);
|
item.setAutoDetected(false);
|
||||||
auto addedItem = itemModel().addDebuggerItem(item, true);
|
auto addedItem = itemModel().addDebuggerItem(item, true);
|
||||||
m_debuggerView->setCurrentIndex(itemModel().indexForItem(addedItem));
|
m_debuggerView->setCurrentIndex(m_sortModel->mapFromSource(itemModel().indexForItem(addedItem)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebuggerSettingsPageWidget::removeDebugger()
|
void DebuggerSettingsPageWidget::removeDebugger()
|
||||||
@@ -1052,7 +1063,7 @@ void DebuggerSettingsPageWidget::removeDebugger()
|
|||||||
|
|
||||||
void DebuggerSettingsPageWidget::currentDebuggerChanged(const QModelIndex &newCurrent)
|
void DebuggerSettingsPageWidget::currentDebuggerChanged(const QModelIndex &newCurrent)
|
||||||
{
|
{
|
||||||
itemModel().setCurrentIndex(newCurrent);
|
itemModel().setCurrentIndex(m_sortModel->mapToSource(newCurrent));
|
||||||
updateButtons();
|
updateButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,11 +33,19 @@ namespace ProjectExplorer {
|
|||||||
bool KitSettingsSortModel::lessThan(const QModelIndex &source_left,
|
bool KitSettingsSortModel::lessThan(const QModelIndex &source_left,
|
||||||
const QModelIndex &source_right) const
|
const QModelIndex &source_right) const
|
||||||
{
|
{
|
||||||
if (!source_left.parent().isValid()) {
|
const auto defaultCmp = [&] { return SortModel::lessThan(source_left, source_right); };
|
||||||
QTC_CHECK(!source_right.parent().isValid());
|
|
||||||
return sourceModel()->data(source_left) == Constants::msgAutoDetected();
|
if (m_sortedCategories.isEmpty() || source_left.parent().isValid())
|
||||||
}
|
return defaultCmp();
|
||||||
return SortModel::lessThan(source_left, source_right);
|
|
||||||
|
QTC_ASSERT(!source_right.parent().isValid(), return defaultCmp());
|
||||||
|
const int leftIndex = m_sortedCategories.indexOf(sourceModel()->data(source_left));
|
||||||
|
QTC_ASSERT(leftIndex != -1, return defaultCmp());
|
||||||
|
if (leftIndex == 0)
|
||||||
|
return true;
|
||||||
|
const int rightIndex = m_sortedCategories.indexOf(sourceModel()->data(source_right));
|
||||||
|
QTC_ASSERT(rightIndex != -1, return defaultCmp());
|
||||||
|
return leftIndex < rightIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -534,6 +542,7 @@ KitOptionsPageWidget::KitOptionsPageWidget()
|
|||||||
verticalLayout->setStretch(0, 1);
|
verticalLayout->setStretch(0, 1);
|
||||||
verticalLayout->setStretch(1, 0);
|
verticalLayout->setStretch(1, 0);
|
||||||
m_sortModel = new KitSettingsSortModel(this);
|
m_sortModel = new KitSettingsSortModel(this);
|
||||||
|
m_sortModel->setSortedCategories({Constants::msgAutoDetected(), Constants::msgManual()});
|
||||||
m_sortModel->setSourceModel(m_model);
|
m_sortModel->setSourceModel(m_model);
|
||||||
|
|
||||||
m_kitsView->setModel(m_sortModel);
|
m_kitsView->setModel(m_sortModel);
|
||||||
|
@@ -16,8 +16,12 @@ class PROJECTEXPLORER_EXPORT KitSettingsSortModel : public Utils::SortModel
|
|||||||
public:
|
public:
|
||||||
using SortModel::SortModel;
|
using SortModel::SortModel;
|
||||||
|
|
||||||
|
void setSortedCategories(const QStringList &categories) { m_sortedCategories = categories; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override;
|
bool lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const override;
|
||||||
|
|
||||||
|
QStringList m_sortedCategories;
|
||||||
};
|
};
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
@@ -183,6 +183,7 @@ public:
|
|||||||
m_toolChainView->setSelectionMode(QAbstractItemView::SingleSelection);
|
m_toolChainView->setSelectionMode(QAbstractItemView::SingleSelection);
|
||||||
m_toolChainView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
m_toolChainView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||||||
m_sortModel.setSourceModel(&m_model);
|
m_sortModel.setSourceModel(&m_model);
|
||||||
|
m_sortModel.setSortedCategories({Constants::msgAutoDetected(), Constants::msgManual()});
|
||||||
m_toolChainView->setModel(&m_sortModel);
|
m_toolChainView->setModel(&m_sortModel);
|
||||||
m_toolChainView->setSortingEnabled(true);
|
m_toolChainView->setSortingEnabled(true);
|
||||||
m_toolChainView->sortByColumn(0, Qt::AscendingOrder);
|
m_toolChainView->sortByColumn(0, Qt::AscendingOrder);
|
||||||
|
@@ -315,6 +315,8 @@ QtOptionsPageWidget::QtOptionsPageWidget()
|
|||||||
m_model->rootItem()->appendChild(m_manualItem);
|
m_model->rootItem()->appendChild(m_manualItem);
|
||||||
|
|
||||||
m_filterModel = new KitSettingsSortModel(this);
|
m_filterModel = new KitSettingsSortModel(this);
|
||||||
|
m_filterModel->setSortedCategories({ProjectExplorer::Constants::msgAutoDetected(),
|
||||||
|
ProjectExplorer::Constants::msgManual()});
|
||||||
m_filterModel->setSourceModel(m_model);
|
m_filterModel->setSourceModel(m_model);
|
||||||
|
|
||||||
m_qtdirList->setModel(m_filterModel);
|
m_qtdirList->setModel(m_filterModel);
|
||||||
|
Reference in New Issue
Block a user