12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // 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/app_list/views/privacy_container_view.h"
- #include <memory>
- #include <utility>
- #include "ash/app_list/app_list_view_delegate.h"
- #include "ash/app_list/model/search/search_result.h"
- #include "ash/app_list/views/suggested_content_info_view.h"
- #include "ash/public/cpp/app_list/app_list_config.h"
- #include "ash/public/cpp/app_list/app_list_types.h"
- #include "ui/views/layout/box_layout.h"
- namespace ash {
- PrivacyContainerView::PrivacyContainerView(AppListViewDelegate* view_delegate)
- : SearchResultContainerView(view_delegate) {
- // |ShouldShowSuggestedContentInfo()| cannot change from false to true in the
- // middle of a session.
- if (view_delegate->ShouldShowSuggestedContentInfo()) {
- suggested_content_info_view_ = AddChildView(
- std::make_unique<SuggestedContentInfoView>(view_delegate, this));
- }
- auto metadata = std::make_unique<SearchResultMetadata>();
- metadata->id = "PrivacyInfoResult";
- metadata->result_type = AppListSearchResultType::kInternalPrivacyInfo;
- result_.SetMetadata(std::move(metadata));
- // This container simply wraps around PrivacyInfoView.
- SetLayoutManager(std::make_unique<views::BoxLayout>(
- views::BoxLayout::Orientation::kVertical, gfx::Insets(), 0));
- }
- PrivacyContainerView::~PrivacyContainerView() = default;
- SearchResultBaseView* PrivacyContainerView::GetResultViewAt(size_t index) {
- if (index != 0) {
- // There is only one result.
- return nullptr;
- }
- if (suggested_content_info_view_ &&
- suggested_content_info_view_->GetVisible()) {
- return suggested_content_info_view_;
- }
- return nullptr;
- }
- int PrivacyContainerView::DoUpdate() {
- const bool should_show_suggested_content =
- view_delegate()->ShouldShowSuggestedContentInfo();
- if (suggested_content_info_view_) {
- const bool has_result = suggested_content_info_view_->result();
- if (has_result != should_show_suggested_content) {
- suggested_content_info_view_->SetResult(
- should_show_suggested_content ? &result_ : nullptr);
- }
- suggested_content_info_view_->SetVisible(should_show_suggested_content);
- }
- return should_show_suggested_content ? 1 : 0;
- }
- } // namespace ash
|