#pragma once #include #include #include #include "src/activitypub/apactivity.h" #include "src/types.h" enum ArchiveType { MASTODON }; class Archive { public: enum InitError { NoError = 0, FailedOpeningFile, JsonParseError, JsonEmpty, JsonNull, JsonNotObject, JsonNotActivityStream // for ActivityPub archives }; typedef int ArchiveItemRef; struct Hinting_t { StatusType status_type = UNKNOWN; }; virtual ~Archive() {}; virtual InitError init() = 0; static Archive* create_archive(ArchiveType archive_type, const QString& main_filename); virtual void update_status_list(ViewStatusTypes allowed_types, QListWidget *parent) = 0; virtual APActivity* get_activity(ArchiveItemRef index, Hinting_t hinting) = 0; virtual const QString get_html_status_text(ArchiveItemRef status_index) = 0; virtual const QString get_instance_address(); protected: Archive(const QString& main_filename); QString main_filename; };