FreeCalypso > hg > tcs211-l1-reconst
comparison g23m/condat/ms/src/bmi/auiwappush.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:509db1a7b7b8 |
---|---|
1 /******************************************************************************* | |
2 | |
3 CONDAT (UK) | |
4 | |
5 ******************************************************************************** | |
6 | |
7 This software product is the property of Condat (UK) Ltd and may not be | |
8 disclosed to any third party without the express permission of the owner. | |
9 | |
10 ******************************************************************************** | |
11 | |
12 $Project name: | |
13 $Project code: | |
14 $Module: | |
15 $File: AUIWapPush.c | |
16 $Revision: | |
17 | |
18 $Author: Condat(UK) | |
19 $Date: | |
20 | |
21 ******************************************************************************** | |
22 | |
23 Description: | |
24 The user interface for WAP PUSH. | |
25 | |
26 ******************************************************************************** | |
27 | |
28 $History: AUIWapPush.c | |
29 | |
30 xrashmic 11 Jan, 2005 MMI-SPR-OMAPS00063638 | |
31 Ignoring the duplicate push message part received. (The same part | |
32 already exists in the push message store) | |
33 | |
34 xreddymn Mar-22-2005 MMI-SPR-29767 | |
35 Modified behaviour of SL push message handling in MMI | |
36 | |
37 xrashmic 9 May, 2005 MMI-SPR-30159 | |
38 Concat PUSH msg are stored and sent to wap client once all parts are received | |
39 | |
40 xreddymn Jan-10-2005 MMI-SPR-27618: Modified WAP push URL display screen | |
41 to prevent user from editing the contents. | |
42 | |
43 21/07/03 - SH - Created | |
44 | |
45 $End | |
46 | |
47 *******************************************************************************/ | |
48 | |
49 | |
50 #include <stdio.h> | |
51 #include <string.h> | |
52 #include <stdlib.h> | |
53 | |
54 | |
55 #if defined (NEW_FRAME) | |
56 | |
57 #include "typedefs.h" | |
58 #include "vsi.h" | |
59 #include "pei.h" | |
60 #include "custom.h" | |
61 #include "gsm.h" | |
62 | |
63 #else /* NEW_FRAME */ | |
64 | |
65 #include "STDDEFS.H" | |
66 #include "custom.h" | |
67 #include "gsm.h" | |
68 #include "vsi.h" | |
69 | |
70 #endif /* NEW_FRAME */ | |
71 | |
72 #include "mfw_sys.h" | |
73 | |
74 #include "mfw_mfw.h" | |
75 #include "mfw_win.h" | |
76 #include "mfw_kbd.h" | |
77 #include "mfw_edt.h" | |
78 #include "mfw_tim.h" | |
79 #include "mfw_phb.h" | |
80 #include "mfw_sms.h" | |
81 #include "mfw_icn.h" | |
82 #include "mfw_mnu.h" | |
83 #include "mfw_lng.h" | |
84 #include "mfw_sat.h" | |
85 #include "mfw_kbd.h" | |
86 #include "mfw_nm.h" | |
87 #include "mfw_cm.h" | |
88 | |
89 #include "dspl.h" | |
90 | |
91 #include "wapmic_types.h" | |
92 | |
93 #include "MmiMmi.h" | |
94 #include "MmiMain.h" | |
95 #include "MmiDummy.h" | |
96 #include "MmiDialogs.h" | |
97 #include "MmiLists.h" | |
98 #include "mmiCall.h" | |
99 | |
100 #include "MmiMenu.h" | |
101 #include "MmiSoftKeys.h" | |
102 #include "MmiResources.h" | |
103 | |
104 #include "MmiBlkLangDB.h" | |
105 #include "MmiBookUtils.h" | |
106 //#include "MmiEditor.h" | |
107 //#include "MmiEditor_i.h" | |
108 #include "MmiBookShared.h" | |
109 #include "ATBData.h" | |
110 #include "ATBWapAUI.h" | |
111 #include "mmiSmsMenu.h" | |
112 #include "mmismssend.h" | |
113 #include "AUIWapext.h" | |
114 #include "AUIWap.h" | |
115 #ifdef MMI_GPRS_ENABLED | |
116 #include "MmiGprs.h" | |
117 #endif | |
118 | |
119 #include "cus_aci.h" | |
120 #include "prim.h" | |
121 #ifndef PCM_2_FFS | |
122 #include "pcm.h" | |
123 #endif | |
124 | |
125 | |
126 #include "mmiColours.h" | |
127 #include "font_bitmaps.h" | |
128 | |
129 //xrashmic 9 May, 2005 MMI-SPR-30159 | |
130 #include "conc_sms.h" | |
131 #include "ffs/ffs.h" | |
132 #include "mfw_td.h" | |
133 | |
134 //xrashmic 9 May, 2005 MMI-SPR-30159 | |
135 //Maximum number of parts per message | |
136 #define MAX_PUSH_MSG_PARTS 5 | |
137 //Maximum PUSH message that can be stored in FFS | |
138 #define MAX_PUSH_MSG_STORAGE 5 | |
139 //Maximum duration after which the PUSH message will be deleted from FFS | |
140 #define MAX_DURATION 2 //no of days | |
141 | |
142 typedef struct | |
143 { | |
144 U16 msg_ref; | |
145 U8 msg_saved; | |
146 U8 seq_num; | |
147 U8 num_msgs; | |
148 U8 year; | |
149 U8 month; | |
150 U8 day; | |
151 }AUI_PUSH_REPOSITORY_TABLE; | |
152 AUI_PUSH_REPOSITORY_TABLE PUSH_Table[MAX_PUSH_MSG_STORAGE]; | |
153 | |
154 enum PUSH_STORAGE | |
155 { | |
156 MSG_NONE=0, | |
157 MSG_FFS, | |
158 MSG_NEW | |
159 }; | |
160 //xrashmic 11 Jan, 2005 MMI-SPR-OMAPS00063638 | |
161 typedef enum | |
162 { | |
163 DUPLICATE=-1, | |
164 NOT_FOUND=0, | |
165 FOUND | |
166 }PUSHMSG_SEARCH_RESULT; | |
167 typedef struct | |
168 { | |
169 U8 storage; | |
170 U8 index; | |
171 }AUI_SORTED_PUSH_REPOSITORY; | |
172 AUI_SORTED_PUSH_REPOSITORY PUSH_Sorted_Parts[MAX_PUSH_MSG_PARTS]; | |
173 | |
174 | |
175 static int AUI_wap_mfw_cb(MfwEvt event, MfwHnd hnd); | |
176 static void AUI_wap_push_start_load_SI(UBYTE result); | |
177 | |
178 static void AUI_wap_push_start_cb(UBYTE result); | |
179 static void AUI_wap_push_show_cb(T_MFW_HND win, USHORT identifier, USHORT reason); | |
180 static void AUI_wap_push_list_cb(T_MFW_HND win, ListMenuData *EntryListData); | |
181 | |
182 | |
183 /******************************************************************************* | |
184 | |
185 $Function: AUI_wap_push_start | |
186 | |
187 $Description: Start PUSH | |
188 SPR#2086 - SH - Added | |
189 | |
190 $Returns: None | |
191 | |
192 $Arguments: None | |
193 | |
194 *******************************************************************************/ | |
195 | |
196 void AUI_wap_push_start() | |
197 { | |
198 | |
199 #ifdef TRACE_AUIWAP | |
200 TRACE_FUNCTION("AUI_wap_push_start()"); | |
201 #endif | |
202 | |
203 /* Create SMS handler */ | |
204 | |
205 AUI_wap_start(WAP_PUSH, (T_WAP_CB)AUI_wap_push_start_cb); | |
206 | |
207 return; | |
208 } | |
209 | |
210 | |
211 static void AUI_wap_push_start_cb(UBYTE result) | |
212 { | |
213 T_WAP_DATA *data; | |
214 | |
215 TRACE_FUNCTION("AUI_wap_push_start_cb"); | |
216 | |
217 if (!result) | |
218 { | |
219 TRACE_EVENT("*** Failed to start up for WAP PUSH ***"); | |
220 return; | |
221 } | |
222 | |
223 data = AUI_wap_data(); | |
224 | |
225 data->PushData = (T_WAP_PUSH_DATA *)AUI_wap_memory_alloc(sizeof(T_WAP_PUSH_DATA)); | |
226 data->PushData->List = NULL; | |
227 data->PushData->list_created = FALSE; | |
228 data->PushData->service_indication = -1; | |
229 memset((void *)data->PushData->list_ids, 0, sizeof(WAP_PUSH_MAX_MESSAGES)); | |
230 | |
231 /* Create SMS handler */ | |
232 data->PushData->Sms_handler = sms_create(0, E_SMS_WAP_MT_RECEIVED, (T_MFW_CB)AUI_wap_mfw_cb); | |
233 | |
234 return; | |
235 } | |
236 | |
237 /******************************************************************************* | |
238 | |
239 $Function: AUI_wap_push_destroy | |
240 | |
241 $Description: Start PUSH | |
242 SPR#2086 - SH - Added | |
243 | |
244 $Returns: None | |
245 | |
246 $Arguments: None | |
247 | |
248 *******************************************************************************/ | |
249 | |
250 void AUI_wap_push_destroy() | |
251 { | |
252 T_WAP_DATA *data = AUI_wap_data(); | |
253 | |
254 #ifdef TRACE_AUIWAP | |
255 TRACE_FUNCTION("AUI_wap_push_destroy()"); | |
256 #endif | |
257 | |
258 if (!data) | |
259 { | |
260 return; | |
261 } | |
262 | |
263 if (!data->PushData) | |
264 { | |
265 return; | |
266 } | |
267 | |
268 if (data->PushData->List) | |
269 { | |
270 AUI_wap_push_list_destroy(); | |
271 } | |
272 | |
273 AUI_wap_memory_free((void *)data->PushData, sizeof(T_WAP_PUSH_DATA)); | |
274 | |
275 return; | |
276 } | |
277 | |
278 | |
279 /******************************************************************************* | |
280 | |
281 $Function: AUI_read_PUSH_table | |
282 | |
283 $Description: Reads the table from the FFS | |
284 //xrashmic 9 May, 2005 MMI-SPR-30159 | |
285 | |
286 $Returns: | |
287 | |
288 $Arguments: event - The event received | |
289 | |
290 *******************************************************************************/ | |
291 void AUI_read_PUSH_table(void) | |
292 { | |
293 T_FFS_OPEN_FLAGS Ffsflags; | |
294 fd_t FfsFd; | |
295 | |
296 Ffsflags = FFS_O_RDONLY; | |
297 FfsFd = ffs_open ("/mmi/concatwappush/table", Ffsflags); | |
298 if(FfsFd > 0) | |
299 { | |
300 ffs_read(FfsFd,(void*)PUSH_Table,sizeof(PUSH_Table)); | |
301 ffs_close(FfsFd); | |
302 } | |
303 else | |
304 TRACE_EVENT("Table open failed"); | |
305 } | |
306 | |
307 /******************************************************************************* | |
308 | |
309 $Function: AUI_store_PUSH_table | |
310 | |
311 $Description: Stores the table into FFS | |
312 //xrashmic 9 May, 2005 MMI-SPR-30159 | |
313 | |
314 $Returns: | |
315 | |
316 $Arguments: event - The event received | |
317 | |
318 *******************************************************************************/ | |
319 void AUI_store_PUSH_table(void) | |
320 { | |
321 T_FFS_OPEN_FLAGS Ffsflags; | |
322 fd_t FfsFd; | |
323 | |
324 Ffsflags = FFS_O_WRONLY|FFS_O_CREATE; | |
325 FfsFd = ffs_open("/mmi/concatwappush/table",Ffsflags); | |
326 if(FfsFd > 0) | |
327 { | |
328 ffs_write(FfsFd,(void*)PUSH_Table,sizeof(PUSH_Table)); | |
329 ffs_close(FfsFd); | |
330 } | |
331 else | |
332 TRACE_ERROR("Table write failed"); | |
333 } | |
334 | |
335 /******************************************************************************* | |
336 | |
337 $Function: AUI_ffs_PUSH_init | |
338 | |
339 $Description: Creates the concat push directory and initializes the push table | |
340 and creates a new push table file | |
341 //xrashmic 9 May, 2005 MMI-SPR-30159 | |
342 | |
343 $Returns: | |
344 | |
345 $Arguments: event - The event received | |
346 | |
347 *******************************************************************************/ | |
348 void AUI_ffs_PUSH_init(void) | |
349 { | |
350 T_FFS_RET ffsResult; | |
351 | |
352 ffsResult = ffs_mkdir("/mmi/concatwappush"); | |
353 if(EFFS_OK == ffsResult) | |
354 { | |
355 //Initialize the table | |
356 memset(PUSH_Table,0,sizeof(PUSH_Table)); | |
357 //write this to FFS | |
358 AUI_store_PUSH_table(); | |
359 } | |
360 else | |
361 TRACE_EVENT("Create Dir Failed"); | |
362 } | |
363 | |
364 /******************************************************************************* | |
365 | |
366 $Function: AUI_check_concat_msg | |
367 | |
368 $Description: Checks for concat push msg | |
369 //xrashmic 9 May, 2005 MMI-SPR-30159 | |
370 | |
371 $Returns: TRUE - if it is a concat push message (also the msg ref, seq num and number of msgs are populates in this case) | |
372 FALSE - if it is not a concat push message | |
373 | |
374 $Arguments: UdhData - UDH data from the sms push message received | |
375 UdhLength - UDH length | |
376 msg_ref - Msg ref of the rcvd sms push message | |
377 num_msgs - total number of msgs in the concat rcvd sms push message | |
378 seq_num - The sequence number of the push message | |
379 | |
380 *******************************************************************************/ | |
381 BOOL AUI_check_concat_msg( UBYTE* UdhData, UBYTE UdhLength,U16 *msg_ref,U8 *num_msgs,U8 *seq_num) | |
382 { | |
383 S32 offset = 0; | |
384 U8 IE_ID; | |
385 U8 IE_length; | |
386 BOOL concatSMS = FALSE; | |
387 *msg_ref = 0xffff; | |
388 *num_msgs = 0; | |
389 *seq_num = 0; | |
390 while(offset<UdhLength) | |
391 { | |
392 IE_ID = UdhData[offset++]; | |
393 IE_length = UdhData[offset++]; | |
394 switch(IE_ID) | |
395 { | |
396 case SMS_IEI_CONC_8BIT: /* 8-bit message reference number */ | |
397 *msg_ref = UdhData[offset+0]; | |
398 *num_msgs = UdhData[offset+1]; | |
399 *seq_num = UdhData[offset+2]; | |
400 concatSMS = TRUE; | |
401 break; | |
402 | |
403 case SMS_IEI_CONC_16BIT: /* 16-bit message reference number */ | |
404 *msg_ref = UdhData[offset+0]; | |
405 *msg_ref|= (UdhData[offset+1] << 8); | |
406 *num_msgs = UdhData[offset+2]; | |
407 *seq_num = UdhData[offset+3]; | |
408 concatSMS = TRUE; | |
409 break; | |
410 } | |
411 if(TRUE == concatSMS) | |
412 break; | |
413 offset+=IE_length; | |
414 } | |
415 TRACE_EVENT_P3("Concat Push Msg Ref-%d, Seq-%d, Total-%d",*msg_ref,*seq_num,*num_msgs); | |
416 return concatSMS; | |
417 } | |
418 | |
419 /******************************************************************************* | |
420 | |
421 $Function: AUI_delete_PUSH_msg | |
422 | |
423 $Description: Delets the push msg file from the FFS | |
424 //xrashmic 9 May, 2005 MMI-SPR-30159 | |
425 | |
426 $Returns: | |
427 | |
428 $Arguments: Index: index of the messgae to be deleted | |
429 | |
430 *******************************************************************************/ | |
431 void AUI_delete_PUSH_msg(U8 index) | |
432 { | |
433 char filename[40]; | |
434 | |
435 sprintf(filename,"/mmi/concatwappush/push%d",index); | |
436 ffs_remove(filename); | |
437 | |
438 //Removing the corresponding entry from the table | |
439 memset(&PUSH_Table[index],0,sizeof(AUI_PUSH_REPOSITORY_TABLE)); | |
440 AUI_store_PUSH_table(); | |
441 } | |
442 | |
443 /******************************************************************************* | |
444 | |
445 $Function: AUI_cleanup_PUSH_repository | |
446 | |
447 $Description: Deletes the old push msg from the FFS | |
448 //xrashmic 9 May, 2005 MMI-SPR-30159 | |
449 | |
450 $Returns: | |
451 | |
452 $Arguments: msg_ref: Msg ref of the rcvd msgs | |
453 | |
454 *******************************************************************************/ | |
455 void AUI_cleanup_PUSH_repository(U16 msg_ref) | |
456 { | |
457 U8 index; | |
458 T_MFW_DATE *currDate; | |
459 BOOL deletePUSHMsg; | |
460 | |
461 currDate = mfw_td_get_date(); | |
462 | |
463 //Traverse throught the PUSH table and delete old push msg parts | |
464 for(index = 0; index < MAX_PUSH_MSG_STORAGE ; index++) | |
465 { | |
466 deletePUSHMsg = FALSE; | |
467 if((MSG_FFS == (int)PUSH_Table[index].msg_saved) &&( PUSH_Table[index].msg_ref != msg_ref)) | |
468 { | |
469 //Need to take only the last two digits for the year | |
470 if ( (currDate->year%100) > (USHORT)PUSH_Table[index].year) | |
471 { | |
472 //very old one delete it | |
473 deletePUSHMsg = TRUE; | |
474 } | |
475 //Need to take only the last two digits for the year | |
476 else if ((currDate->year%100) == (USHORT)PUSH_Table[index].year) | |
477 { | |
478 //msg of same year check for the month | |
479 if ((USHORT)currDate->month >(USHORT) PUSH_Table[index].month) | |
480 { | |
481 //older than one month delete it | |
482 deletePUSHMsg = TRUE; | |
483 } | |
484 else if ((USHORT)currDate->month == (USHORT) PUSH_Table[index].month) | |
485 { | |
486 //older than MAX_DURATION, delete it | |
487 if ((USHORT)currDate->day - (USHORT)PUSH_Table[index].day>MAX_DURATION) | |
488 deletePUSHMsg = TRUE; | |
489 } | |
490 } | |
491 } | |
492 if(TRUE == deletePUSHMsg) | |
493 { | |
494 AUI_delete_PUSH_msg(index); | |
495 } | |
496 } | |
497 } | |
498 | |
499 /******************************************************************************* | |
500 | |
501 $Function: AUI_check_repository | |
502 | |
503 $Description: Checks the repository for the complete PUSH msg | |
504 //xrashmic 9 May, 2005 MMI-SPR-30159 | |
505 | |
506 $Returns: | |
507 | |
508 $Arguments: msg_ref: Msg ref of the rcvd msg | |
509 num_msgs: total num of parts for the concat msgs | |
510 | |
511 *******************************************************************************/ | |
512 //xrashmic 11 Jan, 2005 MMI-SPR-OMAPS00063638 | |
513 //Added the seq number in the parameter list of this function to check for duplicate push messages | |
514 PUSHMSG_SEARCH_RESULT AUI_check_repository(U16 msg_ref,U8 num_msgs,U8 seq_num) | |
515 { | |
516 U8 index,parts = 1; | |
517 for( index = 0; index < MAX_PUSH_MSG_STORAGE ; index++ ) | |
518 { | |
519 if((MSG_FFS == (int)PUSH_Table[index].msg_saved ) &&( PUSH_Table[index].msg_ref == msg_ref) ) | |
520 { | |
521 PUSH_Sorted_Parts[PUSH_Table[index].seq_num-1].storage = (U8)MSG_FFS; | |
522 //Copy the FFS file index | |
523 PUSH_Sorted_Parts[PUSH_Table[index].seq_num-1].index = index; | |
524 //xrashmic 11 Jan, 2005 MMI-SPR-OMAPS00063638 | |
525 //If the same seq number is already present in the repository, then this is a | |
526 //duplicate push message and needs to be discarded. | |
527 if((PUSH_Table[index].seq_num ==seq_num)) | |
528 { | |
529 return DUPLICATE; | |
530 } | |
531 else | |
532 parts++; | |
533 } | |
534 //All parts found | |
535 if(parts == num_msgs) | |
536 return FOUND; | |
537 } | |
538 return NOT_FOUND; | |
539 } | |
540 | |
541 /******************************************************************************* | |
542 | |
543 $Function: AUI_store_PUSH_msg | |
544 | |
545 $Description: Stores the new PUSH msg into FFS | |
546 //xrashmic 9 May, 2005 MMI-SPR-30159 | |
547 | |
548 $Returns: | |
549 | |
550 $Arguments: message: Structure containing the udh and other msg details | |
551 msg_ref: Msg ref of the rcvd msg | |
552 num_msgs: total num of parts for the concat msgs | |
553 seq_num: Seq number of the rcvd msg | |
554 | |
555 *******************************************************************************/ | |
556 void AUI_store_PUSH_msg(T_MFW_SMS_MT *message, U16 msg_ref,U8 num_msgs,U8 seq_num) | |
557 { | |
558 int index=0; | |
559 char filename[40]; | |
560 T_FFS_OPEN_FLAGS Ffsflags; | |
561 fd_t FfsFd; | |
562 | |
563 //Locate a free space | |
564 for(index = 0 ; index < MAX_PUSH_MSG_STORAGE; index ++) | |
565 { | |
566 if(MSG_NONE == (int)PUSH_Table[index].msg_saved) | |
567 { | |
568 //Free space found | |
569 break; | |
570 } | |
571 } | |
572 //If space available in the reposiroty store it. | |
573 if( index < MAX_PUSH_MSG_STORAGE) | |
574 { | |
575 //Store the new msg part details into the table | |
576 PUSH_Table[index].msg_saved = (U8)MSG_FFS; | |
577 PUSH_Table[index].msg_ref = msg_ref; | |
578 PUSH_Table[index].num_msgs = num_msgs; | |
579 PUSH_Table[index].seq_num = seq_num; | |
580 PUSH_Table[index].year = message->sctp.year[0]*10+message->sctp.year[1]; | |
581 PUSH_Table[index].month = message->sctp.month[0]*10+message->sctp.month[1]; | |
582 PUSH_Table[index].day = message->sctp.day[0]*10+message->sctp.day[1]; | |
583 AUI_store_PUSH_table(); | |
584 | |
585 //Save the msg part into a new file | |
586 sprintf(filename,"/mmi/concatwappush/push%d",index); | |
587 Ffsflags = FFS_O_WRONLY|FFS_O_CREATE; | |
588 FfsFd = ffs_open (filename, Ffsflags); | |
589 if(FfsFd > 0) | |
590 { | |
591 ffs_write(FfsFd,(void*)message,sizeof(T_MFW_SMS_MT)); | |
592 ffs_close(FfsFd); | |
593 } | |
594 else | |
595 TRACE_EVENT("File open failed"); | |
596 } | |
597 } | |
598 | |
599 /******************************************************************************* | |
600 | |
601 $Function: AUI_wap_mfw_cb | |
602 | |
603 $Description: MFW callbacks | |
604 SPR#2086 - SH - Added | |
605 | |
606 $Returns: | |
607 | |
608 $Arguments: event - The event received | |
609 | |
610 *******************************************************************************/ | |
611 static int AUI_wap_mfw_cb(MfwEvt event, MfwHnd hnd) | |
612 { | |
613 T_WAP_DATA *data = AUI_wap_data(); | |
614 T_MFW_SMS_MT *Message; | |
615 BOOL concatSMS = FALSE; | |
616 //xrashmic 11 Jan, 2005 MMI-SPR-OMAPS00063638 | |
617 PUSHMSG_SEARCH_RESULT completeMsg = NOT_FOUND; | |
618 T_FFS_RET ffsResult; | |
619 U16 msg_ref; | |
620 U8 num_msgs, seq_num; | |
621 T_FFS_OPEN_FLAGS Ffsflags; | |
622 char filename[40]; | |
623 | |
624 | |
625 #ifdef TRACE_AUIWAP | |
626 TRACE_FUNCTION("AUI_wap_mfw_cb()"); | |
627 #endif | |
628 | |
629 if (!data) | |
630 { | |
631 return; | |
632 } | |
633 | |
634 switch(event) | |
635 { | |
636 case E_SMS_WAP_MT_RECEIVED: | |
637 { | |
638 Message = (T_MFW_SMS_MT *) hnd; | |
639 concatSMS = AUI_check_concat_msg(Message->udh,Message->udh_len, &msg_ref, &num_msgs, &seq_num); | |
640 if(concatSMS) | |
641 { | |
642 T_FFS_DIR dir; | |
643 ffsResult = ffs_opendir("/mmi/concatwappush",&dir); | |
644 if(EFFS_NOTFOUND == ffsResult) | |
645 //Directory does not exsists, create it and initialize the table and write it to FFS | |
646 AUI_ffs_PUSH_init(); | |
647 else | |
648 //Read the table from ffs. | |
649 AUI_read_PUSH_table(); | |
650 | |
651 //Delete the old PUSH messages in FFS and update repository table | |
652 AUI_cleanup_PUSH_repository(msg_ref); | |
653 | |
654 memset(PUSH_Sorted_Parts,0,sizeof(PUSH_Sorted_Parts)); | |
655 //update the sorted Array with the new msg index | |
656 PUSH_Sorted_Parts[seq_num-1].storage = (U8)MSG_NEW; | |
657 | |
658 //check for the complete message in repository and the new one. | |
659 //If present sort and update the index in the PUSH_Sorted_Parts. | |
660 completeMsg=AUI_check_repository( msg_ref,num_msgs,seq_num); | |
661 | |
662 if(FOUND == completeMsg) | |
663 { | |
664 T_MFW_SMS_MT PUSH_Message; | |
665 U8 part = 0; | |
666 TRACE_EVENT("Complete Push msg found"); | |
667 for( part = 0; part < num_msgs ; part++ ) | |
668 { | |
669 //retrieve the complete message one by one in the correct order and send to wap client | |
670 switch( PUSH_Sorted_Parts[part].storage) | |
671 { | |
672 case MSG_NEW: | |
673 //copy new msg from hnd into the comon buffer | |
674 memcpy(&PUSH_Message,Message,sizeof(T_MFW_SMS_MT)); | |
675 break; | |
676 case MSG_FFS: | |
677 { | |
678 //copy the stored msg from the ffs into the common buffer | |
679 fd_t FfsFd; | |
680 sprintf(filename,"/mmi/concatwappush/push%d",PUSH_Sorted_Parts[part].index); | |
681 Ffsflags = FFS_O_RDWR; | |
682 FfsFd = ffs_open (filename, Ffsflags); | |
683 ffs_read(FfsFd,(void*)&PUSH_Message,sizeof(T_MFW_SMS_MT)); | |
684 ffs_close(FfsFd); | |
685 AUI_delete_PUSH_msg(PUSH_Sorted_Parts[part].index); | |
686 break; | |
687 } | |
688 } | |
689 //Send the msg part in the common buffer to the wap client | |
690 ATB_wap_push_SMS_received( | |
691 (char *)PUSH_Message.sc_addr, | |
692 (UBYTE)MFW_TON_INTERNATIONAL, | |
693 (char *)PUSH_Message.orig_addr.number, | |
694 (UBYTE)PUSH_Message.orig_addr.ton, | |
695 (char *)PUSH_Message.udh, | |
696 (ULONG)PUSH_Message.udh_len, | |
697 (char *)PUSH_Message.sms_msg, | |
698 (ULONG)PUSH_Message.msg_len); | |
699 | |
700 } | |
701 } | |
702 //xrashmic 11 Jan, 2005 MMI-SPR-OMAPS00063638 | |
703 //Store the new part into the ffs | |
704 else if(completeMsg == NOT_FOUND) | |
705 { | |
706 TRACE_EVENT("Storing the Push msg part to FFS"); | |
707 //store this in push repository and update repository table | |
708 AUI_store_PUSH_msg(Message, msg_ref, num_msgs, seq_num); | |
709 } | |
710 else | |
711 { | |
712 //xrashmic 11 Jan, 2005 MMI-SPR-OMAPS00063638 | |
713 //Duplicate part received , ignore/discard it. | |
714 TRACE_EVENT("Duplicate part received , ignore/discard it"); | |
715 } | |
716 } | |
717 else | |
718 { | |
719 //Not a concat, so send it directly | |
720 ATB_wap_push_SMS_received( | |
721 (char *)Message->sc_addr, | |
722 (UBYTE)MFW_TON_INTERNATIONAL, | |
723 (char *)Message->orig_addr.number, | |
724 (UBYTE)Message->orig_addr.ton, | |
725 (char *)Message->udh, | |
726 (ULONG)Message->udh_len, | |
727 (char *)Message->sms_msg, | |
728 (ULONG)Message->msg_len); | |
729 } | |
730 break; | |
731 } | |
732 } | |
733 return; | |
734 } | |
735 | |
736 /******************************************************************************* | |
737 | |
738 $Function: AUI_wap_push_show | |
739 | |
740 $Description: Push SI viewing screen | |
741 SPR#2086 - SH - Added | |
742 | |
743 $Returns: void | |
744 | |
745 $Arguments: Text - The text to be displayed | |
746 text_length - The length of the text to be displayed in Unicode chars | |
747 identifier - The ID of the SI | |
748 Url - The URL of the service | |
749 url_length - The length of the URL in characters | |
750 | |
751 *******************************************************************************/ | |
752 #if 0 | |
753 void AUI_wap_push_show(USHORT *Text, USHORT text_length, SHORT identifier, char *Url, USHORT url_length) | |
754 { | |
755 T_WAP_DATA *data = AUI_wap_data(); | |
756 T_EDITOR_DATA editor_data; | |
757 | |
758 #ifdef TRACE_AUIWAP | |
759 TRACE_FUNCTION("AUI_wap_push_show"); | |
760 #endif | |
761 | |
762 if (!data) | |
763 { | |
764 return; | |
765 } | |
766 | |
767 if (!data->PushData) | |
768 { | |
769 return; | |
770 } | |
771 | |
772 strncpy(data->Buffer, Url, url_length); /* Store URL here for now */ | |
773 data->Buffer[url_length] = 0; | |
774 | |
775 data->PushData->service_indication = identifier; | |
776 | |
777 AUI_wap_string_alloc(&data->Message, TEXT_MAX_LEN); | |
778 | |
779 if (text_length>=TEXT_MAX_LEN) | |
780 { | |
781 text_length = TEXT_MAX_LEN-1; | |
782 } | |
783 | |
784 data->Message.text[0] = 0x7F80; | |
785 ATB_uc_text_copy(&data->Message.text[1], Text, text_length); | |
786 ATB_uc_text_convert(&data->Message.text[1], text_length); | |
787 | |
788 AUI_standard_editor(&editor_data, (char *)data->Message.text, text_length+1, READ_ONLY_MODE, (T_EDIT_CB)AUI_wap_push_show_cb); // Setup standard editor | |
789 | |
790 editor_data.destroyEditor = TRUE; | |
791 editor_data.TextId = TxtMessage; // Prompt to display above editor | |
792 editor_data.LeftSoftKey = TxtGoTo; | |
793 editor_data.RightSoftKey = TxtExit; | |
794 data->edit_win = editor_start(data->parent_win,&editor_data); /* SPR#2086 */ | |
795 | |
796 return; | |
797 } | |
798 #endif | |
799 | |
800 void AUI_wap_push_show(USHORT *Text, USHORT text_length, SHORT identifier, char *Url, USHORT url_length) | |
801 { | |
802 T_WAP_DATA *data = AUI_wap_data(); | |
803 #ifdef NEW_EDITOR | |
804 T_AUI_EDITOR_DATA editor_data; | |
805 #else | |
806 T_EDITOR_DATA editor_data; | |
807 #endif /* NEW_EDITOR */ | |
808 | |
809 #ifdef TRACE_AUIWAP | |
810 TRACE_FUNCTION("AUI_wap_push_show"); | |
811 #endif | |
812 | |
813 if (!data) | |
814 { | |
815 return; | |
816 } | |
817 | |
818 if (!data->PushData) | |
819 { | |
820 return; | |
821 } | |
822 | |
823 strncpy(data->Buffer, Url, url_length); /* Store URL here for now */ | |
824 data->Buffer[url_length] = 0; | |
825 | |
826 data->PushData->service_indication = identifier; | |
827 | |
828 AUI_wap_string_alloc(&data->Message, TEXT_MAX_LEN); | |
829 | |
830 if (text_length>=TEXT_MAX_LEN) | |
831 { | |
832 text_length = TEXT_MAX_LEN-1; | |
833 } | |
834 | |
835 data->Message.text[0] = 0x7F80; | |
836 ATB_uc_text_copy(&data->Message.text[1], Text, text_length); | |
837 ATB_uc_text_convert(&data->Message.text[1], text_length); | |
838 #if 0 | |
839 AUI_standard_editor(&editor_data, (char *)data->Message.text, text_length+1, READ_ONLY_MODE, (T_EDIT_CB)AUI_wap_push_show_cb); // Setup standard editor | |
840 | |
841 editor_data.destroyEditor = TRUE; | |
842 editor_data.TextId = TxtMessage; // Prompt to display above editor | |
843 editor_data.LeftSoftKey = TxtGoTo; | |
844 editor_data.RightSoftKey = TxtExit; | |
845 data->edit_win = editor_start(data->parent_win,&editor_data); /* SPR#2086 */ | |
846 #endif | |
847 | |
848 #ifdef NEW_EDITOR | |
849 // xreddymn Jan-10-2005 MMI-SPR-27618: Modified editor to read-only | |
850 AUI_standard_editor(&editor_data, WAP_EDIT_DOWNLOAD, ED_MODE_ALPHA | ED_MODE_READONLY, TxtPushMessages, (T_AUI_EDIT_CB)AUI_wap_push_show_cb); | |
851 editor_data.RightSoftKey = TxtSoftBack; | |
852 | |
853 // if (unicode) | |
854 /* xreddymn Jan-10-2005 MMI-SPR-27618: | |
855 * data->Buffer holding the URL in this case is ASCII. Changed condition if(TRUE) to if(FALSE) | |
856 */ | |
857 if (FALSE) | |
858 { | |
859 AUI_edit_SetBuffer(&editor_data, ATB_DCS_UNICODE, (UBYTE *)data->Buffer, strlen(data->Buffer)+1); | |
860 } | |
861 else | |
862 { | |
863 AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)data->Buffer, strlen(data->Buffer)+1); | |
864 } | |
865 | |
866 //data->edit_win = AUI_edit_Start(data->win, &editor_data); | |
867 data->edit_win = AUI_edit_Start(data->parent_win, &editor_data); | |
868 #else /* NEW_EDITOR */ | |
869 AUI_standard_editor(&editor_data, (char *)data->Message.text, text_length+1, READ_ONLY_MODE, (T_EDIT_CB)AUI_wap_push_show_cb); // Setup standard editor | |
870 | |
871 editor_data.destroyEditor = TRUE; | |
872 editor_data.TextId = TxtMessage; // Prompt to display above editor | |
873 editor_data.LeftSoftKey = TxtGoTo; | |
874 editor_data.RightSoftKey = TxtExit; | |
875 data->edit_win = editor_start(data->parent_win,&editor_data); /* SPR#2086 */ | |
876 #endif /* NEW_EDITOR */ | |
877 return; | |
878 } | |
879 | |
880 /******************************************************************************* | |
881 | |
882 $Function: AUI_wap_push_show_cb | |
883 | |
884 $Description: Callback function for push viewing screen. | |
885 SPR#2086 - SH - Added | |
886 | |
887 $Returns: void | |
888 | |
889 $Arguments: win - the WAP data window | |
890 identifier - identifier | |
891 reason - reason for callback | |
892 | |
893 *******************************************************************************/ | |
894 | |
895 static void AUI_wap_push_show_cb(T_MFW_HND win, USHORT identifier, USHORT reason) | |
896 { | |
897 T_WAP_DATA *data = AUI_wap_data(); | |
898 T_WAP_VIEW *View; | |
899 | |
900 #ifdef TRACE_AUIWAP | |
901 TRACE_FUNCTION("AUI_wap_push_show_cb"); | |
902 #endif | |
903 | |
904 if (!data) | |
905 { | |
906 return; | |
907 } | |
908 | |
909 /* Editor is destroyed automatically */ | |
910 | |
911 // xreddymn Jan-10-2005 MMI-SPR-27618: Modified to add "back" function to this screen | |
912 // data->edit_win = NULL; | |
913 | |
914 /* Free message text */ | |
915 | |
916 AUI_wap_string_free(&data->Message); | |
917 | |
918 switch (reason) | |
919 { | |
920 case INFO_KCD_LEFT: | |
921 | |
922 // xreddymn Jan-10-2005 MMI-SPR-27618: Leave editor screen when HangUp or Right Softkey is pressed | |
923 AUI_destroy(EDIT_WIN); | |
924 | |
925 /* Check if browsing view exists. If it doesn't, start WAP for | |
926 * browsing and load SI on callback */ | |
927 | |
928 View = ATB_wap_get_view(WAP_OBJECT_ID); | |
929 | |
930 if (!View) | |
931 { | |
932 AUI_wap_start(WAP_BROWSER, AUI_wap_push_start_load_SI); | |
933 } | |
934 else | |
935 { | |
936 AUI_wap_push_start_load_SI(TRUE); | |
937 } | |
938 break; | |
939 | |
940 // xreddymn Jan-10-2005 MMI-SPR-27618: Leave editor screen when HangUp or Right Softkey is pressed | |
941 case INFO_KCD_HUP: | |
942 case INFO_KCD_RIGHT: | |
943 AUI_destroy(EDIT_WIN); | |
944 break; | |
945 } | |
946 | |
947 return; | |
948 } | |
949 | |
950 /******************************************************************************* | |
951 | |
952 $Function: AUI_wap_push_load_SL | |
953 | |
954 $Description: Loads SL message by launching WAP | |
955 | |
956 $Returns: void | |
957 | |
958 $Arguments: identifier - an integer used to identify the SL message | |
959 Url - URL to which the WAP browser must be launched into | |
960 url_length - length of the URL in characters | |
961 | |
962 xreddymn Mar-16-2005 MMI-SPR-29767 | |
963 | |
964 *******************************************************************************/ | |
965 | |
966 void AUI_wap_push_load_SL(SHORT identifier, char *Url, USHORT url_length) | |
967 { | |
968 T_WAP_VIEW *View; | |
969 T_WAP_DATA *data = AUI_wap_data(); | |
970 | |
971 #ifdef TRACE_AUIWAP | |
972 TRACE_FUNCTION("AUI_wap_push_load_SL"); | |
973 #endif | |
974 | |
975 if (!data) | |
976 { | |
977 return; | |
978 } | |
979 | |
980 if (!data->PushData) | |
981 { | |
982 return; | |
983 } | |
984 | |
985 // The URL is stored in data->Buffer and accessed by | |
986 // AUI_wap_push_start_load_SI | |
987 strncpy(data->Buffer, Url, url_length); | |
988 data->Buffer[url_length] = 0; | |
989 | |
990 data->PushData->service_indication = identifier; | |
991 | |
992 // Check if browsing view exists. If it doesn't, start WAP for | |
993 // browsing and load SL on callback. | |
994 | |
995 View = ATB_wap_get_view(WAP_OBJECT_ID); | |
996 | |
997 if (!View) | |
998 { | |
999 AUI_wap_start(WAP_BROWSER, AUI_wap_push_start_load_SI); | |
1000 } | |
1001 else | |
1002 { | |
1003 AUI_wap_push_start_load_SI(TRUE); | |
1004 } | |
1005 } | |
1006 | |
1007 /******************************************************************************* | |
1008 | |
1009 $Function: AUI_wap_push_start_load_SI | |
1010 | |
1011 $Description: Callback function for starting push and loading an SI | |
1012 SPR#2086 - SH - Added | |
1013 | |
1014 $Returns: void | |
1015 | |
1016 $Arguments: result - TRUE if WAP started successfully. | |
1017 | |
1018 *******************************************************************************/ | |
1019 | |
1020 static void AUI_wap_push_start_load_SI(UBYTE result) | |
1021 { | |
1022 T_WAP_DATA *data = AUI_wap_data(); | |
1023 | |
1024 #ifdef TRACE_AUIWAP | |
1025 TRACE_FUNCTION("AUI_wap_push_start_load_SI"); | |
1026 #endif | |
1027 | |
1028 if (!data || !result) | |
1029 { | |
1030 return; | |
1031 } | |
1032 | |
1033 /* Create menu */ | |
1034 | |
1035 if (!data->menu_win) | |
1036 { | |
1037 AUI_menu_create(TRUE); | |
1038 } | |
1039 | |
1040 /* Configure for connection */ | |
1041 | |
1042 AUI_prepare_to_connect(); | |
1043 | |
1044 /* Copy URL into View storage */ | |
1045 | |
1046 strcpy(data->View->URL, data->Buffer); | |
1047 | |
1048 /* Load Service Indication */ | |
1049 | |
1050 ATB_wap_push_load_SI(data->View, (SHORT)data->PushData->service_indication); | |
1051 | |
1052 return; | |
1053 } | |
1054 | |
1055 | |
1056 /******************************************************************************* | |
1057 | |
1058 $Function: AUI_wap_push_list | |
1059 | |
1060 $Description: Lists all push messages | |
1061 | |
1062 $Returns: MFW_EVENT_CONSUMED | |
1063 | |
1064 $Arguments: menu - pointer to current menu | |
1065 item - pointer to current menu item | |
1066 | |
1067 *******************************************************************************/ | |
1068 | |
1069 int AUI_wap_push_list(MfwMnu* menu, MfwMnuItem* item) | |
1070 { | |
1071 T_WAP_DATA *data = AUI_wap_data(); | |
1072 USHORT entryIndex; | |
1073 | |
1074 #ifdef TRACE_AUIWAP | |
1075 TRACE_FUNCTION("AUI_wap_push_list"); | |
1076 #endif | |
1077 | |
1078 if (!data) | |
1079 { | |
1080 return; | |
1081 } | |
1082 | |
1083 if (!data->PushData) | |
1084 { | |
1085 TRACE_EVENT("***ERROR - Push not initialised ***"); | |
1086 return; | |
1087 } | |
1088 | |
1089 /* Create the push list menu */ | |
1090 | |
1091 if (data->PushData->List==NULL) | |
1092 { | |
1093 // xreddymn Jan-10-2005 MMI-SPR-27618: Use WAP_PUSH_TITLE_MAX_LEN instead of CARD_TITLE_MAX_LEN | |
1094 data->PushData->List = ATB_wap_entry_list_create(WAP_PUSH_LIST, WAP_PUSH_MAX_MESSAGES, WAP_PUSH_TITLE_MAX_LEN, FALSE); | |
1095 for (entryIndex=0; entryIndex<WAP_PUSH_MAX_MESSAGES; entryIndex++) | |
1096 { | |
1097 data->PushData->List->Entry[entryIndex] = (char *)AUI_wap_memory_alloc(data->PushData->List->entry_size); | |
1098 } | |
1099 } | |
1100 | |
1101 data->PushData->list_created = FALSE; | |
1102 memset(data->PushData->list_ids, 0, WAP_PUSH_MAX_MESSAGES); | |
1103 | |
1104 AUI_please_wait(data->parent_win); | |
1105 | |
1106 ATB_wap_push_get_SI_info(-1, WAP_PUSH_SHOW_ALL); | |
1107 | |
1108 return MFW_EVENT_CONSUMED; | |
1109 } | |
1110 | |
1111 | |
1112 /******************************************************************************* | |
1113 | |
1114 $Function: AUI_wap_push_list_display | |
1115 | |
1116 $Description: The list of pushed messages is ready; display it | |
1117 | |
1118 $Returns: None | |
1119 | |
1120 $Arguments: None | |
1121 | |
1122 *******************************************************************************/ | |
1123 | |
1124 void AUI_wap_push_list_display() | |
1125 { | |
1126 T_WAP_DATA *data = AUI_wap_data(); | |
1127 | |
1128 #ifdef TRACE_AUIWAP | |
1129 TRACE_FUNCTION("AUI_wap_push_list_display"); | |
1130 #endif | |
1131 | |
1132 if (!data) | |
1133 { | |
1134 return; | |
1135 } | |
1136 | |
1137 AUI_entry_list(data->PushData->List, (ListCbFunc) AUI_wap_push_list_cb, 0); | |
1138 if (!data->list_win || data->PushData->List->no_of_entries==0) | |
1139 { | |
1140 AUI_wap_push_list_destroy(); | |
1141 } | |
1142 else | |
1143 { | |
1144 data->PushData->list_created = TRUE; | |
1145 } | |
1146 | |
1147 return; | |
1148 } | |
1149 | |
1150 | |
1151 /******************************************************************************* | |
1152 | |
1153 $Function: AUI_wap_push_list_destroy | |
1154 | |
1155 $Description: Destroy the push message list | |
1156 | |
1157 $Returns: None | |
1158 | |
1159 $Arguments: None | |
1160 | |
1161 *******************************************************************************/ | |
1162 | |
1163 void AUI_wap_push_list_destroy() | |
1164 { | |
1165 T_WAP_DATA *data = AUI_wap_data(); | |
1166 USHORT entryIndex; | |
1167 | |
1168 #ifdef TRACE_AUIWAP | |
1169 TRACE_FUNCTION("AUI_wap_push_list_destroy"); | |
1170 #endif | |
1171 | |
1172 if (!data) | |
1173 { | |
1174 return; | |
1175 } | |
1176 | |
1177 if (!data->PushData) | |
1178 { | |
1179 return; | |
1180 } | |
1181 | |
1182 if (!data->PushData->List) | |
1183 { | |
1184 return; | |
1185 } | |
1186 | |
1187 /* Create the push list menu */ | |
1188 | |
1189 for (entryIndex=0; entryIndex<WAP_PUSH_MAX_MESSAGES; entryIndex++) | |
1190 { | |
1191 AUI_wap_memory_free((void *)data->PushData->List->Entry[entryIndex], data->PushData->List->entry_size); | |
1192 } | |
1193 ATB_wap_entry_list_destroy(data->PushData->List); | |
1194 | |
1195 data->PushData->List = NULL; | |
1196 data->PushData->list_created = FALSE; | |
1197 | |
1198 return; | |
1199 } | |
1200 | |
1201 | |
1202 /******************************************************************************* | |
1203 | |
1204 $Function: AUI_wap_push_list_cb | |
1205 | |
1206 $Description: Callback for push message list | |
1207 | |
1208 $Returns: MFW_EVENT_CONSUMED | |
1209 | |
1210 $Arguments: win - The current window | |
1211 ListMenuData - The current list data | |
1212 | |
1213 *******************************************************************************/ | |
1214 | |
1215 static void AUI_wap_push_list_cb(T_MFW_HND win, ListMenuData *EntryListData) | |
1216 { | |
1217 T_WAP_DATA *data = AUI_wap_data(); | |
1218 | |
1219 TRACE_FUNCTION("AUI_wap_push_list_cb()"); | |
1220 | |
1221 if (!data) | |
1222 { | |
1223 return; | |
1224 } | |
1225 | |
1226 data->PushData->service_indication = data->PushData->list_ids[EntryListData->ListPosition]; | |
1227 | |
1228 switch(EntryListData->Reason) | |
1229 { | |
1230 case LISTS_REASON_SEND: | |
1231 ATB_wap_push_get_SI_info(data->PushData->service_indication, 0); | |
1232 break; | |
1233 | |
1234 case LISTS_REASON_SELECT: | |
1235 /* Destroy any previous options menu existing */ | |
1236 if (data->options_win) | |
1237 { | |
1238 AUI_destroy(OPTIONS_WIN); | |
1239 } | |
1240 //#ifdef MMI_WAP_PUSH_ENABLED //added by ellen | |
1241 //data->options_win = bookMenuStart(data->parent_win, WAPPushListOptionsAttributes(), 0); | |
1242 data->options_win = bookMenuStart(data->parent_win, WAPPushListOptionsAttributes(), 0); | |
1243 //#endif | |
1244 SEND_EVENT(data->options_win, ADD_CALLBACK, NULL, (void *)AUI_options_cb); | |
1245 break; | |
1246 | |
1247 case LISTS_REASON_BACK: | |
1248 AUI_wap_push_list_destroy(); | |
1249 AUI_destroy(LIST_WIN); | |
1250 break; | |
1251 } | |
1252 | |
1253 return; | |
1254 } | |
1255 | |
1256 | |
1257 /******************************************************************************* | |
1258 | |
1259 $Function: AUI_wap_push_info | |
1260 | |
1261 $Description: Response from WAP Browser, returning information about a push message | |
1262 | |
1263 $Returns: MFW_EVENT_CONSUMED | |
1264 | |
1265 $Arguments: menu - pointer to current menu | |
1266 item - pointer to current menu item | |
1267 | |
1268 *******************************************************************************/ | |
1269 | |
1270 void AUI_wap_push_info( | |
1271 USHORT *Text, | |
1272 USHORT text_length, | |
1273 SHORT id, | |
1274 char *Url, | |
1275 USHORT url_length, | |
1276 UBYTE status, | |
1277 ULONG created, | |
1278 BOOL expired, | |
1279 UBYTE priority) | |
1280 { | |
1281 T_WAP_DATA *data = AUI_wap_data(); | |
1282 char *newURL; | |
1283 | |
1284 TRACE_FUNCTION("AUI_wap_push_info()"); | |
1285 | |
1286 if (!data) | |
1287 { | |
1288 return; | |
1289 } | |
1290 | |
1291 if (!data->PushData) | |
1292 { | |
1293 return; | |
1294 } | |
1295 | |
1296 if (!data->PushData->List) | |
1297 { | |
1298 return; | |
1299 } | |
1300 | |
1301 /* If list is created and we're reading a single SI */ | |
1302 | |
1303 if (data->PushData->list_created) | |
1304 { | |
1305 AUI_please_wait_destroy(); | |
1306 AUI_wap_push_show(Text, text_length, id, Url, url_length); | |
1307 return; | |
1308 } | |
1309 | |
1310 /* If all of list has been sent, create the menu*/ | |
1311 | |
1312 if (id==-1) | |
1313 { | |
1314 AUI_please_wait_destroy(); | |
1315 AUI_wap_push_list_display(); | |
1316 } | |
1317 | |
1318 else | |
1319 /* Otherwise, add the menu item to the list */ | |
1320 { | |
1321 data->PushData->list_ids[data->PushData->List->no_of_entries] = id; | |
1322 | |
1323 newURL = (char *)AUI_wap_memory_alloc(url_length+1); | |
1324 strncpy(newURL, Url, url_length); | |
1325 newURL[url_length] = 0; | |
1326 | |
1327 if (url_length>data->PushData->List->entry_size) | |
1328 { | |
1329 newURL[data->PushData->List->entry_size] = 0; | |
1330 newURL[data->PushData->List->entry_size-1] = '.'; | |
1331 newURL[data->PushData->List->entry_size-2] = '.'; | |
1332 } | |
1333 | |
1334 ATB_wap_entry_add(data->PushData->List, newURL); | |
1335 | |
1336 AUI_wap_memory_free((void *)newURL, url_length+1); | |
1337 } | |
1338 | |
1339 return; | |
1340 } | |
1341 | |
1342 /******************************************************************************* | |
1343 | |
1344 $Function: AUI_wap_push_message_read | |
1345 | |
1346 $Description: Read a push message | |
1347 SPR#2086 - Added | |
1348 | |
1349 $Returns: MFW_EVENT_CONSUMED | |
1350 | |
1351 $Arguments: menu - pointer to current menu | |
1352 item - pointer to current menu item | |
1353 | |
1354 *******************************************************************************/ | |
1355 | |
1356 int AUI_wap_push_message_read(MfwMnu* menu, MfwMnuItem* item) | |
1357 { | |
1358 T_WAP_DATA *data = AUI_wap_data(); | |
1359 | |
1360 TRACE_FUNCTION("AUI_wap_push_message_read()"); | |
1361 | |
1362 if (!data) | |
1363 { | |
1364 return; | |
1365 } | |
1366 | |
1367 if (!data->PushData) | |
1368 { | |
1369 return; | |
1370 } | |
1371 | |
1372 ATB_wap_push_get_SI_info(data->PushData->service_indication, 0); | |
1373 | |
1374 return MFW_EVENT_CONSUMED; | |
1375 } | |
1376 | |
1377 | |
1378 /******************************************************************************* | |
1379 | |
1380 $Function: AUI_wap_push_message_delete | |
1381 | |
1382 $Description: Delete a push message | |
1383 SPR#2086 - Added | |
1384 | |
1385 $Returns: MFW_EVENT_CONSUMED | |
1386 | |
1387 $Arguments: menu - pointer to current menu | |
1388 item - pointer to current menu item | |
1389 | |
1390 *******************************************************************************/ | |
1391 | |
1392 int AUI_wap_push_message_delete(MfwMnu* menu, MfwMnuItem* item) | |
1393 { | |
1394 T_WAP_DATA *data = AUI_wap_data(); | |
1395 | |
1396 TRACE_FUNCTION("AUI_wap_push_message_delete()"); | |
1397 | |
1398 if (!data) | |
1399 { | |
1400 return; | |
1401 } | |
1402 | |
1403 /* Delete the push message */ | |
1404 ATB_wap_push_delete_SI(data->PushData->service_indication, 0); | |
1405 /* Destroy the old list */ | |
1406 AUI_destroy(LIST_WIN); | |
1407 /* Save the change */ | |
1408 ATB_wap_push_save_to_flash(); | |
1409 /* Recreate the list */ | |
1410 AUI_list_redraw(WAP_PUSH_LIST, TxtDeleted); | |
1411 | |
1412 return MFW_EVENT_CONSUMED; | |
1413 } | |
1414 | |
1415 | |
1416 /******************************************************************************* | |
1417 | |
1418 $Function: AUI_wap_push_showmessages | |
1419 | |
1420 $Description: Setting specifies whether or not to display received push images | |
1421 SPR#2086 - Added | |
1422 | |
1423 $Returns: MFW_EVENT_CONSUMED | |
1424 | |
1425 $Arguments: menu - pointer to current menu | |
1426 item - pointer to current menu item | |
1427 | |
1428 *******************************************************************************/ | |
1429 | |
1430 int AUI_wap_push_showmessages(MfwMnu* menu, MfwMnuItem* item) | |
1431 { | |
1432 T_WAP_DATA *data = AUI_wap_data(); | |
1433 UBYTE PushMessages; | |
1434 T_MFW_HND setting_win; | |
1435 | |
1436 #ifdef TRACE_AUIWAP | |
1437 TRACE_FUNCTION("AUI_wap_push_showmessages"); | |
1438 #endif | |
1439 | |
1440 if (!data) | |
1441 { | |
1442 return; | |
1443 } | |
1444 | |
1445 setting_win = bookMenuStart(data->parent_win, WAPPushMessagesAttributes(), 0); | |
1446 PushMessages = ATB_wap_profile_setting(WAP_STATUS_PUSHMESSAGES); // 1 or 0 depending on flag | |
1447 SEND_EVENT(setting_win, DEFAULT_OPTION, NULL, &PushMessages); // Add our own callback | |
1448 | |
1449 return 1; | |
1450 } | |
1451 | |
1452 | |
1453 /******************************************************************************* | |
1454 | |
1455 $Function: AUI_wap_push_showmessages_set | |
1456 | |
1457 $Description: Set showing of push messages on or off | |
1458 | |
1459 $Returns: MFW_EVENT_CONSUMED | |
1460 | |
1461 $Arguments: menu - pointer to the current menu | |
1462 item - pointer to the current menu item | |
1463 | |
1464 *******************************************************************************/ | |
1465 | |
1466 int AUI_wap_push_showmessages_set(MfwMnu* menu, MfwMnuItem* item) | |
1467 { | |
1468 T_WAP_DATA *data = AUI_wap_data(); | |
1469 | |
1470 #ifdef TRACE_AUIWAP | |
1471 TRACE_FUNCTION("AUI_wap_push_showmessages_set"); | |
1472 #endif | |
1473 | |
1474 if (!data) | |
1475 { | |
1476 return; | |
1477 } | |
1478 | |
1479 ATB_wap_profile_setting_change(WAP_STATUS_PUSHMESSAGES, menu->lCursor[menu->level]); /* SPR#2086 */ | |
1480 | |
1481 ATB_wap_profile_save(data->View); // Save change to flash | |
1482 AUI_info_dialog(TxtChanged, NULL); /* SPR#2086 */ | |
1483 | |
1484 return 1; | |
1485 } | |
1486 |