| Index: chromeos_language.h
|
| diff --git a/chromeos_language.h b/chromeos_language.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..2e20e48f7297b395bc839f4660aa52f545c2596e
|
| --- /dev/null
|
| +++ b/chromeos_language.h
|
| @@ -0,0 +1,106 @@
|
| +// Copyright (c) 2009 The Chromium OS 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 CHROMEOS_LANGUAGE_H_
|
| +#define CHROMEOS_LANGUAGE_H_
|
| +
|
| +#include <string>
|
| +#include <vector>
|
| +
|
| +#include <base/basictypes.h>
|
| +
|
| +static const char kFallbackXKBId[] = "USA";
|
| +static const char kFallbackXKBDisplayName[] = "US";
|
| +
|
| +namespace chromeos {
|
| +
|
| +enum LanguageCategory {
|
| + LANGUAGE_CATEGORY_XKB,
|
| + LANGUAGE_CATEGORY_IME,
|
| +};
|
| +
|
| +// A structure which represents an IME language or a XKB layout.
|
| +struct InputLanguage {
|
| + InputLanguage(LanguageCategory category,
|
| + const std::string& id,
|
| + const std::string& display_name,
|
| + const std::string& icon_path)
|
| + : category(category),
|
| + id(id),
|
| + display_name(display_name),
|
| + icon_path(icon_path) {
|
| + }
|
| +
|
| + InputLanguage()
|
| + : category(LANGUAGE_CATEGORY_XKB) {
|
| + }
|
| +
|
| + // Languages are sorted by category, then by display_name, then by id.
|
| + bool operator<(const InputLanguage& other) const {
|
| + if (category == other.category) {
|
| + if (display_name == other.display_name) {
|
| + return id < other.id;
|
| + }
|
| + return display_name < other.display_name;
|
| + }
|
| + return category < other.category;
|
| + }
|
| +
|
| + bool operator==(const InputLanguage& other) const {
|
| + return (category == other.category) && (id == other.id);
|
| + }
|
| +
|
| + LanguageCategory category;
|
| +
|
| + // An ID that identifies an IME engine or a XKB layout (e.g., "anthy",
|
| + // "t:latn-post", "chewing").
|
| + std::string id;
|
| + // An IME or layout name which is used in the UI (e.g., "Anthy").
|
| + std::string display_name;
|
| + // Path to an icon (e.g., "/usr/share/ibus-chewing/icons/ibus-chewing.png").
|
| + // Empty if it does not exist.
|
| + std::string icon_path;
|
| +};
|
| +typedef std::vector<InputLanguage> InputLanguageList;
|
| +
|
| +// Creates dummy InputLanguageList object. Usually, this function is called only
|
| +// on development enviromnent where libcros.so does not exist. So, obviously
|
| +// you can not move this function to libcros.so. This function is called by
|
| +// src/chrome/browser/chromeos/language_library.cc when EnsureLoaded() fails.
|
| +inline InputLanguageList* CreateFallbackInputLanguageList() {
|
| + InputLanguageList* language_list = new InputLanguageList;
|
| + language_list->push_back(
|
| + InputLanguage(LANGUAGE_CATEGORY_XKB,
|
| + kFallbackXKBId,
|
| + kFallbackXKBDisplayName,
|
| + "" /* no icon */));
|
| + return language_list;
|
| +}
|
| +
|
| +class LanguageStatusConnection;
|
| +typedef void(*LanguageStatusMonitorFunction)(
|
| + void* language_library, const InputLanguage& current_language);
|
| +
|
| +// Establishes IBus connection to the ibus-daemon and DBus connection to
|
| +// the candidate window process. |monitor_function| will be called when IME
|
| +// language or XKB layout is changed.
|
| +extern LanguageStatusConnection* (*MonitorLanguageStatus)(
|
| + LanguageStatusMonitorFunction monitor_funcion, void* language_library);
|
| +
|
| +// Terminates IBus and DBus connections.
|
| +extern void (*DisconnectLanguageStatus)(LanguageStatusConnection* connection);
|
| +
|
| +// Gets all IME languages and XKB layouts that are currently available. Caller
|
| +// has to delete the returned list. This function might return NULL on error.
|
| +extern InputLanguageList* (*GetLanguages)(LanguageStatusConnection* connection);
|
| +
|
| +// Changes the current IME engine to |name| and enable IME (when |category| is
|
| +// LANGUAGE_CATEGORY_IME). Changes the current XKB layout to |name| and disable
|
| +// IME (when |category| is LANGUAGE_CATEGORY_XKB).
|
| +extern void (*ChangeLanguage)(LanguageStatusConnection* connection,
|
| + LanguageCategory category, const char* name);
|
| +
|
| +} // namespace chromeos
|
| +
|
| +#endif // CHROMEOS_POWER_H_
|
|
|