summaryrefslogtreecommitdiffstats
path: root/xbmc/profiles/Profile.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--xbmc/profiles/Profile.cpp126
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();
+}