1 /*
2     SPDX-FileCopyrightText: 2014 Weng Xuetian <wengxt@gmail.com>
3 
4     SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
5 */
6 #ifndef ENGINEMANAGER_H
7 #define ENGINEMANAGER_H
8 #include <QByteArray>
9 #include <QList>
10 #include <QMap>
11 #include <QQueue>
12 #include <QString>
13 #include <QStringList>
14 #include <ibus.h>
15 
16 class EngineManager
17 {
18 public:
19     EngineManager();
20     virtual ~EngineManager();
21 
22     void setEngines(IBusEngineDesc **engines);
engines()23     IBusEngineDesc **engines()
24     {
25         return m_engines;
26     }
length()27     size_t length()
28     {
29         return m_length;
30     }
31     void setUseGlobalEngine(gboolean g_variant_get_boolean);
32     void setCurrentContext(const gchar *input_context_path);
33     QString currentEngine();
useGlobalEngine()34     bool useGlobalEngine()
35     {
36         return m_useGlobalEngine;
37     }
38     void setCurrentEngine(const char *name);
39     const char *navigate(IBusEngineDesc *engine, bool forward);
40     void moveToFirst(IBusEngineDesc *engine_desc);
41     QStringList engineOrder();
42     void setOrder(const gchar **engine_names, size_t len);
43     size_t getIndexByName(const char *name);
44 
45 private:
46     QQueue<QString> m_history;
47     QMap<QString, QString> m_engineMap;
48     QString m_currentContext;
49     IBusEngineDesc **m_engines;
50     size_t m_length;
51     bool m_useGlobalEngine;
52     void freeOldEngine();
53 };
54 
55 #endif // PROPERTYMANAGER_H
56