-
Notifications
You must be signed in to change notification settings - Fork 1
/
subversionspy.h
134 lines (111 loc) · 3.88 KB
/
subversionspy.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
#ifndef SUBVERSIONSPY_H
#define SUBVERSIONSPY_H
#include <QtGui/QMainWindow>
#include <QSystemTrayIcon>
#include <QThread>
#include <QMenu>
#include <QPixmap>
#include <QDebug>
#include <QMutex>
#include <QtWebKit/QWebView>
#include <QtWebKit/QWebFrame>
#include <QSettings>
#include <stdint.h>
#include "spytypes.h"
#include "subversionparser.h"
#include "threadmonitor.h"
#include "spywkbridge.h"
#define DBG 1
#define WK_WINDOW_NAME "Subversion Spy Configuration"
#define WK_WINDOW_HEIGHT 400
#define WK_WINDOW_WIDTH 800
#define THREAD_POLL_RATE 30
namespace Spy{
/** @brief Main class of Subversion Spy.
One instance is one application :).
*/
class SubversionSpy : public QMainWindow
{
Q_OBJECT
private:
QVector<QString> listenpaths; ///< Paths that the thread monitor will assign to workers.
QMutex listenpathsmutex; ///< Lock this mutex when accessing listenerPaths.
ThreadMonitor* monitor; ///< Thread monitor for Subversion workers.
QVector<NotificationEntry> notilogs; ///< Vector of notification entries.
QMutex notilogs_mutex; ///< Lock when accessing notiLog.
QWebView* wk_gui; ///< Pointer to webkit browser.
SpyWkBridge* wk_bridge; ///< Pointer to webkit javascript bridge.
uint32_t p_rate; ///< Poll rate for threads in seconds.
QMutex p_rate_mutex; ///< Lock when accessing pollRate.
// Tray icon:
QSystemTrayIcon* tray; ///< Pointer to the tray icon.
QIcon _tray_graphics; ///< Tray icon graphics.
QMenu* tray_menu; ///< Pointer to the tray menu.
QAction* quit_action;
QAction* config_action;
public:
SubversionSpy(QWidget *parent = 0);
~SubversionSpy();
/**
* Get listener paths.
* @param mutex Lock this mutex before using the returned pointer.
* @return pointer to listener paths vector.
*/
QVector<QString>* get_listen_paths(QMutex **mutex);
bool save_listen_paths();
void restore_listen_paths();
/**
* Get notifications that have already been displayed.
* @param mutex Lock this mutex before using the returned pointer.
* @return pointer to notifications vector.
*/
QVector<NotificationEntry> *get_all_notific(QMutex **mutex);
/**
* Get certain amount of notifications that have already been displayed.
* No mutex required, but pointer returned must be freed.
* @param amount get n amount of the last logs added.
* @return pointer to notifications vector.
*/
QVector<NotificationEntry> *get_n_notific(uint32_t amount);
/**
* Get certain amount of notifications that have already been displayed.
* No mutex required, but pointer returned must be freed.
* @param amount get n amount of logs.
* @param offset offset for logs.
* @return pointer to notifications vector.
*/
QVector<NotificationEntry> *get_n_notific(uint32_t amount,
uint32_t offset);
/**
* Set the poll rate of the listener threads.
* @param seconds Wait n amount seconds before doing a recheck.
*/
void setpollrate(uint32_t secs);
/**
* Get current poll rate of the listener threads;
* @return the current poll rate.
*/
uint32_t getpollrate();
/**
* Get the thread monitor.
* @returns pointer to the thread monitor.
*/
ThreadMonitor* get_threadmonitor();
public slots:
/**
* Remove the tray icon.
*/
void stop_tray();
/**
* Display a tray notification with given type.
* @see SpyNotifications enumeration.
*/
void displaynotific(QString msg, SpyNotifications type);
/**
* Opens the Webkit GUI.
*/
void open_wk_gui();
void wk_gui_closedcb();
};
}
#endif // SUBVERSIONSPY_H