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 #import "chrome/browser/cocoa/location_bar_view_mac.h" | 5 #import "chrome/browser/cocoa/location_bar_view_mac.h" |
6 | 6 |
7 #include "app/l10n_util_mac.h" | 7 #include "app/l10n_util_mac.h" |
8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
9 #include "base/i18n/rtl.h" | 9 #include "base/i18n/rtl.h" |
10 #include "base/nsimage_cache_mac.h" | 10 #include "base/nsimage_cache_mac.h" |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 ToolbarModel* toolbar_model, | 98 ToolbarModel* toolbar_model, |
99 Profile* profile, | 99 Profile* profile, |
100 Browser* browser) | 100 Browser* browser) |
101 : edit_view_(new AutocompleteEditViewMac(this, bubble_positioner, | 101 : edit_view_(new AutocompleteEditViewMac(this, bubble_positioner, |
102 toolbar_model, profile, command_updater, field)), | 102 toolbar_model, profile, command_updater, field)), |
103 command_updater_(command_updater), | 103 command_updater_(command_updater), |
104 field_(field), | 104 field_(field), |
105 disposition_(CURRENT_TAB), | 105 disposition_(CURRENT_TAB), |
106 location_icon_view_(this), | 106 location_icon_view_(this), |
107 security_label_view_(), | 107 security_label_view_(), |
| 108 star_icon_view_(command_updater), |
108 page_action_views_(this, profile, toolbar_model), | 109 page_action_views_(this, profile, toolbar_model), |
109 profile_(profile), | 110 profile_(profile), |
110 browser_(browser), | 111 browser_(browser), |
111 toolbar_model_(toolbar_model), | 112 toolbar_model_(toolbar_model), |
112 transition_(PageTransition::TYPED) { | 113 transition_(PageTransition::TYPED) { |
113 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { | 114 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { |
114 ContentSettingImageView* content_setting_view = | 115 ContentSettingImageView* content_setting_view = |
115 new ContentSettingImageView(static_cast<ContentSettingsType>(i), this, | 116 new ContentSettingImageView(static_cast<ContentSettingsType>(i), this, |
116 profile_); | 117 profile_); |
117 content_setting_views_.push_back(content_setting_view); | 118 content_setting_views_.push_back(content_setting_view); |
118 content_setting_view->SetVisible(false); | 119 content_setting_view->SetVisible(false); |
119 } | 120 } |
120 | 121 |
121 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; | 122 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; |
122 [cell setLocationIconView:&location_icon_view_]; | 123 [cell setLocationIconView:&location_icon_view_]; |
123 [cell setSecurityLabelView:&security_label_view_]; | 124 [cell setSecurityLabelView:&security_label_view_]; |
| 125 [cell setStarIconView:&star_icon_view_]; |
124 [cell setPageActionViewList:&page_action_views_]; | 126 [cell setPageActionViewList:&page_action_views_]; |
125 [cell setContentSettingViewsList:&content_setting_views_]; | 127 [cell setContentSettingViewsList:&content_setting_views_]; |
126 | 128 |
127 registrar_.Add(this, | 129 registrar_.Add(this, |
128 NotificationType::EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, | 130 NotificationType::EXTENSION_PAGE_ACTION_VISIBILITY_CHANGED, |
129 NotificationService::AllSources()); | 131 NotificationService::AllSources()); |
130 } | 132 } |
131 | 133 |
132 LocationBarViewMac::~LocationBarViewMac() { | 134 LocationBarViewMac::~LocationBarViewMac() { |
133 // Disconnect from cell in case it outlives us. | 135 // Disconnect from cell in case it outlives us. |
134 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; | 136 AutocompleteTextFieldCell* cell = [field_ autocompleteTextFieldCell]; |
135 [cell setPageActionViewList:NULL]; | 137 [cell setPageActionViewList:NULL]; |
136 [cell setLocationIconView:NULL]; | 138 [cell setLocationIconView:NULL]; |
137 [cell setSecurityLabelView:NULL]; | 139 [cell setSecurityLabelView:NULL]; |
| 140 [cell setStarIconView:NULL]; |
138 } | 141 } |
139 | 142 |
140 std::wstring LocationBarViewMac::GetInputString() const { | 143 std::wstring LocationBarViewMac::GetInputString() const { |
141 return location_input_; | 144 return location_input_; |
142 } | 145 } |
143 | 146 |
144 WindowOpenDisposition LocationBarViewMac::GetWindowOpenDisposition() const { | 147 WindowOpenDisposition LocationBarViewMac::GetWindowOpenDisposition() const { |
145 return disposition_; | 148 return disposition_; |
146 } | 149 } |
147 | 150 |
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
442 } | 445 } |
443 | 446 |
444 void LocationBarViewMac::TestPageActionPressed(size_t index) { | 447 void LocationBarViewMac::TestPageActionPressed(size_t index) { |
445 if (index >= page_action_views_.Count()) { | 448 if (index >= page_action_views_.Count()) { |
446 NOTREACHED(); | 449 NOTREACHED(); |
447 return; | 450 return; |
448 } | 451 } |
449 page_action_views_.OnMousePressed(NSZeroRect, index); | 452 page_action_views_.OnMousePressed(NSZeroRect, index); |
450 } | 453 } |
451 | 454 |
| 455 void LocationBarViewMac::SetStarred(bool starred) { |
| 456 star_icon_view_.SetStarred(starred); |
| 457 [field_ updateCursorAndToolTipRects]; |
| 458 [field_ resetFieldEditorFrameIfNeeded]; |
| 459 } |
| 460 |
452 NSImage* LocationBarViewMac::GetTabButtonImage() { | 461 NSImage* LocationBarViewMac::GetTabButtonImage() { |
453 if (!tab_button_image_) { | 462 if (!tab_button_image_) { |
454 SkBitmap* skiaBitmap = ResourceBundle::GetSharedInstance(). | 463 SkBitmap* skiaBitmap = ResourceBundle::GetSharedInstance(). |
455 GetBitmapNamed(IDR_LOCATION_BAR_KEYWORD_HINT_TAB); | 464 GetBitmapNamed(IDR_LOCATION_BAR_KEYWORD_HINT_TAB); |
456 if (skiaBitmap) { | 465 if (skiaBitmap) { |
457 tab_button_image_.reset([gfx::SkBitmapToNSImage(*skiaBitmap) retain]); | 466 tab_button_image_.reset([gfx::SkBitmapToNSImage(*skiaBitmap) retain]); |
458 } | 467 } |
459 } | 468 } |
460 return tab_button_image_; | 469 return tab_button_image_; |
461 } | 470 } |
462 | 471 |
463 void LocationBarViewMac::SetIcon(int resource_id) { | 472 void LocationBarViewMac::SetIcon(int resource_id) { |
464 DCHECK(resource_id != 0); | 473 DCHECK(resource_id != 0); |
465 | 474 |
466 // The icon is always visible except when there is a keyword hint. | 475 // The icon is always visible except when there is a keyword hint. |
467 if (!edit_view_->model()->keyword().empty() && | 476 if (!edit_view_->model()->keyword().empty() && |
468 !edit_view_->model()->is_keyword_hint()) { | 477 !edit_view_->model()->is_keyword_hint()) { |
469 location_icon_view_.SetVisible(false); | 478 location_icon_view_.SetVisible(false); |
470 } else { | 479 } else { |
471 location_icon_view_.SetImage( | 480 location_icon_view_.SetIcon(resource_id); |
472 ResourceBundle::GetSharedInstance().GetNSImageNamed(resource_id)); | |
473 location_icon_view_.SetVisible(true); | 481 location_icon_view_.SetVisible(true); |
474 SetSecurityLabel(); | 482 SetSecurityLabel(); |
475 } | 483 } |
476 [field_ resetFieldEditorFrameIfNeeded]; | 484 [field_ resetFieldEditorFrameIfNeeded]; |
477 } | 485 } |
478 | 486 |
479 void LocationBarViewMac::SetSecurityLabel() { | 487 void LocationBarViewMac::SetSecurityLabel() { |
480 std::wstring security_info_text(toolbar_model_->GetSecurityInfoText()); | 488 std::wstring security_info_text(toolbar_model_->GetSecurityInfoText()); |
481 if (security_info_text.empty()) { | 489 if (security_info_text.empty()) { |
482 security_label_view_.SetLabel(nil, nil, nil); | 490 security_label_view_.SetLabel(nil, nil, nil); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 toolbar_model_->input_in_progress() ? NULL : tab_contents); | 542 toolbar_model_->input_in_progress() ? NULL : tab_contents); |
535 } | 543 } |
536 } | 544 } |
537 | 545 |
538 // LocationBarImageView--------------------------------------------------------- | 546 // LocationBarImageView--------------------------------------------------------- |
539 | 547 |
540 void LocationBarViewMac::LocationBarImageView::SetImage(NSImage* image) { | 548 void LocationBarViewMac::LocationBarImageView::SetImage(NSImage* image) { |
541 image_.reset([image retain]); | 549 image_.reset([image retain]); |
542 } | 550 } |
543 | 551 |
544 void LocationBarViewMac::LocationBarImageView::SetImage(SkBitmap* image) { | 552 void LocationBarViewMac::LocationBarImageView::SetIcon(int resource_id) { |
545 SetImage(gfx::SkBitmapToNSImage(*image)); | 553 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 554 SetImage(rb.GetNSImageNamed(resource_id)); |
546 } | 555 } |
547 | 556 |
548 void LocationBarViewMac::LocationBarImageView::SetLabel(NSString* text, | 557 void LocationBarViewMac::LocationBarImageView::SetLabel(NSString* text, |
549 NSFont* baseFont, | 558 NSFont* baseFont, |
550 NSColor* color) { | 559 NSColor* color) { |
551 // Create an attributed string for the label, if a label was given. | 560 // Create an attributed string for the label, if a label was given. |
552 label_.reset(); | 561 label_.reset(); |
553 if (text) { | 562 if (text) { |
554 DCHECK(color); | 563 DCHECK(color); |
555 DCHECK(baseFont); | 564 DCHECK(baseFont); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 void LocationBarViewMac::LocationIconView::OnMousePressed(NSRect bounds) { | 602 void LocationBarViewMac::LocationIconView::OnMousePressed(NSRect bounds) { |
594 TabContents* tab = owner_->GetTabContents(); | 603 TabContents* tab = owner_->GetTabContents(); |
595 NavigationEntry* nav_entry = tab->controller().GetActiveEntry(); | 604 NavigationEntry* nav_entry = tab->controller().GetActiveEntry(); |
596 if (!nav_entry) { | 605 if (!nav_entry) { |
597 NOTREACHED(); | 606 NOTREACHED(); |
598 return; | 607 return; |
599 } | 608 } |
600 tab->ShowPageInfo(nav_entry->url(), nav_entry->ssl(), true); | 609 tab->ShowPageInfo(nav_entry->url(), nav_entry->ssl(), true); |
601 } | 610 } |
602 | 611 |
| 612 // StarIconView----------------------------------------------------------------- |
| 613 |
| 614 LocationBarViewMac::StarIconView::StarIconView(CommandUpdater* command_updater) |
| 615 : command_updater_(command_updater) { |
| 616 SetVisible(true); |
| 617 SetStarred(false); |
| 618 } |
| 619 |
| 620 void LocationBarViewMac::StarIconView::SetStarred(bool starred) { |
| 621 if (starred) { |
| 622 SetIcon(IDR_STARRED_NOBORDER_CENTER); |
| 623 tooltip_.reset( |
| 624 [l10n_util::GetNSStringWithFixup(IDS_TOOLTIP_STARRED) retain]); |
| 625 } else { |
| 626 SetIcon(IDR_STAR_NOBORDER_CENTER); |
| 627 tooltip_.reset( |
| 628 [l10n_util::GetNSStringWithFixup(IDS_TOOLTIP_STAR) retain]); |
| 629 } |
| 630 } |
| 631 |
| 632 void LocationBarViewMac::StarIconView::OnMousePressed(NSRect bounds) { |
| 633 command_updater_->ExecuteCommand(IDC_BOOKMARK_PAGE); |
| 634 } |
| 635 |
| 636 const NSString* LocationBarViewMac::StarIconView::GetToolTip() { |
| 637 return tooltip_.get(); |
| 638 } |
| 639 |
603 // PageActionImageView---------------------------------------------------------- | 640 // PageActionImageView---------------------------------------------------------- |
604 | 641 |
605 LocationBarViewMac::PageActionImageView::PageActionImageView( | 642 LocationBarViewMac::PageActionImageView::PageActionImageView( |
606 LocationBarViewMac* owner, | 643 LocationBarViewMac* owner, |
607 Profile* profile, | 644 Profile* profile, |
608 ExtensionAction* page_action) | 645 ExtensionAction* page_action) |
609 : owner_(owner), | 646 : owner_(owner), |
610 profile_(profile), | 647 profile_(profile), |
611 page_action_(page_action), | 648 page_action_(page_action), |
612 tracker_(this), | 649 tracker_(this), |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
846 } | 883 } |
847 | 884 |
848 const NSString* LocationBarViewMac::ContentSettingImageView::GetToolTip() { | 885 const NSString* LocationBarViewMac::ContentSettingImageView::GetToolTip() { |
849 return tooltip_.get(); | 886 return tooltip_.get(); |
850 } | 887 } |
851 | 888 |
852 void LocationBarViewMac::ContentSettingImageView::UpdateFromTabContents( | 889 void LocationBarViewMac::ContentSettingImageView::UpdateFromTabContents( |
853 const TabContents* tab_contents) { | 890 const TabContents* tab_contents) { |
854 content_setting_image_model_->UpdateFromTabContents(tab_contents); | 891 content_setting_image_model_->UpdateFromTabContents(tab_contents); |
855 if (content_setting_image_model_->is_visible()) { | 892 if (content_setting_image_model_->is_visible()) { |
856 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | |
857 // TODO(thakis): We should use pdfs for these icons on OSX. | 893 // TODO(thakis): We should use pdfs for these icons on OSX. |
858 // http://crbug.com/35847 | 894 // http://crbug.com/35847 |
859 SetImage(rb.GetNSImageNamed(content_setting_image_model_->get_icon())); | 895 SetIcon(content_setting_image_model_->get_icon()); |
860 SetToolTip(base::SysUTF8ToNSString( | 896 SetToolTip(base::SysUTF8ToNSString( |
861 content_setting_image_model_->get_tooltip())); | 897 content_setting_image_model_->get_tooltip())); |
862 SetVisible(true); | 898 SetVisible(true); |
863 } else { | 899 } else { |
864 SetVisible(false); | 900 SetVisible(false); |
865 } | 901 } |
866 } | 902 } |
867 | 903 |
868 void LocationBarViewMac::ContentSettingImageView::SetToolTip(NSString* tooltip) | 904 void LocationBarViewMac::ContentSettingImageView::SetToolTip(NSString* tooltip) |
869 { | 905 { |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
932 ++result; | 968 ++result; |
933 } | 969 } |
934 return result; | 970 return result; |
935 } | 971 } |
936 | 972 |
937 void LocationBarViewMac::PageActionViewList::OnMousePressed(NSRect iconFrame, | 973 void LocationBarViewMac::PageActionViewList::OnMousePressed(NSRect iconFrame, |
938 size_t index) { | 974 size_t index) { |
939 ViewAt(index)->OnMousePressed(iconFrame); | 975 ViewAt(index)->OnMousePressed(iconFrame); |
940 } | 976 } |
941 | 977 |
OLD | NEW |