summaryrefslogtreecommitdiffstats
path: root/knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless_widget.cpp
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-10-17 17:38:53 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-10-17 17:38:53 +0000
commit1e0dd58661c9097fb41218ee7e3515f2d8ba8dac (patch)
treea263b4ad0c1f7fba6013f5d9854db4cb4962df82 /knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless_widget.cpp
downloadknetworkmanager8-1e0dd58661c9097fb41218ee7e3515f2d8ba8dac.tar.gz
knetworkmanager8-1e0dd58661c9097fb41218ee7e3515f2d8ba8dac.zip
Add dead-ended knetworkmanager 0.8 source
Add copy of same for knetworkmanager 0.9 starting point git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/knetworkmanager8@1259314 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless_widget.cpp')
-rw-r--r--knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless_widget.cpp231
1 files changed, 231 insertions, 0 deletions
diff --git a/knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless_widget.cpp b/knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless_widget.cpp
new file mode 100644
index 0000000..3cf6a9f
--- /dev/null
+++ b/knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless_widget.cpp
@@ -0,0 +1,231 @@
+/***************************************************************************
+ *
+ * knetworkmanager-devicestore_dbus.cpp - A NetworkManager frontend for KDE
+ *
+ * Copyright (C) 2005, 2006 Novell, Inc.
+ *
+ * Author: Timo Hoenig <thoenig@suse.de>, <thoenig@nouse.net>
+ * Valentine Sinitsyn <e_val@inbox.ru>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ **************************************************************************/
+
+#include <tqwidget.h>
+#include <tqlineedit.h>
+#include <tqlayout.h>
+#include <tqlistview.h>
+
+#include <klistview.h>
+#include <klineedit.h>
+#include <klistviewsearchline.h>
+#include <kiconloader.h>
+#include <kglobal.h>
+#include <kpushbutton.h>
+
+#include "knetworkmanager-connection.h"
+#include "knetworkmanager-connection_setting_widget_interface.h"
+#include "knetworkmanager-connection_setting_wireless_widget.h"
+#include "knetworkmanager-connection_setting_wireless.h"
+#include "knetworkmanager-connection_setting_wireless_security.h"
+#include "knetworkmanager-connection_setting_info.h"
+#include "knetworkmanager-wireless_network.h"
+#include "knetworkmanager-wireless_manager.h"
+
+using namespace ConnectionSettings;
+
+class NetworkListViewItem : public KListViewItem
+{
+ public:
+
+ NetworkListViewItem(TQListView* parent, WirelessNetwork& net)
+ : KListViewItem(parent, TQString::fromUtf8(net.getDisplaySsid()), TQString("%1\%").tqarg(net.getStrength()))
+ , _net(net)
+ {
+ TQ_UINT8 strength = net.getStrength();
+ if (strength > 80)
+ setPixmap(1, KGlobal::iconLoader()->loadIcon("nm_signal_100", KIcon::Small));
+ else if (strength > 55)
+ setPixmap(1, KGlobal::iconLoader()->loadIcon("nm_signal_75", KIcon::Small));
+ else if (strength > 30)
+ setPixmap(1, KGlobal::iconLoader()->loadIcon("nm_signal_50", KIcon::Small));
+ else if (strength > 5)
+ setPixmap(1, KGlobal::iconLoader()->loadIcon("nm_signal_25", KIcon::Small));
+ else
+ setPixmap(1, KGlobal::iconLoader()->loadIcon("nm_signal_00", KIcon::Small));
+
+ if (net.isEncrypted())
+ setPixmap(2, KGlobal::iconLoader()->loadIcon("lock", KIcon::Small));
+ }
+
+ WirelessNetwork _net;
+};
+
+WirelessWidgetImpl::WirelessWidgetImpl(Connection* conn, bool new_conn, TQWidget* parent, const char* name, WFlags fl)
+ : WidgetInterface(parent, name, fl)
+{
+ _wireless_setting = dynamic_cast<Wireless*> (conn->getSetting(NM_SETTING_WIRELESS_SETTING_NAME));
+ _info_setting = dynamic_cast<Info*> (conn->getSetting(NM_SETTING_CONNECTION_SETTING_NAME));
+ _security_setting = dynamic_cast<WirelessSecurity*> (conn->getSetting(NM_SETTING_WIRELESS_SECURITY_SETTING_NAME));
+ _hasName = !_info_setting->getName().isEmpty();
+ _new_conn = new_conn;
+
+ TQVBoxLayout* tqlayout = new TQVBoxLayout(this, 1, 1);
+ _mainWid = new ConnectionSettingWirelessWidget(this);
+ tqlayout->addWidget(_mainWid);
+
+ // FIXME hide this button until it is implemented
+ _mainWid->pbExpert->hide();
+
+ Init();
+}
+
+void
+WirelessWidgetImpl::Init()
+{
+ TQVBoxLayout* tqlayout = new TQVBoxLayout(_mainWid->framePlaceholder, 1, 1);
+ _searchLine = new KListViewSearchLineWidget(_mainWid->lvEssids, _mainWid->framePlaceholder);
+ tqlayout->addWidget(_searchLine);
+
+ connect(_mainWid->txtEssid, TQT_SIGNAL(textChanged(const TQString&)), this, TQT_SLOT(slotEssidChanged(const TQString&)));
+ connect(_mainWid->lvEssids, TQT_SIGNAL(doubleClicked(TQListViewItem*, const TQPoint&, int)), this, TQT_SLOT(slotEssidDoubleClicked(TQListViewItem*, const TQPoint&, int)) );
+ connect(_mainWid->lvEssids, TQT_SIGNAL(selectionChanged(TQListViewItem*)), this, TQT_SLOT(slotEssidChanged(TQListViewItem*)));
+
+ if (!_new_conn)
+ {
+ _mainWid->chkAutoRefresh->hide();
+ _mainWid->lvEssids->hide();
+ _searchLine->hide();
+ }
+}
+
+void
+WirelessWidgetImpl::Activate()
+{
+ // Fill in all available networks from all devices
+ // get all aps from all devices grouped together using the ssid
+ TQValueList<WirelessNetwork> nets = WirelessManager::getWirelessNetworks(0, WirelessNetwork::MATCH_SSID);
+
+ _mainWid->lvEssids->clear();
+
+ for (TQValueList<WirelessNetwork>::Iterator it = nets.begin(); it != nets.end(); ++it)
+ {
+ KListViewItem* item = new NetworkListViewItem(_mainWid->lvEssids, (*it));
+
+ _mainWid->lvEssids->insertItem(item);
+ }
+
+ // FIXME, if essid contains unprintable characters show the essid in hex
+ _mainWid->txtEssid->setText(_wireless_setting->getEssid());
+}
+
+void WirelessWidgetImpl::slotEssidChanged(TQListViewItem* item)
+{
+ NetworkListViewItem* net_item = dynamic_cast<NetworkListViewItem*>(item);
+ if (net_item)
+ {
+ // update the settingsobject
+ updateEssid(net_item->_net.getSsid());
+
+ // update the textbox to match the selected essid
+ _mainWid->txtEssid->setText(net_item->_net.getDisplaySsid());
+ }
+}
+
+void
+WirelessWidgetImpl::slotEssidDoubleClicked(TQListViewItem* item, const TQPoint& /*p*/, int /*i*/)
+{
+ NetworkListViewItem* net_item = dynamic_cast<NetworkListViewItem*>(item);
+ if (net_item)
+ {
+ updateEssid(net_item->_net.getSsid());
+ // essid selected with double click -> goto the next setting
+ emit next();
+ }
+}
+
+
+void
+WirelessWidgetImpl::slotEssidChanged(const TQString& new_essid)
+{
+ /* set the newly entered essid */
+ /* FIXME perhaps local8Bit is better? */
+ /* FIXME allow entering essid in hex */
+ /* FIXME select the appropriate essid in the list too */
+
+ TQByteArray essid(new_essid.utf8());
+
+ // remove trailing \0
+ essid.resize(essid.size() - 1);
+
+ updateEssid(essid);
+}
+
+void
+WirelessWidgetImpl::updateEssid(const TQByteArray& essid)
+{
+ _wireless_setting->setEssid(essid);
+
+ if (!_hasName)
+ {
+ // the connection has no name yet -> just take the essid for it
+ _info_setting->setName(essid);
+ }
+}
+
+TQByteArray WirelessWidgetImpl::byteArrayFromHexString(const TQCString& str)
+{
+ char c[2];
+ TQByteArray arr(str.length() - 1);
+ TQTextStream stream(str, IO_ReadOnly);
+
+ stream.setf(TQTextStream::hex);
+ stream.setf(TQTextStream::left);
+ stream.width(2);
+ stream.fill('0');
+
+ // 0x
+ stream.readRawBytes(c, 2);
+
+ for (uint i = 0; i < (str.length()-1)/2; ++i)
+ {
+ stream.readRawBytes(c, 2);
+ TQString hex;
+ hex += "0x";
+ hex += c[0];
+ hex += c[1];
+ arr[i] = (unsigned char)hex.toShort();
+ }
+ return arr;
+}
+
+TQString WirelessWidgetImpl::hexStringFromByteArray(const TQByteArray& bytes)
+{
+ TQString tmp;
+ TQTextStream stream(&tmp, IO_ReadWrite);
+ stream.setf(TQTextStream::hex);
+ stream.setf(TQTextStream::left);
+ stream.width(2);
+ stream.fill('0');
+
+ stream << "0x" ;
+ for (uint i = 0; i < bytes.size(); ++i)
+ {
+ stream << static_cast<unsigned char>(bytes[i]);
+ }
+ return tmp;
+}
+
+#include "knetworkmanager-connection_setting_wireless_widget.moc"