summaryrefslogtreecommitdiffstats
path: root/dcoprss/service.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'dcoprss/service.cpp')
-rw-r--r--dcoprss/service.cpp105
1 files changed, 105 insertions, 0 deletions
diff --git a/dcoprss/service.cpp b/dcoprss/service.cpp
new file mode 100644
index 00000000..74544dc1
--- /dev/null
+++ b/dcoprss/service.cpp
@@ -0,0 +1,105 @@
+/* $Id$ */
+/***************************************************************************
+ service.cpp - A DCOP Service to provide RSS data
+ -------------------
+ begin : Saturday 15 February 2003
+ copyright : (C) 2003 by Ian Reinhart Geiser
+ email : geiseri@kde.org
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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. *
+ * *
+ ***************************************************************************/
+#include <kdebug.h>
+#include <kapplication.h>
+#include <kconfig.h>
+#include "service.h"
+#include "cache.h"
+
+RSSService::RSSService() :
+ DCOPObject("RSSService")
+{
+ m_list.setAutoDelete( true );
+
+ loadLinks();
+}
+
+RSSService::~RSSService()
+{
+}
+
+
+QStringList RSSService::list()
+{
+ QStringList lst;
+ QDictIterator<RSSDocument> itr(m_list);
+ for(; itr.current(); ++itr)
+ lst.append(itr.currentKey());
+ return lst;
+}
+
+DCOPRef RSSService::add(QString id)
+{
+ if(m_list.find(id) == 0L) { // add a new one only if we need to
+ m_list.insert(id, new RSSDocument(id));
+ added(id);
+ saveLinks();
+ }
+ return document(id);
+}
+
+void RSSService::remove(QString id)
+{
+ m_list.remove(id);
+ removed(id);
+ saveLinks();
+}
+
+DCOPRef RSSService::document(QString id)
+{
+ if( m_list[id] )
+ return DCOPRef(m_list[id]);
+ else
+ return DCOPRef();
+}
+
+void RSSService::exit()
+{
+ //Save all current RSS links.
+ saveLinks();
+ Cache::self().save();
+ kapp->quit();
+}
+
+
+void RSSService::loadLinks()
+{
+ KConfig *conf = kapp->config();
+ conf->setGroup("RSS Links");
+ const QStringList links = conf->readListEntry ("links");
+ QStringList::ConstIterator it = links.begin();
+ QStringList::ConstIterator end = links.end();
+ for ( ; it != end; ++it )
+ add( *it );
+}
+
+void RSSService::saveLinks()
+{
+ KConfig *conf = kapp->config();
+ conf->setGroup("RSS Links");
+ QStringList lst;
+ QDictIterator<RSSDocument> itr(m_list);
+ for(; itr.current(); ++itr)
+ lst.append(itr.currentKey());
+
+ conf->writeEntry("links", lst);
+ conf->sync();
+}
+
+
+