1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_KEYBOARD_SWITCH_MENU_H_
6#define CHROME_BROWSER_CHROMEOS_LOGIN_KEYBOARD_SWITCH_MENU_H_
7#pragma once
8
9#include <string>
10
11#include "base/memory/scoped_ptr.h"
12#include "chrome/browser/chromeos/status/input_method_menu.h"
13#include "chrome/browser/chromeos/status/status_area_host.h"
14
15namespace chromeos {
16
17// A class for the button in the OOBE network configuration screen which expands
18// a dropdown menu for switching keyboard layout. Note that the InputMethodMenu
19// class implements the views::ViewMenuDelegate interface.
20class KeyboardSwitchMenu : public InputMethodMenu {
21 public:
22  KeyboardSwitchMenu();
23  virtual ~KeyboardSwitchMenu() {}
24
25  // InputMethodMenu::InputMethodMenuHost implementation.
26  virtual void UpdateUI(const std::string& input_method_id,
27                        const std::wstring& name,
28                        const std::wstring& tooltip,
29                        size_t num_active_input_methods);
30  virtual bool ShouldSupportConfigUI() { return false; }
31  virtual void OpenConfigUI() {}
32
33  // views::ViewMenuDelegate implementation which overrides the implementation
34  // in InputMethodMenu.
35  virtual void RunMenu(views::View* source, const gfx::Point& pt);
36
37  // Returns current keyboard name to be placed on the keyboard menu-button.
38  string16 GetCurrentKeyboardName() const;
39
40 private:
41  DISALLOW_COPY_AND_ASSIGN(KeyboardSwitchMenu);
42};
43
44}  // namespace chromeos
45
46#endif  // CHROME_BROWSER_CHROMEOS_LOGIN_KEYBOARD_SWITCH_MENU_H_
47