clipboard_history_text_item_view.cc 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // Copyright 2020 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "ash/clipboard/views/clipboard_history_text_item_view.h"
  5. #include "ash/clipboard/clipboard_history_controller_impl.h"
  6. #include "ash/clipboard/clipboard_history_resource_manager.h"
  7. #include "ash/clipboard/clipboard_history_util.h"
  8. #include "ash/clipboard/views/clipboard_history_delete_button.h"
  9. #include "ash/clipboard/views/clipboard_history_label.h"
  10. #include "ash/clipboard/views/clipboard_history_view_constants.h"
  11. #include "ash/shell.h"
  12. #include "base/metrics/histogram_macros.h"
  13. #include "ui/views/layout/box_layout.h"
  14. #include "ui/views/view_class_properties.h"
  15. namespace ash {
  16. ////////////////////////////////////////////////////////////////////////////////
  17. // ClipboardHistoryTextItemView::TextContentsView
  18. class ClipboardHistoryTextItemView::TextContentsView
  19. : public ClipboardHistoryTextItemView::ContentsView {
  20. public:
  21. explicit TextContentsView(ClipboardHistoryTextItemView* container)
  22. : ContentsView(container) {
  23. auto* layout = SetLayoutManager(std::make_unique<views::BoxLayout>(
  24. views::BoxLayout::Orientation::kHorizontal));
  25. layout->set_cross_axis_alignment(
  26. views::BoxLayout::CrossAxisAlignment::kCenter);
  27. auto* label =
  28. AddChildView(std::make_unique<ClipboardHistoryLabel>(container->text_));
  29. layout->SetFlexForView(label, /*flex_weight=*/1);
  30. InstallDeleteButton();
  31. }
  32. TextContentsView(const TextContentsView& rhs) = delete;
  33. TextContentsView& operator=(const TextContentsView& rhs) = delete;
  34. ~TextContentsView() override = default;
  35. private:
  36. // ContentsView:
  37. ClipboardHistoryDeleteButton* CreateDeleteButton() override {
  38. auto delete_button =
  39. std::make_unique<ClipboardHistoryDeleteButton>(container());
  40. delete_button->SetProperty(
  41. views::kMarginsKey,
  42. ClipboardHistoryViews::kDefaultItemDeleteButtonMargins);
  43. return AddChildView(std::move(delete_button));
  44. }
  45. const char* GetClassName() const override {
  46. return "ClipboardHistoryTextItemView::TextContentsView";
  47. }
  48. };
  49. ////////////////////////////////////////////////////////////////////////////////
  50. // ClipboardHistoryTextItemView
  51. ClipboardHistoryTextItemView::ClipboardHistoryTextItemView(
  52. const ClipboardHistoryItem* clipboard_history_item,
  53. views::MenuItemView* container)
  54. : ClipboardHistoryItemView(clipboard_history_item, container),
  55. text_(Shell::Get()
  56. ->clipboard_history_controller()
  57. ->resource_manager()
  58. ->GetLabel(*clipboard_history_item)) {}
  59. ClipboardHistoryTextItemView::~ClipboardHistoryTextItemView() = default;
  60. std::unique_ptr<ClipboardHistoryTextItemView::ContentsView>
  61. ClipboardHistoryTextItemView::CreateContentsView() {
  62. return std::make_unique<TextContentsView>(this);
  63. }
  64. std::u16string ClipboardHistoryTextItemView::GetAccessibleName() const {
  65. return text_;
  66. }
  67. const char* ClipboardHistoryTextItemView::GetClassName() const {
  68. return "ClipboardHistoryTextItemView";
  69. }
  70. } // namespace ash