summaryrefslogtreecommitdiffstats
path: root/kdelirc/kdelirc/remoteserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdelirc/kdelirc/remoteserver.cpp')
-rw-r--r--kdelirc/kdelirc/remoteserver.cpp109
1 files changed, 109 insertions, 0 deletions
diff --git a/kdelirc/kdelirc/remoteserver.cpp b/kdelirc/kdelirc/remoteserver.cpp
new file mode 100644
index 0000000..25d8f44
--- /dev/null
+++ b/kdelirc/kdelirc/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 <qfile.h>
+#include <qxml.h>
+
+#include <kglobal.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()
+{
+ QStringList theFiles = KGlobal::dirs()->findAllResources("data", "remotes/*.remote.xml");
+ for(QStringList::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 QString &fileName)
+{
+ charBuffer = "";
+ curRB = 0;
+
+ QFile xmlFile(fileName);
+ QXmlInputSource source(&xmlFile);
+ QXmlSimpleReader reader;
+ reader.setContentHandler(this);
+ reader.parse(source);
+}
+
+bool Remote::characters(const QString &data)
+{
+ charBuffer += data;
+ return true;
+}
+
+bool Remote::startElement(const QString &, const QString &, const QString &name, const QXmlAttributes &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 QString &, const QString &, const QString &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;
+}