48 lines
1.1 KiB
C++
48 lines
1.1 KiB
C++
#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{},
|
|
m_arc{std::move(arc)},
|
|
m_errors{errors},
|
|
m_model{new Arc::Model{this}},
|
|
m_sorter{new QSortFilterProxyModel{this}}
|
|
{
|
|
auto widget = new QWidget(this);
|
|
setupUi(widget);
|
|
setWidget(widget);
|
|
setAttribute(Qt::WA_DeleteOnClose);
|
|
showMaximized();
|
|
|
|
connect(m_model, &Arc::Model::dirChanged,
|
|
this, &Project::dirChanged);
|
|
connect(tableView, &QAbstractItemView::doubleClicked,
|
|
this, &Project::viewDoubleClicked);
|
|
|
|
m_sorter->setSourceModel(m_model);
|
|
tableView->setModel(m_sorter);
|
|
m_model->setDir(&m_arc);
|
|
}
|
|
|
|
Project::~Project() {
|
|
}
|
|
|
|
void Project::dirChanged(Arc::Dir *) {
|
|
tableView->resizeColumnsToContents();
|
|
}
|
|
|
|
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
|