019d6a8f2fe38e34be26ab05b0ac0bb5a8fc8bf0
[dhcpcd-ui] / src / dhcpcd-qt / dhcpcd-qt.h
1 #ifndef DHCPCD_QT_H
2 #define DHCPCD_QT_H
3
4 #include <QSystemTrayIcon>
5 #include <QWidget>
6
7 #include "dhcpcd.h"
8 #include "dhcpcd-wi.h"
9
10 #ifdef __GNUC__
11 #  define _unused __attribute__((__unused__))
12 #else
13 #  define _unused
14 #endif
15
16 class QAction;
17 class QDialog;
18 class QLabel;
19 class QMenu;
20 class QPushButton;
21 class QSocketNotifier;
22 class QTimer;
23
24 class DhcpcdQt : public QWidget
25 {
26         Q_OBJECT
27
28 public:
29         DhcpcdQt();
30         ~DhcpcdQt();
31
32         void closeAbout();
33
34         static void dhcpcd_status_cb(DHCPCD_CONNECTION *con,
35             const char *status, void *d);
36         void statusCallback(const char *status);
37         static void dhcpcd_if_cb(DHCPCD_IF *i, void *d);
38         void ifCallback(DHCPCD_IF *i);
39
40         static void dhcpcd_wpa_scan_cb(DHCPCD_WPA *wpa, void *d);
41         void scanCallback(DHCPCD_WPA *wpa);
42
43         static QIcon getIcon(QString category, QString name);
44
45         void dialogClosed(QDialog *dialog);
46
47 protected:
48         void closeEvent(QCloseEvent *event);
49
50 private slots:
51         void animate();
52         void dispatch();
53         void showAbout();
54         void showPreferences();
55         void iconActivated(QSystemTrayIcon::ActivationReason reason);
56
57         void connectSsid(DHCPCD_IF *ifp, DHCPCD_WI_SCAN *scan);
58
59 private:
60         DHCPCD_CONNECTION *con;
61         bool tryOpen();
62         QSocketNotifier *notifier;
63         QTimer *retryOpenTimer;
64         QList<DhcpcdWi *> *wis;
65         DhcpcdWi *findWi(DHCPCD_WPA *wpa);
66
67         char *lastStatus;
68         bool onLine;
69         bool carrier;
70         QTimer *aniTimer;
71         int aniCounter;
72         void updateOnline(bool showIf);
73
74         QDialog *about;
75         QDialog *preferences;
76
77         void addSsidMenu(QMenu *&menu, DHCPCD_IF *ifp, DhcpcdWi *&wi);
78         void createSsidMenu();
79
80         /* Tray Icon */
81         void setIcon(QString category, QString name);
82         QIcon icon();
83         void createActions();
84         void createTrayIcon();
85
86         QSystemTrayIcon *trayIcon;
87         QIcon *realTrayIcon;
88         QAction *preferencesAction;
89         QAction *quitAction;
90         QAction *aboutAction;
91         QMenu *trayIconMenu;
92         QMenu *ssidMenu;
93
94         void notify(QString &title, QString &msg,
95             QSystemTrayIcon::MessageIcon icon = QSystemTrayIcon::Information);
96 };
97
98 #endif