chromium/ash/system/holding_space/pinned_files_section.h

// Copyright 2020 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef ASH_SYSTEM_HOLDING_SPACE_PINNED_FILES_SECTION_H_
#define ASH_SYSTEM_HOLDING_SPACE_PINNED_FILES_SECTION_H_

#include <memory>

#include "ash/system/holding_space/holding_space_item_views_section.h"
#include "ui/base/metadata/metadata_header_macros.h"

namespace ash {

// Section for pinned files in the `PinnedFilesBubble`.
class PinnedFilesSection : public HoldingSpaceItemViewsSection {
  METADATA_HEADER(PinnedFilesSection, HoldingSpaceItemViewsSection)

 public:
  explicit PinnedFilesSection(HoldingSpaceViewDelegate* delegate);
  PinnedFilesSection(const PinnedFilesSection& other) = delete;
  PinnedFilesSection& operator=(const PinnedFilesSection& other) = delete;
  ~PinnedFilesSection() override;

 private:
  // HoldingSpaceItemViewsSection:
  gfx::Size GetMinimumSize() const override;
  std::unique_ptr<views::View> CreateHeader() override;
  std::unique_ptr<views::View> CreateContainer() override;
  std::unique_ptr<HoldingSpaceItemView> CreateView(
      const HoldingSpaceItem* item) override;
  std::unique_ptr<views::View> CreatePlaceholder() override;

  // Invoked when the Files app chip in the placeholder is pressed.
  void OnFilesAppChipPressed(const ui::Event& event);
};

}  // namespace ash

#endif  // ASH_SYSTEM_HOLDING_SPACE_PINNED_FILES_SECTION_H_