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_store.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_store.cpp')
-rw-r--r-- | knetworkmanager-0.8/src/knetworkmanager-connection_store.cpp | 191 |
1 files changed, 191 insertions, 0 deletions
diff --git a/knetworkmanager-0.8/src/knetworkmanager-connection_store.cpp b/knetworkmanager-0.8/src/knetworkmanager-connection_store.cpp new file mode 100644 index 0000000..aeb3b60 --- /dev/null +++ b/knetworkmanager-0.8/src/knetworkmanager-connection_store.cpp @@ -0,0 +1,191 @@ +/*************************************************************************** + * + * knetworkmanager-connection_store.h - A NetworkManager frontend for KDE + * + * Copyright (C) 2005, 2006 Novell, Inc. + * + * Author: Helmut Schaa <hschaa@suse.de>, <Helmut.Schaa@gmx.de> + * + * 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 <tqtimer.h> +#include <tquuid.h> +#include <tqdbusobjectpath.h> + +#include <kstaticdeleter.h> +#include <kapplication.h> +#include <kdebug.h> + +#include "knetworkmanager-connection_store.h" +#include "knetworkmanager-connection.h" +#include "knetworkmanager-connection_setting.h" +#include "knetworkmanager-connection_setting_info.h" +#include "knetworkmanager-connection_setting_ipv4.h" +#include "knetworkmanager-connection_setting_wired.h" +#include "knetworkmanager-connection_setting_wireless.h" +#include "knetworkmanager-connection_setting_wireless_security.h" + +using namespace ConnectionSettings; + +static KStaticDeleter<ConnectionStore> sd; + +ConnectionStore* ConnectionStore::_instance = NULL; + +ConnectionStore* +ConnectionStore::getInstance() +{ + if (_instance) + return _instance; + return sd.setObject(_instance, new ConnectionStore()); +} + +ConnectionStore::ConnectionStore() + : _connectionList() +{ + // defer the connection init a bit + TQTimer::singleShot(0, this, TQT_SLOT(slotInit())); +} + +ConnectionStore::~ConnectionStore() +{ + for (TQValueList<Connection*>::Iterator it = _connectionList.begin(); it != _connectionList.end(); ++it) + { + delete (*it); + *it = NULL; + } +} + +void +ConnectionStore::slotInit() +{ + +} + +void +ConnectionStore::slotSecretsNeeded(Connection* conn, ConnectionSetting* setting, const TQStringList& hints, bool request_new) +{ + kdDebug() << "ConnectionStore::slotSecretsNeeded" << endl; + emit SecretsNeeded(conn, setting, hints, request_new); +} + +void +ConnectionStore::addConnection(Connection* con) +{ + if (_connectionList.find(con) != _connectionList.end()) + { + con->slotUpdated(); + emit signalConnectionUpdated(con); + return; + } + + // check if the connection has an ID already + if (con->getID().isEmpty()) + { + // set unique id for this connection + con->setID(createNewConnectionID()); + } + + // we own the connection now + _connectionList.append(con); + + // let's get notified if the connection asks for new secrets + connect(con, TQT_SIGNAL(SecretsNeeded(Connection*, ConnectionSetting*, const TQStringList&, bool)), + this, TQT_SLOT(slotSecretsNeeded(Connection*, ConnectionSetting*, const TQStringList&, bool))); + + // new connection, ring ring + emit signalConnectionAdded(con); +} + +void +ConnectionStore::removeConnection(Connection* con) +{ + // check if the connection is != NULL + if (!con) + return; + + // remove the object from our list + if (_connectionList.remove(con) == 0) + return; + + // notify everybody about the removed connection + emit signalConnectionRemoved(con); + + // delete the connection, it will deregister itself from NM + con->slotAboutToBeRemoved(); + delete con; +} + +Connection* +ConnectionStore::getConnection(const TQString& obj_path) +{ + // find a connection by obj_path + TQValueList<Connection*>::Iterator it = _connectionList.begin(); + for (; it != _connectionList.end(); ++it) + if (TQString((*it)->getObjectPath()) == obj_path) + return (*it); + return NULL; +} + +TQValueList<Connection*> +ConnectionStore::getConnections(const TQString& type) +{ + // return a list of connection + if (type.isEmpty()) + return _connectionList; + else + { + TQValueList<Connection*> ret; + for (TQValueList<Connection*>::Iterator it = _connectionList.begin(); it != _connectionList.end(); ++it) + { + if ( (*it)->getType() == type) + ret.append(*it); + } + return ret; + } +} + +TQString +ConnectionStore::createNewConnectionID() +{ + bool unique; + TQString id; + + do + { + unique = true; + + // 16 bytes of randomness should be enougth for getting a unique ID + id = TQUuid::createUuid().toString(); + id = id.replace("{",""); + id = id.replace("}",""); + + // nevertheless check if the id is used already + TQValueList<Connection*>::Iterator it = _connectionList.begin(); + for (; it != _connectionList.end(); ++it) + { + if ((*it)->getID() == id) + { + unique = false; + break; + } + } + } while (unique == false); + + return id; +} + +#include "knetworkmanager-connection_store.moc" |