1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_ARC_INPUT_OVERLAY_UI_DELETE_EDIT_SHORTCUT_H_
#define CHROME_BROWSER_ASH_ARC_INPUT_OVERLAY_UI_DELETE_EDIT_SHORTCUT_H_
#include <memory>
#include "base/memory/raw_ptr.h"
#include "ui/base/metadata/metadata_header_macros.h"
#include "ui/views/bubble/bubble_dialog_delegate_view.h"
namespace views {
class NonClientFrameView;
} // namespace views
namespace ash {
class IconButton;
} // namespace ash
namespace arc::input_overlay {
class ActionViewListItem;
class DisplayOverlayController;
// DeleteEditShortcut displays a shortcut to either edit to the action or delete
// the action.
//
// View looks like this:
// +------+
// ||icon||
// |------|
// ||icon||
// +------+
class DeleteEditShortcut : public views::BubbleDialogDelegateView {
METADATA_HEADER(DeleteEditShortcut, views::BubbleDialogDelegateView)
public:
DeleteEditShortcut(DisplayOverlayController* controller,
ActionViewListItem* anchor_view);
DeleteEditShortcut(const DeleteEditShortcut&) = delete;
DeleteEditShortcut& operator=(const DeleteEditShortcut&) = delete;
~DeleteEditShortcut() override;
void UpdateAnchorView(ActionViewListItem* anchor_view);
private:
friend class DeleteEditShortcutTest;
// Updates tooltip text for both `edit_button_` and `delete_button_`. A11y
// name is updated as well.
void UpdateTooltipText(ActionViewListItem* anchor_view);
// Handle button functions.
void OnEditButtonPressed();
void OnDeleteButtonPressed();
// views::DialogDelegate:
std::unique_ptr<views::NonClientFrameView> CreateNonClientFrameView(
views::Widget* widget) override;
// views::View:
void OnMouseExited(const ui::MouseEvent& event) override;
// DisplayOverlayController owns this class, no need to deallocate.
const raw_ptr<DisplayOverlayController> controller_ = nullptr;
raw_ptr<ash::IconButton> edit_button_;
raw_ptr<ash::IconButton> delete_button_;
};
} // namespace arc::input_overlay
#endif // CHROME_BROWSER_ASH_ARC_INPUT_OVERLAY_UI_DELETE_EDIT_SHORTCUT_H_
|