1/*
2 * Copyright (C) 2007 The Android Open Source Project
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
17package com.android.internal.telephony.cat;
18
19import android.graphics.Bitmap;
20
21/**
22 * Container class for proactive command parameters.
23 *
24 */
25class CommandParams {
26    CommandDetails mCmdDet;
27    // Variable to track if an optional icon load has failed.
28    boolean mLoadIconFailed = false;
29
30    CommandParams(CommandDetails cmdDet) {
31        mCmdDet = cmdDet;
32    }
33
34    AppInterface.CommandType getCommandType() {
35        return AppInterface.CommandType.fromInt(mCmdDet.typeOfCommand);
36    }
37
38    boolean setIcon(Bitmap icon) { return true; }
39
40    @Override
41    public String toString() {
42        return mCmdDet.toString();
43    }
44}
45
46class DisplayTextParams extends CommandParams {
47    TextMessage mTextMsg;
48
49    DisplayTextParams(CommandDetails cmdDet, TextMessage textMsg) {
50        super(cmdDet);
51        mTextMsg = textMsg;
52    }
53
54    @Override
55    boolean setIcon(Bitmap icon) {
56        if (icon != null && mTextMsg != null) {
57            mTextMsg.icon = icon;
58            return true;
59        }
60        return false;
61    }
62
63    @Override
64    public String toString() {
65        return "TextMessage=" + mTextMsg + " " + super.toString();
66    }
67}
68
69class LaunchBrowserParams extends CommandParams {
70    TextMessage mConfirmMsg;
71    LaunchBrowserMode mMode;
72    String mUrl;
73
74    LaunchBrowserParams(CommandDetails cmdDet, TextMessage confirmMsg,
75            String url, LaunchBrowserMode mode) {
76        super(cmdDet);
77        mConfirmMsg = confirmMsg;
78        mMode = mode;
79        mUrl = url;
80    }
81
82    @Override
83    boolean setIcon(Bitmap icon) {
84        if (icon != null && mConfirmMsg != null) {
85            mConfirmMsg.icon = icon;
86            return true;
87        }
88        return false;
89    }
90
91    @Override
92    public String toString() {
93        return "TextMessage=" + mConfirmMsg + " " + super.toString();
94    }
95}
96
97class SetEventListParams extends CommandParams {
98    int[] mEventInfo;
99    SetEventListParams(CommandDetails cmdDet, int[] eventInfo) {
100        super(cmdDet);
101        this.mEventInfo = eventInfo;
102    }
103}
104
105class PlayToneParams extends CommandParams {
106    TextMessage mTextMsg;
107    ToneSettings mSettings;
108
109    PlayToneParams(CommandDetails cmdDet, TextMessage textMsg,
110            Tone tone, Duration duration, boolean vibrate) {
111        super(cmdDet);
112        mTextMsg = textMsg;
113        mSettings = new ToneSettings(duration, tone, vibrate);
114    }
115
116    @Override
117    boolean setIcon(Bitmap icon) {
118        if (icon != null && mTextMsg != null) {
119            mTextMsg.icon = icon;
120            return true;
121        }
122        return false;
123    }
124}
125
126class CallSetupParams extends CommandParams {
127    TextMessage mConfirmMsg;
128    TextMessage mCallMsg;
129
130    CallSetupParams(CommandDetails cmdDet, TextMessage confirmMsg,
131            TextMessage callMsg) {
132        super(cmdDet);
133        mConfirmMsg = confirmMsg;
134        mCallMsg = callMsg;
135    }
136
137    @Override
138    boolean setIcon(Bitmap icon) {
139        if (icon == null) {
140            return false;
141        }
142        if (mConfirmMsg != null && mConfirmMsg.icon == null) {
143            mConfirmMsg.icon = icon;
144            return true;
145        } else if (mCallMsg != null && mCallMsg.icon == null) {
146            mCallMsg.icon = icon;
147            return true;
148        }
149        return false;
150    }
151}
152
153class SelectItemParams extends CommandParams {
154    Menu mMenu = null;
155    boolean mLoadTitleIcon = false;
156
157    SelectItemParams(CommandDetails cmdDet, Menu menu, boolean loadTitleIcon) {
158        super(cmdDet);
159        mMenu = menu;
160        mLoadTitleIcon = loadTitleIcon;
161    }
162
163    @Override
164    boolean setIcon(Bitmap icon) {
165        if (icon != null && mMenu != null) {
166            if (mLoadTitleIcon && mMenu.titleIcon == null) {
167                mMenu.titleIcon = icon;
168            } else {
169                for (Item item : mMenu.items) {
170                    if (item.icon != null) {
171                        continue;
172                    }
173                    item.icon = icon;
174                    break;
175                }
176            }
177            return true;
178        }
179        return false;
180    }
181}
182
183class GetInputParams extends CommandParams {
184    Input mInput = null;
185
186    GetInputParams(CommandDetails cmdDet, Input input) {
187        super(cmdDet);
188        mInput = input;
189    }
190
191    @Override
192    boolean setIcon(Bitmap icon) {
193        if (icon != null && mInput != null) {
194            mInput.icon = icon;
195        }
196        return true;
197    }
198}
199
200/*
201 * BIP (Bearer Independent Protocol) is the mechanism for SIM card applications
202 * to access data connection through the mobile device.
203 *
204 * SIM utilizes proactive commands (OPEN CHANNEL, CLOSE CHANNEL, SEND DATA and
205 * RECEIVE DATA to control/read/write data for BIP. Refer to ETSI TS 102 223 for
206 * the details of proactive commands procedures and their structures.
207 */
208class BIPClientParams extends CommandParams {
209    TextMessage mTextMsg;
210    boolean mHasAlphaId;
211
212    BIPClientParams(CommandDetails cmdDet, TextMessage textMsg, boolean has_alpha_id) {
213        super(cmdDet);
214        mTextMsg = textMsg;
215        mHasAlphaId = has_alpha_id;
216    }
217
218    @Override
219    boolean setIcon(Bitmap icon) {
220        if (icon != null && mTextMsg != null) {
221            mTextMsg.icon = icon;
222            return true;
223        }
224        return false;
225    }
226}
227