xref: /reactos/dll/cpl/input/input_list.h (revision 8ee308d7)
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 
32 typedef 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 
48 VOID
49 InputList_Create(VOID);
50 
51 BOOL
52 InputList_Process(VOID);
53 
54 BOOL
55 InputList_Add(LOCALE_LIST_NODE *pLocale, LAYOUT_LIST_NODE *pLayout);
56 
57 VOID
58 InputList_SetDefault(INPUT_LIST_NODE *pNode);
59 
60 VOID
61 InputList_Remove(INPUT_LIST_NODE *pNode);
62 
63 VOID
64 InputList_Destroy(VOID);
65 
66 INPUT_LIST_NODE*
67 InputList_GetFirst(VOID);
68