1// Copyright 2014 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 ASH_IME_INPUT_METHOD_MENU_ITEM_H_
6#define ASH_IME_INPUT_METHOD_MENU_ITEM_H_
7
8#include <string>
9#include <vector>
10#include "ash/ash_export.h"
11
12namespace ash {
13namespace ime {
14
15// A structure which represents a property for an input method engine.
16struct ASH_EXPORT InputMethodMenuItem {
17  InputMethodMenuItem(const std::string& in_key,
18                      const std::string& in_label,
19                      bool in_is_selection_item,
20                      bool in_is_selection_item_checked);
21
22  InputMethodMenuItem();
23  ~InputMethodMenuItem();
24
25  bool operator==(const InputMethodMenuItem& other) const;
26  bool operator!=(const InputMethodMenuItem& other) const;
27
28  // Debug print function.
29  std::string ToString() const;
30
31  std::string key;  // A key which identifies the property. Non-empty string.
32                    // (e.g. "InputMode.HalfWidthKatakana")
33  std::string label;  // A description of the property. Non-empty string.
34                      // (e.g. "Switch to full punctuation mode", "Hiragana")
35  bool is_selection_item;  // true if the property is a selection item.
36  bool is_selection_item_checked;  // true if |is_selection_item| is true and
37                                   // the selection_item is selected.
38};
39typedef std::vector<InputMethodMenuItem> InputMethodMenuItemList;
40
41}  // namespace ime
42}  // namespace ash
43
44#endif  // ASH_IME_INPUT_METHOD_MENU_ITEM_H_
45