aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorConfuSomu2022-12-27 03:58:29 -0500
committerConfuSomu2022-12-27 03:58:29 -0500
commit006d3cec6779ee85337bbabe02a6ff859d71f656 (patch)
treed6e95bfcb0af314cdaf0f20a59f3d8545c6d9d5f /src
parent941bd57371360eb01a28899aa62ee6c9dcca33c8 (diff)
downloadActorViewer-006d3cec6779ee85337bbabe02a6ff859d71f656.tar
ActorViewer-006d3cec6779ee85337bbabe02a6ff859d71f656.tar.gz
ActorViewer-006d3cec6779ee85337bbabe02a6ff859d71f656.zip
Store metadata of items that are in status list
There is more control and customizability of elements added to the status list, which allows us to set the icon used and also to store additional information about the status that has been selected, useful when we have to display it with more detail.
Diffstat (limited to 'src')
-rw-r--r--src/archive_parser.cpp15
-rw-r--r--src/archive_parser.h3
-rw-r--r--src/list_item.cpp12
-rw-r--r--src/list_item.h18
-rw-r--r--src/mainwindow.cpp4
-rw-r--r--src/types.h7
6 files changed, 49 insertions, 10 deletions
diff --git a/src/archive_parser.cpp b/src/archive_parser.cpp
index e370bcd..62edfd9 100644
--- a/src/archive_parser.cpp
+++ b/src/archive_parser.cpp
@@ -1,4 +1,5 @@
#include "archive_parser.h"
+#include "src/list_item.h"
#include "src/types.h"
#include <QFile>
@@ -47,14 +48,14 @@ Archive::~Archive() {
delete outbox_items; outbox_items = nullptr;
}
-QStringList Archive::get_status_list(ViewStatusTypes types) {
- QStringList statuses;
-
+void Archive::update_status_list(ViewStatusTypes allowed_types, QListWidget *parent) {
+ int i = 0;
for (auto&& item : *outbox_items) {
if (item.isObject()){
QJsonObject obj = item.toObject();
- // TODO: check the status type
+ // TODO: check the status type by looking at cc field
+ StatusType status_type = PUBLIC;
if (obj.value("object").isObject()) {
QJsonObject activity = obj.value("object").toObject();
@@ -63,11 +64,11 @@ QStringList Archive::get_status_list(ViewStatusTypes types) {
// Strip HTML for display in list, according to https://stackoverflow.com/a/12157835
QTextDocument strip_html;
strip_html.setHtml(activity.value("content").toString());
- statuses.append(strip_html.toPlainText());
+
+ ListItem *item = new ListItem(strip_html.toPlainText(), status_type, parent, i);
}
}
}
+ ++i;
}
-
- return statuses;
}
diff --git a/src/archive_parser.h b/src/archive_parser.h
index 47c7ea4..73adb2c 100644
--- a/src/archive_parser.h
+++ b/src/archive_parser.h
@@ -5,6 +5,7 @@
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
+#include <QListWidget>
#include "types.h"
@@ -28,7 +29,7 @@ public:
~Archive();
InitError init();
- QStringList get_status_list(ViewStatusTypes types);
+ void update_status_list(ViewStatusTypes allowed_types, QListWidget *parent);
private:
QString outbox_filename;
ArchiveType archive_type;
diff --git a/src/list_item.cpp b/src/list_item.cpp
new file mode 100644
index 0000000..6409169
--- /dev/null
+++ b/src/list_item.cpp
@@ -0,0 +1,12 @@
+#include "list_item.h"
+#include "types.h"
+
+QIcon* choose_icon(StatusType status_type) {
+ return new QIcon(); // TODO: null icon for the moment
+}
+
+ListItem::ListItem(const QString &text, StatusType status_type, QListWidget *parent, int index) :
+ QListWidgetItem(*choose_icon(status_type), text, parent, ArchiveListItemType), status_index(index)
+{
+
+}
diff --git a/src/list_item.h b/src/list_item.h
new file mode 100644
index 0000000..e2b3c3f
--- /dev/null
+++ b/src/list_item.h
@@ -0,0 +1,18 @@
+#pragma once
+
+#include <QListWidgetItem>
+#include "types.h"
+
+class ListItem : QListWidgetItem {
+public:
+ enum ItemType {
+ ArchiveListItemType = QListWidgetItem::UserType
+ };
+
+ ListItem(const QString &text, StatusType status_type, QListWidget *parent = nullptr, int index = 0);
+
+private:
+ int status_index;
+ StatusType status_type;
+ bool has_attachement;
+};
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 1424ff5..0b77012 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -54,7 +54,7 @@ void MainWindow::on_actionOpen_triggered(bool checked) {
ui->listWidget->clear();
if (parse_error == Archive::NoError) {
- ui->listWidget->addItems(data_archive->get_status_list(view_filters));
+ data_archive->update_status_list(view_filters, ui->listWidget);
}
QApplication::restoreOverrideCursor();
@@ -71,7 +71,7 @@ void MainWindow::on_actionAbout_triggered(bool checked) {
void MainWindow::relist_statuses() {
if (data_archive) {
ui->listWidget->clear();
- ui->listWidget->addItems(data_archive->get_status_list(view_filters));
+ data_archive->update_status_list(view_filters, ui->listWidget);
view_filters_changed = false;
}
}
diff --git a/src/types.h b/src/types.h
index 632d8ff..b78c564 100644
--- a/src/types.h
+++ b/src/types.h
@@ -7,3 +7,10 @@ struct ViewStatusTypes {
bool includeDirect = true;
bool onlyWithAttachment = false;
};
+
+enum StatusType {
+ PUBLIC,
+ UNLISTED,
+ PRIVATE,
+ DIRECT
+};