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,22 +173,18 @@ SharingDialogType SharingDialogView::GetDialogType() const {
return data_.type;
}
void SharingDialogView::ButtonPressed(views::Button* sender,
const ui::Event& event) {
DCHECK(sender);
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]);
else
std::move(data_.app_callback).Run(data_.apps[index]);
void SharingDialogView::DeviceButtonPressed(size_t index) {
DCHECK_LT(index, data_.devices.size());
LogSharingSelectedIndex(data_.prefix, kSharingUiDialog, index);
std::move(data_.device_callback).Run(*data_.devices[index]);
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]);
CloseBubble();
}
......@@ -246,7 +242,6 @@ void SharingDialogView::Init() {
void SharingDialogView::InitListView() {
constexpr int kPrimaryIconSize = 20;
int tag = 0;
const gfx::Insets device_border =
gfx::Insets(kSharingDialogSpacing, kSharingDialogSpacing * 2,
kSharingDialogSpacing, 0);
......@@ -259,6 +254,7 @@ void SharingDialogView::InitListView() {
// Devices:
LogSharingDevicesToShow(data_.prefix, kSharingUiDialog, data_.devices.size());
size_t index = 0;
for (const auto& device : data_.devices) {
auto icon = std::make_unique<views::ColorTrackingIconView>(
device->device_type() == sync_pb::SyncEnums::TYPE_TABLET
......@@ -268,15 +264,17 @@ void SharingDialogView::InitListView() {
auto* dialog_button =
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())));
dialog_button->SetEnabled(true);
dialog_button->set_tag(tag++);
dialog_button->SetBorder(views::CreateEmptyBorder(device_border));
}
// Apps:
LogSharingAppsToShow(data_.prefix, kSharingUiDialog, data_.apps.size());
index = 0;
for (const auto& app : data_.apps) {
std::unique_ptr<views::ImageView> icon;
if (app.vector_icon) {
......@@ -287,11 +285,13 @@ void SharingDialogView::InitListView() {
icon->SetImage(app.image.AsImageSkia());
}
auto* dialog_button = button_list->AddChildView(
std::make_unique<HoverButton>(this, std::move(icon), app.name,
/* subtitle= */ base::string16()));
auto* dialog_button =
button_list->AddChildView(std::make_unique<HoverButton>(
base::BindRepeating(&SharingDialogView::AppButtonPressed,
base::Unretained(this), index++),
std::move(icon), app.name,
/* subtitle= */ base::string16()));
dialog_button->SetEnabled(true);
dialog_button->set_tag(tag++);
dialog_button->SetBorder(views::CreateEmptyBorder(app_border));
}
......
......@@ -11,7 +11,6 @@
#include "chrome/browser/sharing/sharing_dialog.h"
#include "chrome/browser/sharing/sharing_dialog_data.h"
#include "chrome/browser/ui/views/location_bar/location_bar_bubble_delegate_view.h"
#include "ui/views/controls/button/button.h"
namespace views {
class StyledLabel;
......@@ -21,7 +20,6 @@ class View;
enum class SharingDialogType;
class SharingDialogView : public SharingDialog,
public views::ButtonListener,
public LocationBarBubbleDelegateView {
public:
// Bubble will be anchored to |anchor_view|.
......@@ -41,9 +39,6 @@ class SharingDialogView : public SharingDialog,
void WebContentsDestroyed() 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* GetAsBubbleForClickToCall(
SharingDialog* dialog);
......@@ -65,6 +60,9 @@ class SharingDialogView : public SharingDialog,
std::unique_ptr<views::StyledLabel> CreateHelpText();
void DeviceButtonPressed(size_t index);
void AppButtonPressed(size_t index);
SharingDialogData data_;
// 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