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