summaryrefslogtreecommitdiff
path: root/mg_media.h
diff options
context:
space:
mode:
Diffstat (limited to 'mg_media.h')
-rw-r--r--mg_media.h133
1 files changed, 84 insertions, 49 deletions
diff --git a/mg_media.h b/mg_media.h
index f4cd64f..9e8c3e7 100644
--- a/mg_media.h
+++ b/mg_media.h
@@ -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();