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

Unified Diff: chrome/browser/ui/views/chooser_content_view.cc

Issue 2468403002: Make WebBluetooth chooser consistent on Android and desktops (desktop part) (Closed)
Patch Set: address comments Created 4 years, 1 month 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
Index: chrome/browser/ui/views/chooser_content_view.cc
diff --git a/chrome/browser/ui/views/chooser_content_view.cc b/chrome/browser/ui/views/chooser_content_view.cc
index 89c2291236964c57b68ddcc392ff91d28c7a6fc3..4994e715fd19312182eab62b0a1f09e60bfb414b 100644
--- a/chrome/browser/ui/views/chooser_content_view.cc
+++ b/chrome/browser/ui/views/chooser_content_view.cc
@@ -15,16 +15,16 @@
#include "ui/gfx/paint_vector_icon.h"
#include "ui/gfx/vector_icons_public.h"
#include "ui/resources/grit/ui_resources.h"
-#include "ui/views/controls/link.h"
#include "ui/views/controls/styled_label.h"
#include "ui/views/controls/table/table_view.h"
#include "ui/views/controls/throbber.h"
+#include "ui/views/widget/widget.h"
namespace {
-const int kChooserWidth = 330;
+const int kChooserWidth = 370;
-const int kChooserHeight = 220;
+const int kChooserHeight = 260;
const int kThrobberDiameter = 24;
@@ -40,7 +40,22 @@ const int kSignalStrengthLevelImageIds[5] = {IDR_SIGNAL_0_BAR, IDR_SIGNAL_1_BAR,
ChooserContentView::ChooserContentView(
views::TableViewObserver* table_view_observer,
std::unique_ptr<ChooserController> chooser_controller)
- : chooser_controller_(std::move(chooser_controller)) {
+ : chooser_controller_(std::move(chooser_controller)),
+ help_text_(l10n_util::GetStringFUTF16(
+ IDS_DEVICE_CHOOSER_GET_HELP_LINK_WITH_SCANNING_STATUS,
+ base::string16())),
+ help_and_scanning_text_(l10n_util::GetStringFUTF16(
+ IDS_DEVICE_CHOOSER_GET_HELP_LINK_WITH_SCANNING_STATUS,
+ l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_SCANNING))) {
+ base::string16 re_scan_text =
+ l10n_util::GetStringUTF16(IDS_BLUETOOTH_DEVICE_CHOOSER_RE_SCAN);
+ std::vector<size_t> offsets;
+ help_and_re_scan_text_ = l10n_util::GetStringFUTF16(
+ IDS_DEVICE_CHOOSER_GET_HELP_LINK_WITH_RE_SCAN_LINK, help_text_,
+ re_scan_text, &offsets);
+ help_text_range_ = gfx::Range(offsets[0], offsets[0] + help_text_.size());
+ re_scan_text_range_ =
+ gfx::Range(offsets[1], offsets[1] + re_scan_text.size());
chooser_controller_->set_view(this);
std::vector<ui::TableColumn> table_columns;
table_columns.push_back(ui::TableColumn());
@@ -77,8 +92,6 @@ ChooserContentView::~ChooserContentView() {
chooser_controller_->set_view(nullptr);
table_view_->SetObserver(nullptr);
table_view_->SetModel(nullptr);
- if (discovery_state_)
- discovery_state_->set_listener(nullptr);
}
gfx::Size ChooserContentView::GetPreferredSize() const {
@@ -189,8 +202,16 @@ void ChooserContentView::OnAdapterEnabledChanged(bool enabled) {
throbber_->Stop();
throbber_->SetVisible(false);
- discovery_state_->SetText(chooser_controller_->GetStatus());
- discovery_state_->SetEnabled(enabled);
+ if (enabled) {
+ SetGetHelpAndReScanLink();
+ } else {
+ footnote_link_->SetText(help_text_);
+ footnote_link_->AddStyleRange(
+ help_text_range_, views::StyledLabel::RangeStyleInfo::CreateForLink());
+ }
+
+ if (GetWidget() && GetWidget()->GetRootView())
+ GetWidget()->GetRootView()->Layout();
}
void ChooserContentView::OnRefreshStateChanged(bool refreshing) {
@@ -213,28 +234,33 @@ void ChooserContentView::OnRefreshStateChanged(bool refreshing) {
else
throbber_->Stop();
- discovery_state_->SetText(chooser_controller_->GetStatus());
- // When refreshing, disable |discovery_state_| to show it as a text label.
- // When complete, enable |discovery_state_| to show it as a link.
- discovery_state_->SetEnabled(!refreshing);
-}
+ if (refreshing) {
+ footnote_link_->SetText(help_and_scanning_text_);
+ footnote_link_->AddStyleRange(
+ help_text_range_, views::StyledLabel::RangeStyleInfo::CreateForLink());
+ } else {
+ SetGetHelpAndReScanLink();
+ }
-void ChooserContentView::LinkClicked(views::Link* source, int event_flags) {
- if (source == discovery_state_)
- chooser_controller_->RefreshOptions();
- else
- NOTREACHED();
+ if (GetWidget() && GetWidget()->GetRootView())
+ GetWidget()->GetRootView()->Layout();
}
void ChooserContentView::StyledLabelLinkClicked(views::StyledLabel* label,
const gfx::Range& range,
int event_flags) {
- if (label == turn_adapter_off_help_)
+ if (label == turn_adapter_off_help_) {
chooser_controller_->OpenAdapterOffHelpUrl();
- else if (label == help_link_)
- chooser_controller_->OpenHelpCenterUrl();
- else
+ } else if (label == footnote_link_) {
+ if (range == help_text_range_)
+ chooser_controller_->OpenHelpCenterUrl();
+ else if (range == re_scan_text_range_)
+ chooser_controller_->RefreshOptions();
+ else
+ NOTREACHED();
+ } else {
NOTREACHED();
+ }
}
base::string16 ChooserContentView::GetWindowTitle() const {
@@ -253,28 +279,11 @@ bool ChooserContentView::IsDialogButtonEnabled(ui::DialogButton button) const {
!table_view_->selection_model().empty();
}
-views::Link* ChooserContentView::CreateExtraView() {
- discovery_state_ = new views::Link(chooser_controller_->GetStatus());
- discovery_state_->SetHandlesTooltips(false);
- discovery_state_->SetUnderline(false);
- discovery_state_->SetMultiLine(true);
- discovery_state_->SizeToFit(kChooserWidth / 2);
- discovery_state_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
- discovery_state_->set_listener(this);
- return discovery_state_;
-}
-
views::StyledLabel* ChooserContentView::CreateFootnoteView() {
- base::string16 link =
- l10n_util::GetStringUTF16(IDS_DEVICE_CHOOSER_GET_HELP_LINK_TEXT);
- size_t offset = 0;
- base::string16 text = l10n_util::GetStringFUTF16(
- IDS_DEVICE_CHOOSER_FOOTNOTE_TEXT, link, &offset);
- help_link_ = new views::StyledLabel(text, this);
- help_link_->AddStyleRange(
- gfx::Range(offset, offset + link.length()),
- views::StyledLabel::RangeStyleInfo::CreateForLink());
- return help_link_;
+ footnote_link_ = new views::StyledLabel(help_text_, this);
+ footnote_link_->AddStyleRange(
+ help_text_range_, views::StyledLabel::RangeStyleInfo::CreateForLink());
+ return footnote_link_;
}
void ChooserContentView::Accept() {
@@ -297,3 +306,11 @@ void ChooserContentView::UpdateTableView() {
table_view_->SetEnabled(true);
}
}
+
+void ChooserContentView::SetGetHelpAndReScanLink() {
+ footnote_link_->SetText(help_and_re_scan_text_);
+ footnote_link_->AddStyleRange(
+ help_text_range_, views::StyledLabel::RangeStyleInfo::CreateForLink());
+ footnote_link_->AddStyleRange(
+ re_scan_text_range_, views::StyledLabel::RangeStyleInfo::CreateForLink());
+}
« no previous file with comments | « chrome/browser/ui/views/chooser_content_view.h ('k') | chrome/browser/ui/views/chooser_content_view_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698