forked from WizTeam/WizQTClient
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwizDocumentEditStatus.h
143 lines (117 loc) · 3.89 KB
/
wizDocumentEditStatus.h
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#ifndef WIZDOCUMENTEDITSTATUS_H
#define WIZDOCUMENTEDITSTATUS_H
#include <QThread>
#include <QMutex>
#include <QTimer>
#include <QWeakPointer>
#include <QMap>
#include <QPointer>
#include <QWaitCondition>
class QNetworkAccessManager;
class CWizDocumentEditStatusSyncThread : public QThread
{
Q_OBJECT
public:
CWizDocumentEditStatusSyncThread(QObject* parent = 0);
//
void startEditingDocument(const QString& strUserAlias, const QString& strKbGUID, const QString& strGUID);
void stopEditingDocument(const QString& strKbGUID ,const QString& strGUID, bool bModified);
void documentSaved(const QString& strUserAlias, const QString& strKbGUID ,const QString& strGUID);
void stop();
//
void waitForDone();
public slots:
void documentUploaded(const QString& strKbGUID ,const QString& strGUID);
protected:
void run();
private:
QString combineObjID(const QString& strKbGUID, const QString& strGUID);
void sendEditingMessage();
void sendDoneMessage();
bool sendEditingMessage(const QString& strUserAlias, const QString& strObjID);
bool sendDoneMessage(const QString& strUserAlias, const QString& strObjID);
private:
//
bool m_stop;
bool m_sendNow;
QMap<QString, QString> m_editingMap;
QMap<QString, QString> m_modifiedMap;
QMap<QString, QString> m_doneMap;
QMutex m_mutext;
QPointer<QNetworkAccessManager> m_netManager;
};
class CWizDocumentStatusChecker : public QObject
{
Q_OBJECT
public:
CWizDocumentStatusChecker(QObject* parent = 0);
~CWizDocumentStatusChecker();
public slots:
void onTimeOut();
void recheck();
void initialise();
void clearTimers();
void checkEditStatus(const QString& strKbGUID, const QString& strGUID);
void stopCheckStatus(const QString& strKbGUID, const QString& strGUID);
signals:
void checkTimeOut(QString strGUID);
void documentEditingByOthers(QString strGUID,QStringList editors);
void checkDocumentChangedFinished(const QString& strGUID, bool bChanged);
void checkEditStatusFinished(const QString& strGUID, bool eidtable);
private:
void setDocmentGUID(const QString& strKbGUID,const QString& strGUID);
void peekDocumentGUID(QString& strKbGUID, QString& strGUID);
void startRecheck();
void startCheck();
bool checkDocumentChangedOnServer(const QString& strKbGUID, const QString& strGUID);
bool checkDocumentEditStatus(const QString& strKbGUID, const QString& strGUID);
bool checkDocumentEditStatus(const QString& strUrl);
private:
QTimer* m_timeOutTimer;
// QTimer* m_loopCheckTimer;
bool m_stop;
bool m_networkError;
QString m_strKbGUID;
QString m_strGUID;
QMutex m_mutexWait;
QString m_strCurGUID;
QString m_strCurKbGUID;
};
class CWizDocumentStatusCheckThread : public QThread
{
Q_OBJECT
public:
CWizDocumentStatusCheckThread(QObject* parent = 0);
~CWizDocumentStatusCheckThread();
void checkEditStatus(const QString& strKbGUID,const QString& strGUID);
void downloadData(const QString& strUrl);
//
void stop() { m_stop = true; m_wait.wakeAll(); }
//
void waitForDone();
public slots:
void needRecheck();
void onTimeOut();
signals:
void checkTimeOut(QString strGUID);
void checkFinished(QString strGUID,QStringList editors);
void checkDocumentChangedFinished(const QString& strGUID, bool bChanged);
protected:
virtual void run();
private:
void setDocmentGUID(const QString& strKbGUID,const QString& strGUID);
bool checkDocumentChangedOnServer(const QString& strKbGUID, const QString& strGUID);
bool checkDocumentEditStatus(const QString& strKbGUID, const QString& strGUID);
private:
QString m_strKbGUID;
QString m_strGUID;
bool m_stop;
QMutex m_mutexWait;
QWaitCondition m_wait;
bool m_needRecheck;
bool m_checkNow;
QTimer* m_timer;
QString m_strCurGUID;
QString m_strCurKbGUID;
};
#endif // WIZDOCUMENTEDITSTATUS_H