diff options
Diffstat (limited to 'mg_media.h')
-rw-r--r-- | mg_media.h | 133 |
1 files changed, 84 insertions, 49 deletions
@@ -3,10 +3,10 @@ * \brief Top level access to media in vdr plugin muggle * for the vdr muggle plugindatabase ******************************************************************** - * \version $Revision: 1.1 $ - * \date $Date: 2004/02/01 18:22:53 $ + * \version $Revision: 1.2 $ + * \date $Date: 2004/02/02 02:01:11 $ * \author Ralf Klueber, Lars von Wedel, Andreas Kellner - * \author file owner: $Author: LarsAC $ + * \author file owner: $Author: MountainMan $ * * */ @@ -26,50 +26,89 @@ class mgSelectionTreeNode; /*! ******************************************************************* - * \class mgFilters + * \class mgFilter * - * \brief stores a set of search constraints to the media database ********************************************************************/ -class mgFilters +class mgFilter { - typedef enum filterType - { - NUMBER, // integer number (with upper and lower limits) - STRING, // any string - REGEXP_STRING, // string containing wildcard symbol '*' - CHOICE // value fro ma list of choices - }filterType; - public: - std::vector<std::string> fields; - std::vector<std::string> values; - - mgFilters(); - ~mgFilters(); - - int getNumFilters(); - std::string getName(int filter); - int getValue(int filter); - filterType getType(int filter); - - // for NUMBER filters - int getMin(int filter); - int getMax(int filter); - - // for CHOICE - std::vector<std::string> getChoices(); - int getCurrent(int filter); - - // check, if a value is correct - bool checkValue(int filter, std::string value); - bool checkValue(int filter, int value); - - // finally set the values - - bool setValue(int filter, std::string value); - bool setValue(int filter, int value); + typedef enum filterType { UNDEF=0, INT, STRING, BOOL }filterType; + protected: + filterType m_type; + char* m_name; + + public: + + mgFilter(const char* name); + virtual ~mgFilter(); + filterType getType(); + const char* getName(); + virtual std::string getStrVal()=0; }; +class mgFilterInt : public mgFilter +{ + private: + int m_min; + int m_max; + int m_intval; + + public: + mgFilterInt(const char *name, int value, int min = 0, int max = INT_MAX); + virtual ~mgFilterInt(); + + int getVal(); + int getMin(); + int getMax(); + virtual std::string getStrVal(); + + void setVal(int value); +}; + +class mgFilterString : public mgFilter +{ + private: + char* m_strval; + + public: + mgFilterString(const char *name, const char* value); + virtual ~mgFilterString(); + + const char* getVal(); + virtual std::string getStrVal(); + + void setVal(const char* val); +}; + +class mgFilterBool : public mgFilter +{ + private: + bool m_bval; + + public: + mgFilterBool(const char *name, bool value); + virtual ~mgFilterBool(); + + bool getVal(); + virtual std::string getStrVal(); + + void setVal(bool val); +}; + +class mgTrackFilters +{ + protected: + std::vector<mgFilter*> m_filters; + public: + mgTrackFilters(); + virtual ~mgTrackFilters(); + + std::vector<mgFilter*> *getFilters(); + + virtual std::string CreateSQL()=0; + virtual void clear()=0; + +}; /*! ******************************************************************* @@ -89,7 +128,7 @@ class mgMedia private: MYSQL m_db; contentType m_mediatype; - std::string m_filter; + std::string m_sql_trackfilter; int m_defaultView; public: @@ -100,18 +139,14 @@ class mgMedia mgSelectionTreeNode* getSelectionRoot(); - mgFilters getActiveFilters(); + std::vector<mgFilter*> *getTrackFilters(); - void setFilters(mgFilters filters); - void setFilters(std::string sql) - { - m_filter=sql; - } + void setTrackFilters(std::vector<mgFilter*> *filters); // playlist management mgPlaylist* createTemporaryPlaylist(); mgPlaylist* loadPlaylist( std::string name ); - std::vector<std::string> getStoredPlaylists(); + std::vector<std::string> *getStoredPlaylists(); std::vector<int> getDefaultCols(); mgTracklist* getTracks(); |