// Copyright 2022 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_IME_IME_DETAILED_VIEW_H_
#define ASH_SYSTEM_IME_IME_DETAILED_VIEW_H_
#include <stddef.h>
#include "ash/public/cpp/ime_info.h"
#include "ash/system/ime_menu/ime_list_view.h"
#include "base/memory/raw_ptr.h"
#include "ui/base/metadata/metadata_header_macros.h"
namespace views {
class ImageView;
} // namespace views
namespace ash {
class ImeControllerImpl;
// A list of available IMEs shown in the IME detailed view of the system menu,
// along with other items in the title row (a settings button and optional
// enterprise-controlled icon).
class IMEDetailedView : public ImeListView {
METADATA_HEADER(IMEDetailedView, ImeListView)
public:
IMEDetailedView(DetailedViewDelegate* delegate,
ImeControllerImpl* ime_controller);
IMEDetailedView(const IMEDetailedView&) = delete;
IMEDetailedView& operator=(const IMEDetailedView&) = delete;
~IMEDetailedView() override = default;
// ImeListView:
void Update(const std::string& current_ime_id,
const std::vector<ImeInfo>& list,
const std::vector<ImeMenuItem>& property_list,
bool show_keyboard_toggle,
SingleImeBehavior single_ime_behavior) override;
views::ImageView* controlled_setting_icon() {
return controlled_setting_icon_;
}
private:
// ImeListView:
void ResetImeListView() override;
void CreateExtraTitleRowButtons() override;
void ShowSettings();
const raw_ptr<ImeControllerImpl> ime_controller_;
// Gear icon that takes the user to IME settings.
raw_ptr<views::Button, DanglingUntriaged> settings_button_ = nullptr;
// This icon says that the IMEs are managed by policy.
raw_ptr<views::ImageView> controlled_setting_icon_ = nullptr;
};
} // namespace ash
#endif // ASH_SYSTEM_IME_IME_DETAILED_VIEW_H_