Merge remote-tracking branch 'origin/master' into tizen
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / internal / EXaml / Action / OtherActions.cs
1 /*
2  * Copyright(c) 2021 Samsung Electronics Co., Ltd.
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 using System;
18 using System.Collections.Generic;
19 using System.Text;
20 using Tizen.NUI.Binding;
21 using Tizen.NUI.Binding.Internals;
22
23 namespace Tizen.NUI.EXaml
24 {
25     internal class OtherActions : Action
26     {
27         internal OtherActions(GlobalDataList globalDataList, Action parent)
28         {
29             this.parent = parent;
30             this.globalDataList = globalDataList;
31         }
32
33         private Action parent;
34         private GlobalDataList globalDataList;
35
36         public Action DealChar(char c)
37         {
38             switch (c)
39             {
40                 case ' ':
41                 case '\n':
42                 case '\r':
43                     break;
44
45                 case 'a':
46                     parent?.OnActive();
47                     return parent;
48
49                 case '(':
50                     getValues = new GetValueListAction(')', this);
51                     return getValues;
52             }
53
54             return this;
55         }
56
57         public void Init()
58         {
59         }
60
61         public void OnActive()
62         {
63             if (null != getValues)
64             {
65                 int index = (int)getValues.ValueList[0];
66
67                 switch (index)
68                 {
69                     case 0:
70                         int typeIndex = (int)getValues.ValueList[1];
71                         var items = getValues.ValueList[2] as List<object>;
72                         var createArrayInstanceOp = new CreateArrayInstance(globalDataList, typeIndex, items);
73                         globalDataList.Operations.Add(createArrayInstanceOp);
74                         break;
75
76                     default:
77                         break;
78                 }
79             }
80
81             getValues = null;
82         }
83
84         private GetValueListAction getValues;
85     }
86 }