#pragma once #include #include #include #include "./ui_status_info.h" #include "src/activitypub/apactivity.h" #include "src/activitypub/apbase.h" #include "src/list_item.h" class StatusInfoWidgetWorker : public QObject { Q_OBJECT public slots: void process_item(StatusListItem* item); void process_activity(APActivityPtr activity); void set_text_zone_width(int width) {render_info.text_zone_width = width;} signals: void itemProcessed(const QString &html, APActivityPtr activity = nullptr); private: QLocale locale_context; HtmlRenderDetails render_info = {0, &locale_context}; }; QT_BEGIN_NAMESPACE namespace Ui { class StatusInfo; } QT_END_NAMESPACE class StatusInfoWidget : public QWidget { Q_OBJECT public: StatusInfoWidget(QWidget *parent = nullptr); ~StatusInfoWidget(); void resizeEvent(QResizeEvent* event); public slots: void show_list_item(StatusListItem* status); // Call from GUI thread void postProcess(const QString &html, APActivityPtr activity); signals: // These signals are called privetely by StatusInfoWidget void do_process_item(StatusListItem* item); void do_process_activity(APActivityPtr activity); private: Ui::StatusInfo* ui; QThread worker_thread; StatusInfoWidgetWorker worker; // Used for determining if we are dealing with a new list item or not StatusListItem* displayed_item = nullptr; APActivityPtr displayed_activity; };