#pragma once #include #include #include #include #include #include #include "types.h" #include "activitypub/apattachment.h" enum ArchiveType { MASTODON }; class Archive { public: enum InitError { NoError = 0, FailedOpeningFile, JsonParseError, JsonEmpty, JsonNull, JsonNotObject, JsonNotActivityStream // for ActivityPub archives }; Archive(QString outbox_filename, ArchiveType archive_type); ~Archive(); InitError init(); void update_status_list(ViewStatusTypes allowed_types, QListWidget *parent); QString get_html_status_info(int status_index, int text_zone_width, StatusType status_type, QLocale* locale); QString get_html_status_text(int status_index); private: QString outbox_filename; QDir archive_root_dir; ArchiveType archive_type; QDir attachment_dir; bool attachment_dir_have_to_find = true; QJsonObject *outbox_json = nullptr; QJsonArray *outbox_items = nullptr; std::vector get_status_attachments_list(QJsonValueRef attachments_ref); void find_attachment_dir(QString example_attachment); };