diff options
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/archive_parser.cpp | 23 | ||||
-rw-r--r-- | src/archive_parser.h | 5 | ||||
-rw-r--r-- | src/mainwindow.cpp | 7 | ||||
-rw-r--r-- | src/mainwindow.h | 9 | ||||
-rw-r--r-- | src/types.h | 9 |
6 files changed, 45 insertions, 9 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 121322d..f2bbe92 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,6 +23,7 @@ set(PROJECT_SOURCES src/mainwindow.ui src/archive_parser.cpp src/archive_parser.h + src/types.h ) if(${QT_VERSION_MAJOR} GREATER_EQUAL 6) diff --git a/src/archive_parser.cpp b/src/archive_parser.cpp index 09b8cef..61b5f14 100644 --- a/src/archive_parser.cpp +++ b/src/archive_parser.cpp @@ -1,4 +1,5 @@ #include "archive_parser.h" +#include "src/types.h" #include <QFile> #include <QJsonParseError> @@ -44,3 +45,25 @@ Archive::~Archive() { delete outbox_json; outbox_json = nullptr; delete outbox_items; outbox_items = nullptr; } + +QStringList Archive::get_status_list(ViewTootTypes types) { + QStringList statuses; + + for (auto&& item : *outbox_items) { + if (item.isObject()){ + QJsonObject obj = item.toObject(); + + // TODO: check the status type + + if (obj.value("object").isObject()) { + QJsonObject activity = obj.value("object").toObject(); + + if (activity.value("content").isString()) { + statuses.append(activity.value("content").toString()); + } + } + } + } + + return statuses; +} diff --git a/src/archive_parser.h b/src/archive_parser.h index ac9a7f0..e2d70df 100644 --- a/src/archive_parser.h +++ b/src/archive_parser.h @@ -1,10 +1,13 @@ #pragma once #include <QString> +#include <QStringList> #include <QJsonDocument> #include <QJsonObject> #include <QJsonArray> +#include "types.h" + enum ArchiveType { MASTODON }; @@ -24,6 +27,8 @@ public: Archive(QString outbox_filename, ArchiveType archive_type); ~Archive(); InitError init(); + + QStringList get_status_list(ViewTootTypes types); private: QString outbox_filename; ArchiveType archive_type; diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 8f4ebfe..326c3e4 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -36,7 +36,6 @@ void MainWindow::on_actionOpen_triggered(bool checked) { QApplication::setOverrideCursor(Qt::WaitCursor); data_archive = new Archive(outbox_filename, ArchiveType::MASTODON); auto parse_error = data_archive->init(); - QApplication::restoreOverrideCursor(); switch (parse_error) { case Archive::FailedOpeningFile: @@ -51,6 +50,12 @@ void MainWindow::on_actionOpen_triggered(bool checked) { case Archive::NoError: break; } + + if (parse_error == Archive::NoError) { + ui->listWidget->addItems(data_archive->get_status_list(view_filters)); + } + + QApplication::restoreOverrideCursor(); } void MainWindow::on_actionQuit_triggered(bool checked) { diff --git a/src/mainwindow.h b/src/mainwindow.h index 2cbb9df..8a14bf8 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -5,14 +5,7 @@ #include <qobjectdefs.h> #include "archive_parser.h" - -struct ViewTootTypes { - bool includePublic = true; - bool includeUnlisted = true; - bool includePrivate = true; - bool includeDirect = true; - bool onlyWithAttachment = false; -}; +#include "types.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } diff --git a/src/types.h b/src/types.h new file mode 100644 index 0000000..e193216 --- /dev/null +++ b/src/types.h @@ -0,0 +1,9 @@ +#pragma once + +struct ViewTootTypes { + bool includePublic = true; + bool includeUnlisted = true; + bool includePrivate = true; + bool includeDirect = true; + bool onlyWithAttachment = false; +}; |