// Copyright (c) 2003 Charles Samuels // See the file COPYING for redistribution terms. #ifndef SELECTOR_H #define SELECTOR_H #include #include "file.h" class Item : public PlaylistItemData { File mFile; public: Item(const File &file); File itemFile() const { return mFile; } virtual TQString property(const TQString &key, const TQString &def=0) const; virtual void setProperty(const TQString &key, const TQString &property); virtual void clearProperty (const TQString &key); virtual TQStringList properties() const; virtual bool isProperty(const TQString &key) const; virtual bool operator==(const PlaylistItemData &d) const; virtual void remove(); }; /** * a selector is an object that can get items from the * playlist in a certain order **/ class Selector { public: Selector(); virtual ~Selector(); virtual Item *next()=0; virtual Item *previous()=0; virtual Item *current()=0; virtual void setCurrent(const Item &item)=0; }; class Tree; class TreeItem; class SequentialSelector : public Selector { Tree *mTree; public: SequentialSelector(Tree *tree); virtual ~SequentialSelector(); virtual Item *next(); virtual Item *previous(); virtual Item *current(); virtual void setCurrent(const Item &item); virtual void setCurrent(TreeItem *current); }; class RandomSelector : public Selector { Tree *mTree; TreeItem *mPrevious; public: RandomSelector(Tree *tree); virtual Item *next(); virtual Item *previous(); virtual Item *current(); virtual void setCurrent(const Item &item); virtual void setCurrent(TreeItem *item, TreeItem *previous); }; #endif