1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#ifndef ASH_IME_INPUT_METHOD_MENU_ITEM_H_
6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define ASH_IME_INPUT_METHOD_MENU_ITEM_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector>
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ash/ash_export.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace ash {
13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace ime {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A structure which represents a property for an input method engine.
16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)struct ASH_EXPORT InputMethodMenuItem {
17a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  InputMethodMenuItem(const std::string& in_key,
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      const std::string& in_label,
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      bool in_is_selection_item,
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                      bool in_is_selection_item_checked);
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  InputMethodMenuItem();
23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  ~InputMethodMenuItem();
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  bool operator==(const InputMethodMenuItem& other) const;
26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  bool operator!=(const InputMethodMenuItem& other) const;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Debug print function.
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string ToString() const;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string key;  // A key which identifies the property. Non-empty string.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                    // (e.g. "InputMode.HalfWidthKatakana")
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string label;  // A description of the property. Non-empty string.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                      // (e.g. "Switch to full punctuation mode", "Hiragana")
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_selection_item;  // true if the property is a selection item.
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  bool is_selection_item_checked;  // true if |is_selection_item| is true and
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   // the selection_item is selected.
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)typedef std::vector<InputMethodMenuItem> InputMethodMenuItemList;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}  // namespace ime
42a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)}  // namespace ash
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif  // ASH_IME_INPUT_METHOD_MENU_ITEM_H_
45