summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-22 02:06:23 +0000
committermazda@chromium.org <mazda@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-06-22 02:06:23 +0000
commit5403746b7088c85d7bc38a6e64637b0d8906b0de (patch)
tree752e41a171088b601d8a1d37287bc10c1cc8da02
parent365632b6511797f47983a1bbae1dc4fd84e0ba1b (diff)
downloadchromium_src-5403746b7088c85d7bc38a6e64637b0d8906b0de.zip
chromium_src-5403746b7088c85d7bc38a6e64637b0d8906b0de.tar.gz
chromium_src-5403746b7088c85d7bc38a6e64637b0d8906b0de.tar.bz2
Add a slider to the mozc configration dialog for setting the integer type of configurations.
BUG=chromium-os:2625 TEST=manual Review URL: http://codereview.chromium.org/2856011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@50421 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/app/generated_resources.grd4
-rw-r--r--chrome/browser/chromeos/language_preferences.h27
-rw-r--r--chrome/browser/chromeos/options/language_mozc_config_view.cc48
-rw-r--r--chrome/browser/chromeos/options/language_mozc_config_view.h10
-rw-r--r--chrome/browser/chromeos/preferences.cc15
-rw-r--r--chrome/browser/chromeos/preferences.h1
-rw-r--r--chrome/browser/sync/glue/synchronized_preferences.h1
-rw-r--r--chrome/common/pref_names.cc2
-rw-r--r--chrome/common/pref_names.h1
9 files changed, 97 insertions, 12 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd
index 2e4a812..5aa08eb 100644
--- a/chrome/app/generated_resources.grd
+++ b/chrome/app/generated_resources.grd
@@ -8154,6 +8154,10 @@ Keep your key file in a safe place. You will need it to create new versions of y
desc="The checkbox label for a Mozc input method preference">
Use system dictionary
</message>
+ <message name="IDS_OPTIONS_SETTINGS_LANGUAGES_MOZC_SUGGESTIONS_SIZE"
+ desc="The slider label for a Mozc input method preference">
+ Maximum number of suggestions
+ </message>
<message name="IDS_OPTIONS_SETTINGS_LANGUAGES_CONFIGURE"
desc="The label for the configure button for input methods">
Configure...
diff --git a/chrome/browser/chromeos/language_preferences.h b/chrome/browser/chromeos/language_preferences.h
index 8dc89eb..278e703 100644
--- a/chrome/browser/chromeos/language_preferences.h
+++ b/chrome/browser/chromeos/language_preferences.h
@@ -33,6 +33,15 @@ struct LanguageBooleanPrefs {
int message_id;
};
+struct LanguageIntegerRangePreference {
+ const wchar_t* pref_name; // Chrome preference name.
+ int default_pref_value;
+ int min_pref_value;
+ int max_pref_value;
+ const char* ibus_config_name;
+ int message_id;
+};
+
// For ibus-daemon
const char kGeneralSectionName[] = "general";
const char kHotKeySectionName[] = "general/hotkey";
@@ -81,14 +90,7 @@ const LanguageBooleanPrefs kChewingBooleanPrefs[] = {
};
const size_t kNumChewingBooleanPrefs = ARRAYSIZE_UNSAFE(kChewingBooleanPrefs);
-const struct {
- const wchar_t* pref_name; // Chrome preference name.
- int default_pref_value;
- int min_pref_value;
- int max_pref_value;
- const char* ibus_config_name;
- int message_id;
-} kChewingIntegerPrefs[] = {
+const LanguageIntegerRangePreference kChewingIntegerPrefs[] = {
{ prefs::kLanguageChewingMaxChiSymbolLen, 20, 8, 40, "maxChiSymbolLen",
IDS_OPTIONS_SETTINGS_LANGUAGES_CHEWING_SETTING_MAX_CHI_SYMBOL_LEN},
{ prefs::kLanguageChewingCandPerPage, 10, 8, 10, "candPerPage",
@@ -383,10 +385,15 @@ const LanguageMultipleChoicePreference<const char*>
IDS_MOZC(NUMPAD_CHARACTER_FORM),
},
};
+const size_t kNumMozcMultipleChoicePrefs = arraysize(kMozcMultipleChoicePrefs);
-#undef IDS_MOZC
+const LanguageIntegerRangePreference kMozcIntegerPrefs[] = {
+ { prefs::kLanguageMozcSuggestionsSize, 3, 1, 9, "suggestions_size",
+ IDS_MOZC(SUGGESTIONS_SIZE)},
+};
+const size_t kNumMozcIntegerPrefs = ARRAYSIZE_UNSAFE(kMozcIntegerPrefs);
-const size_t kNumMozcMultipleChoicePrefs = arraysize(kMozcMultipleChoicePrefs);
+#undef IDS_MOZC
// For Traditional Chinese input methods (ibus-pinyin-bopomofo and ibus-chewing)
// TODO(yusukes): Add constants for Traditional Chinese input methods.
diff --git a/chrome/browser/chromeos/options/language_mozc_config_view.cc b/chrome/browser/chromeos/options/language_mozc_config_view.cc
index 8b27ea0..8a52506 100644
--- a/chrome/browser/chromeos/options/language_mozc_config_view.cc
+++ b/chrome/browser/chromeos/options/language_mozc_config_view.cc
@@ -38,6 +38,12 @@ LanguageMozcConfigView::LanguageMozcConfigView(Profile* profile)
new LanguageComboboxModel<const char*>(&kMozcMultipleChoicePrefs[i]);
current.combobox = NULL;
}
+ for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) {
+ MozcPrefAndAssociatedSlider& current = prefs_and_sliders_[i];
+ current.integer_pref.Init(
+ kMozcIntegerPrefs[i].pref_name, profile->GetPrefs(), this);
+ current.slider = NULL;
+ }
}
LanguageMozcConfigView::~LanguageMozcConfigView() {
@@ -56,6 +62,10 @@ void LanguageMozcConfigView::ButtonPressed(
void LanguageMozcConfigView::ItemChanged(
views::Combobox* sender, int prev_index, int new_index) {
+ if (new_index < 0 || sender->model()->GetItemCount() <= new_index) {
+ LOG(ERROR) << "Invalid new_index: " << new_index;
+ return;
+ }
for (size_t i = 0; i < kNumMozcMultipleChoicePrefs; ++i) {
MozcPrefAndAssociatedCombobox& current = prefs_and_comboboxes_[i];
if (current.combobox == sender) {
@@ -69,6 +79,16 @@ void LanguageMozcConfigView::ItemChanged(
}
}
+void LanguageMozcConfigView::SliderValueChanged(views::Slider* sender) {
+ size_t pref_id;
+ for (pref_id = 0; pref_id < kNumMozcIntegerPrefs; ++pref_id) {
+ if (prefs_and_sliders_[pref_id].slider == sender)
+ break;
+ }
+ DCHECK(pref_id < kNumMozcIntegerPrefs);
+ prefs_and_sliders_[pref_id].integer_pref.SetValue(sender->value());
+}
+
void LanguageMozcConfigView::Layout() {
// Not sure why but this is needed to show contents in the dialog.
contents_->SetBounds(0, 0, width(), height());
@@ -86,7 +106,7 @@ gfx::Size LanguageMozcConfigView::GetPreferredSize() {
IDS_LANGUAGES_INPUT_DIALOG_HEIGHT_LINES);
// TODO(mazda): Remove the manual adjustment.
// The padding is needed for accommodating all the controls in the dialog.
- const int kHeightPadding = 20;
+ const int kHeightPadding = 60;
preferred_size.Enlarge(0, kHeightPadding);
return preferred_size;
}
@@ -108,7 +128,7 @@ void LanguageMozcConfigView::InitControlLayout() {
column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 0,
GridLayout::USE_PREF, 0, 0);
column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing);
- column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 0,
+ column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1,
GridLayout::USE_PREF, 0, 0);
for (size_t i = 0; i < kNumMozcBooleanPrefs; ++i) {
@@ -123,6 +143,17 @@ void LanguageMozcConfigView::InitControlLayout() {
current.combobox = new LanguageCombobox(current.combobox_model);
current.combobox->set_listener(this);
}
+ for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) {
+ MozcPrefAndAssociatedSlider& current = prefs_and_sliders_[i];
+ current.slider = new views::Slider(
+ kMozcIntegerPrefs[i].min_pref_value,
+ kMozcIntegerPrefs[i].max_pref_value,
+ 1,
+ static_cast<views::Slider::StyleFlags>(
+ views::Slider::STYLE_DRAW_VALUE |
+ views::Slider::STYLE_UPDATE_ON_RELEASE),
+ this);
+ }
NotifyPrefChanged(); // Sync the comboboxes with current Chrome prefs.
// Show the checkboxes.
@@ -138,6 +169,14 @@ void LanguageMozcConfigView::InitControlLayout() {
layout->AddView(new views::Label(current.combobox_model->GetLabel()));
layout->AddView(current.combobox);
}
+ for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) {
+ const MozcPrefAndAssociatedSlider& current = prefs_and_sliders_[i];
+ layout->StartRow(0, kColumnSetId);
+ layout->AddView(new views::Label(
+ l10n_util::GetString(kMozcIntegerPrefs[i].message_id)));
+ layout->AddView(current.slider);
+ }
+ NotifyPrefChanged(); // Sync the slider with current Chrome prefs.
}
void LanguageMozcConfigView::Observe(NotificationType type,
@@ -166,6 +205,11 @@ void LanguageMozcConfigView::NotifyPrefChanged() {
}
}
}
+ for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) {
+ MozcPrefAndAssociatedSlider& current = prefs_and_sliders_[i];
+ const int value = current.integer_pref.GetValue();
+ current.slider->SetValue(value);
+ }
}
} // namespace chromeos
diff --git a/chrome/browser/chromeos/options/language_mozc_config_view.h b/chrome/browser/chromeos/options/language_mozc_config_view.h
index 2cb181b..b0e53b1 100644
--- a/chrome/browser/chromeos/options/language_mozc_config_view.h
+++ b/chrome/browser/chromeos/options/language_mozc_config_view.h
@@ -14,6 +14,7 @@
#include "chrome/browser/views/options/options_page_view.h"
#include "views/controls/combobox/combobox.h"
#include "views/controls/label.h"
+#include "views/controls/slider/slider.h"
#include "views/window/dialog_delegate.h"
namespace views {
@@ -30,6 +31,7 @@ class LanguageComboboxModel;
class LanguageMozcConfigView : public views::ButtonListener,
public views::Combobox::Listener,
public views::DialogDelegate,
+ public views::SliderListener,
public OptionsPageView {
public:
explicit LanguageMozcConfigView(Profile* profile);
@@ -43,6 +45,9 @@ class LanguageMozcConfigView : public views::ButtonListener,
int prev_index,
int new_index);
+ // views::SliderListener overrides.
+ virtual void SliderValueChanged(views::Slider* sender);
+
// views::DialogDelegate overrides.
virtual bool IsModal() const { return true; }
virtual views::View* GetContentsView() { return this; }
@@ -77,6 +82,11 @@ class LanguageMozcConfigView : public views::ButtonListener,
LanguageCombobox* combobox;
} prefs_and_comboboxes_[kNumMozcMultipleChoicePrefs];
+ struct MozcPrefAndAssociatedSlider {
+ IntegerPrefMember integer_pref;
+ views::Slider* slider;
+ } prefs_and_sliders_[kNumMozcIntegerPrefs];
+
DISALLOW_COPY_AND_ASSIGN(LanguageMozcConfigView);
};
diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc
index b56add7..5a20b49 100644
--- a/chrome/browser/chromeos/preferences.cc
+++ b/chrome/browser/chromeos/preferences.cc
@@ -72,6 +72,10 @@ void Preferences::RegisterUserPrefs(PrefService* prefs) {
kMozcMultipleChoicePrefs[i].pref_name,
kMozcMultipleChoicePrefs[i].default_pref_value);
}
+ for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) {
+ prefs->RegisterIntegerPref(kMozcIntegerPrefs[i].pref_name,
+ kMozcIntegerPrefs[i].default_pref_value);
+ }
}
void Preferences::Init(PrefService* prefs) {
@@ -119,6 +123,10 @@ void Preferences::Init(PrefService* prefs) {
language_mozc_multiple_choice_prefs_[i].Init(
kMozcMultipleChoicePrefs[i].pref_name, prefs, this);
}
+ for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) {
+ language_mozc_integer_prefs_[i].Init(
+ kMozcIntegerPrefs[i].pref_name, prefs, this);
+ }
// Initialize touchpad settings to what's saved in user preferences.
NotifyPrefChanged(NULL);
@@ -240,6 +248,13 @@ void Preferences::NotifyPrefChanged(const std::wstring* pref_name) {
language_mozc_multiple_choice_prefs_[i].GetValue());
}
}
+ for (size_t i = 0; i < kNumMozcIntegerPrefs; ++i) {
+ if (!pref_name || *pref_name == kMozcIntegerPrefs[i].pref_name) {
+ SetLanguageConfigInteger(kMozcSectionName,
+ kMozcIntegerPrefs[i].ibus_config_name,
+ language_mozc_integer_prefs_[i].GetValue());
+ }
+ }
}
void Preferences::SetTimeZone(const std::wstring& id) {
diff --git a/chrome/browser/chromeos/preferences.h b/chrome/browser/chromeos/preferences.h
index ed5e7f6..1d02b34 100644
--- a/chrome/browser/chromeos/preferences.h
+++ b/chrome/browser/chromeos/preferences.h
@@ -99,6 +99,7 @@ class Preferences : public NotificationObserver {
BooleanPrefMember language_mozc_boolean_prefs_[kNumMozcBooleanPrefs];
StringPrefMember language_mozc_multiple_choice_prefs_[
kNumMozcMultipleChoicePrefs];
+ IntegerPrefMember language_mozc_integer_prefs_[kNumMozcIntegerPrefs];
DISALLOW_COPY_AND_ASSIGN(Preferences);
};
diff --git a/chrome/browser/sync/glue/synchronized_preferences.h b/chrome/browser/sync/glue/synchronized_preferences.h
index 38168cf..1da42a7 100644
--- a/chrome/browser/sync/glue/synchronized_preferences.h
+++ b/chrome/browser/sync/glue/synchronized_preferences.h
@@ -132,6 +132,7 @@ static const wchar_t* kSynchronizedPreferences[] = {
// prefs::kLanguageMozcUseNumberConversion,
// prefs::kLanguageMozcUseHistorySuggest,
// prefs::kLanguageMozcUseDictionarySuggest,
+ // prefs::kLanguageMozcSuggestionsSize
//
// We don't sync the following IME prefs since they are not user-configurable
// (yet):
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
index f3a8e2b..c4d78d9 100644
--- a/chrome/common/pref_names.cc
+++ b/chrome/common/pref_names.cc
@@ -321,6 +321,8 @@ const wchar_t kLanguageMozcUseHistorySuggest[] =
L"settings.language.mozc_use_history_suggest";
const wchar_t kLanguageMozcUseDictionarySuggest[] =
L"settings.language.mozc_use_dictionary_suggest";
+const wchar_t kLanguageMozcSuggestionsSize[] =
+ L"settings.language.mozc_suggestions_size";
// A boolean pref which determines whether accessibility is enabled.
const wchar_t kAccessibilityEnabled[] = L"settings.accessibility";
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
index 6441e9d..ca9ff0a 100644
--- a/chrome/common/pref_names.h
+++ b/chrome/common/pref_names.h
@@ -123,6 +123,7 @@ extern const wchar_t kLanguageMozcUseSymbolConversion[];
extern const wchar_t kLanguageMozcUseNumberConversion[];
extern const wchar_t kLanguageMozcUseHistorySuggest[];
extern const wchar_t kLanguageMozcUseDictionarySuggest[];
+extern const wchar_t kLanguageMozcSuggestionsSize[];
extern const wchar_t kAccessibilityEnabled[];
#endif
extern const wchar_t kIpcDisabledMessages[];