You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
2.3 KiB

3 years ago
#ifndef CONV_CONTEXT_H
#define CONV_CONTEXT_H
#include <QObject>
#include <QProcess>
#include <QNetworkAccessManager>
#include <QTimer>
#include <rtcom-eventlogger/eventlogger.h>
#include <glib.h>
#include <glib/gstdio.h>
3 years ago
#include "lib/http.h"
#include "lib/countries.h"
3 years ago
#include "models/ChatModel.h"
#include "models/ChatOverviewModel.h"
3 years ago
#include "wsclient.h"
3 years ago
3 years ago
struct rtcom_query {
RTComElQuery *query;
RTComElIter *it;
RTComEl *el = NULL;
};
class Conversations : public QObject {
3 years ago
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;
3 years ago
bool isDebug = false;
QCommandLineParser *cmdargs;
QString configDirectory;
QString configRoot;
QString pathGenericData;
QString homeDir;
QString accountName;
QHash<QString, CountryISO> countries_iso_3166_1;
QString applicationPath;
3 years ago
3 years ago
static void createConfigDirectory(const QString &dir) ;
3 years ago
WSClient *ws;
3 years ago
Countries *countries;
3 years ago
ChatModel *chatModel;
ChatOverviewModel *chatOverviewModel;
3 years ago
void setWindowTitle(const QString &title);
3 years ago
3 years ago
static rtcom_query* rtcomStartQuery(int limit, int offset, RTComElQueryGroupBy group_by = RTCOM_EL_QUERY_GROUP_BY_NONE);
static QList<ChatMessage*> rtcomIterateResults(rtcom_query *query_struct);
void getMessages(const QString &remote_uid, int limit, int offset) const;
void getOverviewMessages(int limit = 20, int offset = 0) const;
3 years ago
signals:
void clockSkewDetected();
void setTitle(const QString &title); // set window title
3 years ago
void showChat();
3 years ago
3 years ago
public slots:
void onSendMessage(const QString &message);
3 years ago
void requestChat(const QString &group_uid, const QString &local_uid, const QString &remote_uid);
3 years ago
3 years ago
private:
QTimer m_hibernateTimer;
std::chrono::seconds m_hibernateDetectInterval{300};
std::chrono::time_point<std::chrono::steady_clock> m_hibernatePreviousTime;
3 years ago
gint m_rtcom_sms_service_id = 3; // rtcom_el_get_service_id(el, "RTCOM_EL_SERVICE_SMS");
3 years ago
};
#endif // CONV_CONTEXT_H