1 /* 2 * wpa_gui - WpaGui class 3 * Copyright (c) 2005-2006, Jouni Malinen <j (at) 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 class WpaGuiApp : public QApplication 20 { 21 Q_OBJECT 22 public: 23 WpaGuiApp(int &argc, char **argv); 24 25 #if !defined(QT_NO_SESSIONMANAGER) && QT_VERSION < 0x050000 26 virtual void saveState(QSessionManager &manager); 27 #endif 28 29 WpaGui *w; 30 int argc; 31 char **argv; 32 }; 33 34 class WpaGui : public QMainWindow, public Ui::WpaGui 35 { 36 Q_OBJECT 37 38 public: 39 40 enum TrayIconType { 41 TrayIconOffline = 0, 42 TrayIconAcquiring, 43 TrayIconConnected, 44 TrayIconSignalNone, 45 TrayIconSignalWeak, 46 TrayIconSignalOk, 47 TrayIconSignalGood, 48 TrayIconSignalExcellent, 49 }; 50 51 WpaGui(QApplication *app, QWidget *parent = 0, const char *name = 0, 52 Qt::WindowFlags fl = 0); 53 ~WpaGui(); 54 55 virtual int ctrlRequest(const char *cmd, char *buf, size_t *buflen); 56 virtual void triggerUpdate(); 57 virtual void editNetwork(const QString &sel); 58 virtual void removeNetwork(const QString &sel); 59 virtual void enableNetwork(const QString &sel); 60 virtual void disableNetwork(const QString &sel); 61 virtual int getNetworkDisabled(const QString &sel); 62 void setBssFromScan(const QString &bssid); 63 #ifndef QT_NO_SESSIONMANAGER 64 void saveState(); 65 #endif 66 67 public slots: 68 virtual void parse_argv(); 69 virtual void updateStatus(); 70 virtual void updateNetworks(); 71 virtual void helpIndex(); 72 virtual void helpContents(); 73 virtual void helpAbout(); 74 virtual void disconnect(); 75 virtual void scan(); 76 virtual void eventHistory(); 77 virtual void ping(); 78 virtual void signalMeterUpdate(); 79 virtual void processMsg(char *msg); 80 virtual void processCtrlReq(const char *req); 81 virtual void receiveMsgs(); 82 virtual void connectB(); 83 virtual void selectNetwork(const QString &sel); 84 virtual void editSelectedNetwork(); 85 virtual void editListedNetwork(); 86 virtual void removeSelectedNetwork(); 87 virtual void removeListedNetwork(); 88 virtual void addNetwork(); 89 virtual void enableAllNetworks(); 90 virtual void disableAllNetworks(); 91 virtual void removeAllNetworks(); 92 virtual void saveConfig(); 93 virtual void selectAdapter(const QString &sel); 94 virtual void updateNetworkDisabledStatus(); 95 virtual void enableListedNetwork(bool); 96 virtual void disableListedNetwork(bool); 97 virtual void showTrayMessage(QSystemTrayIcon::MessageIcon type, 98 int sec, const QString &msg); 99 virtual void showTrayStatus(); 100 virtual void updateTrayIcon(TrayIconType type); 101 virtual void updateTrayToolTip(const QString &msg); 102 virtual QIcon loadThemedIcon(const QStringList &names, 103 const QIcon &fallback); 104 virtual void wpsDialog(); 105 virtual void peersDialog(); 106 virtual void tabChanged(int index); 107 virtual void wpsPbc(); 108 virtual void wpsGeneratePin(); 109 virtual void wpsApPinChanged(const QString &text); 110 virtual void wpsApPin(); 111 #ifdef CONFIG_NATIVE_WINDOWS 112 virtual void startService(); 113 virtual void stopService(); 114 #endif /* CONFIG_NATIVE_WINDOWS */ 115 virtual void addInterface(); 116 117 protected slots: 118 virtual void languageChange(); 119 virtual void trayActivated(QSystemTrayIcon::ActivationReason how); 120 virtual void closeEvent(QCloseEvent *event); 121 122 private: 123 ScanResults *scanres; 124 Peers *peers; 125 bool networkMayHaveChanged; 126 char *ctrl_iface; 127 EventHistory *eh; 128 struct wpa_ctrl *ctrl_conn; 129 QSocketNotifier *msgNotifier; 130 QTimer *timer; 131 int pingsToStatusUpdate; 132 WpaMsgList msgs; 133 char *ctrl_iface_dir; 134 struct wpa_ctrl *monitor_conn; 135 UserDataRequest *udr; 136 QAction *disconnectAction; 137 QAction *reconnectAction; 138 QAction *eventAction; 139 QAction *scanAction; 140 QAction *statAction; 141 QAction *showAction; 142 QAction *hideAction; 143 QAction *quitAction; 144 QMenu *tray_menu; 145 QSystemTrayIcon *tray_icon; 146 TrayIconType currentIconType; 147 QString wpaStateTranslate(char *state); 148 void createTrayIcon(bool); 149 bool ackTrayIcon; 150 bool startInTray; 151 bool quietMode; 152 153 int openCtrlConnection(const char *ifname); 154 155 bool wpsRunning; 156 157 QString bssFromScan; 158 159 void stopWpsRun(bool success); 160 161 QTimer *signalMeterTimer; 162 int signalMeterInterval; 163 164 #ifdef CONFIG_NATIVE_WINDOWS 165 QAction *fileStartServiceAction; 166 QAction *fileStopServiceAction; 167 168 bool serviceRunning(); 169 #endif /* CONFIG_NATIVE_WINDOWS */ 170 171 QAction *addInterfaceAction; 172 AddInterface *add_iface; 173 174 bool connectedToService; 175 176 QApplication *app; 177 bool inTray; 178 }; 179 180 #endif /* WPAGUI_H */ 181