From fc0db5c9163f12a1a6aea1520c8d68afc657edf2 Mon Sep 17 00:00:00 2001 From: Kel Modderman Date: Wed, 1 Oct 2008 09:48:11 +0300 Subject: [PATCH] wpa_gui-qt4: add support for starting in system tray only Allow application to be started in the system tray only when started with the `-t' command line argument. Signed-off-by: Kel Modderman --- wpa_supplicant/doc/docbook/wpa_gui.sgml | 9 +++++++++ wpa_supplicant/wpa_gui-qt4/main.cpp | 1 - wpa_supplicant/wpa_gui-qt4/wpagui.cpp | 24 ++++++++++++++++-------- wpa_supplicant/wpa_gui-qt4/wpagui.h | 3 ++- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/wpa_supplicant/doc/docbook/wpa_gui.sgml b/wpa_supplicant/doc/docbook/wpa_gui.sgml index 32bcee085..41b584924 100644 --- a/wpa_supplicant/doc/docbook/wpa_gui.sgml +++ b/wpa_supplicant/doc/docbook/wpa_gui.sgml @@ -16,6 +16,7 @@ wpa_gui -p path to ctrl sockets -i ifname + -t @@ -48,6 +49,14 @@ configured. By default, choose the first interface found with a control socket in the socket path. + + + -t + + Start program in the system tray only (if the window + manager supports it). By default the main status window is + shown. + diff --git a/wpa_supplicant/wpa_gui-qt4/main.cpp b/wpa_supplicant/wpa_gui-qt4/main.cpp index 64aa7e9f4..2bc468e2b 100644 --- a/wpa_supplicant/wpa_gui-qt4/main.cpp +++ b/wpa_supplicant/wpa_gui-qt4/main.cpp @@ -32,7 +32,6 @@ int main(int argc, char *argv[]) } #endif /* CONFIG_NATIVE_WINDOWS */ - w.show(); ret = app.exec(); #ifdef CONFIG_NATIVE_WINDOWS diff --git a/wpa_supplicant/wpa_gui-qt4/wpagui.cpp b/wpa_supplicant/wpa_gui-qt4/wpagui.cpp index 871526725..f4847c044 100644 --- a/wpa_supplicant/wpa_gui-qt4/wpagui.cpp +++ b/wpa_supplicant/wpa_gui-qt4/wpagui.cpp @@ -80,17 +80,20 @@ WpaGui::WpaGui(QWidget *parent, const char *, Qt::WFlags) scanres = NULL; udr = NULL; tray_icon = NULL; + startInTray = false; ctrl_iface = NULL; ctrl_conn = NULL; monitor_conn = NULL; msgNotifier = NULL; ctrl_iface_dir = strdup("/var/run/wpa_supplicant"); - if (QSystemTrayIcon::isSystemTrayAvailable()) - createTrayIcon(); - parse_argv(); + if (QSystemTrayIcon::isSystemTrayAvailable()) + createTrayIcon(startInTray); + else + show(); + textStatus->setText("connecting to wpa_supplicant"); timer = new QTimer(this); connect(timer, SIGNAL(timeout()), SLOT(ping())); @@ -105,9 +108,6 @@ WpaGui::WpaGui(QWidget *parent, const char *, Qt::WFlags) updateStatus(); networkMayHaveChanged = true; updateNetworks(); - - if (tray_icon) - tray_icon->show(); } @@ -161,7 +161,7 @@ void WpaGui::parse_argv() { int c; for (;;) { - c = getopt(qApp->argc(), qApp->argv(), "i:p:"); + c = getopt(qApp->argc(), qApp->argv(), "i:p:t"); if (c < 0) break; switch (c) { @@ -173,6 +173,9 @@ void WpaGui::parse_argv() free(ctrl_iface_dir); ctrl_iface_dir = strdup(optarg); break; + case 't': + startInTray = true; + break; } } } @@ -1085,7 +1088,7 @@ void WpaGui::selectAdapter( const QString & sel ) } -void WpaGui::createTrayIcon() +void WpaGui::createTrayIcon(bool trayOnly) { QApplication::setQuitOnLastWindowClosed(false); @@ -1134,6 +1137,11 @@ void WpaGui::createTrayIcon() tray_menu->addAction(quitAction); tray_icon->setContextMenu(tray_menu); + + tray_icon->show(); + + if (!trayOnly) + show(); } diff --git a/wpa_supplicant/wpa_gui-qt4/wpagui.h b/wpa_supplicant/wpa_gui-qt4/wpagui.h index 3aead1ec3..45e878aa7 100644 --- a/wpa_supplicant/wpa_gui-qt4/wpagui.h +++ b/wpa_supplicant/wpa_gui-qt4/wpagui.h @@ -100,8 +100,9 @@ private: QAction *quitAction; QMenu *tray_menu; QSystemTrayIcon *tray_icon; - void createTrayIcon(); + void createTrayIcon(bool); bool ackTrayIcon; + bool startInTray; int openCtrlConnection(const char *ifname); };