quake-tools/source/quam/project.cc

48 lines
1.1 KiB
C++
Raw Normal View History

#include "quam/project.h"
#include <QAbstractItemModel>
#include <QErrorMessage>
#include <QMdiArea>
#include <QSortFilterProxyModel>
Project::Project(Arc::Dir &&arc, QErrorMessage *errors, QMdiArea *parent) :
QMdiSubWindow{parent},
Ui::Project{},
2019-10-04 10:37:34 -07:00
m_arc{std::move(arc)},
m_errors{errors},
m_model{new Arc::Model{this}},
2019-10-04 10:37:34 -07:00
m_sorter{new QSortFilterProxyModel{this}}
{
auto widget = new QWidget(this);
setupUi(widget);
setWidget(widget);
setAttribute(Qt::WA_DeleteOnClose);
showMaximized();
2019-10-04 10:37:34 -07:00
2019-10-08 20:43:35 -07:00
connect(m_model, &Arc::Model::dirChanged,
this, &Project::dirChanged);
connect(tableView, &QAbstractItemView::doubleClicked,
this, &Project::viewDoubleClicked);
2019-10-04 10:37:34 -07:00
m_sorter->setSourceModel(m_model);
tableView->setModel(m_sorter);
m_model->setDir(&m_arc);
}
Project::~Project() {
}
void Project::dirChanged(Arc::Dir *) {
tableView->resizeColumnsToContents();
}
2019-10-08 20:43:35 -07:00
void Project::viewDoubleClicked(QModelIndex const &index) {
auto node = static_cast<Arc::Node *>(index.data(Qt::UserRole)
.value<void *>());
if(auto dir = std::get_if<Arc::Dir>(node)) {
m_model->setDir(dir);
}
}
// EOF