summaryrefslogtreecommitdiffstats
path: root/plugins/rssfeed/rss/loader.h
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/rssfeed/rss/loader.h')
-rw-r--r--plugins/rssfeed/rss/loader.h342
1 files changed, 0 insertions, 342 deletions
diff --git a/plugins/rssfeed/rss/loader.h b/plugins/rssfeed/rss/loader.h
deleted file mode 100644
index 3a48e49..0000000
--- a/plugins/rssfeed/rss/loader.h
+++ /dev/null
@@ -1,342 +0,0 @@
-/*
- * loader.h
- *
- * Copyright (c) 2001, 2002, 2003 Frerich Raabe <raabe@kde.org>
- *
- * 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. For licensing and distribution details, check the
- * accompanying file 'COPYING'.
- */
-#ifndef LIBRSS_LOADER_H
-#define LIBRSS_LOADER_H
-
-#include "global.h"
-
-class KURL;
-
-#include <tqobject.h>
-
-namespace TDEIO
-{
- class Job;
-}
-class TDEProcess;
-
-namespace RSS
-{
- class Document;
-
- /**
- * Abstract baseclass for all data retriever classes. Subclass this to add
- * a new retrieval algorithm which can then be plugged into the RSS loader.
- * @see Loader, FileRetriever, OutputRetriever
- */
- class DataRetriever : public TQObject
- {
- Q_OBJECT
-
- public:
- /**
- * Default constructor.
- */
- DataRetriever();
-
- /**
- * Destructor.
- */
- virtual ~DataRetriever();
-
- /**
- * Retrieve data from the given URL. This method is supposed to get
- * reimplemented by subclasses. It will be called by the Loader
- * class in case it needs to retrieve the data.
- * @see Loader::loadFrom()
- */
- virtual void retrieveData(const KURL &url) = 0;
-
- /**
- * @return An error code which might give a more precise information
- * about what went wrong in case the 'success' flag returned with
- * the dataRetrieved() signal was 'false'. Note that the meaning of
- * the returned integer depends on the actual data retriever.
- */
- virtual int errorCode() const = 0;
-
- virtual void abort() = 0;
- signals:
- /**
- * Emit this signal to tell the Loader class that the retrieval
- * process was finished.
- * @param data Should contain the retrieved data and will get
- * parsed by the Loader class.
- * @param success Indicates whether there were any problems during
- * the retrieval process. Pass 'true' to indicate that everything
- * went seamlessy, 'false' to tell the Loader that something went
- * wrong and that the data parameter might contain no or invalid
- * data.
- */
- void dataRetrieved(const TQByteArray &data, bool success);
-
- private:
- DataRetriever(const DataRetriever &other);
- DataRetriever &operator=(const DataRetriever &other);
- };
-
- /**
- * Implements a file retriever, to be used with Loader::loadFrom().
- * @see DataRetriever, Loader::loadFrom()
- */
- class FileRetriever : public DataRetriever
- {
- Q_OBJECT
-
- public:
- /**
- * Default constructor.
- */
- FileRetriever();
-
- /**
- * Destructor.
- */
- virtual ~FileRetriever();
-
- /**
- * Downloads the file referenced by the given URL and passes it's
- * contents on to the Loader.
- * @param url An URL referencing a file which is assumed to
- * reference valid XML.
- * @see Loader::loadFrom()
- */
- virtual void retrieveData(const KURL &url);
-
- /**
- * @return The error code for the last process of retrieving data.
- * The returned numbers correspond directly to the error codes
- * <a href="http://developer.kde.org/documentation/library/cvs-api/classref/tdeio/TDEIO.html#Error">as
- * defined by TDEIO</a>.
- */
- virtual int errorCode() const;
-
- virtual void abort();
-
- static void setUseCache(bool enabled);
-
- signals:
- /**
- * Signals a permanent redirection. The redirection itself is
- * handled internally, so you don't need to call Loader::loadFrom()
- * with the new URL. This signal is useful in case you want to
- * notify the user, or adjust a database entry.
- * @see Loader::loadFrom()
- */
- void permanentRedirection(const KURL &url);
-
- protected slots:
- void slotTimeout();
-
- private slots:
- void slotData(TDEIO::Job *job, const TQByteArray &data);
- void slotResult(TDEIO::Job *job);
- void slotPermanentRedirection(TDEIO::Job *job, const KURL &fromUrl,
- const KURL &toUrl);
-
- private:
- static bool m_useCache;
-
- FileRetriever(const FileRetriever &other);
- FileRetriever &operator=(const FileRetriever &other);
-
- struct Private;
- Private *d;
- };
-
- /**
- * Implements a data retriever which executes a program and stores returned
- * by the program on stdout. To be used with Loader::loadFrom().
- * @see DataRetriever, Loader::loadFrom()
- */
- class OutputRetriever : public DataRetriever
- {
- Q_OBJECT
-
- public:
- /**
- * Default constructor.
- */
- OutputRetriever();
-
- /**
- * Destructor.
- */
- virtual ~OutputRetriever();
-
- /**
- * Executes the program referenced by the given URL and retrieves
- * the data which the program prints to stdout.
- * @param url An URL which is supposed to reference an executable
- * file.
- * @see Loader::loadFrom()
- */
- virtual void retrieveData(const KURL &url);
-
- /**
- * @return The error code for the last process of retrieving data.
- * 0 is returned in case there was no error, otherwise an error
- * code which depends on the particular program which was run is
- * returned.
- */
- virtual int errorCode() const;
-
- virtual void abort() {}
-
- private slots:
- void slotOutput(TDEProcess *process, char *data, int length);
- void slotExited(TDEProcess *process);
-
- private:
- OutputRetriever(const OutputRetriever &other);
- OutputRetriever &operator=(const OutputRetriever &other);
-
- struct Private;
- Private *d;
- };
-
- /**
- * This class is the preferred way of loading RSS files. Usage is very
- * straightforward:
- *
- * \code
- * Loader *loader = Loader::create();
- * connect(loader, TQT_SIGNAL(loadingComplete(Loader *, Document, Status)),
- * this, TQT_SLOT(slotLoadingComplete(Loader *, Document, Status)));
- * loader->loadFrom("http://www.blah.org/foobar.rdf", new FileRetriever);
- * \endcode
- *
- * This creates a Loader object, connects it's loadingComplete() signal to
- * your custom slot and then makes it load the file
- * 'http://www.blah.org/foobar.rdf' using the FileRetriever. You could've
- * done something like this as well:
- *
- * \code
- * // create the Loader, connect it's signal...
- * loader->loadFrom("/home/myself/some-script.py", new OutputRetriever);
- * \endcode
- *
- * That'd make the Loader use another algorithm for retrieving the RSS data;
- * 'OutputRetriever' will make it execute the script
- * '/home/myself/some-script.py' and assume whatever that script prints to
- * stdout is RSS markup. This is e.g. handy for conversion scripts, which
- * download a HTML file and convert it's contents into RSS markup.
- *
- * No matter what kind of retrieval algorithm you employ, your
- * 'slotLoadingComplete' method might look like this:
- *
- * \code
- * void MyClass::slotLoadingComplete(Loader *loader, Document doc, Status status)
- * {
- * // Note that Loader::~Loader() is private, so you cannot delete Loader instances.
- * // You don't need to do that anyway since Loader instances delete themselves.
- *
- * if (status != RSS::Success)
- * return;
- *
- * TQString title = doc.title();
- * // do whatever you want with the information.
- * }
- * \endcode
- *
- * \note You have to create a copy of the passed Document instance in
- * case you want/need to use it after the slot attached to the
- * loadingComplete signal goes out of scope. This is e.g. the case if you
- * intend to call getPixmap() on Document::image()!
- */
- class Loader : public TQObject
- {
- Q_OBJECT
-
- friend class someClassWhichDoesNotExist;
- public:
- /**
- * Constructs a Loader instance. This is pretty much what the
- * default constructor would do, except that it ensures that all
- * Loader instances have been allocated on the heap (this is
- * required so that Loader's can delete themselves safely after they
- * emitted the loadingComplete() signal.).
- * @return A pointer to a new Loader instance.
- */
- static Loader *create();
-
- /**
- * Convenience method. Does the same as the above method except that
- * it also does the job of connecting the loadingComplete() signal
- * to the given slot for you.
- * @param object A TQObject which features the specified slot
- * @param slot Which slot to connect to.
- */
- static Loader *create(TQObject *object, const char *slot);
-
- /**
- * Loads the RSS file referenced by the given URL using the
- * specified retrieval algorithm. Make sure that you connected
- * to the loadingComplete() signal before calling this method so
- * that you're guaranteed to get notified when the loading finished.
- * \note A Loader object cannot load from multiple URLs simultaneously;
- * consequently, subsequent calls to loadFrom will be discarded
- * silently, only the first loadFrom request will be executed.
- * @param url An URL referencing the input file.
- * @param retriever A subclass of DataRetriever which implements a
- * specialized retrieval behaviour. Note that the ownership of the
- * retriever is transferred to the Loader, i.e. the Loader will
- * delete it when it doesn't need it anymore.
- * @see DataRetriever, Loader::loadingComplete()
- */
- void loadFrom(const KURL &url, DataRetriever *retriever);
-
- /**
- * Retrieves the error code of the last loading process (if any),
- * as reported by the employed data retrever.
- */
- int errorCode() const;
-
- const KURL &discoveredFeedURL() const;
-
- void abort();
-
- signals:
- /**
- * This signal gets emitted when the loading process triggered by
- * calling loadFrom() finished.
- * @param loader A pointer pointing to the loader object which
- * emitted this signal; this is handy in case you connect multiple
- * loaders to a single slot.
- * @param doc In case status is Success, this parameter holds the
- * parsed RSS file. In case it's RetrieveError, you should query
- * loader->errorCode() for the actual error code.
- * Note that you have to create a copy of the passed Document
- * instance in case you want/need to use it after the slot attached
- * to the loadingComplete signal goes out of scope. This is e.g.
- * the case if you intend to call getPixmap() on Document::image()!
- * @param status A status byte telling whether there were any problems
- * while retrieving or parsing the data.
- * @see Document, Status
- */
- void loadingComplete(Loader *loader, Document doc, Status status);
-
- private slots:
- void slotRetrieverDone(const TQByteArray &data, bool success);
-
- private:
- Loader();
- Loader(const Loader &other);
- Loader &operator=(const Loader &other);
- ~Loader();
- void discoverFeeds(const TQByteArray &data);
-
- struct Private;
- Private *d;
- };
-}
-
-#endif // LIBRSS_LOADER_H