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_CHROMEOS_PREFERENCES_H_ 6 #define CHROME_BROWSER_CHROMEOS_PREFERENCES_H_ 7 #pragma once 8 9 #include <string> 10 #include <vector> 11 12 #include "chrome/browser/chromeos/language_preferences.h" 13 #include "chrome/browser/prefs/pref_member.h" 14 #include "content/common/notification_observer.h" 15 16 class PrefService; 17 18 namespace chromeos { 19 20 // The Preferences class handles Chrome OS preferences. When the class 21 // is first initialized, it will initialize the OS settings to what's stored in 22 // the preferences. These include touchpad settings, etc. 23 // When the preferences change, we change the settings to reflect the new value. 24 class Preferences : public NotificationObserver { 25 public: 26 Preferences(); 27 virtual ~Preferences(); 28 29 // This method will register the prefs associated with Chrome OS settings. 30 static void RegisterUserPrefs(PrefService* prefs); 31 32 // This method will initialize Chrome OS settings to values in user prefs. 33 void Init(PrefService* prefs); 34 35 // Overridden from NotificationObserver: 36 virtual void Observe(NotificationType type, 37 const NotificationSource& source, 38 const NotificationDetails& details); 39 40 private: 41 // This will set the OS settings when the preference changes. 42 // If this method is called with NULL, it will set all OS settings to what's 43 // stored in the preferences. 44 void NotifyPrefChanged(const std::string* pref_name); 45 46 // Writes boolean |value| to the input method (IBus) configuration daemon. 47 // |section| (e.g. "general") and |name| (e.g. "use_global_engine") should 48 // not be NULL. 49 void SetLanguageConfigBoolean(const char* section, 50 const char* name, 51 bool value); 52 53 // Writes integer |value| to the input method (IBus) configuration daemon. 54 // |section| and |name| should not be NULL. 55 void SetLanguageConfigInteger(const char* section, 56 const char* name, 57 int value); 58 59 // Writes string |value| to the input method (IBus) configuration daemon. 60 // |section| and |name| should not be NULL. 61 void SetLanguageConfigString(const char* section, 62 const char* name, 63 const std::string& value); 64 65 // Writes a string list to the input method (IBus) configuration daemon. 66 // |section| and |name| should not be NULL. 67 void SetLanguageConfigStringList(const char* section, 68 const char* name, 69 const std::vector<std::string>& values); 70 71 // A variant of SetLanguageConfigStringList. You can pass comma-separated 72 // values. Examples of |value|: "", "Control+space,Hiragana" 73 void SetLanguageConfigStringListAsCSV(const char* section, 74 const char* name, 75 const std::string& value); 76 77 // Updates the mapping of modifier keys following current prefs values. 78 void UpdateModifierKeyMapping(); 79 80 // Updates the initial key repeat delay and key repeat interval following 81 // current prefs values. We set the delay and interval at once since an 82 // underlying XKB API requires it. 83 void UpdateAutoRepeatRate(); 84 85 BooleanPrefMember tap_to_click_enabled_; 86 BooleanPrefMember vert_edge_scroll_enabled_; 87 BooleanPrefMember accessibility_enabled_; 88 IntegerPrefMember speed_factor_; 89 IntegerPrefMember sensitivity_; 90 BooleanPrefMember use_24hour_clock_; 91 92 // Input method preferences. 93 StringPrefMember language_hotkey_next_engine_in_menu_; 94 StringPrefMember language_hotkey_previous_engine_; 95 StringPrefMember language_preferred_languages_; 96 StringPrefMember language_preload_engines_; 97 BooleanPrefMember language_chewing_boolean_prefs_[ 98 language_prefs::kNumChewingBooleanPrefs]; 99 StringPrefMember language_chewing_multiple_choice_prefs_[ 100 language_prefs::kNumChewingMultipleChoicePrefs]; 101 IntegerPrefMember language_chewing_hsu_sel_key_type_; 102 IntegerPrefMember language_chewing_integer_prefs_[ 103 language_prefs::kNumChewingIntegerPrefs]; 104 StringPrefMember language_hangul_keyboard_; 105 StringPrefMember language_hangul_hanja_keys_; 106 BooleanPrefMember language_pinyin_boolean_prefs_[ 107 language_prefs::kNumPinyinBooleanPrefs]; 108 IntegerPrefMember language_pinyin_int_prefs_[ 109 language_prefs::kNumPinyinIntegerPrefs]; 110 IntegerPrefMember language_pinyin_double_pinyin_schema_; 111 BooleanPrefMember language_mozc_boolean_prefs_[ 112 language_prefs::kNumMozcBooleanPrefs]; 113 StringPrefMember language_mozc_multiple_choice_prefs_[ 114 language_prefs::kNumMozcMultipleChoicePrefs]; 115 IntegerPrefMember language_mozc_integer_prefs_[ 116 language_prefs::kNumMozcIntegerPrefs]; 117 IntegerPrefMember language_xkb_remap_search_key_to_; 118 IntegerPrefMember language_xkb_remap_control_key_to_; 119 IntegerPrefMember language_xkb_remap_alt_key_to_; 120 BooleanPrefMember language_xkb_auto_repeat_enabled_; 121 IntegerPrefMember language_xkb_auto_repeat_delay_pref_; 122 IntegerPrefMember language_xkb_auto_repeat_interval_pref_; 123 124 BooleanPrefMember enable_screen_lock_; 125 126 DISALLOW_COPY_AND_ASSIGN(Preferences); 127 }; 128 129 } // namespace chromeos 130 131 #endif // CHROME_BROWSER_CHROMEOS_PREFERENCES_H_ 132