2020-08-31 04:03:41 +08:00
|
|
|
#include "markerwidget.h"
|
|
|
|
#include "ui_markerwidget.h"
|
|
|
|
|
|
|
|
MarkerWidget::MarkerWidget(TraceMarkerModel &model, QWidget *parent) :
|
|
|
|
QWidget(parent),
|
|
|
|
ui(new Ui::MarkerWidget),
|
|
|
|
model(model)
|
|
|
|
{
|
|
|
|
ui->setupUi(this);
|
2020-11-03 07:37:06 +08:00
|
|
|
ui->treeView->setModel(&model);
|
|
|
|
ui->treeView->setItemDelegateForColumn(TraceMarkerModel::ColIndexTrace, new MarkerTraceDelegate);
|
|
|
|
ui->treeView->setItemDelegateForColumn(TraceMarkerModel::ColIndexType, new MarkerTypeDelegate);
|
|
|
|
ui->treeView->setItemDelegateForColumn(TraceMarkerModel::ColIndexSettings, new MarkerSettingsDelegate);
|
2020-08-31 04:03:41 +08:00
|
|
|
|
2020-11-23 03:07:39 +08:00
|
|
|
ui->treeView->setColumnWidth(TraceMarkerModel::ColIndexNumber, 60); // reduced width to fit widget when App is not maximized
|
|
|
|
ui->treeView->setColumnWidth(TraceMarkerModel::ColIndexTrace, 60); // reduced width to fit widget when App is not maximized
|
|
|
|
ui->treeView->setColumnWidth(TraceMarkerModel::ColIndexType, 120); // reduced width to fit widget when App is not maximized
|
2020-10-25 21:20:19 +08:00
|
|
|
|
2020-08-31 04:03:41 +08:00
|
|
|
connect(&model.getModel(), &TraceModel::traceAdded, this, &MarkerWidget::updatePersistentEditors);
|
|
|
|
connect(&model.getModel(), &TraceModel::traceRemoved, this, &MarkerWidget::updatePersistentEditors);
|
2020-11-02 05:56:31 +08:00
|
|
|
connect(&model.getModel(), &TraceModel::traceNameChanged, this, &MarkerWidget::updatePersistentEditors);
|
2020-08-31 04:03:41 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
MarkerWidget::~MarkerWidget()
|
|
|
|
{
|
2020-11-03 07:37:06 +08:00
|
|
|
delete ui->treeView->itemDelegateForColumn(TraceMarkerModel::ColIndexTrace);
|
|
|
|
delete ui->treeView->itemDelegateForColumn(TraceMarkerModel::ColIndexType);
|
|
|
|
delete ui->treeView->itemDelegateForColumn(TraceMarkerModel::ColIndexSettings);
|
2020-08-31 04:03:41 +08:00
|
|
|
delete ui;
|
|
|
|
}
|
|
|
|
|
|
|
|
void MarkerWidget::on_bDelete_clicked()
|
|
|
|
{
|
2020-11-23 03:07:39 +08:00
|
|
|
if (model.rowCount() <= 0) {
|
|
|
|
return; // prevent crash if bDelete clicked with no markers (empty model)
|
|
|
|
}
|
|
|
|
|
|
|
|
QModelIndex ind = ui->treeView->currentIndex();
|
|
|
|
if ( ! ind.isValid() ) {
|
|
|
|
return; // add marker(s), then click bDelete without clicking on any marker (there is no index clicked in treeView)
|
|
|
|
// alternative: select last marker, then proceede to delete it?
|
|
|
|
}
|
|
|
|
|
|
|
|
auto marker = model.markerFromIndex(ind);
|
2020-11-03 07:37:06 +08:00
|
|
|
if(!marker || marker->getParent()) {
|
|
|
|
// can't delete child markers directly
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
model.removeMarker(marker);
|
|
|
|
marker->blockSignals(true);
|
|
|
|
delete marker;
|
2020-08-31 04:03:41 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void MarkerWidget::on_bAdd_clicked()
|
|
|
|
{
|
|
|
|
auto marker = model.createDefaultMarker();
|
2020-10-20 23:03:49 +08:00
|
|
|
connect(marker, &TraceMarker::typeChanged, this, &MarkerWidget::updatePersistentEditors);
|
2020-12-03 05:15:34 +08:00
|
|
|
connect(marker, &TraceMarker::traceChanged, this, &MarkerWidget::updatePersistentEditors);
|
2020-08-31 04:03:41 +08:00
|
|
|
model.addMarker(marker);
|
|
|
|
updatePersistentEditors();
|
|
|
|
}
|
|
|
|
|
2020-10-20 23:03:49 +08:00
|
|
|
void MarkerWidget::updatePersistentEditors()
|
2020-08-31 04:03:41 +08:00
|
|
|
{
|
|
|
|
for(int i=0;i<model.rowCount();i++) {
|
2020-10-20 23:03:49 +08:00
|
|
|
auto columns = {TraceMarkerModel::ColIndexTrace, TraceMarkerModel::ColIndexType};
|
|
|
|
for(auto c : columns) {
|
|
|
|
auto index = model.index(i, c);
|
2020-11-03 07:37:06 +08:00
|
|
|
ui->treeView->closePersistentEditor(index);
|
|
|
|
ui->treeView->openPersistentEditor(index);
|
2020-10-20 23:03:49 +08:00
|
|
|
}
|
2020-08-31 04:03:41 +08:00
|
|
|
}
|
|
|
|
}
|