| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 #include <windows.h> | 4 #include <windows.h> |
| 5 #include <shlobj.h> | 5 #include <shlobj.h> |
| 6 #include <vsstyle.h> | 6 #include <vsstyle.h> |
| 7 #include <vssym32.h> | 7 #include <vssym32.h> |
| 8 | 8 |
| 9 #include "chrome/browser/views/options/languages_page_view.h" | 9 #include "chrome/browser/views/options/languages_page_view.h" |
| 10 | 10 |
| (...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 | 316 |
| 317 // Set Language List. | 317 // Set Language List. |
| 318 void SetAcceptLanguagesString(const std::wstring& language_list); | 318 void SetAcceptLanguagesString(const std::wstring& language_list); |
| 319 | 319 |
| 320 // Add at the end. | 320 // Add at the end. |
| 321 void Add(const std::wstring& language); | 321 void Add(const std::wstring& language); |
| 322 | 322 |
| 323 // Removes the entry at the specified index. | 323 // Removes the entry at the specified index. |
| 324 void Remove(int index); | 324 void Remove(int index); |
| 325 | 325 |
| 326 // Returns index corresponding to a given language. Returns -1 if the |
| 327 // language is not found. |
| 328 int GetIndex(const std::wstring& language); |
| 329 |
| 326 // Move down the entry at the specified index. | 330 // Move down the entry at the specified index. |
| 327 void MoveDown(int index); | 331 void MoveDown(int index); |
| 328 | 332 |
| 329 // Move up the entry at the specified index. | 333 // Move up the entry at the specified index. |
| 330 void MoveUp(int index); | 334 void MoveUp(int index); |
| 331 | 335 |
| 332 // Returns the set of languagess this model contains. | 336 // Returns the set of languagess this model contains. |
| 333 std::wstring GetLanguageList() { return VectorToList(languages_); } | 337 std::wstring GetLanguageList() { return VectorToList(languages_); } |
| 334 | 338 |
| 335 // views::TableModel overrides: | 339 // views::TableModel overrides: |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 observer_->OnItemsAdded(RowCount() - 1, 1); | 395 observer_->OnItemsAdded(RowCount() - 1, 1); |
| 392 } | 396 } |
| 393 | 397 |
| 394 void LanguageOrderTableModel::Remove(int index) { | 398 void LanguageOrderTableModel::Remove(int index) { |
| 395 DCHECK(index >= 0 && index < RowCount()); | 399 DCHECK(index >= 0 && index < RowCount()); |
| 396 languages_.erase(languages_.begin() + index); | 400 languages_.erase(languages_.begin() + index); |
| 397 if (observer_) | 401 if (observer_) |
| 398 observer_->OnItemsRemoved(index, 1); | 402 observer_->OnItemsRemoved(index, 1); |
| 399 } | 403 } |
| 400 | 404 |
| 405 int LanguageOrderTableModel::GetIndex(const std::wstring& language) { |
| 406 if (language.empty()) |
| 407 return -1; |
| 408 |
| 409 int index = 0; |
| 410 for (std::vector<std::wstring>::const_iterator cit = languages_.begin(); |
| 411 cit != languages_.end(); ++cit) { |
| 412 if (*cit == language) |
| 413 return index; |
| 414 |
| 415 index++; |
| 416 } |
| 417 |
| 418 return -1; |
| 419 } |
| 420 |
| 401 void LanguageOrderTableModel::MoveDown(int index) { | 421 void LanguageOrderTableModel::MoveDown(int index) { |
| 402 if (index < 0 || index >= RowCount() - 1) | 422 if (index < 0 || index >= RowCount() - 1) |
| 403 return; | 423 return; |
| 404 std::wstring item = languages_.at(index); | 424 std::wstring item = languages_.at(index); |
| 405 languages_.erase(languages_.begin() + index); | 425 languages_.erase(languages_.begin() + index); |
| 406 if (index == RowCount() - 1) | 426 if (index == RowCount() - 1) |
| 407 languages_.push_back(item); | 427 languages_.push_back(item); |
| 408 else | 428 else |
| 409 languages_.insert(languages_.begin() + index + 1, item); | 429 languages_.insert(languages_.begin() + index + 1, item); |
| 410 if (observer_) | 430 if (observer_) |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 723 if (new_index == starting_ui_language_index_) | 743 if (new_index == starting_ui_language_index_) |
| 724 ui_language_index_selected_ = -1; | 744 ui_language_index_selected_ = -1; |
| 725 else | 745 else |
| 726 ui_language_index_selected_ = new_index; | 746 ui_language_index_selected_ = new_index; |
| 727 | 747 |
| 728 if (!language_warning_shown_) { | 748 if (!language_warning_shown_) { |
| 729 RestartMessageBox::ShowMessageBox(GetRootWindow()); | 749 RestartMessageBox::ShowMessageBox(GetRootWindow()); |
| 730 language_warning_shown_ = true; | 750 language_warning_shown_ = true; |
| 731 } | 751 } |
| 732 } else if (sender == change_dictionary_language_combobox_) { | 752 } else if (sender == change_dictionary_language_combobox_) { |
| 753 // Set the spellcheck language selected. |
| 733 spellcheck_language_index_selected_ = new_index; | 754 spellcheck_language_index_selected_ = new_index; |
| 734 OnAddLanguage(dictionary_language_model_->GetLocaleFromIndex(new_index)); | 755 |
| 735 language_table_edited_ = true; | 756 // Remove the previously added spell check language to the accept list. |
| 757 if (!spellcheck_language_added_.empty()) { |
| 758 int old_index = language_order_table_model_->GetIndex( |
| 759 spellcheck_language_added_); |
| 760 if (old_index > -1) |
| 761 language_order_table_model_->Remove(old_index); |
| 762 } |
| 763 |
| 764 // Add this new spell check language only if it is not already in the |
| 765 // accept language list. |
| 766 std::wstring language = |
| 767 dictionary_language_model_->GetLocaleFromIndex(new_index); |
| 768 int index = language_order_table_model_->GetIndex(language); |
| 769 if (index == -1) { |
| 770 // Add the new language. |
| 771 OnAddLanguage(language); |
| 772 language_table_edited_ = true; |
| 773 spellcheck_language_added_ = language; |
| 774 } else { |
| 775 spellcheck_language_added_ = L""; |
| 776 } |
| 736 } | 777 } |
| 737 } | 778 } |
| 738 | 779 |
| 739 void LanguagesPageView::OnSelectionChanged() { | 780 void LanguagesPageView::OnSelectionChanged() { |
| 740 move_up_button_->SetEnabled(language_order_table_->FirstSelectedRow() > 0 && | 781 move_up_button_->SetEnabled(language_order_table_->FirstSelectedRow() > 0 && |
| 741 language_order_table_->SelectedRowCount() == 1); | 782 language_order_table_->SelectedRowCount() == 1); |
| 742 move_down_button_->SetEnabled(language_order_table_->FirstSelectedRow() < | 783 move_down_button_->SetEnabled(language_order_table_->FirstSelectedRow() < |
| 743 language_order_table_->RowCount() - 1 && | 784 language_order_table_->RowCount() - 1 && |
| 744 language_order_table_->SelectedRowCount() == | 785 language_order_table_->SelectedRowCount() == |
| 745 1); | 786 1); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 793 GetLocaleFromIndex(ui_language_index_selected_)); | 834 GetLocaleFromIndex(ui_language_index_selected_)); |
| 794 } | 835 } |
| 795 | 836 |
| 796 if (spellcheck_language_index_selected_ != -1) { | 837 if (spellcheck_language_index_selected_ != -1) { |
| 797 UserMetricsRecordAction(L"Options_DictionaryLanguage", | 838 UserMetricsRecordAction(L"Options_DictionaryLanguage", |
| 798 profile()->GetPrefs()); | 839 profile()->GetPrefs()); |
| 799 dictionary_language_.SetValue(dictionary_language_model_-> | 840 dictionary_language_.SetValue(dictionary_language_model_-> |
| 800 GetLocaleFromIndex(spellcheck_language_index_selected_)); | 841 GetLocaleFromIndex(spellcheck_language_index_selected_)); |
| 801 } | 842 } |
| 802 } | 843 } |
| OLD | NEW |