Fix enum values to get InputHint correctly
[platform/core/csapi/tizenfx.git] / src / Tizen.Uix.InputMethod / Tizen.Uix.InputMethod / InputMethodContext.cs
1 /*
2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3 *
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17
18 using System;
19 using static Interop.InputMethod;
20
21 namespace Tizen.Uix.InputMethod
22 {
23     /// <summary>
24     /// Enumeration for the input panel layout.
25     /// </summary>
26     /// <since_tizen> 4 </since_tizen>
27     public enum InputPanelLayout
28     {
29         /// <summary>
30         /// Normal.
31         /// </summary>
32         LayoutNormal,
33         /// <summary>
34         /// Number.
35         /// </summary>
36         LayoutNumber,
37         /// <summary>
38         /// Email.
39         /// </summary>
40         LayoutEMail,
41         /// <summary>
42         /// URL.
43         /// </summary>
44         LayoutURL,
45         /// <summary>
46         /// Phone Number.
47         /// </summary>
48         LayoutPhoneNumber,
49         /// <summary>
50         /// IP.
51         /// </summary>
52         LayoutIP,
53         /// <summary>
54         /// Month.
55         /// </summary>
56         LayoutMonth,
57         /// <summary>
58         /// Number Only.
59         /// </summary>
60         LayoutNumberOnly,
61         /// <summary>
62         /// Invalid.
63         /// </summary>
64         LayoutInvalid,
65         /// <summary>
66         /// HEX.
67         /// </summary>
68         LayoutHEX,
69         /// <summary>
70         /// Terminal.
71         /// </summary>
72         LayoutTerminal,
73         /// <summary>
74         /// Password.
75         /// </summary>
76         LayoutPassword,
77         /// <summary>
78         /// Date and time.
79         /// </summary>
80         LayoutDateTime,
81         /// <summary>
82         /// Emoticon.
83         /// </summary>
84         LayoutEmoticon,
85         /// <summary>
86         /// Voice.
87         /// </summary>
88         LayoutVoice,
89         /// <summary>
90         /// Undefined.
91         /// </summary>
92         Undefined
93     };
94
95     /// <summary>
96     /// Enumeration for the layout variation.
97     /// </summary>
98     /// <since_tizen> 4 </since_tizen>
99     public enum LayoutVariation
100     {
101         /// <summary>
102         /// The plain normal layout.
103         /// </summary>
104         NormalNormal = 0,
105         /// <summary>
106         /// Filename layout; symbols such as '/', '\*', '\', '|', '&lt;', '&gt;', '?', '&quot;', and ':' should be disabled.
107         /// </summary>
108         NormalFileName,
109         /// <summary>
110         /// The name of a person.
111         /// </summary>
112         NormalPersonName,
113         /// <summary>
114         /// The plain normal number layout.
115         /// </summary>
116         NumberOnlyNormal = 0,
117         /// <summary>
118         /// The number layout to allow a negative sign.
119         /// </summary>
120         NumberOnlySigned,
121         /// <summary>
122         /// The number layout to allow a decimal point to provide fractional value.
123         /// </summary>
124         NumberOnlyDecimal,
125         /// <summary>
126         /// The number layout to allow a decimal point and negative sign.
127         /// </summary>
128         NumberOnlySignedAndDecimal,
129         /// <summary>
130         /// The normal password layout.
131         /// </summary>
132         PasswordNormal = 0,
133         /// <summary>
134         /// The password layout to allow only a number.
135         /// </summary>
136         PasswordNumberOnly,
137         /// <summary>
138         /// Undefined.
139         /// </summary>
140         Undefined
141     };
142
143     /// <summary>
144     /// Enumeration for the AutoCapital types.
145     /// </summary>
146     /// <since_tizen> 4 </since_tizen>
147     public enum AutoCapitalization
148     {
149         /// <summary>
150         /// None.
151         /// </summary>
152         None,
153         /// <summary>
154         /// Word.
155         /// </summary>
156         Word,
157         /// <summary>
158         /// Sentence.
159         /// </summary>
160         Sentence,
161         /// <summary>
162         /// All characters.
163         /// </summary>
164         AllCharacter,
165         /// <summary>
166         /// Undefined.
167         /// </summary>
168         Undefined
169     };
170
171     /// <summary>
172     /// Enumeration for the InputPanel ReturnKey types.
173     /// </summary>
174     /// <since_tizen> 4 </since_tizen>
175     public enum InputPanelReturnKey
176     {
177         /// <summary>
178         /// Default.
179         /// </summary>
180         Default,
181         /// <summary>
182         /// Done.
183         /// </summary>
184         Done,
185         /// <summary>
186         /// Go.
187         /// </summary>
188         Go,
189         /// <summary>
190         /// Join.
191         /// </summary>
192         Join,
193         /// <summary>
194         /// Login.
195         /// </summary>
196         Login,
197         /// <summary>
198         /// Next.
199         /// </summary>
200         Next,
201         /// <summary>
202         /// Search.
203         /// </summary>
204         Search,
205         /// <summary>
206         /// Send.
207         /// </summary>
208         Send,
209         /// <summary>
210         /// SignIn.
211         /// </summary>
212         SignIn,
213         /// <summary>
214         /// Undefined.
215         /// </summary>
216         Undefined
217     };
218
219     /// <summary>
220     /// Enumeration for the InputHints.
221     /// </summary>
222     /// <since_tizen> 4 </since_tizen>
223     [Flags]
224     public enum InputHints
225     {
226         /// <summary>
227         /// None.
228         /// </summary>
229         None = 0,
230         /// <summary>
231         /// AutoComplete.
232         /// </summary>
233         AutoComplete = 1 << 0,
234         /// <summary>
235         /// SensitiveData.
236         /// </summary>
237         SensitiveData = 1 << 1,
238         /// <summary>
239         /// Multiline.
240         /// </summary>
241         Multiline = 1 << 2,
242         /// <summary>
243         /// Undefined.
244         /// </summary>
245         Undefined = 0
246     };
247
248     /// <summary>
249     /// Enumeration for the BiDirection.
250     /// </summary>
251     /// <since_tizen> 4 </since_tizen>
252     public enum BiDirection
253     {
254         /// <summary>
255         /// Neutral.
256         /// </summary>
257         Neutral,
258         /// <summary>
259         /// LTR.
260         /// </summary>
261         LTR,
262         /// <summary>
263         /// RTL.
264         /// </summary>
265         RTL,
266         /// <summary>
267         /// Undefined.
268         /// </summary>
269         Undefined
270     };
271
272     /// <summary>
273     /// Enumeration for the InputPanel language.
274     /// </summary>
275     /// <since_tizen> 4 </since_tizen>
276     public enum InputPanelLanguage
277     {
278         /// <summary>
279         /// Automatic.
280         /// </summary>
281         Automatic,
282         /// <summary>
283         /// Alphabet.
284         /// </summary>
285         Alphabet,
286         /// <summary>
287         /// Undefined.
288         /// </summary>
289         Undefined
290     };
291
292     /// <summary>
293     /// This class represents the context of the InputMethodEditor.
294     /// </summary>
295     /// <since_tizen> 4 </since_tizen>
296     public class InputMethodContext
297     {
298         private IntPtr _handle;
299         internal InputMethodContext(IntPtr handle)
300         {
301             _handle = handle;
302         }
303
304         /// <summary>
305         /// Gets the layout information.
306         /// </summary>
307         /// <since_tizen> 4 </since_tizen>
308         public InputPanelLayout Layout
309         {
310             get
311             {
312                 InputPanelLayout layout;
313                 ErrorCode error = ImeContextGetLayout(_handle, out layout);
314                 if (error != ErrorCode.None)
315                 {
316                     Log.Error(LogTag, "GetLayout Failed with error " + error);
317                     return InputPanelLayout.Undefined;
318                 }
319                 return layout;
320             }
321         }
322
323         /// <summary>
324         /// Gets the layout variation information.
325         /// </summary>
326         /// <since_tizen> 4 </since_tizen>
327         public LayoutVariation LayoutVariation
328         {
329             get
330             {
331                 LayoutVariation layoutVariation;
332                 ErrorCode error = ImeContextGetLayoutVariation(_handle, out layoutVariation);
333                 if (error != ErrorCode.None)
334                 {
335                     Log.Error(LogTag, "GetLayoutVariation Failed with error " + error);
336                     return LayoutVariation.Undefined;
337                 }
338                 return layoutVariation;
339             }
340         }
341
342         /// <summary>
343         /// Gets the cursor position information.
344         /// </summary>
345         /// <since_tizen> 4 </since_tizen>
346         public int CursorPosition
347         {
348             get
349             {
350                 int cursorPosition;
351                 ErrorCode error = ImeContextGetCursorPosition(_handle, out cursorPosition);
352                 if (error != ErrorCode.None)
353                 {
354                     Log.Error(LogTag, "GetCursorPosition Failed with error " + error);
355                     return -1;
356                 }
357                 return cursorPosition;
358             }
359         }
360
361         /// <summary>
362         /// Gets the autocapital type information.
363         /// </summary>
364         /// <since_tizen> 4 </since_tizen>
365         public AutoCapitalization AutoCapitalization
366         {
367             get
368             {
369                 AutoCapitalization autoCapitalType;
370                 ErrorCode error = ImeContextGetAutocapitalType(_handle, out autoCapitalType);
371                 if (error != ErrorCode.None)
372                 {
373                     Log.Error(LogTag, "GetAutoCapitalization Failed with error " + error);
374                     return AutoCapitalization.Undefined;
375                 }
376                 return autoCapitalType;
377             }
378         }
379
380         /// <summary>
381         /// Gets the Return key label type information.
382         /// </summary>
383         /// <since_tizen> 4 </since_tizen>
384         public InputPanelReturnKey ReturnKey
385         {
386             get
387             {
388                 InputPanelReturnKey returnKeyType;
389                 ErrorCode error = ImeContextGetReturnKey(_handle, out returnKeyType);
390                 if (error != ErrorCode.None)
391                 {
392                     Log.Error(LogTag, "GetReturnKey Failed with error " + error);
393                     return InputPanelReturnKey.Undefined;
394                 }
395                 return returnKeyType;
396             }
397         }
398
399         /// <summary>
400         /// Gets the Return key state information.
401         /// </summary>
402         /// <since_tizen> 4 </since_tizen>
403         public bool ReturnKeyState
404         {
405             get
406             {
407                 bool returnKeyState;
408                 ErrorCode error = ImeContextGetReturnKeyState(_handle, out returnKeyState);
409                 if (error != ErrorCode.None)
410                 {
411                     Log.Error(LogTag, "GetReturnKeyState Failed with error " + error);
412                     return false;
413                 }
414                 return returnKeyState;
415             }
416         }
417
418         /// <summary>
419         /// Gets the prediction mode information.
420         /// </summary>
421         /// <since_tizen> 4 </since_tizen>
422         public bool PredictionMode
423         {
424             get
425             {
426                 bool predictionMode;
427                 ErrorCode error = ImeContextGetPredictionMode(_handle, out predictionMode);
428                 if (error != ErrorCode.None)
429                 {
430                     Log.Error(LogTag, "GetPredictionMode Failed with error " + error);
431                     return false;
432                 }
433                 return predictionMode;
434             }
435         }
436
437         /// <summary>
438         /// Gets the password mode information.
439         /// </summary>
440         /// <since_tizen> 4 </since_tizen>
441         public bool PasswordMode
442         {
443             get
444             {
445                 bool passwordMode;
446                 ErrorCode error = ImeContextGetPasswordMode(_handle, out passwordMode);
447                 if (error != ErrorCode.None)
448                 {
449                     Log.Error(LogTag, "GetPasswordMode Failed with error " + error);
450                     return false;
451                 }
452                 return passwordMode;
453             }
454         }
455
456         /// <summary>
457         /// Gets the input hint information.
458         /// </summary>
459         /// <since_tizen> 4 </since_tizen>
460         public InputHints InputHint
461         {
462             get
463             {
464                 InputHints inputHint;
465                 ErrorCode error = ImeContextGetInputHint(_handle, out inputHint);
466                 if (error != ErrorCode.None)
467                 {
468                     Log.Error(LogTag, "GetInputHint Failed with error " + error);
469                     return InputHints.Undefined;
470                 }
471                 return inputHint;
472             }
473         }
474
475         /// <summary>
476         /// Gets the text bidirectional information.
477         /// </summary>
478         /// <since_tizen> 4 </since_tizen>
479         public BiDirection BiDirection
480         {
481             get
482             {
483                 BiDirection biDiDirection;
484                 ErrorCode error = ImeContextGetBidiDirection(_handle, out biDiDirection);
485                 if (error != ErrorCode.None)
486                 {
487                     Log.Error(LogTag, "GetBiDirection Failed with error " + error);
488                     return BiDirection.Undefined;
489                 }
490                 return biDiDirection;
491             }
492         }
493
494         /// <summary>
495         /// Gets the preferred language information.
496         /// </summary>
497         /// <since_tizen> 4 </since_tizen>
498         public InputPanelLanguage Language
499         {
500             get
501             {
502                 InputPanelLanguage langauge;
503                 ErrorCode error = ImeContextGetLanguage(_handle, out langauge);
504                 if (error != ErrorCode.None)
505                 {
506                     Log.Error(LogTag, "GetLanguage Failed with error " + error);
507                     return InputPanelLanguage.Undefined;
508                 }
509                 return langauge;
510             }
511         }
512     }
513 }