From fbc19ae1dabf9fa9d07a9cbbfe2517016ac4d014 Mon Sep 17 00:00:00 2001 From: ConfuSomu Date: Wed, 11 Jan 2023 14:20:12 -0500 Subject: Implement "copy status" button --- src/archive_parser.cpp | 21 +++++++++++++++++++++ src/archive_parser.h | 1 + src/mainwindow.cpp | 12 ++++++++++++ src/mainwindow.h | 1 + 4 files changed, 35 insertions(+) (limited to 'src') diff --git a/src/archive_parser.cpp b/src/archive_parser.cpp index 27d059b..8b9d41b 100644 --- a/src/archive_parser.cpp +++ b/src/archive_parser.cpp @@ -275,3 +275,24 @@ QString Archive::get_html_status_info(int status_index, int text_zone_width) { return info_text; } + +QString Archive::get_html_status_text(int status_index) { + QString text(""); + QJsonObject obj = outbox_items->at(status_index).toObject(); + + if (obj["object"].isObject()) { + QJsonObject activity = obj["object"].toObject(); + + if (activity.contains("summary")) { + QString summary_text = activity["summary"].toString(); + if (not summary_text.isEmpty()) + text.append(QString("

CW: {{summary}}

").replace("{{summary}}", summary_text)); + } + + if (activity["content"].isString()) { + text.append(QString("
{{content}}
").replace("{{content}}", activity["content"].toString())); + } + } + + return text; +} diff --git a/src/archive_parser.h b/src/archive_parser.h index a396840..fba97cd 100644 --- a/src/archive_parser.h +++ b/src/archive_parser.h @@ -31,6 +31,7 @@ public: void update_status_list(ViewStatusTypes allowed_types, QListWidget *parent); QString get_html_status_info(int status_index, int text_zone_width); + QString get_html_status_text(int status_index); private: QString outbox_filename; ArchiveType archive_type; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index cbac838..02fb760 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -6,6 +6,8 @@ #include #include #include +#include +#include MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) @@ -85,6 +87,16 @@ void MainWindow::on_buttonRandom_clicked() { ui->listWidget->setCurrentItem(item); } +void MainWindow::on_buttonCopy_clicked() { + ListItem* item = dynamic_cast(ui->listWidget->selectedItems()[0]); + if (item != nullptr) { + QString status_text = data_archive->get_html_status_text(item->get_status_index()); + QMimeData* clipboard_data = new QMimeData; + clipboard_data->setHtml(status_text); + QGuiApplication::clipboard()->setMimeData(clipboard_data); + } +} + void MainWindow::relist_statuses() { if (data_archive) { ui->listWidget->clear(); diff --git a/src/mainwindow.h b/src/mainwindow.h index c05eb10..98697fa 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -32,6 +32,7 @@ private slots: void on_actionOnly_with_attachment_triggered(bool checked); void on_buttonRandom_clicked(); + void on_buttonCopy_clicked(); void on_menuView_aboutToHide(); -- cgit v1.2.3-54-g00ecf