| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "chrome/browser/ui/views/payments/payment_request_row_view.h" |
| |
| #include "chrome/browser/ui/views/payments/payment_request_views_util.h" |
| #include "third_party/skia/include/core/SkColor.h" |
| #include "ui/native_theme/native_theme.h" |
| #include "ui/views/background.h" |
| #include "ui/views/border.h" |
| #include "ui/views/widget/widget.h" |
| |
| namespace payments { |
| |
| PaymentRequestRowView::PaymentRequestRowView(views::ButtonListener* listener, |
| bool clickable, |
| const gfx::Insets& insets) |
| : views::Button(listener), |
| clickable_(clickable), |
| insets_(insets), |
| previous_row_(nullptr) { |
| SetEnabled(clickable_); |
| ShowBottomSeparator(); |
| SetFocusBehavior(views::View::FocusBehavior::ALWAYS); |
| } |
| |
| PaymentRequestRowView::~PaymentRequestRowView() {} |
| |
| void PaymentRequestRowView::SetActiveBackground() { |
| ui::NativeTheme* theme = GetWidget()->GetNativeTheme(); |
| SetBackground(views::CreateSolidBackground(theme->GetSystemColor( |
| ui::NativeTheme::kColorId_ResultsTableHoveredBackground))); |
| } |
| |
| void PaymentRequestRowView::ShowBottomSeparator() { |
| SetBorder(payments::CreatePaymentRequestRowBorder( |
| GetNativeTheme()->GetSystemColor( |
| ui::NativeTheme::kColorId_SeparatorColor), |
| insets_)); |
| SchedulePaint(); |
| } |
| |
| void PaymentRequestRowView::HideBottomSeparator() { |
| SetBorder(views::CreateEmptyBorder(insets_)); |
| SchedulePaint(); |
| } |
| |
| void PaymentRequestRowView::SetIsHighlighted(bool highlighted) { |
| if (highlighted) { |
| SetActiveBackground(); |
| HideBottomSeparator(); |
| if (previous_row_) |
| previous_row_->HideBottomSeparator(); |
| } else { |
| SetBackground(nullptr); |
| ShowBottomSeparator(); |
| if (previous_row_) |
| previous_row_->ShowBottomSeparator(); |
| } |
| } |
| |
| // views::Button: |
| void PaymentRequestRowView::StateChanged(ButtonState old_state) { |
| if (!clickable()) |
| return; |
| |
| SetIsHighlighted(state() == views::Button::STATE_HOVERED || |
| state() == views::Button::STATE_PRESSED); |
| } |
| |
| void PaymentRequestRowView::OnFocus() { |
| if (clickable()) { |
| SetIsHighlighted(true); |
| SchedulePaint(); |
| } |
| } |
| |
| void PaymentRequestRowView::OnBlur() { |
| if (clickable()) { |
| SetIsHighlighted(false); |
| SchedulePaint(); |
| } |
| } |
| |
| } // namespace payments |