OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/settings_contents_view.h" | 5 #include "chrome/browser/chromeos/settings_contents_view.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "app/combobox_model.h" | 10 #include "app/combobox_model.h" |
11 #include "app/l10n_util.h" | 11 #include "app/l10n_util.h" |
12 #include "app/resource_bundle.h" | 12 #include "app/resource_bundle.h" |
13 #include "base/basictypes.h" | 13 #include "base/basictypes.h" |
14 #include "base/string_util.h" | 14 #include "base/string_util.h" |
15 #include "chrome/common/pref_member.h" | 15 #include "chrome/common/pref_member.h" |
16 #include "chrome/common/pref_names.h" | 16 #include "chrome/common/pref_names.h" |
17 #include "grit/chromium_strings.h" | 17 #include "grit/chromium_strings.h" |
18 #include "grit/generated_resources.h" | 18 #include "grit/generated_resources.h" |
19 #include "grit/locale_settings.h" | 19 #include "grit/locale_settings.h" |
20 #include "views/background.h" | 20 #include "views/background.h" |
21 #include "views/controls/button/checkbox.h" | 21 #include "views/controls/button/checkbox.h" |
22 #include "views/controls/combobox/combobox.h" | 22 #include "views/controls/combobox/combobox.h" |
| 23 #include "views/controls/slider/slider.h" |
23 #include "views/controls/textfield/textfield.h" | 24 #include "views/controls/textfield/textfield.h" |
24 #include "views/grid_layout.h" | 25 #include "views/grid_layout.h" |
25 #include "views/standard_layout.h" | 26 #include "views/standard_layout.h" |
26 #include "views/window/dialog_delegate.h" | 27 #include "views/window/dialog_delegate.h" |
27 #include "views/window/window.h" | 28 #include "views/window/window.h" |
28 | 29 |
29 using views::GridLayout; | 30 using views::GridLayout; |
30 using views::ColumnSet; | 31 using views::ColumnSet; |
31 | 32 |
32 namespace { | 33 namespace { |
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
347 | 348 |
348 layout->StartRow(0, single_column_view_set_id); | 349 layout->StartRow(0, single_column_view_set_id); |
349 layout->AddView(wifi_ssid_combobox_); | 350 layout->AddView(wifi_ssid_combobox_); |
350 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 351 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
351 } | 352 } |
352 | 353 |
353 //////////////////////////////////////////////////////////////////////////////// | 354 //////////////////////////////////////////////////////////////////////////////// |
354 // TouchpadSection | 355 // TouchpadSection |
355 | 356 |
356 class TouchpadSection : public OptionsPageView, | 357 class TouchpadSection : public OptionsPageView, |
357 public views::ButtonListener { | 358 public views::ButtonListener, |
| 359 public views::SliderListener { |
358 public: | 360 public: |
359 explicit TouchpadSection(Profile* profile); | 361 explicit TouchpadSection(Profile* profile); |
360 virtual ~TouchpadSection() {} | 362 virtual ~TouchpadSection() {} |
361 | 363 |
362 // Overridden from views::ButtonListener: | 364 // Overridden from views::ButtonListener: |
363 virtual void ButtonPressed(views::Button* sender, const views::Event& event); | 365 virtual void ButtonPressed(views::Button* sender, const views::Event& event); |
364 | 366 |
| 367 // Overridden from views::SliderListener: |
| 368 virtual void SliderValueChanged(views::Slider* sender); |
| 369 |
365 protected: | 370 protected: |
366 // OptionsPageView overrides: | 371 // OptionsPageView overrides: |
367 virtual void InitControlLayout(); | 372 virtual void InitControlLayout(); |
368 virtual void InitContents(); | 373 virtual void InitContents(); |
369 virtual void NotifyPrefChanged(const std::wstring* pref_name); | 374 virtual void NotifyPrefChanged(const std::wstring* pref_name); |
370 | 375 |
371 private: | 376 private: |
372 // The View that contains the contents of the section. | 377 // The View that contains the contents of the section. |
373 views::View* contents_; | 378 views::View* contents_; |
374 | 379 |
375 // Controls for this section: | 380 // Controls for this section: |
376 views::Checkbox* enable_tap_to_click_checkbox_; | 381 views::Checkbox* enable_tap_to_click_checkbox_; |
377 views::Checkbox* enable_vert_edge_scroll_checkbox_; | 382 views::Checkbox* enable_vert_edge_scroll_checkbox_; |
| 383 views::Slider* speed_factor_slider_; |
378 | 384 |
379 // Preferences for this section: | 385 // Preferences for this section: |
380 BooleanPrefMember tap_to_click_enabled_; | 386 BooleanPrefMember tap_to_click_enabled_; |
381 BooleanPrefMember vert_edge_scroll_enabled_; | 387 BooleanPrefMember vert_edge_scroll_enabled_; |
| 388 RealPrefMember speed_factor_; |
382 | 389 |
383 DISALLOW_COPY_AND_ASSIGN(TouchpadSection); | 390 DISALLOW_COPY_AND_ASSIGN(TouchpadSection); |
384 }; | 391 }; |
385 | 392 |
386 TouchpadSection::TouchpadSection(Profile* profile) | 393 TouchpadSection::TouchpadSection(Profile* profile) |
387 : OptionsPageView(profile), | 394 : OptionsPageView(profile), |
388 contents_(NULL), | 395 contents_(NULL), |
389 enable_tap_to_click_checkbox_(NULL), | 396 enable_tap_to_click_checkbox_(NULL), |
390 enable_vert_edge_scroll_checkbox_(NULL) { | 397 enable_vert_edge_scroll_checkbox_(NULL), |
| 398 speed_factor_slider_(NULL) { |
391 } | 399 } |
392 | 400 |
393 void TouchpadSection::ButtonPressed( | 401 void TouchpadSection::ButtonPressed( |
394 views::Button* sender, const views::Event& event) { | 402 views::Button* sender, const views::Event& event) { |
395 if (sender == enable_tap_to_click_checkbox_) { | 403 if (sender == enable_tap_to_click_checkbox_) { |
396 bool enabled = enable_tap_to_click_checkbox_->checked(); | 404 bool enabled = enable_tap_to_click_checkbox_->checked(); |
397 UserMetricsRecordAction(enabled ? | 405 UserMetricsRecordAction(enabled ? |
398 L"Options_TapToClickCheckbox_Enable" : | 406 L"Options_TapToClickCheckbox_Enable" : |
399 L"Options_TapToClickCheckbox_Disable", | 407 L"Options_TapToClickCheckbox_Disable", |
400 profile()->GetPrefs()); | 408 profile()->GetPrefs()); |
401 tap_to_click_enabled_.SetValue(enabled); | 409 tap_to_click_enabled_.SetValue(enabled); |
402 } else if (sender == enable_vert_edge_scroll_checkbox_) { | 410 } else if (sender == enable_vert_edge_scroll_checkbox_) { |
403 bool enabled = enable_vert_edge_scroll_checkbox_->checked(); | 411 bool enabled = enable_vert_edge_scroll_checkbox_->checked(); |
404 UserMetricsRecordAction(enabled ? | 412 UserMetricsRecordAction(enabled ? |
405 L"Options_VertEdgeScrollCheckbox_Enable" : | 413 L"Options_VertEdgeScrollCheckbox_Enable" : |
406 L"Options_VertEdgeScrollCheckbox_Disable", | 414 L"Options_VertEdgeScrollCheckbox_Disable", |
407 profile()->GetPrefs()); | 415 profile()->GetPrefs()); |
408 vert_edge_scroll_enabled_.SetValue(enabled); | 416 vert_edge_scroll_enabled_.SetValue(enabled); |
409 } | 417 } |
410 } | 418 } |
411 | 419 |
| 420 void TouchpadSection::SliderValueChanged(views::Slider* sender) { |
| 421 if (sender == speed_factor_slider_) { |
| 422 double value = speed_factor_slider_->value(); |
| 423 UserMetricsRecordAction(L"Options_SpeedFactorSlider_Changed", |
| 424 profile()->GetPrefs()); |
| 425 speed_factor_.SetValue(value); |
| 426 } |
| 427 } |
| 428 |
412 void TouchpadSection::InitControlLayout() { | 429 void TouchpadSection::InitControlLayout() { |
413 GridLayout* layout = new GridLayout(this); | 430 GridLayout* layout = new GridLayout(this); |
414 SetLayoutManager(layout); | 431 SetLayoutManager(layout); |
415 | 432 |
416 int single_column_layout_id = 0; | 433 int single_column_layout_id = 0; |
417 ColumnSet* column_set = layout->AddColumnSet(single_column_layout_id); | 434 ColumnSet* column_set = layout->AddColumnSet(single_column_layout_id); |
418 column_set->AddColumn(GridLayout::LEADING, GridLayout::LEADING, 0, | 435 column_set->AddColumn(GridLayout::LEADING, GridLayout::LEADING, 0, |
419 GridLayout::USE_PREF, 0, 0); | 436 GridLayout::USE_PREF, 0, 0); |
420 int inset_column_layout_id = 1; | 437 int inset_column_layout_id = 1; |
421 column_set = layout->AddColumnSet(inset_column_layout_id); | 438 column_set = layout->AddColumnSet(inset_column_layout_id); |
(...skipping 21 matching lines...) Expand all Loading... |
443 contents_->SetLayoutManager(layout); | 460 contents_->SetLayoutManager(layout); |
444 | 461 |
445 enable_tap_to_click_checkbox_ = new views::Checkbox(l10n_util::GetString( | 462 enable_tap_to_click_checkbox_ = new views::Checkbox(l10n_util::GetString( |
446 IDS_OPTIONS_SETTINGS_TAP_TO_CLICK_ENABLED_DESCRIPTION)); | 463 IDS_OPTIONS_SETTINGS_TAP_TO_CLICK_ENABLED_DESCRIPTION)); |
447 enable_tap_to_click_checkbox_->set_listener(this); | 464 enable_tap_to_click_checkbox_->set_listener(this); |
448 enable_tap_to_click_checkbox_->SetMultiLine(true); | 465 enable_tap_to_click_checkbox_->SetMultiLine(true); |
449 enable_vert_edge_scroll_checkbox_ = new views::Checkbox(l10n_util::GetString( | 466 enable_vert_edge_scroll_checkbox_ = new views::Checkbox(l10n_util::GetString( |
450 IDS_OPTIONS_SETTINGS_VERT_EDGE_SCROLL_ENABLED_DESCRIPTION)); | 467 IDS_OPTIONS_SETTINGS_VERT_EDGE_SCROLL_ENABLED_DESCRIPTION)); |
451 enable_vert_edge_scroll_checkbox_->set_listener(this); | 468 enable_vert_edge_scroll_checkbox_->set_listener(this); |
452 enable_vert_edge_scroll_checkbox_->SetMultiLine(true); | 469 enable_vert_edge_scroll_checkbox_->SetMultiLine(true); |
| 470 // Create speed factor slider with values between 0.1 and 1.0 step 0.1 |
| 471 speed_factor_slider_ = new views::Slider(0.1, 1.0, 0.1, |
| 472 static_cast<views::Slider::StyleFlags>( |
| 473 views::Slider::STYLE_DRAW_VALUE | |
| 474 views::Slider::STYLE_ONE_DIGIT | |
| 475 views::Slider::STYLE_UPDATE_ON_RELEASE), |
| 476 this); |
453 | 477 |
454 int single_column_view_set_id = 0; | 478 int single_column_view_set_id = 0; |
455 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id); | 479 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id); |
456 column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1, | 480 column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1, |
457 GridLayout::USE_PREF, 0, 0); | 481 GridLayout::USE_PREF, 0, 0); |
458 | 482 |
| 483 int double_column_view_set_id = 1; |
| 484 column_set = layout->AddColumnSet(double_column_view_set_id); |
| 485 column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0, |
| 486 GridLayout::USE_PREF, 0, 0); |
| 487 column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing); |
| 488 column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 1, |
| 489 GridLayout::USE_PREF, 0, 0); |
| 490 |
| 491 layout->StartRow(0, double_column_view_set_id); |
| 492 layout->AddView(new views::Label( |
| 493 l10n_util::GetString(IDS_OPTIONS_SETTINGS_SPEED_FACTOR_DESCRIPTION))); |
| 494 layout->AddView(speed_factor_slider_); |
| 495 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
459 layout->StartRow(0, single_column_view_set_id); | 496 layout->StartRow(0, single_column_view_set_id); |
460 layout->AddView(enable_tap_to_click_checkbox_); | 497 layout->AddView(enable_tap_to_click_checkbox_); |
461 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 498 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
462 layout->StartRow(0, single_column_view_set_id); | 499 layout->StartRow(0, single_column_view_set_id); |
463 layout->AddView(enable_vert_edge_scroll_checkbox_); | 500 layout->AddView(enable_vert_edge_scroll_checkbox_); |
464 layout->AddPaddingRow(0, kUnrelatedControlVerticalSpacing); | 501 layout->AddPaddingRow(0, kUnrelatedControlVerticalSpacing); |
465 | 502 |
466 // Init member prefs so we can update the controls if prefs change. | 503 // Init member prefs so we can update the controls if prefs change. |
467 tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, | 504 tap_to_click_enabled_.Init(prefs::kTapToClickEnabled, |
468 profile()->GetPrefs(), this); | 505 profile()->GetPrefs(), this); |
469 vert_edge_scroll_enabled_.Init(prefs::kVertEdgeScrollEnabled, | 506 vert_edge_scroll_enabled_.Init(prefs::kVertEdgeScrollEnabled, |
470 profile()->GetPrefs(), this); | 507 profile()->GetPrefs(), this); |
| 508 speed_factor_.Init(prefs::kTouchpadSpeedFactor, |
| 509 profile()->GetPrefs(), this); |
471 } | 510 } |
472 | 511 |
473 void TouchpadSection::NotifyPrefChanged(const std::wstring* pref_name) { | 512 void TouchpadSection::NotifyPrefChanged(const std::wstring* pref_name) { |
474 if (!pref_name || *pref_name == prefs::kTapToClickEnabled) { | 513 if (!pref_name || *pref_name == prefs::kTapToClickEnabled) { |
475 bool enabled = tap_to_click_enabled_.GetValue(); | 514 bool enabled = tap_to_click_enabled_.GetValue(); |
476 enable_tap_to_click_checkbox_->SetChecked(enabled); | 515 enable_tap_to_click_checkbox_->SetChecked(enabled); |
477 } | 516 } |
478 if (!pref_name || *pref_name == prefs::kVertEdgeScrollEnabled) { | 517 if (!pref_name || *pref_name == prefs::kVertEdgeScrollEnabled) { |
479 bool enabled = vert_edge_scroll_enabled_.GetValue(); | 518 bool enabled = vert_edge_scroll_enabled_.GetValue(); |
480 enable_vert_edge_scroll_checkbox_->SetChecked(enabled); | 519 enable_vert_edge_scroll_checkbox_->SetChecked(enabled); |
481 } | 520 } |
| 521 if (!pref_name || *pref_name == prefs::kTouchpadSpeedFactor) { |
| 522 double value = speed_factor_.GetValue(); |
| 523 speed_factor_slider_->SetValue(value); |
| 524 } |
482 } | 525 } |
483 | 526 |
484 } // namespace | 527 } // namespace |
485 | 528 |
486 //////////////////////////////////////////////////////////////////////////////// | 529 //////////////////////////////////////////////////////////////////////////////// |
487 // SettingsContentsView | 530 // SettingsContentsView |
488 | 531 |
489 //////////////////////////////////////////////////////////////////////////////// | 532 //////////////////////////////////////////////////////////////////////////////// |
490 // SettingsContentsView, OptionsPageView implementation: | 533 // SettingsContentsView, OptionsPageView implementation: |
491 | 534 |
492 void SettingsContentsView::InitControlLayout() { | 535 void SettingsContentsView::InitControlLayout() { |
493 GridLayout* layout = CreatePanelGridLayout(this); | 536 GridLayout* layout = CreatePanelGridLayout(this); |
494 SetLayoutManager(layout); | 537 SetLayoutManager(layout); |
495 | 538 |
496 int single_column_view_set_id = 0; | 539 int single_column_view_set_id = 0; |
497 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id); | 540 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id); |
498 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, | 541 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, |
499 GridLayout::USE_PREF, 0, 0); | 542 GridLayout::USE_PREF, 0, 0); |
500 | 543 |
501 layout->StartRow(0, single_column_view_set_id); | 544 layout->StartRow(0, single_column_view_set_id); |
502 layout->AddView(new NetworkSection(profile())); | 545 layout->AddView(new NetworkSection(profile())); |
503 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 546 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
504 layout->StartRow(0, single_column_view_set_id); | 547 layout->StartRow(0, single_column_view_set_id); |
505 layout->AddView(new TouchpadSection(profile())); | 548 layout->AddView(new TouchpadSection(profile())); |
506 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 549 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
507 } | 550 } |
OLD | NEW |