summaryrefslogtreecommitdiffstats
path: root/dcoprss/service.h
diff options
context:
space:
mode:
Diffstat (limited to 'dcoprss/service.h')
-rw-r--r--dcoprss/service.h290
1 files changed, 290 insertions, 0 deletions
diff --git a/dcoprss/service.h b/dcoprss/service.h
new file mode 100644
index 00000000..35cf229e
--- /dev/null
+++ b/dcoprss/service.h
@@ -0,0 +1,290 @@
+/* $Id$ */
+#ifndef _RSS_SERVICE
+#define _RSS_SERVICE
+
+/***************************************************************************
+ service.h - 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 <dcopobject.h>
+#include <dcopref.h>
+#include <qdict.h>
+#include <qptrlist.h>
+#include <qstringlist.h>
+#include <qstring.h>
+#include <qdatetime.h>
+#include <qpixmap.h>
+#include <librss/global.h>
+#include <librss/loader.h>
+#include <librss/document.h>
+#include <librss/article.h>
+#include <librss/image.h>
+/**
+* This is a DCOP Service do not include this header in anything
+*
+**/
+using namespace RSS;
+
+class RSSDocument;
+class RSSArticle;
+
+class RSSService : public DCOPObject
+{
+ K_DCOP
+
+ private:
+
+ QDict<RSSDocument> m_list;
+
+ public:
+ RSSService();
+ ~RSSService();
+ void saveLinks();
+ void loadLinks();
+
+
+ k_dcop_signals:
+ /**
+ * Emmitted when a new document has been added. You can then
+ * use document(QString) to get the dcop ref for the object.
+ * Note: this document may or may not be valid at this
+ * point so you should connect your dcop signals and then
+ * do a documentValid() on the dcop ref to make sure of its
+ * state.
+ **/
+
+ void added(QString);
+ /**
+ * Emmitted when the document has been removed.
+ * note at this point the DCOPRef for this object is
+ * invalid and you will cannot access it any longer.
+ * When in doubt call a refresh on it, since if its in the
+ * process of loading the document call will be safely ignored
+ * and you will be notified of the updates.
+ **/
+ void removed(QString);
+ k_dcop:
+ /**
+ * Add a new rdf file resource. This will return a dcop reference to the resource. If its a new
+ * one it will be added otherwise an existing resource reference will be returned.
+ * once this reference has been returned you may connect dcop signals and then call
+ * refresh on the RSSDocument. The document will not be updated until refresh is called.
+ **/
+ DCOPRef add(QString url);
+ /**
+ * Return a list of current rss documents
+ **/
+ QStringList list();
+ /**
+ * Remove an rss document resource. NOTE: Be aware that others may be using this
+ * resource and if you remove it they may break. Likewise be aware that someone may
+ * decide to remove your resource on you so you should always check to see if the resource
+ * is valid before you access it.
+ **/
+ void remove(QString url);
+ /**
+ * Return the reference to a requested resource. If this resource is not present a null dcopref is
+ * returned.
+ **/
+ DCOPRef document(QString url);
+ /**
+ * Exit the RSSService. This will clean everything up and exit.
+ **/
+ void exit();
+};
+
+class RSSDocument : public QObject, public DCOPObject
+{
+ Q_OBJECT
+ K_DCOP
+
+ private:
+ bool m_isLoading;
+ QString m_Url;
+ Document *m_Doc;
+ QPixmap m_pix;
+ QPtrList<RSSArticle> m_list;
+ QMap<QString,int> m_state;
+ QDateTime m_Timeout;
+ int m_maxAge;
+
+ private slots:
+ void pixmapLoaded(const QPixmap&);
+ void loadingComplete(Loader *, Document, Status);
+
+ public:
+ RSSDocument(const QString& url);
+ ~RSSDocument();
+
+ k_dcop_signals:
+ /**
+ * The pixmap is currently loading
+ **/
+ void pixmapUpdating(DCOPRef);
+ /**
+ * The pixmap is ready for viewing
+ * you can then use dcopref->call("pixmap()"); to return it.
+ *
+ **/
+ void pixmapUpdated(DCOPRef);
+ /**
+ * The document is currently updating
+ **/
+ void documentUpdating(DCOPRef);
+ /**
+ * The document is ready for viewing
+ * you can then use dcopref->call() to access its data
+ **/
+ void documentUpdated(DCOPRef);
+ /**
+ * The document failed to update, with and error...
+ * 1 - RSS Parse Error
+ * 2 - Could not access file
+ * 3 - Unknown error.
+ **/
+ void documentUpdateError(DCOPRef, int);
+
+ k_dcop:
+ /**
+ * Return the webmaster information from the RSS::Document
+ **/
+ QString webMaster();
+ /**
+ * Return the manageing editor from the RSS::Document
+ **/
+ QString managingEditor();
+ /**
+ * Returns the rating of the RSS::Document
+ **/
+ QString rating();
+ /**
+ * Returns the last build date from the RSS::Document
+ **/
+ QDateTime lastBuildDate();
+ /**
+ * Returns the publication date from the RSS::Document
+ **/
+ QDateTime pubDate();
+ /**
+ * Returns the copyright information from the RSS::Document
+ **/
+ QString copyright();
+ /**
+ * Returns a list of article titles
+ **/
+ QStringList articles();
+ /**
+ * Returns the number of articles
+ **/
+ int count();
+ /**
+ * Returns a dcop reference to the article from the index
+ **/
+ DCOPRef article(int idx);
+ /**
+ * Returns the link from the RSS::Document
+ **/
+ QString link();
+ /**
+ * Returns the description from the RSS::Document
+ **/
+ QString description();
+ /**
+ * Returns the title from the RSS::Document
+ **/
+ QString title();
+ /**
+ * Returns the text version from the RSS::Document
+ **/
+ QString verbVersion();
+ /**
+ * Returns the url for the pixmap from the RSS::Document
+ **/
+ QString pixmapURL();
+ /**
+ * Returns the actual pixmap from the RSS::Document's RSS::Image
+ **/
+ QPixmap pixmap();
+ /**
+ * Returns if the RSSDocument contains a valid RSS::Document yet.
+ **/
+ bool documentValid();
+ /**
+ * Returns if the RSSDocument contains a valid RSS::Image
+ **/
+ bool pixmapValid();
+ /**
+ * Refresh the current RSS::Document.
+ * This must be called before the document is valid.
+ **/
+ void refresh();
+
+ /**
+ * Return the maximum age of the RSS document (Default is 60 minutes)
+ **/
+ int maxAge();
+
+ /**
+ * Set the maximum age of the RSS document.
+ **/
+ void setMaxAge(int minutes);
+
+ /**
+ * Returns the state of the article
+ * 0 - not present (deleted from the rss service)
+ * 1 - new
+ * 2 - unread
+ * 3 - read
+ */
+ int state( const QString &title) const;
+
+ /**
+ * Set the article state
+ */
+ void setState( const QString &title, int s );
+
+ /**
+ * Convience method that will set a title to read.
+ */
+ void read( const QString &title);
+};
+
+class RSSArticle : public DCOPObject
+{
+ K_DCOP
+
+ private:
+ Article *m_Art;
+
+ public:
+ RSSArticle(Article *art);
+ ~RSSArticle();
+
+ k_dcop:
+ /**
+ * Return the articles title
+ **/
+ QString title();
+ /**
+ * Return the articles description
+ **/
+ QString description();
+ /**
+ * Return the link to the article
+ **/
+ QString link();
+};
+#endif