summaryrefslogtreecommitdiffstats
path: root/noatun-plugins/oblique/oblique.h
diff options
context:
space:
mode:
Diffstat (limited to 'noatun-plugins/oblique/oblique.h')
-rw-r--r--noatun-plugins/oblique/oblique.h142
1 files changed, 142 insertions, 0 deletions
diff --git a/noatun-plugins/oblique/oblique.h b/noatun-plugins/oblique/oblique.h
new file mode 100644
index 0000000..93d1e18
--- /dev/null
+++ b/noatun-plugins/oblique/oblique.h
@@ -0,0 +1,142 @@
+// Copyright (c) 2003-2005 Charles Samuels <charles@kde.org>
+// See the file COPYING for redistribution terms.
+
+#ifndef OBLIQUE_H
+#define OBLIQUE_H
+
+#include <noatun/playlist.h>
+#include <noatun/plugin.h>
+#include "query.h"
+#include "kdatacollection.h"
+
+#include <kio/global.h>
+
+class View;
+class Tree;
+class Base;
+class Selector;
+class TreeItem;
+class DirectoryAdder;
+
+namespace KIO
+{
+ class ListJob;
+ class Job;
+}
+
+class Oblique : public Playlist, public Plugin
+{
+Q_OBJECT
+ View *mView;
+ Base *mBase;
+ Selector *mSelector;
+ KDataCollection mSchemaCollection;
+ DirectoryAdder *mAdder;
+
+
+public:
+ Oblique();
+ ~Oblique();
+
+ Base *base() { return mBase; }
+
+ QStringList schemaNames() const { return mSchemaCollection.names(); }
+ QString loadSchema(Query &q, const QString &name)
+ {
+ QString t = q.load(mSchemaCollection.file(name));
+ if (t.length())
+ q.setName(name);
+ return t;
+ }
+
+ void saveSchema(Query &q, const QString &name, const QString &title)
+ {
+ q.save(title, mSchemaCollection.saveFile(name));
+ }
+
+ void removeSchema(const QString &name)
+ {
+ mSchemaCollection.remove(name);
+ }
+
+ virtual void reset();
+ virtual void clear();
+ virtual void addFile(const KURL&, bool play=false);
+ virtual PlaylistItem next();
+ virtual PlaylistItem previous();
+ virtual PlaylistItem current();
+ virtual void setCurrent(const PlaylistItem &);
+ virtual PlaylistItem getFirst() const;
+ virtual PlaylistItem getAfter(const PlaylistItem &item) const;
+ virtual bool listVisible() const;
+ virtual void showList();
+ virtual void hideList();
+
+ virtual Playlist *playlist() { return this; }
+
+public slots:
+ void selected(TreeItem *cur);
+ void beginDirectoryAdd(const KURL &url);
+
+private slots:
+ void loopTypeChange(int i);
+ void adderDone();
+};
+
+/**
+ * loads the database into a Tree
+ **/
+class Loader : public QObject
+{
+Q_OBJECT
+ // the id of the next file to load
+ FileId mDeferredLoaderAt;
+ Tree *mTree;
+ Base *mBase;
+
+public:
+ Loader(Tree *into);
+
+signals:
+ void finished();
+
+private slots:
+ void loadItemsDeferred();
+};
+
+/**
+ * Adds a directory to
+ * emits @ref done() when finished so you
+ * can delete it
+ **/
+class DirectoryAdder : public QObject
+{
+ Q_OBJECT
+ Oblique *mOblique;
+ KURL::List pendingAddDirectories;
+ KURL::List::Iterator lastAddedSubDirectory;
+ KIO::ListJob *listJob;
+ KURL currentJobURL;
+
+public:
+ DirectoryAdder(const KURL &dir, Oblique *oblique);
+
+ Oblique *oblique() { return mOblique; }
+
+public slots:
+ void add(const KURL &dir);
+
+signals:
+ void done();
+
+private slots:
+ void slotResult(KIO::Job *job);
+ void slotEntries(KIO::Job *job, const KIO::UDSEntryList &entries);
+ void slotRedirection(KIO::Job *, const KURL & url);
+
+private:
+
+ void addNextPending();
+};
+
+#endif