Skip to content

Commit

Permalink
smartplaylist: integrate tags
Browse files Browse the repository at this point in the history
  • Loading branch information
Montellese committed Jul 8, 2012
1 parent c45731a commit 3a97d8c
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 2 deletions.
8 changes: 8 additions & 0 deletions xbmc/dialogs/GUIDialogSmartPlaylistRule.cpp
Expand Up @@ -240,6 +240,14 @@ void CGUIDialogSmartPlaylistRule::OnBrowse()
videodatabase.GetSetsNav("videodb://1/7/", items, VIDEODB_CONTENT_MOVIES);
iLabel = 20434;
}
else if (m_rule.m_field == FieldTag)
{
if (m_type == "movies")
videodatabase.GetTagsNav("videodb://1/9/", items, VIDEODB_CONTENT_MOVIES);
else
return;
iLabel = 20459;
}
else
{ // TODO: Add browseability in here.
assert(false);
Expand Down
6 changes: 5 additions & 1 deletion xbmc/playlists/SmartPlayList.cpp
Expand Up @@ -98,7 +98,8 @@ static const translateField fields[] = {
{ "audiolanguage", FieldAudioLanguage, SortByAudioLanguage, CSmartPlaylistRule::TEXTIN_FIELD, 21447 },
{ "subtitlelanguage", FieldSubtitleLanguage, SortBySubtitleLanguage, CSmartPlaylistRule::TEXTIN_FIELD, 21448 },
{ "random", FieldRandom, SortByRandom, CSmartPlaylistRule::TEXT_FIELD, 590 },
{ "playlist", FieldPlaylist, SortByPlaylistOrder, CSmartPlaylistRule::PLAYLIST_FIELD, 559 }
{ "playlist", FieldPlaylist, SortByPlaylistOrder, CSmartPlaylistRule::PLAYLIST_FIELD, 559 },
{ "tag", FieldTag, SortByNone, CSmartPlaylistRule::BROWSEABLE_FIELD, 20459 }
};

#define NUM_FIELDS sizeof(fields) / sizeof(translateField)
Expand Down Expand Up @@ -382,6 +383,7 @@ vector<Field> CSmartPlaylistRule::GetFields(const CStdString &type)
fields.push_back(FieldFilename);
fields.push_back(FieldPath);
fields.push_back(FieldSet);
fields.push_back(FieldTag);
fields.push_back(FieldDateAdded);
isVideo = true;
}
Expand Down Expand Up @@ -716,6 +718,8 @@ CStdString CSmartPlaylistRule::GetWhereClause(CDatabase &db, const CStdString& s
query = table + ".idFile " + negate + " IN (SELECT idFile FROM bookmark WHERE type = 1)";
else if (m_field == FieldSet)
query = GetField(FieldId, strType) + negate + " IN (SELECT idMovie FROM setlinkmovie JOIN sets ON sets.idSet=setlinkmovie.idSet WHERE sets.strSet" + parameter + ")";
else if (m_field == FieldTag)
query = GetField(FieldId, strType) + negate + " IN (SELECT idMedia FROM taglinks JOIN tag ON tag.idTag = taglinks.idTag WHERE tag.strTag" + parameter + " AND taglinks.media_type = 'movie')";
}
else if (strType == "musicvideos")
{
Expand Down
3 changes: 2 additions & 1 deletion xbmc/utils/DatabaseUtils.h
Expand Up @@ -109,7 +109,8 @@ typedef enum {
FieldAudioCodec,
FieldAudioLanguage,
FieldSubtitleLanguage,
FieldProductionCode
FieldProductionCode,
FieldTag
} Field;

typedef std::set<Field> Fields;
Expand Down

0 comments on commit 3a97d8c

Please sign in to comment.