#ifndef MAINSCREEN_H #define MAINSCREEN_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "torrentsession.h" struct SearchItem { QString title; QUrl url; QString size; QString seeders; QString leechers; QString downloads; QString timestamp; QString magnet; void printData(); void writeData(std::string file_path); void readFromData(std::string file_path); }; class MainScreen : public QObject { Q_OBJECT class Tags { public: Tags() = delete; static std::string getTag(std::string file_name, std::string key); static void setTag(std::string file_name, std::string key, std::string value); static std::unordered_map getAllTags(std::string file_name); private: static QByteArray readFile(std::string file_name); static bool writeFile(std::string file_name, QByteArray data); }; QNetworkAccessManager *manager = nullptr; std::string tags_file_path = ""; public: explicit MainScreen(std::string search_term = "", QObject *parent = nullptr); signals: private: void renderSearchPage(std::string search_term); void renderHomePage(); std::vector parseSearchPage(std::string html_page); std::vector getStringEntries(std::vector res); int displaySearchMenu(std::vector res); int startDownloadIndex(std::vector res, int index); std::expected runBasicShell(SearchItem it); std::string stripForArgument(std::string command, int index); private slots: void renderSearchPage_(QNetworkReply *rep); }; #endif // MAINSCREEN_H