QtNovelUI/WordsIDE/fragmentsorderview.cpp

77 lines
2.4 KiB
C++
Raw Normal View History

2022-12-08 19:43:42 +00:00
#include "fragmentsorderview.h"
2022-12-31 13:05:58 +00:00
#include "DocsManager.h"
2023-03-11 05:55:16 +00:00
#include "command_list.h"
2023-03-10 13:01:19 +00:00
#include "manager_docs.h"
2022-12-08 19:43:42 +00:00
#include <QVBoxLayout>
2023-03-11 05:55:16 +00:00
#include <StoryUnitDocumentParser.h>
#include <comdef.h>
2022-12-08 19:43:42 +00:00
using namespace Components;
using namespace Parse;
2023-03-11 07:01:28 +00:00
using namespace DataModel;
2022-12-08 19:43:42 +00:00
2023-03-11 05:55:16 +00:00
FragmentsOrderView::FragmentsOrderView(Schedule::CommandsDispatcher *core,
QWidget *parent)
: QWidget(parent), core_ins(core), table_view(new QTableView(this)) {
auto backend =
core->get<FragmentsOrderviewModel>(NAME(FragmentsOrderviewModel));
this->table_view->setModel(backend->tableModel());
2022-12-08 19:43:42 +00:00
auto layout = new QVBoxLayout(this);
layout->addWidget(table_view);
connect(this->table_view, &QTableView::doubleClicked, this, &FragmentsOrderView::double_click);
}
2023-03-11 05:55:16 +00:00
using namespace CommandList;
2022-12-08 19:43:42 +00:00
void FragmentsOrderView::double_click(const QModelIndex &index)
{
if(!index.isValid())
return;
QList<QString> path;
2023-03-11 05:55:16 +00:00
path << index.sibling(index.row(), 0).data().toString();
path << index.sibling(index.row(), 1).data().toString();
2023-03-10 13:01:19 +00:00
2023-03-11 07:01:28 +00:00
core_ins->postCommand(StoryboardJumpTo(path));
2023-03-10 13:01:19 +00:00
}
2023-03-11 05:55:16 +00:00
QString FragmentsOrderView::name() const { return NAME(FragmentsOrderView); }
2022-12-08 19:43:42 +00:00
2023-03-11 05:55:16 +00:00
FragmentsOrderviewModel::FragmentsOrderviewModel(Core::AppCore *core)
: core_ins(core), table_base(new QStandardItemModel) {
2022-12-08 19:43:42 +00:00
2023-03-11 05:55:16 +00:00
table_base->setHorizontalHeaderLabels(QStringList() << "情节名称"
<< "单元名称"
<< "索引值");
}
2022-12-08 19:43:42 +00:00
2023-03-11 05:55:16 +00:00
void FragmentsOrderviewModel::refreshTable() {
table_base->clear();
table_base->setHorizontalHeaderLabels(QStringList() << "情节名称"
<< "单元名称"
<< "索引值");
2022-12-08 19:43:42 +00:00
2023-03-11 05:55:16 +00:00
auto node_list = core_ins->parseCore()->queryOrdersFragment();
2022-12-08 19:43:42 +00:00
2023-03-11 05:55:16 +00:00
for (auto &ins : node_list) {
QList<QStandardItem *> row;
row << new QStandardItem(ins.first->name()[0]);
row << new QStandardItem(ins.first->name()[1]);
row << new QStandardItem(QString("%1").arg(ins.second, 8, 'f'));
2022-12-08 19:43:42 +00:00
2023-03-11 05:55:16 +00:00
for (auto &i : row)
i->setEditable(false);
2022-12-08 19:43:42 +00:00
2023-03-11 05:55:16 +00:00
table_base->appendRow(row);
}
}
2022-12-08 19:43:42 +00:00
2023-03-11 05:55:16 +00:00
QStandardItemModel *FragmentsOrderviewModel::tableModel() const {
return table_base;
}
2022-12-08 19:43:42 +00:00
2023-03-11 05:55:16 +00:00
QString FragmentsOrderviewModel::name() const {
return NAME(FragmentsOrderviewModel);
}