aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorConfuSomu2023-01-11 14:20:12 -0500
committerConfuSomu2023-01-11 14:20:12 -0500
commitfbc19ae1dabf9fa9d07a9cbbfe2517016ac4d014 (patch)
tree17dbcb9cc00f5633abed92e923bc321884538f56 /src
parentbd0904d18a3b175c41bb5f47cdc8bb8b0590f89d (diff)
downloadActorViewer-fbc19ae1dabf9fa9d07a9cbbfe2517016ac4d014.tar
ActorViewer-fbc19ae1dabf9fa9d07a9cbbfe2517016ac4d014.tar.gz
ActorViewer-fbc19ae1dabf9fa9d07a9cbbfe2517016ac4d014.zip
Implement "copy status" button
Diffstat (limited to 'src')
-rw-r--r--src/archive_parser.cpp21
-rw-r--r--src/archive_parser.h1
-rw-r--r--src/mainwindow.cpp12
-rw-r--r--src/mainwindow.h1
4 files changed, 35 insertions, 0 deletions
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("<p><b>CW:</b> {{summary}}</p>").replace("{{summary}}", summary_text));
+ }
+
+ if (activity["content"].isString()) {
+ text.append(QString("<div>{{content}}</div>").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 <QFileDialog>
#include <QMessageBox>
#include <QRandomGenerator>
+#include <QClipboard>
+#include <QMimeData>
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<ListItem*>(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();