diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-10-17 17:38:53 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-10-17 17:38:53 +0000 |
commit | 1e0dd58661c9097fb41218ee7e3515f2d8ba8dac (patch) | |
tree | a263b4ad0c1f7fba6013f5d9854db4cb4962df82 /knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless_widget.cpp | |
download | knetworkmanager8-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.cpp | 231 |
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" |