Reactos
1#pragma once
2
3#include "input.h"
4#include "locale_list.h"
5#include "layout_list.h"
6
7/*
8 * INPUT_LIST_NODE_FLAG_EDITED
9 * --- The modification flag. Since previous time, this entry is modified.
10 */
11#define INPUT_LIST_NODE_FLAG_EDITED 0x0001
12
13/*
14 * INPUT_LIST_NODE_FLAG_ADDED
15 * --- The addition flag. Since previous time, this entry is newly added.
16 */
17#define INPUT_LIST_NODE_FLAG_ADDED 0x0002
18
19/*
20 * INPUT_LIST_NODE_FLAG_DELETED
21 * --- The deletion flag.
22 * The application should ignore the entry with this flag if necessary.
23 */
24#define INPUT_LIST_NODE_FLAG_DELETED 0x0004
25
26/*
27 * INPUT_LIST_NODE_FLAG_DEFAULT
28 * --- The default flag. The entry with this flag should be single in the list.
29 */
30#define INPUT_LIST_NODE_FLAG_DEFAULT 0x0008
31
32typedef struct _INPUT_LIST_NODE
33{
34 WORD wFlags;
35
36 LOCALE_LIST_NODE *pLocale;
37 LAYOUT_LIST_NODE *pLayout;
38
39 HKL hkl; /* Only for loaded input methods */
40
41 LPWSTR pszIndicator;
42
43 struct _INPUT_LIST_NODE *pPrev;
44 struct _INPUT_LIST_NODE *pNext;
45} INPUT_LIST_NODE;
46
47
48VOID
49InputList_Create(VOID);
50
51BOOL
52InputList_Process(VOID);
53
54BOOL
55InputList_Add(LOCALE_LIST_NODE *pLocale, LAYOUT_LIST_NODE *pLayout);
56
57VOID
58InputList_SetDefault(INPUT_LIST_NODE *pNode);
59
60INT
61InputList_GetAliveCount(VOID);
62
63BOOL
64InputList_Remove(INPUT_LIST_NODE *pNode);
65
66BOOL
67InputList_RemoveByLang(LANGID wLangId);
68
69VOID
70InputList_Sort(VOID);
71
72VOID
73InputList_Destroy(VOID);
74
75INPUT_LIST_NODE*
76InputList_GetFirst(VOID);