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.
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
)
20 CSettingDate::CSettingDate(const std::string
&id
, int label
, const std::string
&value
, CSettingsManager
*settingsManager
/* = NULL */)
21 : CSettingString(id
, label
, value
, settingsManager
)
24 CSettingDate::CSettingDate(const std::string
&id
, const CSettingDate
&setting
)
25 : CSettingString(id
, setting
)
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
))
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
)
57 CSettingTime::CSettingTime(const std::string
&id
, int label
, const std::string
&value
, CSettingsManager
*settingsManager
/* = NULL */)
58 : CSettingString(id
, label
, value
, settingsManager
)
61 CSettingTime::CSettingTime(const std::string
&id
, const CSettingTime
&setting
)
62 : CSettingString(id
, setting
)
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
))
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()));