summaryrefslogtreecommitdiffstats
path: root/chrome/browser/accessibility/invert_bubble_views.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/accessibility/invert_bubble_views.cc')
-rw-r--r--chrome/browser/accessibility/invert_bubble_views.cc82
1 files changed, 60 insertions, 22 deletions
diff --git a/chrome/browser/accessibility/invert_bubble_views.cc b/chrome/browser/accessibility/invert_bubble_views.cc
index b313d26..4c3f298 100644
--- a/chrome/browser/accessibility/invert_bubble_views.cc
+++ b/chrome/browser/accessibility/invert_bubble_views.cc
@@ -15,7 +15,6 @@
#include "ui/base/resource/resource_bundle.h"
#include "ui/gfx/sys_color_change_listener.h"
#include "ui/views/bubble/bubble_delegate.h"
-#include "ui/views/controls/button/button.h"
#include "ui/views/controls/label.h"
#include "ui/views/controls/link.h"
#include "ui/views/controls/link_listener.h"
@@ -23,6 +22,8 @@
#include "ui/views/layout/layout_constants.h"
namespace {
+const char kHighContrastExtensionUrl[] = "https://chrome.google.com/webstore/detail/djcfdncoelnlbldjfhinnjlhdjlikmph";
+const char kDarkThemeSearchUrl[] = "https://chrome.google.com/webstore/search-themes/dark";
const char kLearnMoreUrl[] = "https://groups.google.com/a/googleproductforums.com/d/topic/chrome/Xrco2HsXS-8/discussion";
const int kBubbleWidth = 500;
} // namespace
@@ -33,48 +34,81 @@ class InvertBubbleView : public views::BubbleDelegateView,
InvertBubbleView(Profile* profile, views::View* anchor_view);
virtual ~InvertBubbleView();
- // views::BubbleDelegateView overrides:
- virtual gfx::Rect GetAnchorRect() OVERRIDE;
-
protected:
// views::BubbleDelegateView overrides:
virtual void Init() OVERRIDE;
+ // views::BubbleDelegateView overrides:
+ virtual gfx::Rect GetAnchorRect() OVERRIDE;
+
// views::LinkListener overrides:
virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE;
+ void OpenLink(const std::string& url, int event_flags);
+
Profile* profile_;
+ views::Link* high_contrast_;
+ views::Link* dark_theme_;
+ views::Link* learn_more_;
+ views::Link* close_;
DISALLOW_COPY_AND_ASSIGN(InvertBubbleView);
};
+InvertBubbleView::InvertBubbleView(Profile* profile, views::View* anchor_view)
+ : views::BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_LEFT),
+ profile_(profile) {
+}
+
+InvertBubbleView::~InvertBubbleView() {
+}
+
void InvertBubbleView::Init() {
ResourceBundle& rb = ResourceBundle::GetSharedInstance();
const gfx::Font& original_font = rb.GetFont(ResourceBundle::MediumFont);
views::Label* title = new views::Label(
- l10n_util::GetStringUTF16(IDS_INVERT_NOTIFICATION));
+ l10n_util::GetStringUTF16(IDS_HIGH_CONTRAST_NOTIFICATION));
title->SetFont(original_font.DeriveFont(2, gfx::Font::BOLD));
title->SetMultiLine(true);
title->SizeToFit(kBubbleWidth);
- views::Link* learn_more =
- new views::Link(l10n_util::GetStringUTF16(IDS_LEARN_MORE));
- learn_more->SetFont(original_font);
- learn_more->set_listener(this);
+ learn_more_ = new views::Link(l10n_util::GetStringUTF16(IDS_LEARN_MORE));
+ learn_more_->SetFont(original_font);
+ learn_more_->set_listener(this);
+
+ high_contrast_ =
+ new views::Link(l10n_util::GetStringUTF16(IDS_HIGH_CONTRAST_EXT));
+ high_contrast_->SetFont(original_font);
+ high_contrast_->set_listener(this);
+
+ dark_theme_ =
+ new views::Link(l10n_util::GetStringUTF16(IDS_DARK_THEME));
+ dark_theme_->SetFont(original_font);
+ dark_theme_->set_listener(this);
+
+ close_ = new views::Link(l10n_util::GetStringUTF16(IDS_CLOSE));
+ close_->SetFont(original_font);
+ close_->set_listener(this);
views::GridLayout* layout = views::GridLayout::CreatePanel(this);
SetLayoutManager(layout);
views::ColumnSet* columns = layout->AddColumnSet(0);
- columns->AddColumn(views::GridLayout::LEADING, views::GridLayout::LEADING, 0,
- views::GridLayout::USE_PREF, 0, 0);
+ for (int i = 0; i < 4; i++) {
+ columns->AddColumn(views::GridLayout::LEADING,
+ views::GridLayout::LEADING, 0,
+ views::GridLayout::USE_PREF, 0, 0);
+ }
layout->StartRow(0, 0);
- layout->AddView(title);
+ layout->AddView(title, 4, 1);
layout->StartRowWithPadding(0, 0, 0,
views::kRelatedControlSmallVerticalSpacing);
- layout->AddView(learn_more);
+ layout->AddView(high_contrast_);
+ layout->AddView(dark_theme_);
+ layout->AddView(learn_more_);
+ layout->AddView(close_);
// Switching to high-contrast mode has a nasty habit of causing Chrome
// top-level windows to lose focus, so closing the bubble on deactivate
@@ -93,26 +127,30 @@ gfx::Rect InvertBubbleView::GetAnchorRect() {
return rect;
}
-InvertBubbleView::InvertBubbleView(Profile* profile, views::View* anchor_view)
- : views::BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_LEFT),
- profile_(profile) {
-}
-
-InvertBubbleView::~InvertBubbleView() {
+void InvertBubbleView::LinkClicked(views::Link* source, int event_flags) {
+ if (source == high_contrast_)
+ OpenLink(kHighContrastExtensionUrl, event_flags);
+ else if (source == dark_theme_)
+ OpenLink(kDarkThemeSearchUrl, event_flags);
+ else if (source == learn_more_)
+ OpenLink(kLearnMoreUrl, event_flags);
+ else if (source == close_)
+ GetWidget()->Close();
+ else
+ NOTREACHED();
}
-void InvertBubbleView::LinkClicked(views::Link* source, int event_flags) {
+void InvertBubbleView::OpenLink(const std::string& url, int event_flags) {
Browser* browser = BrowserList::GetLastActiveWithProfile(profile_);
if (browser) {
WindowOpenDisposition disposition =
event_utils::DispositionFromEventFlags(event_flags);
content::OpenURLParams params(
- GURL(kLearnMoreUrl), content::Referrer(),
+ GURL(url), content::Referrer(),
disposition == CURRENT_TAB ? NEW_FOREGROUND_TAB : disposition,
content::PAGE_TRANSITION_LINK, false);
browser->OpenURL(params);
}
- GetWidget()->Close();
}
// static