-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMessengerCache.h
More file actions
120 lines (94 loc) · 2.23 KB
/
MessengerCache.h
File metadata and controls
120 lines (94 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#ifndef ENUMS_H
#define ENUMS_H
#include <QObject>
#include "message.h"
class UserInfo : public QObject
{
Q_OBJECT
QString m_userName;
QString m_lastUser;
public:
Q_PROPERTY(QString unkown READ unkown)
Q_PROPERTY(QString usrName READ userName WRITE setUserName)
Q_PROPERTY(QString lastUser READ lastUser WRITE setLastUser)
explicit UserInfo(QObject* parent = nullptr) : QObject(parent)
{
}
QString unkown()
{ return "unkown";}
void setUserName(QString name)
{ this->m_userName = name; }
QString userName()
{ return this->m_userName;}
void setLastUser(QString name)
{ this->m_lastUser = name; }
QString lastUser()
{ return this->m_lastUser; }
};
class History : public QObject
{
Q_OBJECT
typedef QPair<QString, QVector<Message*>> chat;
QVector<chat>* chats;
public:
explicit History(QObject* parent = nullptr) : QObject(parent)
{
chats = new QVector<chat>();
}
Q_INVOKABLE void addMessage(QString usrName__, QByteArray data)
{
Message* msg = new Message(data);
bool contains;
int index;
for(int i = 0; i < chats->size(); i++)
{
if(chats->at(i).first == usrName__)
{
contains = true;
index = i;
break;
}
}
if(contains)
{
chat ch;
ch.first = usrName__;
ch.second = chats->at(index).second;
ch.second.push_back(msg);
chats->removeAt(index);
chats->push_back(ch);
}
else
{
chat ch;
ch.first = usrName__;
ch.second.push_back(msg);
chats->push_back(ch);
}
}
Q_INVOKABLE void getMessages(QString chatIp)
{
QVector<Message*> messages;
for(int i = 0; i < chats->size(); i++)
{
if(chats->at(i).first == chatIp)
{
messages = chats->at(i).second;
}
}
emit clear();
for(Message* msg : messages)
{
emit getmessage(msg->usrName(), msg->msgText(), msg->msgDate());
qDebug() << "---------" << chatIp.toStdString().c_str() << "--------";
qDebug() << "usrName:\t" << msg->usrName();
qDebug() << "msgText:\t" << msg->msgText();
qDebug() << "msgDate:\t" << msg->msgDate();
qDebug() << "----------------------------";
}
}
signals:
void getmessage(QString usrName, QString msgText, QString msgDate);
void clear();
};
#endif // ENUMS_H