Commit 2d86c23e authored by Peter Kasting's avatar Peter Kasting Committed by Commit Bot

Change ButtonPressed overrides to callbacks: c/b/ui/views/sharing/

Bug: 772945
Change-Id: Ic64283bf7d01aa919b47df2c31fe62db1ba3e146
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2472440
Commit-Queue: Peter Kasting <pkasting@chromium.org>
Reviewed-by: default avatarRichard Knoll <knollr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#818991}
parent bf535698
...@@ -173,21 +173,17 @@ SharingDialogType SharingDialogView::GetDialogType() const { ...@@ -173,21 +173,17 @@ SharingDialogType SharingDialogView::GetDialogType() const {
return data_.type; return data_.type;
} }
void SharingDialogView::ButtonPressed(views::Button* sender, void SharingDialogView::DeviceButtonPressed(size_t index) {
const ui::Event& event) { DCHECK_LT(index, data_.devices.size());
DCHECK(sender); LogSharingSelectedIndex(data_.prefix, kSharingUiDialog, index);
size_t index = sender->tag();
DCHECK_LT(index, data_.devices.size() + data_.apps.size());
const bool is_device = index < data_.devices.size();
if (!is_device)
index -= data_.devices.size();
LogSharingSelectedIndex(
data_.prefix, kSharingUiDialog, index,
is_device ? SharingIndexType::kDevice : SharingIndexType::kApp);
if (is_device)
std::move(data_.device_callback).Run(*data_.devices[index]); std::move(data_.device_callback).Run(*data_.devices[index]);
else CloseBubble();
}
void SharingDialogView::AppButtonPressed(size_t index) {
DCHECK_LT(index, data_.apps.size());
LogSharingSelectedIndex(data_.prefix, kSharingUiDialog, index,
SharingIndexType::kApp);
std::move(data_.app_callback).Run(data_.apps[index]); std::move(data_.app_callback).Run(data_.apps[index]);
CloseBubble(); CloseBubble();
} }
...@@ -246,7 +242,6 @@ void SharingDialogView::Init() { ...@@ -246,7 +242,6 @@ void SharingDialogView::Init() {
void SharingDialogView::InitListView() { void SharingDialogView::InitListView() {
constexpr int kPrimaryIconSize = 20; constexpr int kPrimaryIconSize = 20;
int tag = 0;
const gfx::Insets device_border = const gfx::Insets device_border =
gfx::Insets(kSharingDialogSpacing, kSharingDialogSpacing * 2, gfx::Insets(kSharingDialogSpacing, kSharingDialogSpacing * 2,
kSharingDialogSpacing, 0); kSharingDialogSpacing, 0);
...@@ -259,6 +254,7 @@ void SharingDialogView::InitListView() { ...@@ -259,6 +254,7 @@ void SharingDialogView::InitListView() {
// Devices: // Devices:
LogSharingDevicesToShow(data_.prefix, kSharingUiDialog, data_.devices.size()); LogSharingDevicesToShow(data_.prefix, kSharingUiDialog, data_.devices.size());
size_t index = 0;
for (const auto& device : data_.devices) { for (const auto& device : data_.devices) {
auto icon = std::make_unique<views::ColorTrackingIconView>( auto icon = std::make_unique<views::ColorTrackingIconView>(
device->device_type() == sync_pb::SyncEnums::TYPE_TABLET device->device_type() == sync_pb::SyncEnums::TYPE_TABLET
...@@ -268,15 +264,17 @@ void SharingDialogView::InitListView() { ...@@ -268,15 +264,17 @@ void SharingDialogView::InitListView() {
auto* dialog_button = auto* dialog_button =
button_list->AddChildView(std::make_unique<HoverButton>( button_list->AddChildView(std::make_unique<HoverButton>(
this, std::move(icon), base::UTF8ToUTF16(device->client_name()), base::BindRepeating(&SharingDialogView::DeviceButtonPressed,
base::Unretained(this), index++),
std::move(icon), base::UTF8ToUTF16(device->client_name()),
GetLastUpdatedTimeInDays(device->last_updated_timestamp()))); GetLastUpdatedTimeInDays(device->last_updated_timestamp())));
dialog_button->SetEnabled(true); dialog_button->SetEnabled(true);
dialog_button->set_tag(tag++);
dialog_button->SetBorder(views::CreateEmptyBorder(device_border)); dialog_button->SetBorder(views::CreateEmptyBorder(device_border));
} }
// Apps: // Apps:
LogSharingAppsToShow(data_.prefix, kSharingUiDialog, data_.apps.size()); LogSharingAppsToShow(data_.prefix, kSharingUiDialog, data_.apps.size());
index = 0;
for (const auto& app : data_.apps) { for (const auto& app : data_.apps) {
std::unique_ptr<views::ImageView> icon; std::unique_ptr<views::ImageView> icon;
if (app.vector_icon) { if (app.vector_icon) {
...@@ -287,11 +285,13 @@ void SharingDialogView::InitListView() { ...@@ -287,11 +285,13 @@ void SharingDialogView::InitListView() {
icon->SetImage(app.image.AsImageSkia()); icon->SetImage(app.image.AsImageSkia());
} }
auto* dialog_button = button_list->AddChildView( auto* dialog_button =
std::make_unique<HoverButton>(this, std::move(icon), app.name, button_list->AddChildView(std::make_unique<HoverButton>(
base::BindRepeating(&SharingDialogView::AppButtonPressed,
base::Unretained(this), index++),
std::move(icon), app.name,
/* subtitle= */ base::string16())); /* subtitle= */ base::string16()));
dialog_button->SetEnabled(true); dialog_button->SetEnabled(true);
dialog_button->set_tag(tag++);
dialog_button->SetBorder(views::CreateEmptyBorder(app_border)); dialog_button->SetBorder(views::CreateEmptyBorder(app_border));
} }
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include "chrome/browser/sharing/sharing_dialog.h" #include "chrome/browser/sharing/sharing_dialog.h"
#include "chrome/browser/sharing/sharing_dialog_data.h" #include "chrome/browser/sharing/sharing_dialog_data.h"
#include "chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h" #include "chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h"
#include "ui/views/controls/button/button.h"
namespace views { namespace views {
class StyledLabel; class StyledLabel;
...@@ -21,7 +20,6 @@ class View; ...@@ -21,7 +20,6 @@ class View;
enum class SharingDialogType; enum class SharingDialogType;
class SharingDialogView : public SharingDialog, class SharingDialogView : public SharingDialog,
public views::ButtonListener,
public LocationBarBubbleDelegateView { public LocationBarBubbleDelegateView {
public: public:
// Bubble will be anchored to |anchor_view|. // Bubble will be anchored to |anchor_view|.
...@@ -41,9 +39,6 @@ class SharingDialogView : public SharingDialog, ...@@ -41,9 +39,6 @@ class SharingDialogView : public SharingDialog,
void WebContentsDestroyed() override; void WebContentsDestroyed() override;
void AddedToWidget() override; void AddedToWidget() override;
// views::ButtonListener:
void ButtonPressed(views::Button* sender, const ui::Event& event) override;
static views::BubbleDialogDelegateView* GetAsBubble(SharingDialog* dialog); static views::BubbleDialogDelegateView* GetAsBubble(SharingDialog* dialog);
static views::BubbleDialogDelegateView* GetAsBubbleForClickToCall( static views::BubbleDialogDelegateView* GetAsBubbleForClickToCall(
SharingDialog* dialog); SharingDialog* dialog);
...@@ -65,6 +60,9 @@ class SharingDialogView : public SharingDialog, ...@@ -65,6 +60,9 @@ class SharingDialogView : public SharingDialog,
std::unique_ptr<views::StyledLabel> CreateHelpText(); std::unique_ptr<views::StyledLabel> CreateHelpText();
void DeviceButtonPressed(size_t index);
void AppButtonPressed(size_t index);
SharingDialogData data_; SharingDialogData data_;
// References to device and app buttons views. // References to device and app buttons views.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment