diff options
Diffstat (limited to 'xbmc/interfaces/legacy/ModuleXbmcplugin.cpp')
-rw-r--r-- | xbmc/interfaces/legacy/ModuleXbmcplugin.cpp | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/xbmc/interfaces/legacy/ModuleXbmcplugin.cpp b/xbmc/interfaces/legacy/ModuleXbmcplugin.cpp new file mode 100644 index 0000000..0af97b7 --- /dev/null +++ b/xbmc/interfaces/legacy/ModuleXbmcplugin.cpp @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#include "ModuleXbmcplugin.h" + +#include "FileItem.h" +#include "filesystem/PluginDirectory.h" + +namespace XBMCAddon +{ + + namespace xbmcplugin + { + bool addDirectoryItem(int handle, const String& url, const xbmcgui::ListItem* listItem, + bool isFolder, int totalItems) + { + if (listItem == nullptr) + throw new XBMCAddon::WrongTypeException("None not allowed as argument for listitem"); + AddonClass::Ref<xbmcgui::ListItem> pListItem(listItem); + pListItem->item->SetPath(url); + pListItem->item->m_bIsFolder = isFolder; + + // call the directory class to add our item + return XFILE::CPluginDirectory::AddItem(handle, pListItem->item.get(), totalItems); + } + + bool addDirectoryItems(int handle, + const std::vector<Tuple<String,const XBMCAddon::xbmcgui::ListItem*,bool> >& items, + int totalItems) + { + CFileItemList fitems; + for (const auto& item : items) + { + const String& url = item.first(); + const XBMCAddon::xbmcgui::ListItem* pListItem = item.second(); + bool bIsFolder = item.GetNumValuesSet() > 2 ? item.third() : false; + pListItem->item->SetPath(url); + pListItem->item->m_bIsFolder = bIsFolder; + fitems.Add(pListItem->item); + } + + // call the directory class to add our items + return XFILE::CPluginDirectory::AddItems(handle, &fitems, totalItems); + } + + void endOfDirectory(int handle, bool succeeded, bool updateListing, + bool cacheToDisc) + { + // tell the directory class that we're done + XFILE::CPluginDirectory::EndOfDirectory(handle, succeeded, updateListing, cacheToDisc); + } + + void setResolvedUrl(int handle, bool succeeded, const xbmcgui::ListItem* listItem) + { + if (listItem == nullptr) + throw new XBMCAddon::WrongTypeException("None not allowed as argument for listitem"); + AddonClass::Ref<xbmcgui::ListItem> pListItem(listItem); + XFILE::CPluginDirectory::SetResolvedUrl(handle, succeeded, pListItem->item.get()); + } + + void addSortMethod(int handle, int sortMethod, const String& clabelMask, const String& clabel2Mask) + { + String labelMask; + if (sortMethod == SORT_METHOD_TRACKNUM) + labelMask = (clabelMask.empty() ? "[%N. ]%T" : clabelMask.c_str()); + else if (sortMethod == SORT_METHOD_EPISODE || sortMethod == SORT_METHOD_PRODUCTIONCODE) + labelMask = (clabelMask.empty() ? "%H. %T" : clabelMask.c_str()); + else + labelMask = (clabelMask.empty() ? "%T" : clabelMask.c_str()); + + String label2Mask; + label2Mask = (clabel2Mask.empty() ? "%D" : clabel2Mask.c_str()); + + // call the directory class to add the sort method. + if (sortMethod >= SORT_METHOD_NONE && sortMethod < SORT_METHOD_MAX) + XFILE::CPluginDirectory::AddSortMethod(handle, (SORT_METHOD)sortMethod, labelMask, label2Mask); + } + + String getSetting(int handle, const char* id) + { + return XFILE::CPluginDirectory::GetSetting(handle, id); + } + + void setSetting(int handle, const String& id, const String& value) + { + XFILE::CPluginDirectory::SetSetting(handle, id, value); + } + + void setContent(int handle, const char* content) + { + XFILE::CPluginDirectory::SetContent(handle, content); + } + + void setPluginCategory(int handle, const String& category) + { + XFILE::CPluginDirectory::SetProperty(handle, "plugincategory", category); + } + + void setPluginFanart(int handle, const char* image, + const char* color1, + const char* color2, + const char* color3) + { + if (image) + XFILE::CPluginDirectory::SetProperty(handle, "fanart_image", image); + if (color1) + XFILE::CPluginDirectory::SetProperty(handle, "fanart_color1", color1); + if (color2) + XFILE::CPluginDirectory::SetProperty(handle, "fanart_color2", color2); + if (color3) + XFILE::CPluginDirectory::SetProperty(handle, "fanart_color3", color3); + } + + void setProperty(int handle, const char* key, const String& value) + { + XFILE::CPluginDirectory::SetProperty(handle, key, value); + } + + } +} |