2013-02-02, 00:31
Add a new namespace to handle favorites :
List / Add / Remove
List / Add / Remove
Quote:<favourites>
<favourite name="5 Centimètres par seconde" thumb="smb://DISKSTATION/Movies/5 Centimètres par seconde (Byôsoku 5 senchimêtoru) [1080p] [2007]/movie.tbn">PlayMedia("smb://DISKSTATION/Movies/5 Centimètres par seconde (Byôsoku 5 senchimêtoru) [1080p] [2007]/5 Centimètres par seconde.bluray.1080p.2007.mkv"</favourite>
<favourite name="Auto-Moto">ActivateWindow(10025,"plugin://plugin.video.dailymotion_com/?mode=sortChannels1&url=http%3a%2f%2fwww.dailymotion.com%2f%2fchannel%2fauto%2f1"</favourite>
</favourites>
"Favourite.Fields.Favourite": {
"extends": "Item.Fields.Base",
"items": { "type": "string",
"enum": [ "title", "type", "windowid", "thumbnail", "path" ]
}
},
"Favourite.Details.Favourite": {
"type": "array",
"items": { "type": "object",
"properties": {
"title": { "type": "string", "required": true },
"path": { "type": "string", "required": true },
"windowid": { "type": "integer" },
"thumbnail": { "type": "string" },
"type": { "$ref": "Favourite.Type" }
},
"additionalProperties": false
}
},
"Favourite.Type": {
"type": "string",
"enum": [ "file", "window", "script" ]
},
"Favourite.GetFavourite": {
"type": "method",
"description": "Retrieve all favourites",
"transport": "Response",
"permission": "ReadData",
"params": [
{ "name": "properties", "$ref": "Favourite.Fields.Favourite" },
{ "name": "filter",
"type": [
{ "type": "object", "properties": { "type": { "$ref": "Favourite.Type", "required": true } }, "additionalProperties": false }
]
}
],
"returns": {
"type": "object",
"properties": {
"limits": { "$ref": "List.LimitsReturned", "required": true },
"favourites": { "type": "array",
"items": { "$ref": "Favourite.Details.Favourite" }
}
}
}
},
"Favourite.AddFavourite": {
"type": "method",
"description": "Add a new favourite",
"transport": "Response",
"permission": "UpdateData",
"params": [
{ "name": "title", "type": "string", "required": true },
{ "name": "path", "type": "string", "required": true },
{ "name": "thumbnail", "$ref": "Optional.String" },
{ "name": "windowid", "$ref": "Optional.Integer" },
{ "name": "type", "type": [ "null", { "$ref": "Favourite.Type", "required": true } ], "default": null }
],
"returns": "string"
},
"Favourite.RemoveFavourite": {
"type": "method",
"description": "Remove a favourite",
"transport": "Response",
"permission": "UpdateData",
"params": [
{ "name": "title", "type": "string", "required": true },
{ "name": "path", "type": "string", "required": true },
{ "name": "thumbnail", "$ref": "Optional.String" },
{ "name": "windowid", "$ref": "Optional.Integer" },
{ "name": "type", "type": [ "null", { "$ref": "Favourite.Type", "required": true } ], "default": null }
],
"returns": "string"
},
"Favourite.ExecuteFavourite": {
"type": "method",
"description": "Remove a favourite",
"transport": "Response",
"permission": "??????",
"params": [
{ "name": "title", "type": "string", "required": true },
{ "name": "path", "type": "string", "required": true },
{ "name": "thumbnail", "$ref": "Optional.String" },
{ "name": "windowid", "$ref": "Optional.Integer" },
{ "name": "type", "type": [ "null", { "$ref": "Favourite.Type", "required": true } ], "default": null }
],
"returns": "string"
},
CFileItemPtr item(new CFileItem(name));
item->SetPath(favourite->FirstChild()->Value());
if (thumb) item->SetArt("thumb", thumb);
items.Add(item);
CFileItemPtr favourite(new CFileItem(item->GetLabel()));
if (item->GetLabel().IsEmpty())
favourite->SetLabel(CUtil::GetTitleFromPath(item->GetPath(), item->m_bIsFolder));
favourite->SetArt("thumb", item->GetArt("thumb"));
favourite->SetPath(executePath);
items.Add(favourite);
if (item->m_bIsFolder && (g_advancedSettings.m_playlistAsFolders ||
!(item->IsSmartPlayList() || item->IsPlayList())))
execute.Format("ActivateWindow(%i,%s)", contextWindow, StringUtils::Paramify(item->GetPath()).c_str());
else if (item->IsScript())
execute.Format("RunScript(%s)", StringUtils::Paramify(item->GetPath().Mid(9)).c_str());
else // assume a media file
{
if (item->IsVideoDb() && item->HasVideoInfoTag())
execute.Format("PlayMedia(%s)", StringUtils::Paramify(item->GetVideoInfoTag()->m_strFileNameAndPath).c_str());
else
execute.Format("PlayMedia(%s)", StringUtils::Paramify(item->GetPath()).c_str());
}
"Favourite.Fields.Favourite": {
"extends": "Item.Fields.Base",
"items": { "type": "string",
"enum": [ "title", "type", "windowid", "thumbnail", "path" ]
}
},
"Favourite.Details.Favourite": {
"type": "array",
"items": { "type": "object",
"properties": {
"title": { "type": "string", "required": true },
"path": { "type": "string", "required": true },
"windowid": { "type": "integer" },
"thumbnail": { "type": "string" },
"type": { "$ref": "Favourite.Type" }
},
"additionalProperties": false
}
},
"Favourite.Type": {
"type": "string",
"enum": [ "file", "window", "script" ]
},