#ifndef CONV_CONTEXT_H #define CONV_CONTEXT_H #include #include #include #include #include #include #include #include "lib/http.h" #include "lib/countries.h" #include "models/ChatModel.h" #include "models/ChatOverviewModel.h" #include "wsclient.h" class Conversations : public QObject { Q_OBJECT Q_PROPERTY(QString configRootconfigDirectory MEMBER configDirectory); Q_PROPERTY(QString configRoot MEMBER configRoot); Q_PROPERTY(QString pathGenericData MEMBER pathGenericData); Q_PROPERTY(QString homeDir MEMBER homeDir); Q_PROPERTY(QString accountName MEMBER accountName); public: explicit Conversations(QCommandLineParser *cmdargs); ~Conversations() override; bool isDebug = false; QCommandLineParser *cmdargs; QString configDirectory; QString configRoot; QString pathGenericData; QString homeDir; QString accountName; QHash countries_iso_3166_1; QString applicationPath; static void createConfigDirectory(const QString &dir) ; WSClient *ws; Countries *countries; ChatModel *chatModel; ChatOverviewModel *chatOverviewModel; void setWindowTitle(const QString &title); Q_INVOKABLE void getMessages(const QString &contact_uid, int limit, int offset); Q_INVOKABLE void getOverviewMessages(int limit = 20, int offset = 0); signals: void clockSkewDetected(); void setTitle(const QString &title); // set window title public slots: void onSendMessage(const QString &message); private slots: void onWSMessage(const QJsonObject& msg); private: QTimer m_hibernateTimer; std::chrono::seconds m_hibernateDetectInterval{300}; std::chrono::time_point m_hibernatePreviousTime; }; #endif // CONV_CONTEXT_H