Commit efda5ea5 authored by Andrew Xu's avatar Andrew Xu Committed by Commit Bot

[Multipaste] Create file item view - part 2

This CL implements the menu item presenting the copied file, called
`ClipboardHistoryFileItemView`. This new menu item is applied to the
clipboard history data whose display format is `kFile`.

Bug: 1134392
Change-Id: I48ad2b8e88ae8a6a5fa56b4c1f31af1e5a5ebea8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2552082
Commit-Queue: Andrew Xu <andrewxu@chromium.org>
Reviewed-by: default avatarDavid Black <dmblack@google.com>
Cr-Commit-Position: refs/heads/master@{#829878}
parent b0a01c60
...@@ -323,6 +323,8 @@ component("ash") { ...@@ -323,6 +323,8 @@ component("ash") {
"clipboard/scoped_clipboard_history_pause_impl.h", "clipboard/scoped_clipboard_history_pause_impl.h",
"clipboard/views/clipboard_history_bitmap_item_view.cc", "clipboard/views/clipboard_history_bitmap_item_view.cc",
"clipboard/views/clipboard_history_bitmap_item_view.h", "clipboard/views/clipboard_history_bitmap_item_view.h",
"clipboard/views/clipboard_history_file_item_view.cc",
"clipboard/views/clipboard_history_file_item_view.h",
"clipboard/views/clipboard_history_item_view.cc", "clipboard/views/clipboard_history_item_view.cc",
"clipboard/views/clipboard_history_item_view.h", "clipboard/views/clipboard_history_item_view.h",
"clipboard/views/clipboard_history_label.cc", "clipboard/views/clipboard_history_label.cc",
......
// Copyright 2020 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 "ash/clipboard/views/clipboard_history_file_item_view.h"
#include "ash/public/cpp/file_icon_util.h"
#include "base/files/file_path.h"
#include "ui/views/controls/image_view.h"
#include "ui/views/view_class_properties.h"
namespace {
// The file icon's preferred size.
constexpr gfx::Size kIconSize(20, 20);
// The file icon's margin.
constexpr gfx::Insets kIconMargin(/*top=*/0,
/*left=*/0,
/*bottom=*/0,
/*right=*/12);
} // namespace
namespace ash {
ClipboardHistoryFileItemView::ClipboardHistoryFileItemView(
const ClipboardHistoryItem* clipboard_history_item,
views::MenuItemView* container)
: ClipboardHistoryTextItemView(clipboard_history_item, container) {}
ClipboardHistoryFileItemView::~ClipboardHistoryFileItemView() = default;
std::unique_ptr<ClipboardHistoryFileItemView::ContentsView>
ClipboardHistoryFileItemView::CreateContentsView() {
auto file_icon = std::make_unique<views::ImageView>();
const std::string copied_file_name = base::UTF16ToUTF8(text());
file_icon->SetImage(GetIconForPath(base::FilePath(copied_file_name)));
file_icon->SetImageSize(kIconSize);
file_icon->SetProperty(views::kMarginsKey, kIconMargin);
auto contents_view = ClipboardHistoryTextItemView::CreateContentsView();
// `file_icon` should be `contents_view`'s first child.
contents_view->AddChildViewAt(std::move(file_icon), /*index=*/0);
return contents_view;
}
const char* ClipboardHistoryFileItemView::GetClassName() const {
return "ClipboardHistoryFileItemView";
}
} // namespace ash
// Copyright 2020 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.
#ifndef ASH_CLIPBOARD_VIEWS_CLIPBOARD_HISTORY_FILE_ITEM_VIEW_H_
#define ASH_CLIPBOARD_VIEWS_CLIPBOARD_HISTORY_FILE_ITEM_VIEW_H_
#include "ash/clipboard/views/clipboard_history_text_item_view.h"
namespace views {
class MenuItemView;
}
namespace ash {
// The menu item showing the copied file.
class ClipboardHistoryFileItemView : public ClipboardHistoryTextItemView {
public:
ClipboardHistoryFileItemView(
const ClipboardHistoryItem* clipboard_history_item,
views::MenuItemView* container);
ClipboardHistoryFileItemView(const ClipboardHistoryFileItemView& rhs) =
delete;
ClipboardHistoryFileItemView& operator=(
const ClipboardHistoryFileItemView& rhs) = delete;
~ClipboardHistoryFileItemView() override;
private:
// ClipboardHistoryTextItemView:
std::unique_ptr<ContentsView> CreateContentsView() override;
const char* GetClassName() const override;
};
} // namespace ash
#endif // ASH_CLIPBOARD_VIEWS_CLIPBOARD_HISTORY_FILE_ITEM_VIEW_H_
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "ash/clipboard/clipboard_history_resource_manager.h" #include "ash/clipboard/clipboard_history_resource_manager.h"
#include "ash/clipboard/clipboard_history_util.h" #include "ash/clipboard/clipboard_history_util.h"
#include "ash/clipboard/views/clipboard_history_bitmap_item_view.h" #include "ash/clipboard/views/clipboard_history_bitmap_item_view.h"
#include "ash/clipboard/views/clipboard_history_file_item_view.h"
#include "ash/clipboard/views/clipboard_history_text_item_view.h" #include "ash/clipboard/views/clipboard_history_text_item_view.h"
#include "ash/resources/vector_icons/vector_icons.h" #include "ash/resources/vector_icons/vector_icons.h"
#include "ash/style/ash_color_provider.h" #include "ash/style/ash_color_provider.h"
...@@ -188,7 +189,7 @@ ClipboardHistoryItemView::CreateFromClipboardHistoryItem( ...@@ -188,7 +189,7 @@ ClipboardHistoryItemView::CreateFromClipboardHistoryItem(
return std::make_unique<ClipboardHistoryBitmapItemView>( return std::make_unique<ClipboardHistoryBitmapItemView>(
&item, resource_manager, container); &item, resource_manager, container);
case ClipboardHistoryUtil::ClipboardHistoryDisplayFormat::kFile: case ClipboardHistoryUtil::ClipboardHistoryDisplayFormat::kFile:
return std::make_unique<ClipboardHistoryTextItemView>(&item, container); return std::make_unique<ClipboardHistoryFileItemView>(&item, container);
} }
} }
......
...@@ -25,11 +25,16 @@ class ClipboardHistoryTextItemView : public ClipboardHistoryItemView { ...@@ -25,11 +25,16 @@ class ClipboardHistoryTextItemView : public ClipboardHistoryItemView {
delete; delete;
~ClipboardHistoryTextItemView() override; ~ClipboardHistoryTextItemView() override;
protected:
const base::string16& text() const { return text_; }
// ClipboardHistoryItemView:
std::unique_ptr<ContentsView> CreateContentsView() override;
private: private:
class TextContentsView; class TextContentsView;
// ClipboardHistoryItemView: // ClipboardHistoryItemView:
std::unique_ptr<ContentsView> CreateContentsView() override;
base::string16 GetAccessibleName() const override; base::string16 GetAccessibleName() const override;
const char* GetClassName() const override; const char* GetClassName() const override;
......
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