From 7659f21ed5b90e1a4cc2f0dc6237251b7d74b35b Mon Sep 17 00:00:00 2001 From: montellese Date: Fri, 27 Feb 2015 10:51:24 +0100 Subject: [PATCH] addons: extend CAddonDatabase::GetAddons() to support getting addons of a specific type --- xbmc/addons/AddonDatabase.cpp | 14 +++++++++++++- xbmc/addons/AddonDatabase.h | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/xbmc/addons/AddonDatabase.cpp b/xbmc/addons/AddonDatabase.cpp index 69b47eafcee7c..89a2948a581b8 100644 --- a/xbmc/addons/AddonDatabase.cpp +++ b/xbmc/addons/AddonDatabase.cpp @@ -311,7 +311,7 @@ bool CAddonDatabase::GetAddon(int id, AddonPtr &addon) return false; } -bool CAddonDatabase::GetAddons(VECADDONS& addons) +bool CAddonDatabase::GetAddons(VECADDONS& addons, const ADDON::TYPE &type /* = ADDON::ADDON_UNKNOWN */) { try { @@ -319,6 +319,18 @@ bool CAddonDatabase::GetAddons(VECADDONS& addons) if (NULL == m_pDS2.get()) return false; std::string sql = PrepareSQL("select distinct addonID from addon"); + if (type != ADDON_UNKNOWN) + { + std::string strType; + if (type >= ADDON_VIDEO && type <= ADDON_EXECUTABLE) + strType = TranslateType(ADDON_PLUGIN); + else + strType = TranslateType(type); + + if (!strType.empty()) + sql += PrepareSQL(" where type = '%s'", strType.c_str()); + } + m_pDS->query(sql.c_str()); while (!m_pDS->eof()) { diff --git a/xbmc/addons/AddonDatabase.h b/xbmc/addons/AddonDatabase.h index b32f2a42fde5d..5d34e05f132fc 100644 --- a/xbmc/addons/AddonDatabase.h +++ b/xbmc/addons/AddonDatabase.h @@ -33,7 +33,7 @@ class CAddonDatabase : public CDatabase int AddAddon(const ADDON::AddonPtr& item, int idRepo); bool GetAddon(const std::string& addonID, ADDON::AddonPtr& addon); - bool GetAddons(ADDON::VECADDONS& addons); + bool GetAddons(ADDON::VECADDONS& addons, const ADDON::TYPE &type = ADDON::ADDON_UNKNOWN); /*! \brief grab the (largest) add-on version for an add-on */ ADDON::AddonVersion GetAddonVersion(const std::string &id);