blob: fe20120feb7f3181567a016278f8df4193918c80 [file] [log] [blame]
// Copyright 2012 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_SYSTEM_IME_TRAY_IME_CHROMEOS_H_
#define ASH_SYSTEM_IME_TRAY_IME_CHROMEOS_H_
#include <stddef.h>
#include "ash/public/interfaces/ime_info.mojom.h"
#include "ash/system/ime_menu/ime_list_view.h"
#include "base/macros.h"
namespace views {
class ImageView;
} // namespace views
namespace ash {
class ImeController;
namespace tray {
// 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 {
public:
IMEDetailedView(DetailedViewDelegate* delegate,
ImeController* ime_controller);
~IMEDetailedView() override = default;
void Update(const std::string& current_ime_id,
const std::vector<mojom::ImeInfo>& list,
const std::vector<mojom::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 HandleButtonPressed(views::Button* sender,
const ui::Event& event) override;
void CreateExtraTitleRowButtons() override;
void ShowSettings();
ImeController* const ime_controller_;
// Gear icon that takes the user to IME settings.
views::Button* settings_button_ = nullptr;
// This icon says that the IMEs are managed by policy.
views::ImageView* controlled_setting_icon_ = nullptr;
DISALLOW_COPY_AND_ASSIGN(IMEDetailedView);
};
}
} // namespace ash
#endif // ASH_SYSTEM_IME_TRAY_IME_CHROMEOS_H_