[PATCH 2/2] wpa_gui-qt4: add support for starting in system tray only

Kel Modderman kel at otaku42.de
Tue Sep 30 21:44:12 EDT 2008


Allow application to be started in the system tray only when started with
the `-t' command line argument.

Signed-off-by: Kel Modderman <kel at otaku42.de>
---
--- a/wpa_supplicant/wpa_gui-qt4/wpagui.cpp
+++ b/wpa_supplicant/wpa_gui-qt4/wpagui.cpp
@@ -80,17 +80,20 @@
 	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 @@
 	updateStatus();
 	networkMayHaveChanged = true;
 	updateNetworks();
-
-	if (tray_icon)
-		tray_icon->show();
 }
 
 
@@ -161,7 +161,7 @@
 {
 	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 @@
 			free(ctrl_iface_dir);
 			ctrl_iface_dir = strdup(optarg);
 			break;
+		case 't':
+			startInTray = true;
+			break;
 		}
 	}
 }
@@ -1085,7 +1088,7 @@
 }
 
 
-void WpaGui::createTrayIcon()
+void WpaGui::createTrayIcon(bool trayOnly)
 {
 	QApplication::setQuitOnLastWindowClosed(false);
 
@@ -1134,6 +1137,11 @@
 	tray_menu->addAction(quitAction);
 
 	tray_icon->setContextMenu(tray_menu);
+
+	tray_icon->show();
+
+	if (!trayOnly)
+		show();
 }
 
 
--- a/wpa_supplicant/wpa_gui-qt4/wpagui.h
+++ b/wpa_supplicant/wpa_gui-qt4/wpagui.h
@@ -100,8 +100,9 @@
 	QAction *quitAction;
 	QMenu *tray_menu;
 	QSystemTrayIcon *tray_icon;
-	void createTrayIcon();
+	void createTrayIcon(bool);
 	bool ackTrayIcon;
+	bool startInTray;
 
 	int openCtrlConnection(const char *ifname);
 };
--- a/wpa_supplicant/wpa_gui-qt4/main.cpp
+++ b/wpa_supplicant/wpa_gui-qt4/main.cpp
@@ -32,7 +32,6 @@
 	}
 #endif /* CONFIG_NATIVE_WINDOWS */
 
-	w.show();
 	ret = app.exec();
 
 #ifdef CONFIG_NATIVE_WINDOWS
--- a/wpa_supplicant/doc/docbook/wpa_gui.sgml
+++ b/wpa_supplicant/doc/docbook/wpa_gui.sgml
@@ -16,6 +16,7 @@
       <command>wpa_gui</command>
       <arg>-p <replaceable>path to ctrl sockets</replaceable></arg>
       <arg>-i <replaceable>ifname</replaceable></arg>
+      <arg>-t</arg>
     </cmdsynopsis>
   </refsynopsisdiv>
 
@@ -48,6 +49,14 @@
 	configured. By default, choose the first interface found with
 	a control socket in the socket path.</para></listitem>
       </varlistentry>
+
+      <varlistentry>
+	<term>-t</term>
+
+        <listitem><para>Start program in the system tray only (if the window
+	manager supports it). By default the main status window is
+	shown.</para></listitem>
+      </varlistentry>
     </variablelist>
   </refsect1>
   <refsect1>
---


More information about the HostAP mailing list