Merge pull request #24470 from fuzzard/release_20.3
[xbmc.git] / xbmc / settings / SettingDateTime.cpp
blob48a736c023920cb75af8e3759f263a92a10a17c0
1 /*
2 * Copyright (C) 2017-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.
7 */
9 #include "SettingDateTime.h"
11 #include "XBDateTime.h"
12 #include "utils/TimeUtils.h"
14 #include <shared_mutex>
16 CSettingDate::CSettingDate(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
17 : CSettingString(id, settingsManager)
18 { }
20 CSettingDate::CSettingDate(const std::string &id, int label, const std::string &value, CSettingsManager *settingsManager /* = NULL */)
21 : CSettingString(id, label, value, settingsManager)
22 { }
24 CSettingDate::CSettingDate(const std::string &id, const CSettingDate &setting)
25 : CSettingString(id, setting)
26 { }
28 SettingPtr CSettingDate::Clone(const std::string &id) const
30 return std::make_shared<CSettingDate>(id, *this);
33 bool CSettingDate::CheckValidity(const std::string &value) const
35 std::shared_lock<CSharedSection> lock(m_critical);
37 if (!CSettingString::CheckValidity(value))
38 return false;
40 return CDateTime::FromDBDate(value).IsValid();
43 CDateTime CSettingDate::GetDate() const
45 return CDateTime::FromDBDate(GetValue());
48 bool CSettingDate::SetDate(const CDateTime& date)
50 return SetValue(date.GetAsDBDate());
53 CSettingTime::CSettingTime(const std::string &id, CSettingsManager *settingsManager /* = NULL */)
54 : CSettingString(id, settingsManager)
55 { }
57 CSettingTime::CSettingTime(const std::string &id, int label, const std::string &value, CSettingsManager *settingsManager /* = NULL */)
58 : CSettingString(id, label, value, settingsManager)
59 { }
61 CSettingTime::CSettingTime(const std::string &id, const CSettingTime &setting)
62 : CSettingString(id, setting)
63 { }
65 SettingPtr CSettingTime::Clone(const std::string &id) const
67 return std::make_shared<CSettingTime>(id, *this);
70 bool CSettingTime::CheckValidity(const std::string &value) const
72 std::shared_lock<CSharedSection> lock(m_critical);
74 if (!CSettingString::CheckValidity(value))
75 return false;
77 return CDateTime::FromDBTime(value).IsValid();
80 CDateTime CSettingTime::GetTime() const
82 return CDateTime::FromDBTime(GetValue());
85 bool CSettingTime::SetTime(const CDateTime& time)
87 return SetValue(CTimeUtils::WithoutSeconds(time.GetAsDBTime()));