Review Uix.InputMethod/SttEngine/TtsEngine API cs files
[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     public enum InputHints
224     {
225         /// <summary>
226         /// None.
227         /// </summary>
228         None,
229         /// <summary>
230         /// AutoComplete.
231         /// </summary>
232         AutoComplete,
233         /// <summary>
234         /// SensitiveData.
235         /// </summary>
236         SensitiveData,
237         /// <summary>
238         /// Multiline.
239         /// </summary>
240         Multiline,
241         /// <summary>
242         /// Undefined.
243         /// </summary>
244         Undefined
245     };
246
247     /// <summary>
248     /// Enumeration for the BiDirection.
249     /// </summary>
250     /// <since_tizen> 4 </since_tizen>
251     public enum BiDirection
252     {
253         /// <summary>
254         /// Neutral.
255         /// </summary>
256         Neutral,
257         /// <summary>
258         /// LTR.
259         /// </summary>
260         LTR,
261         /// <summary>
262         /// RTL.
263         /// </summary>
264         RTL,
265         /// <summary>
266         /// Undefined.
267         /// </summary>
268         Undefined
269     };
270
271     /// <summary>
272     /// Enumeration for the InputPanel language.
273     /// </summary>
274     /// <since_tizen> 4 </since_tizen>
275     public enum InputPanelLanguage
276     {
277         /// <summary>
278         /// Automatic.
279         /// </summary>
280         Automatic,
281         /// <summary>
282         /// Alphabet.
283         /// </summary>
284         Alphabet,
285         /// <summary>
286         /// Undefined.
287         /// </summary>
288         Undefined
289     };
290
291     /// <summary>
292     /// This class represents the context of the InputMethodEditor.
293     /// </summary>
294     /// <since_tizen> 4 </since_tizen>
295     public class InputMethodContext
296     {
297         private IntPtr _handle;
298         internal InputMethodContext(IntPtr handle)
299         {
300             _handle = handle;
301         }
302
303         /// <summary>
304         /// Gets the layout information.
305         /// </summary>
306         /// <since_tizen> 4 </since_tizen>
307         public InputPanelLayout Layout
308         {
309             get
310             {
311                 InputPanelLayout layout;
312                 ErrorCode error = ImeContextGetLayout(_handle, out layout);
313                 if (error != ErrorCode.None)
314                 {
315                     Log.Error(LogTag, "GetLayout Failed with error " + error);
316                     return InputPanelLayout.Undefined;
317                 }
318                 return layout;
319             }
320         }
321
322         /// <summary>
323         /// Gets the layout variation information.
324         /// </summary>
325         /// <since_tizen> 4 </since_tizen>
326         public LayoutVariation LayoutVariation
327         {
328             get
329             {
330                 LayoutVariation layoutVariation;
331                 ErrorCode error = ImeContextGetLayoutVariation(_handle, out layoutVariation);
332                 if (error != ErrorCode.None)
333                 {
334                     Log.Error(LogTag, "GetLayoutVariation Failed with error " + error);
335                     return LayoutVariation.Undefined;
336                 }
337                 return layoutVariation;
338             }
339         }
340
341         /// <summary>
342         /// Gets the cursor position information.
343         /// </summary>
344         /// <since_tizen> 4 </since_tizen>
345         public int CursorPosition
346         {
347             get
348             {
349                 int cursorPosition;
350                 ErrorCode error = ImeContextGetCursorPosition(_handle, out cursorPosition);
351                 if (error != ErrorCode.None)
352                 {
353                     Log.Error(LogTag, "GetCursorPosition Failed with error " + error);
354                     return -1;
355                 }
356                 return cursorPosition;
357             }
358         }
359
360         /// <summary>
361         /// Gets the autocapital type information.
362         /// </summary>
363         /// <since_tizen> 4 </since_tizen>
364         public AutoCapitalization AutoCapitalization
365         {
366             get
367             {
368                 AutoCapitalization autoCapitalType;
369                 ErrorCode error = ImeContextGetAutocapitalType(_handle, out autoCapitalType);
370                 if (error != ErrorCode.None)
371                 {
372                     Log.Error(LogTag, "GetAutoCapitalization Failed with error " + error);
373                     return AutoCapitalization.Undefined;
374                 }
375                 return autoCapitalType;
376             }
377         }
378
379         /// <summary>
380         /// Gets the Return key label type information.
381         /// </summary>
382         /// <since_tizen> 4 </since_tizen>
383         public InputPanelReturnKey ReturnKey
384         {
385             get
386             {
387                 InputPanelReturnKey returnKeyType;
388                 ErrorCode error = ImeContextGetReturnKey(_handle, out returnKeyType);
389                 if (error != ErrorCode.None)
390                 {
391                     Log.Error(LogTag, "GetReturnKey Failed with error " + error);
392                     return InputPanelReturnKey.Undefined;
393                 }
394                 return returnKeyType;
395             }
396         }
397
398         /// <summary>
399         /// Gets the Return key state information.
400         /// </summary>
401         /// <since_tizen> 4 </since_tizen>
402         public bool ReturnKeyState
403         {
404             get
405             {
406                 bool returnKeyState;
407                 ErrorCode error = ImeContextGetReturnKeyState(_handle, out returnKeyState);
408                 if (error != ErrorCode.None)
409                 {
410                     Log.Error(LogTag, "GetReturnKeyState Failed with error " + error);
411                     return false;
412                 }
413                 return returnKeyState;
414             }
415         }
416
417         /// <summary>
418         /// Gets the prediction mode information.
419         /// </summary>
420         /// <since_tizen> 4 </since_tizen>
421         public bool PredictionMode
422         {
423             get
424             {
425                 bool predictionMode;
426                 ErrorCode error = ImeContextGetPredictionMode(_handle, out predictionMode);
427                 if (error != ErrorCode.None)
428                 {
429                     Log.Error(LogTag, "GetPredictionMode Failed with error " + error);
430                     return false;
431                 }
432                 return predictionMode;
433             }
434         }
435
436         /// <summary>
437         /// Gets the password mode information.
438         /// </summary>
439         /// <since_tizen> 4 </since_tizen>
440         public bool PasswordMode
441         {
442             get
443             {
444                 bool passwordMode;
445                 ErrorCode error = ImeContextGetPasswordMode(_handle, out passwordMode);
446                 if (error != ErrorCode.None)
447                 {
448                     Log.Error(LogTag, "GetPasswordMode Failed with error " + error);
449                     return false;
450                 }
451                 return passwordMode;
452             }
453         }
454
455         /// <summary>
456         /// Gets the input hint information.
457         /// </summary>
458         /// <since_tizen> 4 </since_tizen>
459         public InputHints InputHint
460         {
461             get
462             {
463                 InputHints inputHint;
464                 ErrorCode error = ImeContextGetInputHint(_handle, out inputHint);
465                 if (error != ErrorCode.None)
466                 {
467                     Log.Error(LogTag, "GetInputHint Failed with error " + error);
468                     return InputHints.Undefined;
469                 }
470                 return inputHint;
471             }
472         }
473
474         /// <summary>
475         /// Gets the text bidirectional information.
476         /// </summary>
477         /// <since_tizen> 4 </since_tizen>
478         public BiDirection BiDirection
479         {
480             get
481             {
482                 BiDirection biDiDirection;
483                 ErrorCode error = ImeContextGetBidiDirection(_handle, out biDiDirection);
484                 if (error != ErrorCode.None)
485                 {
486                     Log.Error(LogTag, "GetBiDirection Failed with error " + error);
487                     return BiDirection.Undefined;
488                 }
489                 return biDiDirection;
490             }
491         }
492
493         /// <summary>
494         /// Gets the preferred language information.
495         /// </summary>
496         /// <since_tizen> 4 </since_tizen>
497         public InputPanelLanguage Language
498         {
499             get
500             {
501                 InputPanelLanguage langauge;
502                 ErrorCode error = ImeContextGetLanguage(_handle, out langauge);
503                 if (error != ErrorCode.None)
504                 {
505                     Log.Error(LogTag, "GetLanguage Failed with error " + error);
506                     return InputPanelLanguage.Undefined;
507                 }
508                 return langauge;
509             }
510         }
511     }
512 }