forked from qt-creator/qt-creator
ProjectExplorer: Use new construction pattern for dependencies panel
Change-Id: Ic73e426150fa8479a62fc0b50b743e707efaad41 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -6,6 +6,8 @@
|
|||||||
#include "project.h"
|
#include "project.h"
|
||||||
#include "projectexplorertr.h"
|
#include "projectexplorertr.h"
|
||||||
#include "projectmanager.h"
|
#include "projectmanager.h"
|
||||||
|
#include "projectpanelfactory.h"
|
||||||
|
#include "projectsettingswidget.h"
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <coreplugin/session.h>
|
#include <coreplugin/session.h>
|
||||||
@@ -14,18 +16,33 @@
|
|||||||
#include <utils/detailswidget.h>
|
#include <utils/detailswidget.h>
|
||||||
#include <utils/fsengine/fileiconprovider.h>
|
#include <utils/fsengine/fileiconprovider.h>
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QAbstractListModel>
|
||||||
#include <QSize>
|
|
||||||
#include <QCoreApplication>
|
|
||||||
|
|
||||||
#include <QCheckBox>
|
#include <QCheckBox>
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QTreeView>
|
|
||||||
#include <QSpacerItem>
|
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
#include <QSize>
|
||||||
|
#include <QSpacerItem>
|
||||||
|
#include <QTreeView>
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
namespace ProjectExplorer::Internal {
|
||||||
namespace Internal {
|
|
||||||
|
class DependenciesModel : public QAbstractListModel
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit DependenciesModel(Project *project, QObject *parent = nullptr);
|
||||||
|
|
||||||
|
int rowCount(const QModelIndex &index) const override;
|
||||||
|
int columnCount(const QModelIndex &index) const override;
|
||||||
|
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
||||||
|
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
|
||||||
|
Qt::ItemFlags flags(const QModelIndex &index) const override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void resetModel();
|
||||||
|
|
||||||
|
Project *m_project;
|
||||||
|
QList<Project *> m_projects;
|
||||||
|
};
|
||||||
|
|
||||||
DependenciesModel::DependenciesModel(Project *project, QObject *parent)
|
DependenciesModel::DependenciesModel(Project *project, QObject *parent)
|
||||||
: QAbstractListModel(parent)
|
: QAbstractListModel(parent)
|
||||||
@@ -124,6 +141,21 @@ Qt::ItemFlags DependenciesModel::flags(const QModelIndex &index) const
|
|||||||
//
|
//
|
||||||
// DependenciesView
|
// DependenciesView
|
||||||
//
|
//
|
||||||
|
|
||||||
|
class DependenciesView : public QTreeView
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit DependenciesView(QWidget *parent);
|
||||||
|
|
||||||
|
QSize sizeHint() const override;
|
||||||
|
void setModel(QAbstractItemModel *model) override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void updateSizeHint();
|
||||||
|
|
||||||
|
QSize m_sizeHint;
|
||||||
|
};
|
||||||
|
|
||||||
DependenciesView::DependenciesView(QWidget *parent)
|
DependenciesView::DependenciesView(QWidget *parent)
|
||||||
: QTreeView(parent)
|
: QTreeView(parent)
|
||||||
{
|
{
|
||||||
@@ -190,8 +222,11 @@ void DependenciesView::updateSizeHint()
|
|||||||
// DependenciesWidget
|
// DependenciesWidget
|
||||||
//
|
//
|
||||||
|
|
||||||
DependenciesWidget::DependenciesWidget(Project *project, QWidget *parent) : ProjectSettingsWidget(parent),
|
class DependenciesWidget : public ProjectSettingsWidget
|
||||||
m_project(project),
|
{
|
||||||
|
public:
|
||||||
|
explicit DependenciesWidget(Project *project)
|
||||||
|
: m_project(project),
|
||||||
m_model(new DependenciesModel(project, this))
|
m_model(new DependenciesModel(project, this))
|
||||||
{
|
{
|
||||||
setUseGlobalSettingsCheckBoxVisible(false);
|
setUseGlobalSettingsCheckBoxVisible(false);
|
||||||
@@ -221,5 +256,28 @@ DependenciesWidget::DependenciesWidget(Project *project, QWidget *parent) : Proj
|
|||||||
layout->addWidget(m_cascadeSetActiveCheckBox, 1, 0, 2, 1);
|
layout->addWidget(m_cascadeSetActiveCheckBox, 1, 0, 2, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
private:
|
||||||
} // namespace ProjectExplorer
|
Project *m_project;
|
||||||
|
DependenciesModel *m_model;
|
||||||
|
Utils::DetailsWidget *m_detailsContainer;
|
||||||
|
QCheckBox *m_cascadeSetActiveCheckBox;
|
||||||
|
};
|
||||||
|
|
||||||
|
class DependenciesProjectPanelFactory final : public ProjectPanelFactory
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DependenciesProjectPanelFactory()
|
||||||
|
{
|
||||||
|
setPriority(50);
|
||||||
|
setDisplayName(Tr::tr("Dependencies"));
|
||||||
|
setCreateWidgetFunction([](Project *project) { return new DependenciesWidget(project); });
|
||||||
|
ProjectPanelFactory::registerFactory(this);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void setupDependenciesProjectPanel()
|
||||||
|
{
|
||||||
|
static DependenciesProjectPanelFactory theDependenciesProjectPanelFactory;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // ProjectExplorer::Internal
|
||||||
|
@@ -3,76 +3,8 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <projectexplorer/projectsettingswidget.h>
|
namespace ProjectExplorer::Internal {
|
||||||
|
|
||||||
#include <QAbstractListModel>
|
void setupDependenciesProjectPanel();
|
||||||
#include <QTreeView>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
} // ProjectExplorer::Internal
|
||||||
class QCheckBox;
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
namespace Utils { class DetailsWidget; }
|
|
||||||
|
|
||||||
namespace ProjectExplorer {
|
|
||||||
|
|
||||||
class Project;
|
|
||||||
|
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
//
|
|
||||||
// DependenciesModel
|
|
||||||
//
|
|
||||||
|
|
||||||
class DependenciesModel : public QAbstractListModel
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit DependenciesModel(Project *project, QObject *parent = nullptr);
|
|
||||||
|
|
||||||
int rowCount(const QModelIndex &index) const override;
|
|
||||||
int columnCount(const QModelIndex &index) const override;
|
|
||||||
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
|
||||||
bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
|
|
||||||
Qt::ItemFlags flags(const QModelIndex &index) const override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
void resetModel();
|
|
||||||
|
|
||||||
Project *m_project;
|
|
||||||
QList<Project *> m_projects;
|
|
||||||
};
|
|
||||||
|
|
||||||
class DependenciesView : public QTreeView
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit DependenciesView(QWidget *parent);
|
|
||||||
|
|
||||||
QSize sizeHint() const override;
|
|
||||||
void setModel(QAbstractItemModel *model) override;
|
|
||||||
|
|
||||||
private:
|
|
||||||
void updateSizeHint();
|
|
||||||
|
|
||||||
QSize m_sizeHint;
|
|
||||||
};
|
|
||||||
|
|
||||||
class DependenciesWidget : public ProjectSettingsWidget
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit DependenciesWidget(Project *project, QWidget *parent = nullptr);
|
|
||||||
|
|
||||||
private:
|
|
||||||
Project *m_project;
|
|
||||||
DependenciesModel *m_model;
|
|
||||||
Utils::DetailsWidget *m_detailsContainer;
|
|
||||||
QCheckBox *m_cascadeSetActiveCheckBox;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
|
||||||
} // namespace ProjectExplorer
|
|
||||||
|
@@ -886,14 +886,9 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
|
|||||||
setupEditorSettingsProjectPanel();
|
setupEditorSettingsProjectPanel();
|
||||||
setupCodeStyleProjectPanel();
|
setupCodeStyleProjectPanel();
|
||||||
setupCommentsSettingsProjectPanel();
|
setupCommentsSettingsProjectPanel();
|
||||||
|
setupDependenciesProjectPanel();
|
||||||
|
|
||||||
auto panelFactory = new ProjectPanelFactory;
|
auto panelFactory = new ProjectPanelFactory;
|
||||||
panelFactory->setPriority(50);
|
|
||||||
panelFactory->setDisplayName(Tr::tr("Dependencies"));
|
|
||||||
panelFactory->setCreateWidgetFunction([](Project *project) { return new DependenciesWidget(project); });
|
|
||||||
ProjectPanelFactory::registerFactory(panelFactory);
|
|
||||||
|
|
||||||
panelFactory = new ProjectPanelFactory;
|
|
||||||
panelFactory->setPriority(60);
|
panelFactory->setPriority(60);
|
||||||
panelFactory->setDisplayName(Tr::tr("Environment"));
|
panelFactory->setDisplayName(Tr::tr("Environment"));
|
||||||
panelFactory->setCreateWidgetFunction([](Project *project) {
|
panelFactory->setCreateWidgetFunction([](Project *project) {
|
||||||
|
Reference in New Issue
Block a user