wpa_gui: Increase control interface message buffer for LIST_NETWORKS
[mech_eap.git] / wpa_supplicant / wpa_gui-qt4 / wpagui.cpp
index 408e387..a0aa05e 100644 (file)
@@ -31,7 +31,8 @@
 #endif
 
 
-WpaGui::WpaGui(QApplication *_app, QWidget *parent, const char *, Qt::WFlags)
+WpaGui::WpaGui(QApplication *_app, QWidget *parent, const char *,
+              Qt::WindowFlags)
        : QMainWindow(parent), app(_app)
 {
        setupUi(this);
@@ -159,7 +160,7 @@ WpaGui::WpaGui(QApplication *_app, QWidget *parent, const char *, Qt::WFlags)
        textStatus->setText(tr("connecting to wpa_supplicant"));
        timer = new QTimer(this);
        connect(timer, SIGNAL(timeout()), SLOT(ping()));
-       timer->setSingleShot(FALSE);
+       timer->setSingleShot(false);
        timer->start(1000);
 
        signalMeterTimer = new QTimer(this);
@@ -238,8 +239,9 @@ void WpaGui::languageChange()
 void WpaGui::parse_argv()
 {
        int c;
+       WpaGuiApp *app = qobject_cast<WpaGuiApp*>(qApp);
        for (;;) {
-               c = getopt(qApp->argc(), qApp->argv(), "i:m:p:tq");
+               c = getopt(app->argc, app->argv, "i:m:p:tq");
                if (c < 0)
                        break;
                switch (c) {
@@ -637,7 +639,7 @@ void WpaGui::updateStatus()
 
 void WpaGui::updateNetworks()
 {
-       char buf[2048], *start, *end, *id, *ssid, *bssid, *flags;
+       char buf[4096], *start, *end, *id, *ssid, *bssid, *flags;
        size_t len;
        int first_active = -1;
        int was_selected = -1;
@@ -750,7 +752,7 @@ void WpaGui::helpContents()
 void WpaGui::helpAbout()
 {
        QMessageBox::about(this, "wpa_gui for wpa_supplicant",
-                          "Copyright (c) 2003-2013,\n"
+                          "Copyright (c) 2003-2015,\n"
                           "Jouni Malinen <j@w1.fi>\n"
                           "and contributors.\n"
                           "\n"
@@ -1066,7 +1068,7 @@ void WpaGui::selectNetwork( const QString &sel )
        else
                cmd = "any";
        cmd.prepend("SELECT_NETWORK ");
-       ctrlRequest(cmd.toAscii().constData(), reply, &reply_len);
+       ctrlRequest(cmd.toLocal8Bit().constData(), reply, &reply_len);
        triggerUpdate();
        stopWpsRun(false);
 }
@@ -1082,11 +1084,11 @@ void WpaGui::enableNetwork(const QString &sel)
                cmd.truncate(cmd.indexOf(':'));
        else if (!cmd.startsWith("all")) {
                debug("Invalid editNetwork '%s'",
-                     cmd.toAscii().constData());
+                     cmd.toLocal8Bit().constData());
                return;
        }
        cmd.prepend("ENABLE_NETWORK ");
-       ctrlRequest(cmd.toAscii().constData(), reply, &reply_len);
+       ctrlRequest(cmd.toLocal8Bit().constData(), reply, &reply_len);
        triggerUpdate();
 }
 
@@ -1101,11 +1103,11 @@ void WpaGui::disableNetwork(const QString &sel)
                cmd.truncate(cmd.indexOf(':'));
        else if (!cmd.startsWith("all")) {
                debug("Invalid editNetwork '%s'",
-                     cmd.toAscii().constData());
+                     cmd.toLocal8Bit().constData());
                return;
        }
        cmd.prepend("DISABLE_NETWORK ");
-       ctrlRequest(cmd.toAscii().constData(), reply, &reply_len);
+       ctrlRequest(cmd.toLocal8Bit().constData(), reply, &reply_len);
        triggerUpdate();
 }
 
@@ -1191,11 +1193,11 @@ void WpaGui::removeNetwork(const QString &sel)
                cmd.truncate(cmd.indexOf(':'));
        else if (!cmd.startsWith("all")) {
                debug("Invalid editNetwork '%s'",
-                     cmd.toAscii().constData());
+                     cmd.toLocal8Bit().constData());
                return;
        }
        cmd.prepend("REMOVE_NETWORK ");
-       ctrlRequest(cmd.toAscii().constData(), reply, &reply_len);
+       ctrlRequest(cmd.toLocal8Bit().constData(), reply, &reply_len);
        triggerUpdate();
 }
 
