1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/ui/views/bookmarks/bookmark_sync_promo_view.h"
7 #include "base/strings/string16.h"
8 #include "chrome/browser/ui/bookmarks/bookmark_bubble_delegate.h"
9 #include "grit/generated_resources.h"
10 #include "third_party/skia/include/core/SkColor.h"
11 #include "ui/base/l10n/l10n_util.h"
12 #include "ui/gfx/font.h"
13 #include "ui/views/background.h"
14 #include "ui/views/border.h"
15 #include "ui/views/controls/styled_label.h"
16 #include "ui/views/layout/box_layout.h"
17 #include "ui/views/layout/layout_constants.h"
20 // Background color of the promo.
21 const SkColor kBackgroundColor
= SkColorSetRGB(245, 245, 245);
23 // Color of the top border of the promo.
24 const SkColor kBorderColor
= SkColorSetRGB(229, 229, 229);
26 // Width of the top border of the promo.
27 const int kBorderWidth
= 1;
29 // Color of the text of the promo.
30 const SkColor kTextColor
= SkColorSetRGB(102, 102, 102);
34 BookmarkSyncPromoView::BookmarkSyncPromoView(BookmarkBubbleDelegate
* delegate
)
35 : delegate_(delegate
) {
36 set_background(views::Background::CreateSolidBackground(kBackgroundColor
));
37 set_border(views::Border::CreateSolidSidedBorder(kBorderWidth
,
43 base::string16 link_text
=
44 l10n_util::GetStringUTF16(IDS_BOOKMARK_SYNC_PROMO_LINK
);
45 base::string16 promo_text
= l10n_util::GetStringFUTF16(
46 IDS_BOOKMARK_SYNC_PROMO_MESSAGE
,
50 views::StyledLabel
* promo_label
= new views::StyledLabel(promo_text
, this);
51 promo_label
->SetDisplayedOnBackgroundColor(kBackgroundColor
);
53 views::StyledLabel::RangeStyleInfo link_style
=
54 views::StyledLabel::RangeStyleInfo::CreateForLink();
55 link_style
.font_style
= gfx::Font::NORMAL
;
56 promo_label
->AddStyleRange(gfx::Range(offset
, offset
+ link_text
.length()),
59 views::StyledLabel::RangeStyleInfo promo_style
;
60 promo_style
.color
= kTextColor
;
61 gfx::Range
before_link_range(0, offset
);
62 if (!before_link_range
.is_empty())
63 promo_label
->AddStyleRange(before_link_range
, promo_style
);
64 gfx::Range
after_link_range(offset
+ link_text
.length(), promo_text
.length());
65 if (!after_link_range
.is_empty())
66 promo_label
->AddStyleRange(after_link_range
, promo_style
);
68 views::BoxLayout
* layout
= new views::BoxLayout(views::BoxLayout::kVertical
,
69 views::kButtonHEdgeMarginNew
,
70 views::kPanelVertMargin
,
72 SetLayoutManager(layout
);
73 AddChildView(promo_label
);
76 void BookmarkSyncPromoView::StyledLabelLinkClicked(const gfx::Range
& range
,
78 delegate_
->OnSignInLinkClicked();