diff options
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"; } |