From c6713d0876ce2d99f912151c9884477606909681 Mon Sep 17 00:00:00 2001 From: jaseg Date: Mon, 17 Aug 2020 00:56:17 +0200 Subject: More UI work --- numberator.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 65 insertions(+), 10 deletions(-) (limited to 'numberator.cpp') diff --git a/numberator.cpp b/numberator.cpp index 29c0d6b..3161ee8 100644 --- a/numberator.cpp +++ b/numberator.cpp @@ -8,11 +8,13 @@ Numberator::Numberator(QWidget *parent) : QMainWindow(parent) , ui(new Ui::Numberator) , tagsDockUi(new Ui::TagListDock) + , tagEditUi(new Ui::TagEditDialog) , settings("jaseg.de", "Numberator") , loadImageDialog(this) , proj() , tagListModel(proj) - , tagPropTableModel(proj) + , tagPropTableModel(&proj) + , dialogTagPropTableModel(nullptr, false) { ui->setupUi(this); @@ -22,16 +24,75 @@ Numberator::Numberator(QWidget *parent) QMessageBox::critical(this, errorName, description); }); + QDialog *tagEditDialog = new QDialog(this); + tagEditUi->setupUi(tagEditDialog); + tagEditUi->tagPropertiesView->setModel(&dialogTagPropTableModel); + connect(tagEditUi->buttonBox, &QDialogButtonBox::accepted, [=]() { + Tag newTag(m_tagBeingEdited); + newTag.name = tagEditUi->tagNameEdit->text(); + newTag.metadata = dialogTagPropTableModel.metadata(); + proj.updateTag(newTag); + tagEditDialog->hide(); + }); + + connect(tagEditUi->buttonBox, &QDialogButtonBox::rejected, tagEditDialog, &QDialog::hide); + + connect(ui->graphicsView->scene(), &TagScene::selectionChanged, [=](){ + auto dbg = qDebug() << "tag view selection changed"; + auto items = ui->graphicsView->scene()->selectedItems(); + if (items.isEmpty()) { + dbg << ""; + return; + } + QGraphicsItem *first = items.first(); + TagItem *it = qgraphicsitem_cast(first); + dbg << first << it << first->type() << TagItem::Type; + if (!it) { + dbg << ""; + return; + } + dbg << it->tag().id << it->tag().name; + QSignalBlocker(tagsDockUi->tagList->selectionModel()); + tagsDockUi->tagList->selectionModel()->select(tagListModel.indexOf(it->tag()), QItemSelectionModel::ClearAndSelect); + tagPropTableModel.showTag(it->tag()); + }); + + /* + m_tagBeingEdited = it->tag(); + tagEditUi->tagNameEdit->setText(m_tagBeingEdited.name); + tagEditUi->tagIdLabel->setText(QString::number(m_tagBeingEdited.id)); + tagEditUi->tagLocationLabel->setText(m_tagBeingEdited.humanReadableAnchor()); + dialogTagPropTableModel.showTag(m_tagBeingEdited); + */ + QDockWidget *dock = new QDockWidget(this); tagsDockUi->setupUi(dock); addDockWidget(Qt::LeftDockWidgetArea, dock); + tagsDockUi->tagList->setModel(&tagListModel); + qDebug() << "connecting up model" << tagsDockUi->tagList->selectionModel(); + connect(tagsDockUi->tagList->selectionModel(), &QItemSelectionModel::selectionChanged, + [=](const QItemSelection &selected, const QItemSelection &deselected) { + Q_UNUSED(deselected); + auto dbg = qDebug() << "tagList...selectionChanged"; + if (selected.indexes().isEmpty()) { + dbg << ""; + ui->graphicsView->scene()->clearSelection(); + tagPropTableModel.showTag(Tag()); + + } else { + Tag tag(tagListModel.getTag(selected.indexes().first())); + qDebug() << tag.id << tag.name; + tagPropTableModel.showTag(tag); + QSignalBlocker(ui->graphicsView->scene()); + ui->graphicsView->scene()->selectTag(tag); + } + }); + ui->menuView->addAction(dock->toggleViewAction()); - connect(ui->actionReload_Image, &QAction::triggered, - &proj, &SQLiteSaveFile::reloadImageFromDisk); + connect(ui->actionReload_Image, &QAction::triggered, &proj, &SQLiteSaveFile::reloadImageFromDisk); ui->graphicsView->setProject(&proj); - tagsDockUi->tagList->setModel(&tagListModel); tagsDockUi->propertyTable->setModel(&tagPropTableModel); loadImageDialog.setWindowModality(Qt::ApplicationModal); @@ -80,12 +141,6 @@ Numberator::Numberator(QWidget *parent) }); connect(ui->actionAbout, &QAction::triggered, &aboutDialog, &AboutDialog::open); - connect(tagsDockUi->tagList->selectionModel(), &QItemSelectionModel::selectionChanged, - [=](const QItemSelection &selected, const QItemSelection &deselected) { - Q_UNUSED(deselected); - tagPropTableModel.showTag(tagListModel.getTag(selected.indexes().first())); - }); - connect(ui->actionZoom_to_fit, &QAction::triggered, ui->graphicsView, &TagView::zoomToFit); connect(ui->actionZoom_in, &QAction::triggered, ui->graphicsView, &TagView::zoomIn); connect(ui->actionZoom_out, &QAction::triggered, ui->graphicsView, &TagView::zoomOut); -- cgit