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 197a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidtclass WpaGuiApp : public QApplication 207a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt{ 217a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt Q_OBJECT 227a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidtpublic: 237a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt WpaGuiApp(int &argc, char **argv); 247a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 257a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt#if !defined(QT_NO_SESSIONMANAGER) && QT_VERSION < 0x050000 267a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt virtual void saveState(QSessionManager &manager); 277a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt#endif 287a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt 297a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt WpaGui *w; 307a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt int argc; 317a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt char **argv; 327a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt}; 338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtclass WpaGui : public QMainWindow, public Ui::WpaGui 358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt{ 368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Q_OBJECT 378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtpublic: 39912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt 40912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt enum TrayIconType { 41912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt TrayIconOffline = 0, 42912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt TrayIconAcquiring, 43912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt TrayIconConnected, 44912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt TrayIconSignalNone, 45912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt TrayIconSignalWeak, 46912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt TrayIconSignalOk, 47912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt TrayIconSignalGood, 48912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt TrayIconSignalExcellent, 49912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt }; 50912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt 518d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WpaGui(QApplication *app, QWidget *parent = 0, const char *name = 0, 527a53dbb56693ee9f55c0cab1a8297436511e8613Dmitry Shmidt Qt::WindowFlags fl = 0); 538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ~WpaGui(); 548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual int ctrlRequest(const char *cmd, char *buf, size_t *buflen); 568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void triggerUpdate(); 578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void editNetwork(const QString &sel); 588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void removeNetwork(const QString &sel); 598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void enableNetwork(const QString &sel); 608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void disableNetwork(const QString &sel); 618d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual int getNetworkDisabled(const QString &sel); 628d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void setBssFromScan(const QString &bssid); 638d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifndef QT_NO_SESSIONMANAGER 648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void saveState(); 658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif 668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtpublic slots: 688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void parse_argv(); 698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void updateStatus(); 708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void updateNetworks(); 718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void helpIndex(); 728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void helpContents(); 738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void helpAbout(); 748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void disconnect(); 758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void scan(); 768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void eventHistory(); 778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void ping(); 78912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt virtual void signalMeterUpdate(); 798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void processMsg(char *msg); 808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void processCtrlReq(const char *req); 818d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void receiveMsgs(); 828d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void connectB(); 838d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void selectNetwork(const QString &sel); 848d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void editSelectedNetwork(); 858d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void editListedNetwork(); 868d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void removeSelectedNetwork(); 878d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void removeListedNetwork(); 888d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void addNetwork(); 898d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void enableAllNetworks(); 908d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void disableAllNetworks(); 918d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void removeAllNetworks(); 928d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void saveConfig(); 938d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void selectAdapter(const QString &sel); 948d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void updateNetworkDisabledStatus(); 958d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void enableListedNetwork(bool); 968d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void disableListedNetwork(bool); 978d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void showTrayMessage(QSystemTrayIcon::MessageIcon type, 988d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int sec, const QString &msg); 998d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void showTrayStatus(); 100912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt virtual void updateTrayIcon(TrayIconType type); 1016c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt virtual void updateTrayToolTip(const QString &msg); 1021d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidt virtual QIcon loadThemedIcon(const QStringList &names, 1031d755d025b206e22b06aeb322e25a79f98ca7777Dmitry Shmidt const QIcon &fallback); 1048d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void wpsDialog(); 1058d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void peersDialog(); 1068d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void tabChanged(int index); 1078d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void wpsPbc(); 1088d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void wpsGeneratePin(); 1098d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void wpsApPinChanged(const QString &text); 1108d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void wpsApPin(); 1118d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_NATIVE_WINDOWS 1128d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void startService(); 1138d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void stopService(); 1148d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_NATIVE_WINDOWS */ 1158d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void addInterface(); 1168d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1178d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtprotected slots: 1188d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void languageChange(); 1198d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void trayActivated(QSystemTrayIcon::ActivationReason how); 1208d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt virtual void closeEvent(QCloseEvent *event); 1218d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1228d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidtprivate: 1238d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt ScanResults *scanres; 1248d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt Peers *peers; 1258d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt bool networkMayHaveChanged; 1268d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char *ctrl_iface; 1278d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt EventHistory *eh; 1288d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ctrl *ctrl_conn; 1298d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QSocketNotifier *msgNotifier; 1308d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QTimer *timer; 1318d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int pingsToStatusUpdate; 1328d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt WpaMsgList msgs; 1338d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt char *ctrl_iface_dir; 1348d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt struct wpa_ctrl *monitor_conn; 1358d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt UserDataRequest *udr; 1368d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *disconnectAction; 1378d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *reconnectAction; 1388d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *eventAction; 1398d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *scanAction; 1408d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *statAction; 1418d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *showAction; 1428d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *hideAction; 1438d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *quitAction; 1448d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QMenu *tray_menu; 1458d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QSystemTrayIcon *tray_icon; 146912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt TrayIconType currentIconType; 1478d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QString wpaStateTranslate(char *state); 1488d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void createTrayIcon(bool); 1498d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt bool ackTrayIcon; 1508d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt bool startInTray; 1516c0da2bb83f6915d8260912362692d1a742e057bDmitry Shmidt bool quietMode; 1528d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1538d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt int openCtrlConnection(const char *ifname); 1548d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1558d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt bool wpsRunning; 1568d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1578d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QString bssFromScan; 1588d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1598d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt void stopWpsRun(bool success); 1608d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 161912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt QTimer *signalMeterTimer; 162912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt int signalMeterInterval; 163912c6ecf72fb2c84fbf17dbd0666492778dbd9fcDmitry Shmidt 1648d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#ifdef CONFIG_NATIVE_WINDOWS 1658d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *fileStartServiceAction; 1668d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *fileStopServiceAction; 1678d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1688d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt bool serviceRunning(); 1698d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* CONFIG_NATIVE_WINDOWS */ 1708d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1718d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QAction *addInterfaceAction; 1728d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt AddInterface *add_iface; 1738d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1748d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt bool connectedToService; 1758d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1768d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt QApplication *app; 1778d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt bool inTray; 1788d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt}; 1798d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt 1808d520ff1dc2da35cdca849e982051b86468016d8Dmitry Shmidt#endif /* WPAGUI_H */ 181