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