18d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt/*
28d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * wpa_gui - WpaGui class
38d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt * Copyright (c) 2005-2006, Jouni Malinen <j@w1.fi>
48d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt *
5c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * This software may be distributed under the terms of the BSD license.
6c5ec7f57ead87efa365800228aa0b09a12d9e6c4Dmitry Shmidt * See README for more details.
78d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt */
88d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
98d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef WPAGUI_H
108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#define WPAGUI_H
118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include <QSystemTrayIcon>
138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include <QObject>
148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "ui_wpagui.h"
158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#include "addinterface.h"
168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass UserDataRequest;
188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass WpaGui : public QMainWindow, public Ui::WpaGui
218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{
228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	Q_OBJECT
238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtpublic:
258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	WpaGui(QApplication *app, QWidget *parent = 0, const char *name = 0,
268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	       Qt::WFlags fl = 0);
278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	~WpaGui();
288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual int ctrlRequest(const char *cmd, char *buf, size_t *buflen);
308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void triggerUpdate();
318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void editNetwork(const QString &sel);
328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void removeNetwork(const QString &sel);
338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void enableNetwork(const QString &sel);
348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void disableNetwork(const QString &sel);
358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual int getNetworkDisabled(const QString &sel);
368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	void setBssFromScan(const QString &bssid);
378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef QT_NO_SESSIONMANAGER
388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	void saveState();
398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif
408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtpublic slots:
428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void parse_argv();
438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void updateStatus();
448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void updateNetworks();
458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void helpIndex();
468d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void helpContents();
478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void helpAbout();
488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void disconnect();
498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void scan();
508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void eventHistory();
518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void ping();
528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void processMsg(char *msg);
538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void processCtrlReq(const char *req);
548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void receiveMsgs();
558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void connectB();
568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void selectNetwork(const QString &sel);
578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void editSelectedNetwork();
588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void editListedNetwork();
598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void removeSelectedNetwork();
608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void removeListedNetwork();
618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void addNetwork();
628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void enableAllNetworks();
638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void disableAllNetworks();
648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void removeAllNetworks();
658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void saveConfig();
668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void selectAdapter(const QString &sel);
678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void updateNetworkDisabledStatus();
688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void enableListedNetwork(bool);
698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void disableListedNetwork(bool);
708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void showTrayMessage(QSystemTrayIcon::MessageIcon type,
718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt				     int sec, const QString &msg);
728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void showTrayStatus();
738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void wpsDialog();
748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void peersDialog();
758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void tabChanged(int index);
768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void wpsPbc();
778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void wpsGeneratePin();
788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void wpsApPinChanged(const QString &text);
798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void wpsApPin();
808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_NATIVE_WINDOWS
818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void startService();
828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void stopService();
838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_NATIVE_WINDOWS */
848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void addInterface();
858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtprotected slots:
878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void languageChange();
888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void trayActivated(QSystemTrayIcon::ActivationReason how);
898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	virtual void closeEvent(QCloseEvent *event);
908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtprivate:
928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	ScanResults *scanres;
938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	Peers *peers;
948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	bool networkMayHaveChanged;
958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	char *ctrl_iface;
968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	EventHistory *eh;
978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	struct wpa_ctrl *ctrl_conn;
988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QSocketNotifier *msgNotifier;
998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QTimer *timer;
1008d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int pingsToStatusUpdate;
1018d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	WpaMsgList msgs;
1028d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	char *ctrl_iface_dir;
1038d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	struct wpa_ctrl *monitor_conn;
1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	UserDataRequest *udr;
1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *disconnectAction;
1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *reconnectAction;
1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *eventAction;
1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *scanAction;
1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *statAction;
1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *showAction;
1118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *hideAction;
1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *quitAction;
1138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QMenu *tray_menu;
1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QSystemTrayIcon *tray_icon;
1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QString wpaStateTranslate(char *state);
1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	void createTrayIcon(bool);
1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	bool ackTrayIcon;
1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	bool startInTray;
1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	int openCtrlConnection(const char *ifname);
1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	bool wpsRunning;
1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QString bssFromScan;
1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	void stopWpsRun(bool success);
1278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_NATIVE_WINDOWS
1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *fileStartServiceAction;
1308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *fileStopServiceAction;
1318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	bool serviceRunning();
1338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_NATIVE_WINDOWS */
1348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QAction *addInterfaceAction;
1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	AddInterface *add_iface;
1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	bool connectedToService;
1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	QApplication *app;
1418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt	bool inTray;
1428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt};
1438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt
1448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* WPAGUI_H */
145