OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/gtk/location_bar_view_gtk.h" | 5 #include "chrome/browser/gtk/location_bar_view_gtk.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "app/gtk_dnd_util.h" | 9 #include "app/gtk_dnd_util.h" |
10 #include "app/l10n_util.h" | 10 #include "app/l10n_util.h" |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 // Colors used to draw the Tab to Search rounded bubble. | 87 // Colors used to draw the Tab to Search rounded bubble. |
88 const GdkColor kKeywordBackgroundColor = GDK_COLOR_RGB(0xf0, 0xf4, 0xfa); | 88 const GdkColor kKeywordBackgroundColor = GDK_COLOR_RGB(0xf0, 0xf4, 0xfa); |
89 const GdkColor kKeywordBorderColor = GDK_COLOR_RGB(0xcb, 0xde, 0xf7); | 89 const GdkColor kKeywordBorderColor = GDK_COLOR_RGB(0xcb, 0xde, 0xf7); |
90 | 90 |
91 // Use weak gray for showing search and keyword hint text. | 91 // Use weak gray for showing search and keyword hint text. |
92 const GdkColor kHintTextColor = GDK_COLOR_RGB(0x75, 0x75, 0x75); | 92 const GdkColor kHintTextColor = GDK_COLOR_RGB(0x75, 0x75, 0x75); |
93 | 93 |
94 // Size of the rounding of the "Search site for:" box. | 94 // Size of the rounding of the "Search site for:" box. |
95 const int kCornerSize = 3; | 95 const int kCornerSize = 3; |
96 | 96 |
97 // Returns the short name for a keyword. | |
98 std::wstring GetKeywordName(Profile* profile, | |
99 const std::wstring& keyword) { | |
100 // Make sure the TemplateURL still exists. | |
101 // TODO(sky): Once LocationBarView adds a listener to the TemplateURLModel | |
102 // to track changes to the model, this should become a DCHECK. | |
103 const TemplateURL* template_url = | |
104 profile->GetTemplateURLModel()->GetTemplateURLForKeyword(keyword); | |
105 if (template_url) | |
106 return template_url->AdjustedShortNameForLocaleDirection(); | |
107 return std::wstring(); | |
108 } | |
109 | |
110 // If widget is visible, increment the int pointed to by count. | 97 // If widget is visible, increment the int pointed to by count. |
111 // Suitible for use with gtk_container_foreach. | 98 // Suitible for use with gtk_container_foreach. |
112 void CountVisibleWidgets(GtkWidget* widget, gpointer count) { | 99 void CountVisibleWidgets(GtkWidget* widget, gpointer count) { |
113 if (GTK_WIDGET_VISIBLE(widget)) | 100 if (GTK_WIDGET_VISIBLE(widget)) |
114 *static_cast<int*>(count) += 1; | 101 *static_cast<int*>(count) += 1; |
115 } | 102 } |
116 | 103 |
117 // Build a short string to use in keyword-search when the field isn't | 104 // Build a short string to use in keyword-search when the field isn't |
118 // very big. | 105 // very big. |
119 // TODO(suzhe): Copied from views/location_bar_view.cc. Try to share. | 106 // TODO(suzhe): Copied from views/location_bar_view.cc. Try to share. |
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
898 } | 885 } |
899 | 886 |
900 void LocationBarViewGtk::SetKeywordLabel(const std::wstring& keyword) { | 887 void LocationBarViewGtk::SetKeywordLabel(const std::wstring& keyword) { |
901 if (keyword.empty()) | 888 if (keyword.empty()) |
902 return; | 889 return; |
903 | 890 |
904 DCHECK(profile_); | 891 DCHECK(profile_); |
905 if (!profile_->GetTemplateURLModel()) | 892 if (!profile_->GetTemplateURLModel()) |
906 return; | 893 return; |
907 | 894 |
908 const std::wstring short_name = GetKeywordName(profile_, keyword); | 895 bool is_extension_keyword; |
909 std::wstring full_name(l10n_util::GetStringF( | 896 const std::wstring short_name = profile_->GetTemplateURLModel()-> |
910 IDS_OMNIBOX_KEYWORD_TEXT, short_name)); | 897 GetKeywordShortName(keyword, &is_extension_keyword); |
| 898 int message_id = is_extension_keyword ? |
| 899 IDS_OMNIBOX_EXTENSION_KEYWORD_TEXT : IDS_OMNIBOX_KEYWORD_TEXT; |
| 900 std::wstring full_name(l10n_util::GetStringF(message_id, short_name)); |
911 std::wstring partial_name(l10n_util::GetStringF( | 901 std::wstring partial_name(l10n_util::GetStringF( |
912 IDS_OMNIBOX_KEYWORD_TEXT, CalculateMinString(short_name))); | 902 message_id, CalculateMinString(short_name))); |
913 gtk_label_set_text(GTK_LABEL(tab_to_search_full_label_), | 903 gtk_label_set_text(GTK_LABEL(tab_to_search_full_label_), |
914 WideToUTF8(full_name).c_str()); | 904 WideToUTF8(full_name).c_str()); |
915 gtk_label_set_text(GTK_LABEL(tab_to_search_partial_label_), | 905 gtk_label_set_text(GTK_LABEL(tab_to_search_partial_label_), |
916 WideToUTF8(partial_name).c_str()); | 906 WideToUTF8(partial_name).c_str()); |
917 } | 907 } |
918 | 908 |
919 void LocationBarViewGtk::SetKeywordHintLabel(const std::wstring& keyword) { | 909 void LocationBarViewGtk::SetKeywordHintLabel(const std::wstring& keyword) { |
920 if (keyword.empty()) | 910 if (keyword.empty()) |
921 return; | 911 return; |
922 | 912 |
923 DCHECK(profile_); | 913 DCHECK(profile_); |
924 if (!profile_->GetTemplateURLModel()) | 914 if (!profile_->GetTemplateURLModel()) |
925 return; | 915 return; |
926 | 916 |
| 917 bool is_extension_keyword; |
| 918 const std::wstring short_name = profile_->GetTemplateURLModel()-> |
| 919 GetKeywordShortName(keyword, &is_extension_keyword); |
| 920 int message_id = is_extension_keyword ? |
| 921 IDS_OMNIBOX_EXTENSION_KEYWORD_HINT : IDS_OMNIBOX_KEYWORD_HINT; |
927 std::vector<size_t> content_param_offsets; | 922 std::vector<size_t> content_param_offsets; |
928 const std::wstring keyword_hint(l10n_util::GetStringF( | 923 const std::wstring keyword_hint(l10n_util::GetStringF( |
929 IDS_OMNIBOX_KEYWORD_HINT, std::wstring(), | 924 message_id, std::wstring(), short_name, &content_param_offsets)); |
930 GetKeywordName(profile_, keyword), &content_param_offsets)); | |
931 | 925 |
932 if (content_param_offsets.size() != 2) { | 926 if (content_param_offsets.size() != 2) { |
933 // See comments on an identical NOTREACHED() in search_provider.cc. | 927 // See comments on an identical NOTREACHED() in search_provider.cc. |
934 NOTREACHED(); | 928 NOTREACHED(); |
935 return; | 929 return; |
936 } | 930 } |
937 | 931 |
938 std::string leading(WideToUTF8( | 932 std::string leading(WideToUTF8( |
939 keyword_hint.substr(0, content_param_offsets.front()))); | 933 keyword_hint.substr(0, content_param_offsets.front()))); |
940 std::string trailing(WideToUTF8( | 934 std::string trailing(WideToUTF8( |
(...skipping 496 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1437 | 1431 |
1438 std::string badge_text = page_action_->GetBadgeText(tab_id); | 1432 std::string badge_text = page_action_->GetBadgeText(tab_id); |
1439 if (badge_text.empty()) | 1433 if (badge_text.empty()) |
1440 return FALSE; | 1434 return FALSE; |
1441 | 1435 |
1442 gfx::CanvasPaint canvas(event, false); | 1436 gfx::CanvasPaint canvas(event, false); |
1443 gfx::Rect bounding_rect(widget->allocation); | 1437 gfx::Rect bounding_rect(widget->allocation); |
1444 page_action_->PaintBadge(&canvas, bounding_rect, tab_id); | 1438 page_action_->PaintBadge(&canvas, bounding_rect, tab_id); |
1445 return FALSE; | 1439 return FALSE; |
1446 } | 1440 } |
OLD | NEW |