12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // Copyright 2018 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_SHELF_WINDOW_PREVIEW_H_
- #define ASH_SHELF_WINDOW_PREVIEW_H_
- #include "ui/views/view.h"
- namespace aura {
- class Window;
- }
- namespace views {
- class ImageButton;
- class Label;
- } // namespace views
- namespace ash {
- class WindowPreviewView;
- // A view used by the shelf which shows a mirror view of the the window
- // associated with the window of the shelf icon where the mouse is hovered over.
- // The view is also contains a button which closes the window if clicked. Other
- // click events will activate the window and dismiss the bubble which holds this
- // view.
- class WindowPreview : public views::View {
- public:
- class Delegate {
- public:
- // Returns the maximum ratio across all current preview windows.
- virtual float GetMaxPreviewRatio() const = 0;
- // Notify the delegate that the preview has closed.
- virtual void OnPreviewDismissed(WindowPreview* preview) = 0;
- // Notify the delegate that the preview has been activated.
- virtual void OnPreviewActivated(WindowPreview* preview) = 0;
- protected:
- virtual ~Delegate() {}
- };
- WindowPreview(aura::Window* window, Delegate* delegate);
- WindowPreview(const WindowPreview&) = delete;
- WindowPreview& operator=(const WindowPreview&) = delete;
- ~WindowPreview() override;
- // views::View:
- gfx::Size CalculatePreferredSize() const override;
- void Layout() override;
- bool OnMousePressed(const ui::MouseEvent& event) override;
- const char* GetClassName() const override;
- void OnThemeChanged() override;
- const WindowPreviewView* preview_view() const { return preview_view_; }
- private:
- // All the preview containers have the same size.
- gfx::Size GetPreviewContainerSize() const;
- void CloseButtonPressed();
- // Child views.
- views::ImageButton* close_button_ = nullptr;
- views::Label* title_ = nullptr;
- views::View* preview_container_view_ = nullptr;
- WindowPreviewView* preview_view_ = nullptr;
- // Unowned pointer to the delegate. The delegate should outlive this instance.
- Delegate* delegate_;
- };
- } // namespace ash
- #endif // ASH_SHELF_WINDOW_PREVIEW_H_
|