1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_SYSTEM_SETTINGS_PROVIDER_H_ 6 #define CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_SYSTEM_SETTINGS_PROVIDER_H_ 7 8 #include <vector> 9 10 #include "base/string16.h" 11 #include "chrome/browser/chromeos/cros_settings_provider.h" 12 #include "chrome/browser/chromeos/system_access.h" 13 #include "third_party/icu/public/i18n/unicode/timezone.h" 14 15 class Value; 16 class ListValue; 17 18 namespace chromeos { 19 20 class SystemSettingsProvider : public CrosSettingsProvider, 21 public SystemAccess::Observer { 22 public: 23 SystemSettingsProvider(); 24 virtual ~SystemSettingsProvider(); 25 26 // CrosSettingsProvider overrides. 27 virtual bool Get(const std::string& path, Value** out_value) const; 28 virtual bool HandlesSetting(const std::string& path); 29 30 // Overridden from SystemAccess::Observer: 31 virtual void TimezoneChanged(const icu::TimeZone& timezone); 32 33 // Creates the map of timezones used by the options page. 34 ListValue* GetTimezoneList(); 35 36 private: 37 // CrosSettingsProvider overrides. 38 virtual void DoSet(const std::string& path, Value* in_value); 39 40 // Gets timezone name. 41 static string16 GetTimezoneName(const icu::TimeZone& timezone); 42 43 // Gets timezone ID which is also used as timezone pref value. 44 static string16 GetTimezoneID(const icu::TimeZone& timezone); 45 46 // Gets timezone object from its id. 47 const icu::TimeZone* GetTimezone(const string16& timezone_id); 48 49 // Gets a timezone id from a timezone in |timezones_| that has the same 50 // rule of given |timezone|. 51 // One timezone could have multiple timezones, 52 // e.g. 53 // US/Pacific == America/Los_Angeles 54 // We should always use the known timezone id when passing back as 55 // pref values. 56 string16 GetKnownTimezoneID(const icu::TimeZone& timezone) const; 57 58 // Timezones. 59 std::vector<icu::TimeZone*> timezones_; 60 61 DISALLOW_COPY_AND_ASSIGN(SystemSettingsProvider); 62 }; 63 64 } // namespace chromeos 65 66 #endif // CHROME_BROWSER_UI_WEBUI_OPTIONS_CHROMEOS_SYSTEM_SETTINGS_PROVIDER_H_ 67