diff options
author | ConfuSomu | 2023-11-12 00:16:02 -0500 |
---|---|---|
committer | ConfuSomu | 2023-11-12 00:16:02 -0500 |
commit | 8ee7a379bbd8c1e2d7831208308bf11eabcdc79d (patch) | |
tree | 601b9d6e453d0be1acc7a56a3df6f233cc4a73da /src/mainwindow.cpp | |
parent | 80a658f062328ab8b47dc6b2557d274f51278b3a (diff) | |
download | ActorViewer-8ee7a379bbd8c1e2d7831208308bf11eabcdc79d.tar ActorViewer-8ee7a379bbd8c1e2d7831208308bf11eabcdc79d.tar.gz ActorViewer-8ee7a379bbd8c1e2d7831208308bf11eabcdc79d.zip |
Move status info widget to its own widget
It is responsable of processing list items which are given to it, via
signals, and then displaying them on the interface. Making this widget
separate and modular will allow creating more advanced status views that
aren't only HTML-based and that are more intuitive to use.
Diffstat (limited to 'src/mainwindow.cpp')
-rw-r--r-- | src/mainwindow.cpp | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 4ab0bb2..8f72f23 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -21,6 +21,8 @@ MainWindow::MainWindow(QWidget *parent) , ui(new Ui::MainWindow) { ui->setupUi(this); + status_info_widget = new StatusInfoWidget(this); + ui->gridLayout->addWidget(status_info_widget, 1, 1); connect(ui->buttonCopy, &QPushButton::clicked, ui->actionCopy_status, &QAction::trigger); connect(ui->buttonRandom, &QPushButton::clicked, ui->actionRandom_status, &QAction::trigger); connect(ui->buttonSearch, &QPushButton::clicked, ui->actionFind, &QAction::trigger); @@ -85,22 +87,13 @@ void MainWindow::on_actionAbout_triggered(bool checked) { QMessageBox::information(this, "title", "text"); } -std::variant<QString, Archive::InitError> start_listWidget_itemActivated(StatusListItem* status, int text_zone_width, QLocale* locale) { - return (QString)status->get_info_html(text_zone_width, locale); -} - void MainWindow::on_listWidget_itemActivated(QListWidgetItem *item) { StatusListItem* status = dynamic_cast<StatusListItem*>(item); if (status != nullptr) { - const QFuture<std::variant<QString, Archive::InitError>> status_info = QtConcurrent::run(start_listWidget_itemActivated, status, ui->statusInfoText->width(), &locale_context); - archive_thread_watcher.setFuture(status_info); + status_info_widget->show_list_item(status); } } -void MainWindow::finish_listWidget_itemActivated(const QString& status_info) { - ui->statusInfoText->setHtml(status_info); -} - void MainWindow::on_actionRandom_status_triggered(bool checked) { if (data_archive == nullptr) return; // No archive open, avoids crashing @@ -291,12 +284,10 @@ void MainWindow::archive_thread_watcher_done() { std::variant<QString, Archive::InitError> result = archive_thread_watcher.result(); // For MainWindow::on_listWidget_itemActivated - if (const QString* status_info = std::get_if<QString>(&result)) { - finish_listWidget_itemActivated(*status_info); - } else - // For MainWindow::open_file - if (const Archive::InitError* parse_error = std::get_if<Archive::InitError>(&result)) { - finish_open_file(*parse_error); - } else + if (std::get_if<Archive::InitError>(&result)) { + // For MainWindow::open_file + if (const Archive::InitError* parse_error = std::get_if<Archive::InitError>(&result)) + finish_open_file(*parse_error); + } else if (not std::get_if<QString>(&result)) qDebug() << "What, the variant is weird"; } |