diff options
Diffstat (limited to 'xbmc/profiles/Profile.cpp')
-rw-r--r-- | xbmc/profiles/Profile.cpp | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/xbmc/profiles/Profile.cpp b/xbmc/profiles/Profile.cpp new file mode 100644 index 0000000..5665d25 --- /dev/null +++ b/xbmc/profiles/Profile.cpp @@ -0,0 +1,126 @@ +/* + * 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 "Profile.h" + +#include "XBDateTime.h" +#include "utils/XMLUtils.h" + +CProfile::CLock::CLock(LockType type, const std::string &password): + code(password) +{ + programs = false; + pictures = false; + files = false; + video = false; + music = false; + settings = LOCK_LEVEL::NONE; + addonManager = false; + games = false; + mode = type; +} + +void CProfile::CLock::Validate() +{ + if (mode != LOCK_MODE_EVERYONE && (code == "-" || code.empty())) + mode = LOCK_MODE_EVERYONE; + + if (code.empty() || mode == LOCK_MODE_EVERYONE) + code = "-"; +} + +CProfile::CProfile(const std::string &directory, const std::string &name, const int id): + m_directory(directory), + m_name(name) +{ + m_id = id; + m_bDatabases = true; + m_bCanWrite = true; + m_bSources = true; + m_bCanWriteSources = true; + m_bAddons = true; +} + +CProfile::~CProfile(void) = default; + +void CProfile::setDate() +{ + const CDateTime now = CDateTime::GetCurrentDateTime(); + std::string strDate = now.GetAsLocalizedDate(false); + std::string strTime = now.GetAsLocalizedTime(TIME_FORMAT_GUESS); + if (strDate.empty() || strTime.empty()) + setDate("-"); + else + setDate(strDate+" - "+strTime); +} + +void CProfile::Load(const TiXmlNode *node, int nextIdProfile) +{ + if (!XMLUtils::GetInt(node, "id", m_id)) + m_id = nextIdProfile; + + XMLUtils::GetString(node, "name", m_name); + XMLUtils::GetPath(node, "directory", m_directory); + XMLUtils::GetPath(node, "thumbnail", m_thumb); + XMLUtils::GetBoolean(node, "hasdatabases", m_bDatabases); + XMLUtils::GetBoolean(node, "canwritedatabases", m_bCanWrite); + XMLUtils::GetBoolean(node, "hassources", m_bSources); + XMLUtils::GetBoolean(node, "canwritesources", m_bCanWriteSources); + XMLUtils::GetBoolean(node, "lockaddonmanager", m_locks.addonManager); + int settings = m_locks.settings; + XMLUtils::GetInt(node, "locksettings", settings); + m_locks.settings = (LOCK_LEVEL::SETTINGS_LOCK)settings; + XMLUtils::GetBoolean(node, "lockfiles", m_locks.files); + XMLUtils::GetBoolean(node, "lockmusic", m_locks.music); + XMLUtils::GetBoolean(node, "lockvideo", m_locks.video); + XMLUtils::GetBoolean(node, "lockpictures", m_locks.pictures); + XMLUtils::GetBoolean(node, "lockprograms", m_locks.programs); + XMLUtils::GetBoolean(node, "lockgames", m_locks.games); + + int lockMode = m_locks.mode; + XMLUtils::GetInt(node, "lockmode", lockMode); + m_locks.mode = (LockType)lockMode; + if (m_locks.mode > LOCK_MODE_QWERTY || m_locks.mode < LOCK_MODE_EVERYONE) + m_locks.mode = LOCK_MODE_EVERYONE; + + XMLUtils::GetString(node, "lockcode", m_locks.code); + XMLUtils::GetString(node, "lastdate", m_date); +} + +void CProfile::Save(TiXmlNode *root) const +{ + TiXmlElement profileNode("profile"); + TiXmlNode *node = root->InsertEndChild(profileNode); + + XMLUtils::SetInt(node, "id", m_id); + XMLUtils::SetString(node, "name", m_name); + XMLUtils::SetPath(node, "directory", m_directory); + XMLUtils::SetPath(node, "thumbnail", m_thumb); + XMLUtils::SetBoolean(node, "hasdatabases", m_bDatabases); + XMLUtils::SetBoolean(node, "canwritedatabases", m_bCanWrite); + XMLUtils::SetBoolean(node, "hassources", m_bSources); + XMLUtils::SetBoolean(node, "canwritesources", m_bCanWriteSources); + XMLUtils::SetBoolean(node, "lockaddonmanager", m_locks.addonManager); + XMLUtils::SetInt(node, "locksettings", m_locks.settings); + XMLUtils::SetBoolean(node, "lockfiles", m_locks.files); + XMLUtils::SetBoolean(node, "lockmusic", m_locks.music); + XMLUtils::SetBoolean(node, "lockvideo", m_locks.video); + XMLUtils::SetBoolean(node, "lockpictures", m_locks.pictures); + XMLUtils::SetBoolean(node, "lockprograms", m_locks.programs); + XMLUtils::SetBoolean(node, "lockgames", m_locks.games); + + XMLUtils::SetInt(node, "lockmode", m_locks.mode); + XMLUtils::SetString(node,"lockcode", m_locks.code); + XMLUtils::SetString(node, "lastdate", m_date); +} + +void CProfile::SetLocks(const CProfile::CLock &locks) +{ + m_locks = locks; + m_locks.Validate(); +} |