diff --git a/tycho/cc/mapmodel.cc b/tycho/cc/mapmodel.cc index e25607b..a86d90e 100644 --- a/tycho/cc/mapmodel.cc +++ b/tycho/cc/mapmodel.cc @@ -12,9 +12,9 @@ MapModel::~MapModel() dbgPrintFunc(); } -ProjectModel::Type MapModel::type() const +ProjectModelType MapModel::type() const { - return ProjectModel::Map; + return ProjectModelType::Map; } bool MapModel::isDirty() const diff --git a/tycho/cc/menu.cc b/tycho/cc/menu.cc index 52024fd..9276e50 100644 --- a/tycho/cc/menu.cc +++ b/tycho/cc/menu.cc @@ -22,7 +22,7 @@ Menu::~Menu() void Menu::mapNew() { - QScopedPointer proj{new Project(new MapModel)}; + QScopedPointer proj{new Project(ProjectModelType::Map)}; addProject(proj.take()); } @@ -40,7 +40,7 @@ void Menu::mapOpen() "All files (*)")); if(!fname.isEmpty()) { - QScopedPointer proj{new Project(new MapModel)}; + QScopedPointer proj{new Project(ProjectModelType::Map)}; if(proj->getModel()->open(fname)) { addProject(proj.take()); @@ -98,7 +98,7 @@ void Menu::openMapProperties() { auto proj = activeProject(); - if(proj && proj->getModel()->type() == ProjectModel::Map) { + if(proj && proj->getModel()->type() == ProjectModelType::Map) { MapProps props{proj->getMapModel(), proj}; props.exec(); } @@ -111,8 +111,6 @@ void Menu::updateActions() actionClose->setEnabled(active); actionMapProps->setEnabled(active); - - dbgPrintFunc(); } void Menu::closeEvent(QCloseEvent *event) diff --git a/tycho/cc/project.cc b/tycho/cc/project.cc index bf88258..928078e 100644 --- a/tycho/cc/project.cc +++ b/tycho/cc/project.cc @@ -1,8 +1,9 @@ #include "tycho.h" -Project::Project(ProjectModel *_model, QWidget *parent) : - QMdiSubWindow(parent), - model(_model) +Project::Project(ProjectModelType type) : + QMdiSubWindow(), + model(nullptr), + view(nullptr) { auto widget = new QWidget(this); @@ -11,7 +12,15 @@ Project::Project(ProjectModel *_model, QWidget *parent) : setWidget(widget); setAttribute(Qt::WA_DeleteOnClose); + switch(type) { + case ProjectModelType::Map: + model.reset(new MapModel(this)); + view = new MapView(getMapModel(), this); + break; + } + listView->setModel(dynamic_cast(model.get())); + verticalLayout->insertWidget(0, view); dbgPrintFunc(); } diff --git a/tycho/cc/tycho.h b/tycho/cc/tycho.h index 7ae7592..e988173 100644 --- a/tycho/cc/tycho.h +++ b/tycho/cc/tycho.h @@ -31,17 +31,17 @@ class MapView; class Menu; class Project; +enum class ProjectModelType +{ + Map, +}; + class ProjectModel { public: - enum Type - { - Map, - }; - virtual ~ProjectModel() {} - virtual Type type() const = 0; + virtual ProjectModelType type() const = 0; virtual bool isDirty() const = 0; virtual bool open(QString const &path) = 0; @@ -57,7 +57,7 @@ public: explicit MapModel(QObject *parent = nullptr); ~MapModel() override; - ProjectModel::Type type() const override; + ProjectModelType type() const override; bool isDirty() const override; bool open(QString const &path) override; @@ -126,18 +126,18 @@ class Project final : public QMdiSubWindow, private Ui::Project Q_OBJECT public: - explicit Project(ProjectModel *model, QWidget *parent = nullptr); + explicit Project(ProjectModelType type); ~Project(); - std::shared_ptr getModel(); - std::shared_ptr getMapModel(); - std::shared_ptr getAbstractModel(); + std::shared_ptr getModel(); + std::shared_ptr getMapModel(); protected: void closeEvent(QCloseEvent *event) override; private: std::shared_ptr model; + QWidget *view; }; template diff --git a/tycho/ui/project.ui b/tycho/ui/project.ui index b882e3a..d5a21d4 100644 --- a/tycho/ui/project.ui +++ b/tycho/ui/project.ui @@ -14,9 +14,6 @@ Project - - -