/*************************************************************************** * * knetworkmanager-devicestore_dbus.cpp - A NetworkManager frontend for KDE * * Copyright (C) 2005, 2006 Novell, Inc. * * Author: Helmut Schaa , * * 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 /* kde headers */ #include #include /* TQDbus headers */ #include #include #include #include #include #include /* NM headers */ #include /* knetworkmanager headers */ #include "knetworkmanager.h" #include "knetworkmanager-connection.h" #include "knetworkmanager-connection_dbus.h" #include "knetworkmanager-connection_setting.h" #include "knetworkmanager-nmsettings.h" #include "xmlmarshaller.h" using namespace ConnectionSettings; namespace ConnectionSettings { class ConnectionDBusPrivate { public: ConnectionDBusPrivate() {} ~ConnectionDBusPrivate() {} ConnectionSettings::Connection* parent; }; } /* class Connection */ ConnectionDBus::ConnectionDBus(ConnectionSettings::Connection* parent) : TQObject(parent) { d = new ConnectionDBusPrivate(); d->parent = parent; } ConnectionDBus::~ConnectionDBus() { delete d; } bool ConnectionDBus::GetID(TQString& id, TQT_DBusError& /*error*/) { kdDebug() << "Connection::GetID" << endl; id = d->parent->getID(); return true; } bool ConnectionDBus::GetSettings(TQT_DBusDataMap& settings, TQT_DBusError& /*error*/) { kdDebug() << "Connection::GetSettings, obj: " << objectPath().ascii() << endl; TQValueList all_settings = d->parent->getSettings(); // FIXME: ugly conversions, ask Kevin on how to make it better for (TQValueList::Iterator it = all_settings.begin(); it != all_settings.end(); ++it) { kdDebug() << " Processing Setting '" << (*it)->getType().ascii() << "'" << endl; // only append this setting if it is really used if (!(*it)->getEnabled()) { kdDebug() << " Setting '" << (*it)->getType().ascii() << "' is not enabled, discarding" << endl; continue; } if (!(*it)->isValid()) { kdDebug() << " Setting '" << (*it)->getType().ascii() << "' is not valid, discarding" << endl; continue; } // copy the settingsmap over to a variantmap TQMap map = (*it)->toMap(); // only take used settings if (map.size() == 0) { kdDebug() << " Setting '" << (*it)->getType().ascii() << "' is empty, discarding" << endl; continue; } kdDebug() << " Attach setting '" << (*it)->getType().ascii() << "'" << endl; TQMap variant_map; for (TQMap::Iterator it2 = map.begin(); it2 != map.end(); ++it2) { TQString dataxml = XMLMarshaller::fromTQT_DBusData(it2.data()); kdDebug() << " " << it2.key().ascii() << ": " << dataxml.replace('\n', ' ').ascii() << endl; TQT_DBusVariant var; var.value = it2.data(); var.signature = var.value.buildDBusSignature(); variant_map.insert(it2.key(), var); } // convert the variantma TQT_DBusDataMap map2 = TQT_DBusDataMap(variant_map); TQT_DBusData data = TQT_DBusData::fromStringKeyMap(map2); // insert this setting settings.insert((*it)->getType(), data); } return true; } bool ConnectionDBus::Update(const TQT_DBusDataMap& properties, TQT_DBusError& error) { // FIXME return true; } bool ConnectionDBus::Delete(TQT_DBusError& error) { // FIXME return true; } void ConnectionDBus::handleMethodReply(const TQT_DBusMessage& reply) { TQT_DBusConnection::systemBus().send(reply); } bool ConnectionDBus::handleSignalSend(const TQT_DBusMessage& reply) { TQT_DBusConnection::systemBus().send(reply); return true; } TQString ConnectionDBus::objectPath() const { return TQString(d->parent->getObjectPath()); } void ConnectionDBus::slotAboutToBeRemoved() { // tell NM about us being removed emitRemoved(); } void ConnectionDBus::slotUpdated() { TQT_DBusDataMap settings; TQT_DBusError error; if (GetSettings(settings, error)) emitUpdated(settings); } #include "knetworkmanager-connection_dbus.moc"