11 #include "dbwrappers/DatabaseQuery.h" 12 #include "utils/SortUtils.h" 13 #include "utils/XBMCTinyXML.h" 33 std::string GetLocalizedRule()
const;
35 static SortBy TranslateOrder(
const char *order);
36 static std::string TranslateOrder(
SortBy order);
37 static Field TranslateGroup(
const char *
group);
38 static std::string TranslateGroup(Field group);
40 static std::string GetLocalizedField(
int field);
41 static std::string GetLocalizedGroup(Field group);
42 static bool CanGroupMix(Field group);
44 static std::vector<Field> GetFields(
const std::string &type);
45 static std::vector<SortBy> GetOrders(
const std::string &type);
46 static std::vector<Field> GetGroups(
const std::string &type);
47 FIELD_TYPE GetFieldType(
int field)
const override;
48 static bool IsFieldBrowseable(
int field);
50 static bool Validate(
const std::string &input,
void *data);
51 static bool ValidateRating(
const std::string &input,
void *data);
52 static bool ValidateMyRating(
const std::string &input,
void *data);
55 std::string GetField(
int field,
const std::string& type)
const override;
56 int TranslateField(
const char *field)
const override;
57 std::string TranslateField(
int field)
const override;
58 std::string FormatParameter(
const std::string &negate,
59 const std::string &oper,
61 const std::string &type)
const override;
62 std::string FormatWhereClause(
const std::string &negate,
63 const std::string& oper,
64 const std::string ¶m,
66 const std::string &type)
const override;
67 SEARCH_OPERATOR
GetOperator(
const std::string &type)
const override;
68 std::string GetBooleanQuery(
const std::string &negate,
69 const std::string &strType)
const override;
72 std::string GetVideoResolutionQuery(
const std::string ¶meter)
const;
73 static std::string FormatLinkQuery(
const char* field,
75 const MediaType& mediaType,
76 const std::string& mediaField,
77 const std::string& parameter);
78 std::string FormatYearQuery(
const std::string& field,
79 const std::string& param,
80 const std::string& parameter)
const;
89 std::string GetWhereClause(
const CDatabase &db,
90 const std::string& strType,
91 std::set<std::string> &referencedPlaylists)
const;
92 void GetVirtualFolders(
const std::string& strType,
93 std::vector<std::string> &virtualFolders)
const;
104 bool Load(
const CURL& url);
105 bool Load(
const std::string &path);
107 bool LoadFromXml(
const std::string &xml);
108 bool LoadFromJson(
const std::string &json);
109 bool Save(
const std::string &path)
const;
110 bool Save(
CVariant &obj,
bool full =
true)
const;
111 bool SaveAsJson(std::string &json,
bool full =
true)
const;
113 bool OpenAndReadName(
const CURL &url);
114 bool LoadFromXML(
const TiXmlNode *root,
const std::string &encoding =
"UTF-8");
118 void SetName(
const std::string &name);
119 void SetType(
const std::string &type);
120 const std::string& GetName()
const {
return m_playlistName; }
121 const std::string& GetType()
const {
return m_playlistType; }
122 bool IsVideoType()
const;
123 bool IsMusicType()
const;
125 void SetMatchAllRules(
bool matchAll)
127 m_ruleCombination.SetType(matchAll ? CSmartPlaylistRuleCombination::CombinationAnd
128 : CSmartPlaylistRuleCombination::CombinationOr);
131 bool GetMatchAllRules()
const 133 return m_ruleCombination.GetType() == CSmartPlaylistRuleCombination::CombinationAnd;
136 void SetLimit(
unsigned int limit) { m_limit = limit; }
137 unsigned int GetLimit()
const {
return m_limit; }
139 void SetOrder(
SortBy order) { m_orderField = order; }
140 SortBy GetOrder()
const {
return m_orderField; }
141 void SetOrderAscending(
bool orderAscending)
143 m_orderDirection = orderAscending ? SortOrderAscending : SortOrderDescending;
145 bool GetOrderAscending()
const {
return m_orderDirection != SortOrderDescending; }
146 SortOrder GetOrderDirection()
const {
return m_orderDirection; }
147 void SetOrderAttributes(SortAttribute attributes) { m_orderAttributes = attributes; }
148 SortAttribute GetOrderAttributes()
const {
return m_orderAttributes; }
150 void SetGroup(
const std::string &
group) { m_group = group; }
151 const std::string& GetGroup()
const {
return m_group; }
152 void SetGroupMixed(
bool mixed) { m_groupMixed = mixed; }
153 bool IsGroupMixed()
const {
return m_groupMixed; }
163 std::string GetWhereClause(
const CDatabase &db, std::set<std::string> &referencedPlaylists)
const;
164 void GetVirtualFolders(std::vector<std::string> &virtualFolders)
const;
166 std::string GetSaveLocation()
const;
168 static void GetAvailableFields(
const std::string &type, std::vector<std::string> &fieldList);
170 static bool IsVideoType(
const std::string &type);
171 static bool IsMusicType(
const std::string &type);
172 static bool CheckTypeCompatibility(
const std::string &typeLeft,
const std::string &typeRight);
174 bool IsEmpty(
bool ignoreSortAndLimit =
true)
const;
181 friend class ::CGUIDialogSmartPlaylistEditor;
182 friend class ::CGUIDialogMediaFilter;
184 const TiXmlNode* readName(
const TiXmlNode *root);
185 const TiXmlNode* readNameFromPath(
const CURL &url);
186 const TiXmlNode* readNameFromXml(
const std::string &xml);
187 bool load(
const TiXmlNode *root);
190 std::string m_playlistName;
191 std::string m_playlistType;
194 unsigned int m_limit;
196 SortOrder m_orderDirection;
197 SortAttribute m_orderAttributes;
Definition: DatabaseQuery.h:118
Definition: DatabaseQuery.h:22
Definition: XBMCTinyXML.h:33
Definition: GUIDialogSmartPlaylistEditor.h:16
Definition: SmartPlayList.h:27
Definition: DatabaseQuery.h:110
SEARCH_OPERATOR GetOperator(const std::string &type) const override
Definition: SmartPlayList.cpp:817
Definition: Database.h:26
Definition: SmartPlayList.h:83
Definition: Application.h:62
SortBy
Definition: SortUtils.h:49
Definition: SmartPlayList.cpp:140
Definition: SmartPlayList.h:98