tycho: use views in projects
parent
4a0257324e
commit
e58f5d8907
|
@ -12,9 +12,9 @@ MapModel::~MapModel()
|
||||||
dbgPrintFunc();
|
dbgPrintFunc();
|
||||||
}
|
}
|
||||||
|
|
||||||
ProjectModel::Type MapModel::type() const
|
ProjectModelType MapModel::type() const
|
||||||
{
|
{
|
||||||
return ProjectModel::Map;
|
return ProjectModelType::Map;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MapModel::isDirty() const
|
bool MapModel::isDirty() const
|
||||||
|
|
|
@ -22,7 +22,7 @@ Menu::~Menu()
|
||||||
|
|
||||||
void Menu::mapNew()
|
void Menu::mapNew()
|
||||||
{
|
{
|
||||||
QScopedPointer proj{new Project(new MapModel)};
|
QScopedPointer proj{new Project(ProjectModelType::Map)};
|
||||||
|
|
||||||
addProject(proj.take());
|
addProject(proj.take());
|
||||||
}
|
}
|
||||||
|
@ -40,7 +40,7 @@ void Menu::mapOpen()
|
||||||
"All files (*)"));
|
"All files (*)"));
|
||||||
|
|
||||||
if(!fname.isEmpty()) {
|
if(!fname.isEmpty()) {
|
||||||
QScopedPointer proj{new Project(new MapModel)};
|
QScopedPointer proj{new Project(ProjectModelType::Map)};
|
||||||
|
|
||||||
if(proj->getModel()->open(fname)) {
|
if(proj->getModel()->open(fname)) {
|
||||||
addProject(proj.take());
|
addProject(proj.take());
|
||||||
|
@ -98,7 +98,7 @@ void Menu::openMapProperties()
|
||||||
{
|
{
|
||||||
auto proj = activeProject();
|
auto proj = activeProject();
|
||||||
|
|
||||||
if(proj && proj->getModel()->type() == ProjectModel::Map) {
|
if(proj && proj->getModel()->type() == ProjectModelType::Map) {
|
||||||
MapProps props{proj->getMapModel(), proj};
|
MapProps props{proj->getMapModel(), proj};
|
||||||
props.exec();
|
props.exec();
|
||||||
}
|
}
|
||||||
|
@ -111,8 +111,6 @@ void Menu::updateActions()
|
||||||
|
|
||||||
actionClose->setEnabled(active);
|
actionClose->setEnabled(active);
|
||||||
actionMapProps->setEnabled(active);
|
actionMapProps->setEnabled(active);
|
||||||
|
|
||||||
dbgPrintFunc();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Menu::closeEvent(QCloseEvent *event)
|
void Menu::closeEvent(QCloseEvent *event)
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
#include "tycho.h"
|
#include "tycho.h"
|
||||||
|
|
||||||
Project::Project(ProjectModel *_model, QWidget *parent) :
|
Project::Project(ProjectModelType type) :
|
||||||
QMdiSubWindow(parent),
|
QMdiSubWindow(),
|
||||||
model(_model)
|
model(nullptr),
|
||||||
|
view(nullptr)
|
||||||
{
|
{
|
||||||
auto widget = new QWidget(this);
|
auto widget = new QWidget(this);
|
||||||
|
|
||||||
|
@ -11,7 +12,15 @@ Project::Project(ProjectModel *_model, QWidget *parent) :
|
||||||
setWidget(widget);
|
setWidget(widget);
|
||||||
setAttribute(Qt::WA_DeleteOnClose);
|
setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
|
||||||
|
switch(type) {
|
||||||
|
case ProjectModelType::Map:
|
||||||
|
model.reset(new MapModel(this));
|
||||||
|
view = new MapView(getMapModel(), this);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
listView->setModel(dynamic_cast<QAbstractItemModel *>(model.get()));
|
listView->setModel(dynamic_cast<QAbstractItemModel *>(model.get()));
|
||||||
|
verticalLayout->insertWidget(0, view);
|
||||||
|
|
||||||
dbgPrintFunc();
|
dbgPrintFunc();
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,17 +31,17 @@ class MapView;
|
||||||
class Menu;
|
class Menu;
|
||||||
class Project;
|
class Project;
|
||||||
|
|
||||||
|
enum class ProjectModelType
|
||||||
|
{
|
||||||
|
Map,
|
||||||
|
};
|
||||||
|
|
||||||
class ProjectModel
|
class ProjectModel
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum Type
|
|
||||||
{
|
|
||||||
Map,
|
|
||||||
};
|
|
||||||
|
|
||||||
virtual ~ProjectModel() {}
|
virtual ~ProjectModel() {}
|
||||||
|
|
||||||
virtual Type type() const = 0;
|
virtual ProjectModelType type() const = 0;
|
||||||
|
|
||||||
virtual bool isDirty() const = 0;
|
virtual bool isDirty() const = 0;
|
||||||
virtual bool open(QString const &path) = 0;
|
virtual bool open(QString const &path) = 0;
|
||||||
|
@ -57,7 +57,7 @@ public:
|
||||||
explicit MapModel(QObject *parent = nullptr);
|
explicit MapModel(QObject *parent = nullptr);
|
||||||
~MapModel() override;
|
~MapModel() override;
|
||||||
|
|
||||||
ProjectModel::Type type() const override;
|
ProjectModelType type() const override;
|
||||||
|
|
||||||
bool isDirty() const override;
|
bool isDirty() const override;
|
||||||
bool open(QString const &path) override;
|
bool open(QString const &path) override;
|
||||||
|
@ -126,18 +126,18 @@ class Project final : public QMdiSubWindow, private Ui::Project
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit Project(ProjectModel *model, QWidget *parent = nullptr);
|
explicit Project(ProjectModelType type);
|
||||||
~Project();
|
~Project();
|
||||||
|
|
||||||
std::shared_ptr<ProjectModel> getModel();
|
std::shared_ptr<ProjectModel> getModel();
|
||||||
std::shared_ptr<MapModel> getMapModel();
|
std::shared_ptr<MapModel> getMapModel();
|
||||||
std::shared_ptr<QAbstractItemModel> getAbstractModel();
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent *event) override;
|
void closeEvent(QCloseEvent *event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<ProjectModel> model;
|
std::shared_ptr<ProjectModel> model;
|
||||||
|
QWidget *view;
|
||||||
};
|
};
|
||||||
|
|
||||||
template<typename... VA>
|
template<typename... VA>
|
||||||
|
|
|
@ -14,9 +14,6 @@
|
||||||
<string>Project</string>
|
<string>Project</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
<item>
|
|
||||||
<widget class="QWidget" name="widget" native="true"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
<item>
|
||||||
<widget class="QListView" name="listView">
|
<widget class="QListView" name="listView">
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
|
|
Loading…
Reference in New Issue