2 * Copyright (C) 2013-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
9 #include "SettingAddon.h"
11 #include "addons/Addon.h"
12 #include "addons/addoninfo/AddonInfo.h"
13 #include "addons/addoninfo/AddonType.h"
14 #include "settings/lib/SettingsManager.h"
15 #include "utils/XBMCTinyXML.h"
16 #include "utils/XMLUtils.h"
17 #include "utils/log.h"
21 CSettingAddon::CSettingAddon(const std::string
&id
, CSettingsManager
*settingsManager
/* = nullptr */)
22 : CSettingString(id
, settingsManager
)
25 CSettingAddon::CSettingAddon(const std::string
&id
, int label
, const std::string
&value
, CSettingsManager
*settingsManager
/* = nullptr */)
26 : CSettingString(id
, label
, value
, settingsManager
)
29 CSettingAddon::CSettingAddon(const std::string
&id
, const CSettingAddon
&setting
)
30 : CSettingString(id
, setting
)
32 copyaddontype(setting
);
35 SettingPtr
CSettingAddon::Clone(const std::string
&id
) const
37 return std::make_shared
<CSettingAddon
>(id
, *this);
40 bool CSettingAddon::Deserialize(const TiXmlNode
*node
, bool update
/* = false */)
42 std::unique_lock
<CSharedSection
> lock(m_critical
);
44 if (!CSettingString::Deserialize(node
, update
))
47 if (m_control
!= nullptr &&
48 (m_control
->GetType() != "button" || m_control
->GetFormat() != "addon"))
50 CLog::Log(LOGERROR
, "CSettingAddon: invalid <control> of \"{}\"", m_id
);
55 std::string strAddonType
;
56 auto constraints
= node
->FirstChild("constraints");
57 if (constraints
!= nullptr)
60 if (XMLUtils::GetString(constraints
, "addontype", strAddonType
) && !strAddonType
.empty())
62 m_addonType
= ADDON::CAddonInfo::TranslateType(strAddonType
);
63 if (m_addonType
!= ADDON::AddonType::UNKNOWN
)
70 CLog::Log(LOGERROR
, "CSettingAddon: error reading the addontype value \"{}\" of \"{}\"",
78 void CSettingAddon::copyaddontype(const CSettingAddon
&setting
)
80 CSettingString::Copy(setting
);
82 std::unique_lock
<CSharedSection
> lock(m_critical
);
83 m_addonType
= setting
.m_addonType
;