diff options
Diffstat (limited to 'tdelirc/tdelirc/remoteserver.cpp')
-rw-r--r-- | tdelirc/tdelirc/remoteserver.cpp | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/tdelirc/tdelirc/remoteserver.cpp b/tdelirc/tdelirc/remoteserver.cpp new file mode 100644 index 0000000..dafa67d --- /dev/null +++ b/tdelirc/tdelirc/remoteserver.cpp @@ -0,0 +1,109 @@ +// +// +// C++ Implementation: $MODULE$ +// +// Description: +// +// +// Author: Gav Wood <gav@kde.org>, (C) 2003 +// +// Copyright: See COPYING file that comes with this distribution +// +// + +#include <tqfile.h> +#include <tqxml.h> + +#include <tdeglobal.h> +#include <kstandarddirs.h> +#include <kdebug.h> + +#include "remoteserver.h" + +RemoteServer *RemoteServer::theInstance = 0; + +RemoteServer::RemoteServer() +{ + theRemotes.setAutoDelete(true); + loadRemotes(); +} + +RemoteServer::~RemoteServer() +{ +} + +void RemoteServer::loadRemotes() +{ + TQStringList theFiles = TDEGlobal::dirs()->findAllResources("data", "remotes/*.remote.xml"); + for(TQStringList::iterator i = theFiles.begin(); i != theFiles.end(); ++i) + { kdDebug() << "Found data file: " << *i << endl; + Remote *p = new Remote(); + p->loadFromFile(*i); + theRemotes.insert(p->id(), p); + } +} + +Remote::Remote() +{ + theButtons.setAutoDelete(true); +} + +Remote::~Remote() +{ +} + +void Remote::loadFromFile(const TQString &fileName) +{ + charBuffer = ""; + curRB = 0; + + TQFile xmlFile(fileName); + TQXmlInputSource source(TQT_TQIODEVICE(&xmlFile)); + TQXmlSimpleReader reader; + reader.setContentHandler(this); + reader.parse(source); +} + +bool Remote::characters(const TQString &data) +{ + charBuffer += data; + return true; +} + +bool Remote::startElement(const TQString &, const TQString &, const TQString &name, const TQXmlAttributes &attributes) +{ + if(name == "remote") + theId = theName = attributes.value("id"); + else if(name == "button") + { + curRB = new RemoteButton(); + curRB->setId(attributes.value("id")); + curRB->setClass(attributes.value("id")); + if(attributes.index("class") > -1) + curRB->setClass(attributes.value("class")); + curRB->setParameter(attributes.value("parameter")); + curRB->setName(attributes.value("id")); + } + + charBuffer = ""; + return true; +} + +bool Remote::endElement(const TQString &, const TQString &, const TQString &name) +{ + if(name == "name") + if(curRB) + curRB->setName(charBuffer); + else + theName = charBuffer; + else if(name == "author") + theAuthor = charBuffer; + else if(name == "button") + { + theButtons.insert(curRB->id(), curRB); + curRB = 0; + } + + charBuffer = ""; + return true; +} |