imaxsp_sms.c
12.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
/* Include: MMI header file */
#include "MMI_features.h"
#ifdef __TOPWELL_IMAXSP_SMS__
#include "fseditorcuigprot.h"
#include "menucuigprot.h"
#include "inlinecuigprot.h"
#include "MMIDataType.h"
#include "kal_non_specific_general_types.h"
#include "wgui_touch_screen.h"
#include "Unicodexdcl.h"
#include "stdlib.h"
#include "kal_release.h"
#include "stdio.h"
#include "string.h"
#include "wgui_categories_util.h"
#include "wgui_categories_inputs.h"
#include "GlobalResDef.h"
#include "GlobalConstants.h"
#include "mmi_frm_mem_gprot.h"
#include "app_buff_alloc.h"
#include "mmi_frm_scenario_gprot.h"
#include "wgui_inline_edit.h"
#include "CustDataRes.h"
#include "gui_data_types.h"
#include "gui_typedef.h"
#include "ImeGprot.h"
#include "ImeGprotEnums.h"
#include "mmi_frm_events_gprot.h"
#include "SmsSrvGprot.h"
#include "imaxsp_sms.h"
#include "AlertScreen.h"
#include "CommonScreensResDef.h"
//static mmi_menu_id imaxsp_select_menu_id;
/* Include: PS header file */
#ifdef __TOPWELL_MMI_IMAX_MODE2__
imaxsp_data_struct g_imaxsp_sms_list[]=
{
{MENU_IMAXSP_01_01_01,"START MCCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_01_02,"STOP MCCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_04_01,"START MCBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_04_02,"STOP MCBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
};
#elif defined(__TOPWELL_MMI_IMAX_MODE3__)
imaxsp_data_struct g_imaxsp_sms_list[]=
{
{MENU_IMAXSP_01_01_01,"START MCCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_01_02,"STOP MCCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_04_01,"START MCBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_04_02,"STOP MCBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
};
#else
imaxsp_data_struct g_imaxsp_sms_list[]=
{
{MENU_IMAXSP_01_01_01,"START IMXCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_01_02,"STOP IMXCN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_02,"CRIC",IMAXSP_SMS_PORT_6969,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_03_01,"START IMXSN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_03_02,"STOP IMXSN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_04_01,"START IMXBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_01_04_02,"STOP IMXBN",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_SMS},
{MENU_IMAXSP_02_01,"NULL",IMAXSP_SMS_PORT_5959,IMAXSP_SRV_TYPE_IVR},
{MENU_IMAXSP_02_02,"NULL",IMAXSP_SMS_PORT_6969,IMAXSP_SRV_TYPE_IVR},
{MENU_IMAXSP_02_03,"NULL",IMAXSP_SMS_PORT_16232,IMAXSP_SRV_TYPE_IVR}
};
#endif
/* Include: PS header file */
char g_imaxsp_send_content_buff[IMAXSP_SMS_CONTENT_LEN];
U16 g_imaxsp_sms_list_index;
/* * Local Function */
void mmi_imaxspsms_allmenu_selected(mmi_menu_id imaxspsms_menuid);
void mmi_imaxspsms_prepare_sms(U16 index);
void mmi_imaxspcall_confirm(void);
void mmi_imaxspsms_confirm(void);
extern void MakeCall(PS8);
mmi_ret mmi_main_imaxspsms_proc(mmi_event_struct *evt)
{
cui_menu_event_struct *menu_evt = (cui_menu_event_struct*)evt;
mmi_menu_id hilight_menu = menu_evt->highlighted_menu_id;
if(evt->evt_id == EVT_ID_GROUP_EXIT)
{
}
switch (menu_evt->evt_id)
{
case EVT_ID_CUI_MENU_LIST_ENTRY:
break;
case EVT_ID_CUI_MENU_LIST_EXIT:
break;
case EVT_ID_CUI_MENU_ITEM_HILITE:
//mmi_imaxspsms_allmenu_Highlight(hilight_menu);
break;
case EVT_ID_CUI_MENU_ITEM_SELECT:
mmi_imaxspsms_allmenu_selected(hilight_menu);
break;
case EVT_ID_CUI_MENU_ITEM_TAP:
break;
case EVT_ID_CUI_MENU_ITEM_CSK_SELECT:
mmi_imaxspsms_allmenu_selected(hilight_menu);
break;
case EVT_ID_CUI_MENU_CLOSE_REQUEST:
cui_menu_close(menu_evt->sender_id);
break;
case EVT_ID_CUI_MENU_CHECKBOX_CHANGE_STATE:
break;
}
return MMI_RET_OK;
}
void mmi_imaxspsms_entry_screen(void)
{
mmi_id imaxsp_menu_cui_id;
imaxsp_menu_cui_id = cui_menu_create(
GRP_ID_IMAXSP_SMS,
CUI_MENU_SRC_TYPE_RESOURCE,
CUI_MENU_TYPE_APPSUB,
MENU_IMAXSP,
MMI_TRUE,
NULL);
cui_menu_run(imaxsp_menu_cui_id);
}
void mmi_imaxspsms_entry_common_screen(mmi_menu_id imaxspsms_menuid)
{
mmi_id horse_menu_cui_id;
horse_menu_cui_id = cui_menu_create(
GRP_ID_IMAXSP_SMS,
CUI_MENU_SRC_TYPE_RESOURCE,
CUI_MENU_TYPE_APPSUB,
imaxspsms_menuid,
MMI_TRUE,
NULL);
cui_menu_run(horse_menu_cui_id);
}
void mmi_imaxspsms_entry(void)
{
S16 error;
mmi_frm_group_create(GRP_ID_ROOT, GRP_ID_IMAXSP_SMS, mmi_main_imaxspsms_proc, (void*)NULL);
mmi_frm_group_enter(GRP_ID_IMAXSP_SMS, MMI_FRM_NODE_SMART_CLOSE_FLAG);
mmi_imaxspsms_entry_screen();
}
void Highlightimaxspsms(void)
{
SetLeftSoftkeyFunction(mmi_imaxspsms_entry, KEY_EVENT_UP);
SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
SetKeyHandler(mmi_imaxspsms_entry, KEY_ENTER, KEY_EVENT_UP);
}
void mmi_imaxspsms_allmenu_selected(mmi_menu_id imaxspsms_menuid)
{
U16 i = 0;
U16 thearraylenth = sizeof(g_imaxsp_sms_list)/sizeof(imaxsp_data_struct);
//xiaonan note
if((srv_sim_ctrl_is_available(MMI_SIM1) == MMI_FALSE)&&(srv_sim_ctrl_is_available(MMI_SIM2) == MMI_FALSE))
{
mmi_sms_display_popup_ext(
STR_GLOBAL_INSERT_SIM_CARD,
MMI_EVENT_FAILURE);
return;
}
for(;i<thearraylenth;i++)
{
if(g_imaxsp_sms_list[i].menuid == imaxspsms_menuid)
{
g_imaxsp_sms_list_index = i;
mmi_imaxspsms_prepare_sms(i);
}
}
if(i == thearraylenth)
mmi_imaxspsms_entry_common_screen(imaxspsms_menuid);
}
static mmi_ret mmi_imaxspsms_confirm_callback(mmi_event_struct *mmi_evt)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_alert_result_evt_struct *evt = (mmi_alert_result_evt_struct*)mmi_evt;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if(evt->evt_id == EVT_ID_ALERT_QUIT)
{
switch(evt->result)
{
case MMI_ALERT_CNFM_1:
mmi_imaxspsms_sending_sms();
break;
case MMI_ALERT_CNFM_3:
mmi_frm_group_close(evt->alert_id);
break;
default:
break;
}
}
return MMI_RET_OK;
}
void mmi_imaxspsms_confirm(void)
{
mmi_confirm_property_struct confirm_arg;
U16 i = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
//此处加一个弹出框 yes or no的确认
//弹出框的内容是STR_MENU_IMAXSP_SMS_POPUP_INFO or STR_MENU_IMAXSP_IVR_POPUP_INFO
mmi_confirm_property_init(&confirm_arg, CNFM_TYPE_USER_DEFINE);
confirm_arg.softkey[0].str = (WCHAR *)((UI_string_type)get_string(STR_GLOBAL_OK));
confirm_arg.softkey[2].str = (WCHAR *)((UI_string_type)get_string(STR_GLOBAL_EXIT));
confirm_arg.parent_id = GRP_ID_ROOT;
confirm_arg.callback = mmi_imaxspsms_confirm_callback;
mmi_confirm_display_ext(STR_MENU_IMAXSP_SMS_POPUP_INFO,
MMI_EVENT_QUERY,
&confirm_arg);
}
static mmi_ret mmi_imaxspcall_confirm_callback(mmi_event_struct *mmi_evt)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
mmi_alert_result_evt_struct *evt = (mmi_alert_result_evt_struct*)mmi_evt;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if(evt->evt_id == EVT_ID_ALERT_QUIT)
{
switch(evt->result)
{
case MMI_ALERT_CNFM_1:
mmi_imaxspsms_call();
break;
case MMI_ALERT_CNFM_3:
mmi_frm_group_close(evt->alert_id);
break;
default:
break;
}
}
return MMI_RET_OK;
}
void mmi_imaxspcall_confirm(void)
{
mmi_confirm_property_struct confirm_arg;
U16 i = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
//此处加一个弹出框 yes or no的确认
//弹出框的内容是STR_MENU_IMAXSP_SMS_POPUP_INFO or STR_MENU_IMAXSP_IVR_POPUP_INFO
mmi_confirm_property_init(&confirm_arg, CNFM_TYPE_USER_DEFINE);
confirm_arg.softkey[0].str = (WCHAR *)((UI_string_type)get_string(STR_GLOBAL_OK));
confirm_arg.softkey[2].str = (WCHAR *)((UI_string_type)get_string(STR_GLOBAL_EXIT));
confirm_arg.parent_id = GRP_ID_ROOT;
confirm_arg.callback = mmi_imaxspcall_confirm_callback;
mmi_confirm_display_ext(STR_MENU_IMAXSP_IVR_POPUP_INFO,
MMI_EVENT_QUERY,
&confirm_arg);
}
void mmi_imaxspsms_prepare_sms(U16 index)
{
//此处加一个弹出框 yes or no的确认
//弹出框的内容是STR_MENU_IMAXSP_SMS_POPUP_INFO or STR_MENU_IMAXSP_IVR_POPUP_INFO
//自行完成
if(g_imaxsp_sms_list[index].type ==IMAXSP_SRV_TYPE_SMS)
{
mmi_asc_n_to_ucs2((S8*)g_imaxsp_send_content_buff,
(S8*)g_imaxsp_sms_list[index].smscontent,
sizeof(g_imaxsp_sms_list[index].smscontent));
mmi_imaxspsms_confirm();
}
else
{
mmi_imaxspcall_confirm();
}
}
MMI_BOOL mmi_imaxspsms_call(void)
{
S8 ucs2_addr[20];
switch(g_imaxsp_sms_list[g_imaxsp_sms_list_index].port)
{
case IMAXSP_SMS_PORT_5959:
mmi_asc_n_to_ucs2((S8*)ucs2_addr, (S8*)"5959", SRV_SMS_MAX_ADDR_LEN+1);
break;
case IMAXSP_SMS_PORT_6969:
mmi_asc_n_to_ucs2((S8*)ucs2_addr, (S8*)"6969", SRV_SMS_MAX_ADDR_LEN+1);
break;
case IMAXSP_SMS_PORT_16232:
mmi_asc_n_to_ucs2((S8*)ucs2_addr, (S8*)"16232", SRV_SMS_MAX_ADDR_LEN+1);
break;
}
//makecall(ucs2_addr);//自行完成
MakeCall(ucs2_addr);
}
MMI_BOOL mmi_imaxspsms_sending_sms(void)
{
int numlen = 0;
SMS_HANDLE srv_send_handle,srv_save_handle = NULL;
srv_sms_setting_struct default_setting;
S8 ucs2_addr[(SRV_SMS_MAX_ADDR_LEN + 1) * ENCODING_LENGTH];
S8 temp_imaxsp_uni_send[80];
S8 pError = 0;
srv_send_handle = srv_sms_get_send_handle ();
if(srv_sim_ctrl_is_available(MMI_SIM1) == MMI_TRUE)
{
memcpy(&default_setting, srv_sms_get_default_setting(SRV_SMS_SIM_1), sizeof (srv_sms_setting_struct));
srv_sms_set_sim_id (srv_send_handle, SRV_SMS_SIM_1);
pError = 1;
}
if(srv_sim_ctrl_is_available(MMI_SIM2) == MMI_TRUE && pError == 0)
{
memcpy(&default_setting, srv_sms_get_default_setting(SRV_SMS_SIM_2), sizeof (srv_sms_setting_struct));
srv_sms_set_sim_id (srv_send_handle, SRV_SMS_SIM_2);
pError = 1;
}
if(!pError) return MMI_FALSE;
if (default_setting.sc_addr[0] == '\0') return;
switch(g_imaxsp_sms_list[g_imaxsp_sms_list_index].port)
{
case IMAXSP_SMS_PORT_5959:
mmi_asc_n_to_ucs2((S8*)ucs2_addr, (S8*)"5959", SRV_SMS_MAX_ADDR_LEN+1);
break;
case IMAXSP_SMS_PORT_6969:
mmi_asc_n_to_ucs2((S8*)ucs2_addr, (S8*)"6969", SRV_SMS_MAX_ADDR_LEN+1);
break;
}
srv_sms_set_address(srv_send_handle, ucs2_addr);
srv_sms_set_content_dcs (srv_send_handle, SRV_SMS_DCS_7BIT);
mmi_asc_n_to_ucs2((S8*)temp_imaxsp_uni_send,
(S8*)g_imaxsp_sms_list[g_imaxsp_sms_list_index].smscontent,
sizeof(g_imaxsp_sms_list[g_imaxsp_sms_list_index].smscontent));
mmi_ucs2cpy((CHAR *)g_imaxsp_send_content_buff, (CHAR *)temp_imaxsp_uni_send);
srv_sms_set_content (srv_send_handle,(S8*) g_imaxsp_send_content_buff,(U16)((app_ucs2_wcslen(g_imaxsp_send_content_buff)+1)*2));
srv_sms_set_send_type (srv_send_handle, SRV_SMS_BG_SAVE_SEND);
// srv_sms_set_status_report(srv_send_handle, MMI_FALSE);
// if(srv_save_handle != NULL)
// srv_sms_save_msg(srv_save_handle, mmi_sms_schedule_save_sms_rsp, NULL);
#ifdef __MTK_TARGET__
srv_sms_send_msg(srv_send_handle, NULL, (void*)0);
#endif
mmi_sms_display_popup_ext(STR_GLOBAL_SENT, MMI_EVENT_FAILURE);//xiaonan note
}
#endif