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.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.cpp')
-rw-r--r-- | knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless.cpp | 220 |
1 files changed, 220 insertions, 0 deletions
diff --git a/knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless.cpp b/knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless.cpp new file mode 100644 index 0000000..2e1db8e --- /dev/null +++ b/knetworkmanager-0.8/src/knetworkmanager-connection_setting_wireless.cpp @@ -0,0 +1,220 @@ +/*************************************************************************** + * + * knetworkmanager-devicestore_dbus.cpp - A NetworkManager frontend for KDE + * + * Copyright (C) 2005, 2006 Novell, Inc. + * + * Author: Helmut Schaa <[email protected]>, <[email protected]> + * + * 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 + * + **************************************************************************/ + +/* qt headers */ +#include <tqhostaddress.h> +#include <tqvariant.h> +#include <tqregexp.h> + +/* kde headers */ +#include <kdebug.h> +#include <klocale.h> + +/* TQT_DBus headers*/ +#include <tqdbusdata.h> +#include <tqdbusdatamap.h> + +/* knetworkmanager headers */ +#include "knetworkmanager.h" +#include "knetworkmanager-connection_setting_wireless.h" +#include "knetworkmanager-connection_setting_wireless_security.h" +#include "knetworkmanager-accesspoint.h" + +// the bssid should look like XX:XX:XX:XX:XX:XX where X is a hexadecimal digit +#define MAC_ADDRESS_PATTERN "[0-9A-Fa-f]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}:[0-9A-F]{2}" + +using namespace ConnectionSettings; + +/* + class Wireless +*/ +Wireless::Wireless(Connection* conn, ::AccessPoint* ap, WirelessSecurity* security) + : ConnectionSetting(conn, NM_SETTING_WIRELESS_SETTING_NAME) +{ + _security = TQString(); + + if (ap) + { + _essid = ap->getSsidByteArray(); + _mode = ap->getMode() == 0 ? MODE_ADHOC : MODE_INFRASTRUCTURE; + } + else + { + _essid = TQByteArray(); + _mode = MODE_INFRASTRUCTURE; + } + + _modeMap[MODE_INFRASTRUCTURE] = "infrastructure"; + _modeMap[MODE_ADHOC] = "adhoc"; +} + +SettingsMap +Wireless::toMap() const +{ + SettingsMap map; + + map.insert(NM_SETTING_WIRELESS_MODE, TQT_DBusData::fromString(_modeMap[_mode])); + + TQValueList<TQT_DBusData> essid; + for (TQByteArray::ConstIterator it = _essid.begin(); it != _essid.end(); ++it) + essid.append(TQT_DBusData::fromByte(*it)); + + if (essid.size() > 0) + map.insert(NM_SETTING_WIRELESS_SSID, TQT_DBusData::fromTQValueList(essid)); + else + kdWarning() << k_funcinfo << " SSID undefined" << endl; + + if (!_security.isEmpty()) + map.insert(NM_SETTING_WIRELESS_SEC, TQT_DBusData::fromString(_security)); + + if (!_seenBssids.empty()) + { + TQValueList<TQT_DBusData> bssids; + for (TQValueList<TQString>::ConstIterator it = _seenBssids.begin(); it != _seenBssids.end(); ++it) + bssids.append(TQT_DBusData::fromString(*it)); + + map.insert(NM_SETTING_WIRELESS_SEEN_BSSIDS, TQT_DBusData::fromTQValueList(bssids)); + } + + return map; +} + +void +Wireless::fromMap(const SettingsMap& map) +{ + SettingsMap::ConstIterator it; + + // Mode + if ((it = map.find(NM_SETTING_WIRELESS_MODE)) != map.end()) + { + TQBiDirectionalMap<MODES, TQString>::Iterator mode_it = _modeMap.findData(it.data().toString()); + if (mode_it != _modeMap.end()) + _mode = mode_it.key(); + else + _mode = MODE_INFRASTRUCTURE; + } + + // Essid + if ((it = map.find(NM_SETTING_WIRELESS_SSID)) != map.end()) + { + TQValueList<TQT_DBusData> dbus_essid = (*it).toTQValueList(); + TQByteArray essid(dbus_essid.size()); + + int index = 0; + for (TQValueList<TQT_DBusData>::ConstIterator byte_it = dbus_essid.begin(); byte_it != dbus_essid.end(); ++byte_it) + { + essid[index] = (*byte_it).toByte(); + index++; + } + _essid = essid; + } + + if ((it = map.find(NM_SETTING_WIRELESS_SEC)) != map.end()) + { + _security = (*it).toString(); + } + + // Seen BSSIDS + if ((it = map.find(NM_SETTING_WIRELESS_SEEN_BSSIDS)) != map.end()) + { + TQRegExp exp(MAC_ADDRESS_PATTERN); + TQValueList<TQT_DBusData> bssids = (*it).toTQValueList(); + _seenBssids.clear(); + + for(TQValueList<TQT_DBusData>::Iterator it = bssids.begin(); it != bssids.end(); ++it) + { + TQString bssid = (*it).toString(); + if (exp.exactMatch(bssid)) + _seenBssids.append(bssid); + } + } +} + +void +Wireless::setEssid(const TQByteArray& essid) +{ + _essid = essid; + emitValidityChanged(); +} + +TQByteArray +Wireless::getEssid(void) const +{ + return _essid; +} + +void +Wireless::setMode(MODES mode) +{ + _mode = mode; + emitValidityChanged(); +} + +Wireless::MODES +Wireless::getMode(void) const +{ + return _mode; +} + +void +Wireless::setSecurity(const TQString& security) +{ + _security = security; + emitValidityChanged(); +} + +TQString +Wireless::getSecurity(void) const +{ + return _security; +} + +bool +Wireless::isValid() const +{ + // ESSID is essential + if (_essid.isEmpty()) + return false; + + return true; +} + +void +Wireless::addSeenBssid(const TQString& bssid) +{ + TQRegExp exp(MAC_ADDRESS_PATTERN); + if (!exp.exactMatch(bssid)) + return; + + // no duplicates please + for(TQValueList<TQString>::Iterator it = _seenBssids.begin(); it != _seenBssids.end(); ++it) + { + if ((*it) == bssid) + return; + } + + // insert this bssid + _seenBssids.append(bssid); + emitValidityChanged(); +} |