wpa_gui: Add tray icon based signal strength meter
[mech_eap.git] / wpa_supplicant / wpa_gui-qt4 / wpagui.h
1 /*
2  * wpa_gui - WpaGui class
3  * Copyright (c) 2005-2006, Jouni Malinen <j@w1.fi>
4  *
5  * This software may be distributed under the terms of the BSD license.
6  * See README for more details.
7  */
8
9 #ifndef WPAGUI_H
10 #define WPAGUI_H
11
12 #include <QSystemTrayIcon>
13 #include <QObject>
14 #include "ui_wpagui.h"
15 #include "addinterface.h"
16
17 class UserDataRequest;
18
19
20 class WpaGui : public QMainWindow, public Ui::WpaGui
21 {
22         Q_OBJECT
23
24 public:
25
26         enum TrayIconType {
27                 TrayIconOffline = 0,
28                 TrayIconAcquiring,
29                 TrayIconConnected,
30                 TrayIconSignalNone,
31                 TrayIconSignalWeak,
32                 TrayIconSignalOk,
33                 TrayIconSignalGood,
34                 TrayIconSignalExcellent,
35         };
36
37         WpaGui(QApplication *app, QWidget *parent = 0, const char *name = 0,
38                Qt::WFlags fl = 0);
39         ~WpaGui();
40
41         virtual int ctrlRequest(const char *cmd, char *buf, size_t *buflen);
42         virtual void triggerUpdate();
43         virtual void editNetwork(const QString &sel);
44         virtual void removeNetwork(const QString &sel);
45         virtual void enableNetwork(const QString &sel);
46         virtual void disableNetwork(const QString &sel);
47         virtual int getNetworkDisabled(const QString &sel);
48         void setBssFromScan(const QString &bssid);
49 #ifndef QT_NO_SESSIONMANAGER
50         void saveState();
51 #endif
52
53 public slots:
54         virtual void parse_argv();
55         virtual void updateStatus();
56         virtual void updateNetworks();
57         virtual void helpIndex();
58         virtual void helpContents();
59         virtual void helpAbout();
60         virtual void disconnect();
61         virtual void scan();
62         virtual void eventHistory();
63         virtual void ping();
64         virtual void signalMeterUpdate();
65         virtual void processMsg(char *msg);
66         virtual void processCtrlReq(const char *req);
67         virtual void receiveMsgs();
68         virtual void connectB();
69         virtual void selectNetwork(const QString &sel);
70         virtual void editSelectedNetwork();
71         virtual void editListedNetwork();
72         virtual void removeSelectedNetwork();
73         virtual void removeListedNetwork();
74         virtual void addNetwork();
75         virtual void enableAllNetworks();
76         virtual void disableAllNetworks();
77         virtual void removeAllNetworks();
78         virtual void saveConfig();
79         virtual void selectAdapter(const QString &sel);
80         virtual void updateNetworkDisabledStatus();
81         virtual void enableListedNetwork(bool);
82         virtual void disableListedNetwork(bool);
83         virtual void showTrayMessage(QSystemTrayIcon::MessageIcon type,
84                                      int sec, const QString &msg);
85         virtual void showTrayStatus();
86         virtual void updateTrayIcon(TrayIconType type);
87         virtual void updateTrayToolTip(const QString &msg);
88         virtual void wpsDialog();
89         virtual void peersDialog();
90         virtual void tabChanged(int index);
91         virtual void wpsPbc();
92         virtual void wpsGeneratePin();
93         virtual void wpsApPinChanged(const QString &text);
94         virtual void wpsApPin();
95 #ifdef CONFIG_NATIVE_WINDOWS
96         virtual void startService();
97         virtual void stopService();
98 #endif /* CONFIG_NATIVE_WINDOWS */
99         virtual void addInterface();
100
101 protected slots:
102         virtual void languageChange();
103         virtual void trayActivated(QSystemTrayIcon::ActivationReason how);
104         virtual void closeEvent(QCloseEvent *event);
105
106 private:
107         ScanResults *scanres;
108         Peers *peers;
109         bool networkMayHaveChanged;
110         char *ctrl_iface;
111         EventHistory *eh;
112         struct wpa_ctrl *ctrl_conn;
113         QSocketNotifier *msgNotifier;
114         QTimer *timer;
115         int pingsToStatusUpdate;
116         WpaMsgList msgs;
117         char *ctrl_iface_dir;
118         struct wpa_ctrl *monitor_conn;
119         UserDataRequest *udr;
120         QAction *disconnectAction;
121         QAction *reconnectAction;
122         QAction *eventAction;
123         QAction *scanAction;
124         QAction *statAction;
125         QAction *showAction;
126         QAction *hideAction;
127         QAction *quitAction;
128         QMenu *tray_menu;
129         QSystemTrayIcon *tray_icon;
130         TrayIconType currentIconType;
131         QString wpaStateTranslate(char *state);
132         void createTrayIcon(bool);
133         bool ackTrayIcon;
134         bool startInTray;
135         bool quietMode;
136
137         int openCtrlConnection(const char *ifname);
138
139         bool wpsRunning;
140
141         QString bssFromScan;
142
143         void stopWpsRun(bool success);
144
145         QTimer *signalMeterTimer;
146         int signalMeterInterval;
147
148 #ifdef CONFIG_NATIVE_WINDOWS
149         QAction *fileStartServiceAction;
150         QAction *fileStopServiceAction;
151
152         bool serviceRunning();
153 #endif /* CONFIG_NATIVE_WINDOWS */
154
155         QAction *addInterfaceAction;
156         AddInterface *add_iface;
157
158         bool connectedToService;
159
160         QApplication *app;
161         bool inTray;
162 };
163
164 #endif /* WPAGUI_H */