@@ -1255,14 +1257,14 @@ int WpaGui::getNetworkDisabled(const QString &sel)
        int pos = cmd.indexOf(':');
        if (pos < 0) {
                debug("Invalid getNetworkDisabled '%s'",
-                     cmd.toAscii().constData());
+                     cmd.toLocal8Bit().constData());
                return -1;
        }
        cmd.truncate(pos);
        cmd.prepend("GET_NETWORK ");
        cmd.append(" disabled");
 
-       if (ctrlRequest(cmd.toAscii().constData(), reply, &reply_len) >= 0
+       if (ctrlRequest(cmd.toLocal8Bit().constData(), reply, &reply_len) >= 0
            && reply_len >= 1) {
                reply[reply_len] = '\0';
                if (!str_match(reply, "FAIL"))
@@ -1345,7 +1347,7 @@ void WpaGui::saveConfig()
 
 void WpaGui::selectAdapter( const QString & sel )
 {
-       if (openCtrlConnection(sel.toAscii().constData()) < 0)
+       if (openCtrlConnection(sel.toLocal8Bit().constData()) < 0)
                debug("Failed to open control connection to "
                      "wpa_supplicant.");
        updateStatus();
@@ -1503,8 +1505,8 @@ void WpaGui::updateTrayIcon(TrayIconType type)
        if (!tray_icon || currentIconType == type)
                return;
 
-       QIcon icon;
        QIcon fallback_icon;
+       QStringList names;
 
        if (QImageReader::supportedImageFormats().contains(QByteArray("svg")))
                fallback_icon = QIcon(":/icons/wpa_gui.svg");
@@ -1513,41 +1515,59 @@ void WpaGui::updateTrayIcon(TrayIconType type)
 
        switch (type) {
        case TrayIconOffline:
-               icon = QIcon::fromTheme("network-wireless-offline",
-                                       fallback_icon);
+               names << "network-wireless-offline-symbolic"
+                     << "network-wireless-offline"
+                     << "network-wireless-signal-none-symbolic"
+                     << "network-wireless-signal-none";
                break;
        case TrayIconAcquiring:
-               icon = QIcon::fromTheme("network-wireless-acquiring",
-                                       fallback_icon);
+               names << "network-wireless-acquiring-symbolic"
+                     << "network-wireless-acquiring";
                break;
        case TrayIconConnected:
-               icon = QIcon::fromTheme("network-wireless-connected",
-                                       fallback_icon);
+               names << "network-wireless-connected-symbolic"
+                     << "network-wireless-connected";
                break;
        case TrayIconSignalNone:
-               icon = QIcon::fromTheme("network-wireless-signal-none",
-                                       fallback_icon);
+               names << "network-wireless-signal-none-symbolic"
+                     << "network-wireless-signal-none";
                break;
        case TrayIconSignalWeak:
-               icon = QIcon::fromTheme("network-wireless-signal-weak",
-                                       fallback_icon);
+               names << "network-wireless-signal-weak-symbolic"
+                     << "network-wireless-signal-weak";
                break;
        case TrayIconSignalOk:
-               icon = QIcon::fromTheme("network-wireless-signal-ok",
-                                       fallback_icon);
+               names << "network-wireless-signal-ok-symbolic"
+                     << "network-wireless-signal-ok";
                break;
        case TrayIconSignalGood:
-               icon = QIcon::fromTheme("network-wireless-signal-good",
-                                       fallback_icon);
+               names << "network-wireless-signal-good-symbolic"
+                     << "network-wireless-signal-good";
                break;
        case TrayIconSignalExcellent:
-               icon = QIcon::fromTheme("network-wireless-signal-excellent",
-                                       fallback_icon);
+               names << "network-wireless-signal-excellent-symbolic"
+                     << "network-wireless-signal-excellent";
                break;
        }
 
        currentIconType = type;
-       tray_icon->setIcon(icon);
+       tray_icon->setIcon(loadThemedIcon(names, fallback_icon));
+}
+
+
+QIcon WpaGui::loadThemedIcon(const QStringList &names,
+                            const QIcon &fallback)
+{
+       QIcon icon;
+
+       for (QStringList::ConstIterator it = names.begin();
+            it != names.end(); it++) {
+               icon = QIcon::fromTheme(*it);
+               if (!icon.isNull())
+                       return icon;
+       }
+
+       return fallback;
 }
 
 
@@ -1701,7 +1721,7 @@ void WpaGui::wpsApPin()
        size_t reply_len = sizeof(reply);
 
        QString cmd("WPS_REG " + bssFromScan + " " + wpsApPinEdit->text());
-       if (ctrlRequest(cmd.toAscii().constData(), reply, &reply_len) < 0)
+       if (ctrlRequest(cmd.toLocal8Bit().constData(), reply, &reply_len) < 0)
                return;
 
        wpsStatusText->setText(tr("Waiting for AP/Enrollee"));