Change Exceptions and Properties and Add API level
[platform/core/csapi/uix-stt.git] / Tizen.Uix.Stt / Tizen.Uix.Stt / RecognitionResultEventArgs.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 System.Collections.Generic;
20 using System.Runtime.InteropServices;
21 using static Interop.Stt;
22 using static Tizen.Uix.Stt.ResultTime;
23
24 namespace Tizen.Uix.Stt
25 {
26     /// <summary>
27     /// The recognition result from the engine.
28     /// </summary>
29     /// <since_tizen> 3 </since_tizen>
30     public class RecognitionResultEventArgs
31     {
32         private ResultEvent _result;
33         private List<string> _data = new List<string>();
34         private ResultMessage _msg;
35         private int _dataCount;
36
37         internal RecognitionResultEventArgs(ResultEvent e, IntPtr data, int count, string msg)
38         {
39             _result = e;
40             switch (msg)
41             {
42                 case "stt.result.message.none":
43                     {
44                         _msg = ResultMessage.None;
45                         break;
46                     }
47
48                 case "stt.result.message.error.too.soon":
49                     {
50                         _msg = ResultMessage.TooSoon;
51                         break;
52                     }
53
54                 case "stt.result.message.error.too.short":
55                     {
56                         _msg = ResultMessage.TooShort;
57                         break;
58                     }
59
60                 case "stt.result.message.error.too.long":
61                     {
62                         _msg = ResultMessage.TooLong;
63                         break;
64                     }
65
66                 case "stt.result.message.error.too.quiet":
67                     {
68                         _msg = ResultMessage.TooQuiet;
69                         break;
70                     }
71
72                 case "stt.result.message.error.too.loud":
73                     {
74                         _msg = ResultMessage.TooLoud;
75                         break;
76                     }
77
78                 case "stt.result.message.error.too.fast":
79                     {
80                         _msg = ResultMessage.TooFast;
81                         break;
82                     }
83
84             }
85
86             this._dataCount = count;
87
88             _data.Clear();
89             if (count > 0)
90             {
91                 IntPtr[] dataArray = new IntPtr[count];
92                 Marshal.Copy(data, dataArray, 0, count);
93                 foreach (IntPtr handle in dataArray)
94                 {
95                     string info = Marshal.PtrToStringAnsi(handle);
96                     _data.Add(info);
97                 }
98             }
99         }
100
101         /// <summary>
102         /// The result event
103         /// </summary>
104         /// <since_tizen> 3 </since_tizen>
105         public ResultEvent Result
106         {
107             get
108             {
109                 return _result;
110             }
111         }
112
113         /// <summary>
114         /// Result texts.
115         /// </summary>
116         /// <since_tizen> 3 </since_tizen>
117         public IEnumerable<string> Data
118         {
119             get
120             {
121                 return _data;
122             }
123         }
124
125         /// <summary>
126         /// Returns the Result text count.
127         /// </summary>
128         /// <since_tizen> 3 </since_tizen>
129         public int DataCount
130         {
131             get
132             {
133                 return _dataCount;
134             }
135         }
136
137         /// <summary>
138         /// Engine message
139         /// </summary>
140         /// <since_tizen> 3 </since_tizen>
141         public ResultMessage Message
142         {
143             get
144             {
145                 return _msg;
146             }
147         }
148     }
149 }