Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3602)

Unified Diff: chrome/browser/ui/views/profiles/profile_chooser_view.cc

Issue 255203002: Implement end-preview flow with views (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: typo fixed Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/views/profiles/profile_chooser_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/profiles/profile_chooser_view.cc
diff --git a/chrome/browser/ui/views/profiles/profile_chooser_view.cc b/chrome/browser/ui/views/profiles/profile_chooser_view.cc
index 5fc7301acb220e99466b0a7e81e5616eb344cfc4..86aafe7bf8954a13de336c7c637406c1230c1da3 100644
--- a/chrome/browser/ui/views/profiles/profile_chooser_view.cc
+++ b/chrome/browser/ui/views/profiles/profile_chooser_view.cc
@@ -17,6 +17,7 @@
#include "chrome/browser/signin/signin_manager_factory.h"
#include "chrome/browser/signin/signin_promo.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_dialogs.h"
#include "chrome/browser/ui/chrome_pages.h"
#include "chrome/browser/ui/singleton_tabs.h"
@@ -62,6 +63,7 @@ const int kProfileAvatarTutorialShowMax = 5;
const int kFixedGaiaViewHeight = 400;
const int kFixedGaiaViewWidth = 360;
const int kFixedAccountRemovalViewWidth = 280;
+const int kFixedEndPreviewViewWidth = 280;
const int kLargeImageSide = 88;
// Creates a GridLayout with a single column. This ensures that all the child
@@ -387,7 +389,7 @@ ProfileChooserView::ProfileChooserView(views::View* anchor_view,
: BubbleDelegateView(anchor_view, arrow),
browser_(browser),
view_mode_(view_mode),
- tutorial_showing_(false) {
+ tutorial_mode_(TUTORIAL_MODE_NONE) {
// Reset the default margins inherited from the BubbleDelegateView.
set_margins(gfx::Insets());
@@ -417,6 +419,7 @@ ProfileChooserView::~ProfileChooserView() {
}
void ProfileChooserView::ResetView() {
+ question_mark_button_ = NULL;
manage_accounts_link_ = NULL;
signin_current_profile_link_ = NULL;
users_button_ = NULL;
@@ -427,11 +430,16 @@ void ProfileChooserView::ResetView() {
tutorial_ok_button_ = NULL;
tutorial_learn_more_link_ = NULL;
tutorial_enable_new_profile_management_button_ = NULL;
+ tutorial_end_preview_link_ = NULL;
+ tutorial_send_feedback_button_ = NULL;
+ end_preview_and_relaunch_button_ = NULL;
+ end_preview_cancel_button_ = NULL;
+ remove_account_and_relaunch_button_ = NULL;
account_removal_cancel_button_ = NULL;
gaia_signin_cancel_button_ = NULL;
open_other_profile_indexes_map_.clear();
current_profile_accounts_map_.clear();
- tutorial_showing_ = false;
+ tutorial_mode_ = TUTORIAL_MODE_NONE;
}
void ProfileChooserView::Init() {
@@ -474,9 +482,8 @@ void ProfileChooserView::ShowView(BubbleViewMode view_to_display,
DCHECK(active_item.signed_in);
}
- // Records if the "mirror enabled" tutorial card is currently shown before
- // resetting the view.
- bool tutorial_shown = tutorial_showing_;
+ // Records the last tutorial mode.
+ TutorialMode last_tutorial_mode = tutorial_mode_;
ResetView();
RemoveAllChildViews(true);
view_mode_ = view_to_display;
@@ -494,9 +501,13 @@ void ProfileChooserView::ShowView(BubbleViewMode view_to_display,
layout = CreateSingleColumnLayout(this, kFixedAccountRemovalViewWidth);
sub_view = CreateAccountRemovalView();
break;
+ case BUBBLE_VIEW_MODE_END_PREVIEW:
+ layout = CreateSingleColumnLayout(this, kFixedEndPreviewViewWidth);
+ sub_view = CreateEndPreviewView();
+ break;
default:
layout = CreateSingleColumnLayout(this, kFixedMenuWidth);
- sub_view = CreateProfileChooserView(avatar_menu, tutorial_shown);
+ sub_view = CreateProfileChooserView(avatar_menu, last_tutorial_mode);
}
layout->StartRow(1, 0);
layout->AddView(sub_view);
@@ -544,6 +555,16 @@ void ProfileChooserView::ButtonPressed(views::Button* sender,
ShowView(primary_account.empty() ? BUBBLE_VIEW_MODE_PROFILE_CHOOSER :
BUBBLE_VIEW_MODE_ACCOUNT_MANAGEMENT,
avatar_menu_.get());
+ } else if (sender == question_mark_button_) {
+ tutorial_mode_ = TUTORIAL_MODE_SEND_FEEDBACK;
+ ShowView(BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get());
+ } else if (sender == tutorial_send_feedback_button_) {
+ chrome::OpenFeedbackDialog(browser_);
+ } else if (sender == end_preview_and_relaunch_button_) {
+ profiles::DisableNewProfileManagementPreview();
+ } else if (sender == end_preview_cancel_button_) {
+ tutorial_mode_ = TUTORIAL_MODE_SEND_FEEDBACK;
+ ShowView(BUBBLE_VIEW_MODE_PROFILE_CHOOSER, avatar_menu_.get());
} else if (current_profile_photo_ &&
sender == current_profile_photo_->change_photo_button()) {
avatar_menu_->EditProfile(avatar_menu_->GetActiveProfileIndex());
@@ -594,8 +615,7 @@ void ProfileChooserView::LinkClicked(views::Link* sender, int event_flags) {
avatar_menu_.get());
} else if (sender == add_account_link_) {
ShowView(BUBBLE_VIEW_MODE_GAIA_ADD_ACCOUNT, avatar_menu_.get());
- } else {
- DCHECK(sender == tutorial_learn_more_link_);
+ } else if (sender == tutorial_learn_more_link_) {
// TODO(guohui): update |learn_more_url| once it is decided.
const GURL lear_more_url("https://support.google.com/chrome/?hl=en#to");
chrome::NavigateParams params(
@@ -604,6 +624,9 @@ void ProfileChooserView::LinkClicked(views::Link* sender, int event_flags) {
content::PAGE_TRANSITION_LINK);
params.disposition = NEW_FOREGROUND_TAB;
chrome::Navigate(&params);
+ } else {
+ DCHECK(sender == tutorial_end_preview_link_);
+ ShowView(BUBBLE_VIEW_MODE_END_PREVIEW, avatar_menu_.get());
}
}
@@ -642,7 +665,7 @@ bool ProfileChooserView::HandleKeyEvent(views::Textfield* sender,
}
views::View* ProfileChooserView::CreateProfileChooserView(
- AvatarMenu* avatar_menu, bool tutorial_shown) {
+ AvatarMenu* avatar_menu, TutorialMode last_tutorial_mode) {
// TODO(guohui, noms): the view should be customized based on whether new
// profile management preview is enabled or not.
@@ -654,15 +677,21 @@ views::View* ProfileChooserView::CreateProfileChooserView(
views::View* current_profile_view = NULL;
views::View* current_profile_accounts = NULL;
views::View* option_buttons_view = NULL;
+ bool is_new_profile_management = switches::IsNewProfileManagement();
for (size_t i = 0; i < avatar_menu->GetNumberOfItems(); ++i) {
const AvatarMenu::Item& item = avatar_menu->GetItemAt(i);
if (item.active) {
option_buttons_view = CreateOptionsView(item.signed_in);
current_profile_view = CreateCurrentProfileView(item, false);
if (view_mode_ == BUBBLE_VIEW_MODE_PROFILE_CHOOSER) {
- tutorial_view = switches::IsNewProfileManagement() ?
- CreatePreviewEnabledTutorialView(item, tutorial_shown) :
- CreateNewProfileManagementPreviewView();
+ if (is_new_profile_management) {
+ tutorial_view = last_tutorial_mode == TUTORIAL_MODE_SEND_FEEDBACK ?
+ CreateSendPreviewFeedbackView() :
+ CreatePreviewEnabledTutorialView(
+ item, last_tutorial_mode == TUTORIAL_MODE_PREVIEW_ENABLED);
+ } else {
+ tutorial_view = CreateNewProfileManagementPreviewView();
+ }
} else {
current_profile_accounts = CreateCurrentProfileAccountsView(item);
}
@@ -728,9 +757,9 @@ views::View* ProfileChooserView::CreatePreviewEnabledTutorialView(
profile->GetPrefs()->SetInteger(
prefs::kProfileAvatarTutorialShown, show_count + 1);
}
- tutorial_showing_ = true;
return CreateTutorialView(
+ TUTORIAL_MODE_PREVIEW_ENABLED,
l10n_util::GetStringUTF16(IDS_PROFILES_PREVIEW_ENABLED_TUTORIAL_TITLE),
l10n_util::GetStringUTF16(
IDS_PROFILES_PREVIEW_ENABLED_TUTORIAL_CONTENT_TEXT),
@@ -740,13 +769,28 @@ views::View* ProfileChooserView::CreatePreviewEnabledTutorialView(
&tutorial_ok_button_);
}
+views::View* ProfileChooserView::CreateSendPreviewFeedbackView() {
+ return CreateTutorialView(
+ TUTORIAL_MODE_SEND_FEEDBACK,
+ l10n_util::GetStringUTF16(IDS_PROFILES_FEEDBACK_TUTORIAL_TITLE),
+ l10n_util::GetStringUTF16(
+ IDS_PROFILES_FEEDBACK_TUTORIAL_CONTENT_TEXT),
+ l10n_util::GetStringUTF16(IDS_PROFILES_END_PREVIEW),
+ l10n_util::GetStringUTF16(IDS_PROFILES_SEND_FEEDBACK_BUTTON),
+ &tutorial_end_preview_link_,
+ &tutorial_send_feedback_button_);
+}
+
views::View* ProfileChooserView::CreateTutorialView(
+ TutorialMode tutorial_mode,
const base::string16& title_text,
const base::string16& content_text,
const base::string16& link_text,
const base::string16& button_text,
views::Link** link,
views::LabelButton** button) {
+ tutorial_mode_ = tutorial_mode;
+
views::View* view = new views::View();
view->set_background(views::Background::CreateSolidBackground(
profiles::kAvatarTutorialBackgroundColor));
@@ -847,6 +891,20 @@ views::View* ProfileChooserView::CreateCurrentProfileView(
current_profile_photo_ = new EditableProfilePhoto(
this, avatar_item.icon, !is_guest,
gfx::Rect(x_offset, 0, kLargeImageSide, kLargeImageSide));
+
+ if (switches::IsNewProfileManagementPreviewEnabled()) {
+ question_mark_button_ = new views::ImageButton(this);
+ question_mark_button_->SetImageAlignment(
+ views::ImageButton::ALIGN_LEFT, views::ImageButton::ALIGN_MIDDLE);
+ ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance();
+ question_mark_button_->SetImage(views::ImageButton::STATE_NORMAL,
+ rb->GetImageSkiaNamed(IDR_QUESTION_MARK));
+ gfx::Size preferred_size = question_mark_button_->GetPreferredSize();
+ question_mark_button_->SetBounds(
+ 0, 0, preferred_size.width(), preferred_size.height());
+ current_profile_photo_->AddChildView(question_mark_button_);
+ }
+
layout->StartRow(1, 0);
layout->AddView(current_profile_photo_);
@@ -1148,6 +1206,7 @@ views::View* ProfileChooserView::CreateAccountRemovalView() {
views::View* ProfileChooserView::CreateNewProfileManagementPreviewView() {
return CreateTutorialView(
+ TUTORIAL_MODE_ENABLE_PREVIEW,
l10n_util::GetStringUTF16(IDS_PROFILES_PREVIEW_TUTORIAL_TITLE),
l10n_util::GetStringUTF16(IDS_PROFILES_PREVIEW_TUTORIAL_CONTENT_TEXT),
l10n_util::GetStringUTF16(IDS_PROFILES_PROFILE_TUTORIAL_LEARN_MORE),
@@ -1155,3 +1214,44 @@ views::View* ProfileChooserView::CreateNewProfileManagementPreviewView() {
&tutorial_learn_more_link_,
&tutorial_enable_new_profile_management_button_);
}
+
+views::View* ProfileChooserView::CreateEndPreviewView() {
+ views::View* view = new views::View();
+ views::GridLayout* layout = CreateSingleColumnLayout(
+ view, kFixedAccountRemovalViewWidth - 2 * views::kButtonHEdgeMarginNew);
+ layout->SetInsets(views::kButtonVEdgeMarginNew,
+ views::kButtonHEdgeMarginNew,
+ views::kButtonVEdgeMarginNew,
+ views::kButtonHEdgeMarginNew);
+
+ // Adds title.
+ layout->StartRow(1, 0);
+ layout->AddView(new TitleCard(IDS_PROFILES_END_PREVIEW, this,
+ &end_preview_cancel_button_));
+ layout->StartRowWithPadding(1, 0, 0, views::kRelatedControlVerticalSpacing);
+ layout->AddView(new views::Separator(views::Separator::HORIZONTAL));
+
+ // Adds main text.
+ views::Label* content_label = new views::Label(
+ l10n_util::GetStringUTF16(IDS_PROFILES_END_PREVIEW_TEXT));
+ content_label->SetMultiLine(true);
+ content_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+ ui::ResourceBundle* rb = &ui::ResourceBundle::GetSharedInstance();
+ const gfx::FontList& small_font_list =
+ rb->GetFontList(ui::ResourceBundle::SmallFont);
+ content_label->SetFontList(small_font_list);
+ layout->StartRowWithPadding(1, 0, 0, views::kUnrelatedControlVerticalSpacing);
+ layout->AddView(content_label);
+
+ // Adds button.
+ end_preview_and_relaunch_button_ = new views::BlueButton(
+ this, l10n_util::GetStringUTF16(IDS_PROFILES_END_PREVIEW_AND_RELAUNCH));
+ end_preview_and_relaunch_button_->SetHorizontalAlignment(
+ gfx::ALIGN_CENTER);
+ layout->StartRowWithPadding(
+ 1, 0, 0, views::kUnrelatedControlVerticalSpacing);
+ layout->AddView(end_preview_and_relaunch_button_);
+
+ return view;
+}
+
« no previous file with comments | « chrome/browser/ui/views/profiles/profile_chooser_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698