xbmc
PosixTimezone.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "settings/lib/ISettingCallback.h"
12 #include "settings/lib/ISettingsHandler.h"
13 
14 #include <map>
15 #include <string>
16 #include <vector>
17 
18 class CSetting;
19 struct StringSettingOption;
20 
22 {
23 public:
25 
26  void OnSettingChanged(const std::shared_ptr<const CSetting>& setting) override;
27 
28  void OnSettingsLoaded() override;
29 
30  std::string GetOSConfiguredTimezone();
31 
32  std::vector<std::string> GetCounties();
33  std::vector<std::string> GetTimezonesByCountry(const std::string& country);
34  std::string GetCountryByTimezone(const std::string& timezone);
35 
36  void SetTimezone(const std::string& timezone);
37  int m_IsDST = 0;
38 
39  static void SettingOptionsTimezoneCountriesFiller(const std::shared_ptr<const CSetting>& setting,
40  std::vector<StringSettingOption>& list,
41  std::string& current,
42  void* data);
43  static void SettingOptionsTimezonesFiller(const std::shared_ptr<const CSetting>& setting,
44  std::vector<StringSettingOption>& list,
45  std::string& current,
46  void* data);
47 
48 private:
49  std::string ReadFromLocaltime(std::string_view filename);
50  std::string ReadFromTimezone(std::string_view filename);
51  std::vector<std::string> m_counties;
52  std::map<std::string, std::string> m_countryByCode;
53  std::map<std::string, std::string> m_countryByName;
54 
55  std::map<std::string, std::vector<std::string>> m_timezonesByCountryCode;
56  std::map<std::string, std::string> m_countriesByTimezoneName;
57 };
58 
59 extern CPosixTimezone g_timezone;
60 
CPosixTimezone()
Definition: PosixTimezone.cpp:27
void OnSettingChanged(const std::shared_ptr< const CSetting > &setting) override
The value of the given setting has changed.
Definition: PosixTimezone.cpp:136
Definition: PosixTimezone.h:21
Definition: ISettingCallback.h:16
Setting base class containing all the properties which are common to all settings independent of the ...
Definition: Setting.h:46
Definition: SettingDefinitions.h:85
Interface defining methods being called by the settings system if an action is performed on multiple/...
Definition: ISettingsHandler.h:16
void OnSettingsLoaded() override
Settings have been loaded.
Definition: PosixTimezone.cpp:156