mmi_imps_prot.h
上传用户:lqx1163
上传日期:2014-08-13
资源大小:9183k
文件大小:50k
源码类别:

MTK

开发平台:

C/C++

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*******************************************************************************
  36.  * Filename:
  37.  * ---------
  38.  * mmi_imps_prot.h
  39.  *
  40.  * Project:
  41.  * --------
  42.  * MAUI
  43.  *
  44.  * Description:
  45.  * ------------
  46.  * This file defines local contant, structure, enum, and function prototypes forIMPS application.
  47.  *
  48.  * Author:
  49.  * -------
  50.  * -------
  51.  *
  52.  *==============================================================================
  53.  *             HISTORY
  54.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  55.  *------------------------------------------------------------------------------
  56.  * removed!
  57.  *
  58.  * removed!
  59.  * removed!
  60.  * removed!
  61.  *
  62.  *------------------------------------------------------------------------------
  63.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  64.  *==============================================================================
  65.  *******************************************************************************/
  66. #ifndef _MMI_IMPS_PROT_H
  67. #define _MMI_IMPS_PROT_H
  68. #ifdef __MMI_IMPS__
  69. #include "PixtelDataTypes.h"
  70. #include "mmi2imps_struct.h"
  71. #include "DataAccountGProt.h"
  72. #include "FileMgr.h"
  73. #include "PhoneBookTypes.h"
  74. /***************************************************************************** 
  75. * Define
  76. *****************************************************************************/
  77. //#define IMPS_TEST_CODE
  78. //#define IMPS_PROF_TEST_CODE
  79. /*****************************************************************************              
  80. * Extern Global Variable                                                                    
  81. **************************************************************************** */
  82. /*****************************************************************************              
  83. * Extern Global Function                                                                    
  84. **************************************************************************** */
  85. /* general */
  86. #define IMPS_MAX_SEQ_NUM   65535        /* maximum sqeunce number of session id */
  87. #define IMPS_MAX_SEARCH_RESULT 30       /* maximum number of search result */
  88. #define IMPS_MSG_TONE   0       /* id of message tone */
  89. #define IMPS_ERR_TONE   1       /* id of error tone */
  90. #define IMPS_GEN_LOGIN        0x01      /* bit flag of login state */
  91. #define IMPS_GEN_REENTRY     0x02       /* bit flag to indicate if IMPS is re-entry */
  92. #define IMPS_GEN_CONT_READY 0x04        /* bit flag to indicate if auto-update is finished */
  93. /* default size of NVRAM */
  94. #ifdef MMI_ON_HARDWARE_P
  95. #else /* MMI_ON_HARDWARE_P */ 
  96. #define NVRAM_EF_IMPS_SIZE    922
  97. #define NVRAM_EF_IMPS_TOTAL 1
  98. #endif /* MMI_ON_HARDWARE_P */ 
  99. /* inline editors */
  100. #define IMPS_INLINE_PROF_SETTING 12
  101. #define IMPS_INLINE_PROF_CONN 14
  102. #define IMPS_INLINE_SEARCH_CONT 8
  103. #define IMPS_INLINE_JOIN_ROOM 4
  104. #define IMPS_INLINE_SEARCH_ROOM 8
  105. #define IMPS_INLINE_EDIT_ROOM 8
  106. #define IMPS_INLINE_GROUP_EDIT 10
  107. #define IMPS_INLINE_ABOUT_ME 8
  108. #define IMPS_INLINE_ADD_DIRECT 4
  109. #define IMPS_INLINE_ROOM_JOIN_DIRECT 6
  110. /* profiles */
  111. #define IMPS_PROF_NAME_LEN 17   /* 16 word count + 1 word NULL terminate */
  112. #define IMPS_PROF_COUNT 3       /* number of supported profiles */
  113. #define IMPS_PROF_PORT_LEN 6    /* number of digits for port + NULL terminate */
  114. /* login/logout */
  115. #define IMPS_LOGIN_RAC_READY         0x01       /* GPRS ready to activate */
  116. #define IMPS_LOGIN_PS_READY          0x02       /* IMPS task ready to serve MMI */
  117. #define IMPS_LOGIN_IDLE_REACHED      0x04       /* MMI reaches IDLE screen */
  118. #define IMPS_LOGIN_READY              0x07      /* IMPS application ready to login, the previous two items shall ready together. */
  119. #define IMPS_LOGIN_ALREADY            0x08      /* already login */
  120. /* contact list */
  121. #define IMPS_MAX_NO_GROUP 5
  122. #define IMPS_MAX_NO_CONT   (IMPS_MAX_NO_GROUP*IMPS_MAX_ENTITY_NUMBER + 1)       /* one for contact list */
  123. #define IMPS_CONT_PA_READY 0x01
  124. #define IMPS_CONT_BLOCK     0x02
  125. #define IMPS_CONT_NEW_MSG  0x04
  126. #define IMPS_PA_USER_UNKNOWN 0xFF       /* refreshed state */
  127. #define IMPS_PA_ATTR_VALUE IMPS_PA_ONLINE_STATUS|IMPS_PA_USER_AVAILABILITY|IMPS_PA_STATUS_TEXT|IMPS_PA_STATUS_MOOD|IMPS_PA_STATUS_CONTENT
  128. #define IMPS_PA_ATTR_VALUE_NO_PIC IMPS_PA_ONLINE_STATUS|IMPS_PA_USER_AVAILABILITY|IMPS_PA_STATUS_TEXT|IMPS_PA_STATUS_MOOD
  129. #define IMPS_NUM_MOOD 11        /* number of supported mood */
  130. #define IMPS_ADD_CONT_DIRECT    0       /* cause of add contact list -- add direcrtly */
  131. #define IMPS_ADD_CONT_SEARCH    1       /* cause of add contact list -- add from search result */
  132. #define IMPS_STATUS_OPEN 0      /* opened state of property */
  133. #define IMPS_STATUS_HIDE 1      /* hidden state of property */
  134. #define IMPS_BLOCK 0    /* blocked state */
  135. #define IMPS_GRANT 1    /* unblocked state */
  136. /* chat/chat room */
  137. #define IMPS_MAX_NO_ROOM 5      /* chat room shall not exceed the maximum number of tab count */
  138. #define IMPS_MAX_CHAT_INPUT_LEN 65      /* maximum length of input buffer */
  139. #define IMPS_MAX_CHAT_BUFF 600  /* maximum length of display buffer */
  140. #define IMPS_MAX_CHAT_MSG_COUNT 5       /* maximum number of session hold in MMI task */
  141. #define IMPS_ROOM_MEMBER_LEFT    0      /* cause of group changed -- member left */
  142. #define IMPS_ROOM_MEMBER_JOINED  1      /* cause of group changed -- member joined */
  143. #define IMPS_JOIN_FROM_SEARCH 0 /* cause of join -- from search result */
  144. #define IMPS_JOIN_DIRECT        1       /* cause of join -- join directly */
  145. #define IMPS_JOIN_FROM_INVITE  2        /* cause of join -- join from invitation */
  146. /* About Me related */
  147. #define IMPS_ABOUT_PIC_PREFIX L"about." /* file name of picture */
  148. #define IMPS_MAX_PIC_PATH_LEN 60        /* maximum buffer length to store my picture */
  149. #define IMPS_MAX_PIC_SIZE (20*1024)     /* maximum length of my picture */
  150. /* invitation related */
  151. #define IMPS_MAX_INVITATION_NOTE 1024   /* size of invitation note buffer */
  152. #define IMPS_MAX_INVITEE_SESSION 5      /* maximum number of invitation that can be sent at the same time */
  153. #define IMPS_MAX_PEND_INVITATION 5      /* maximum number of pending invitation */
  154. /*****************************************************************************
  155. * Typedef 
  156. *****************************************************************************/
  157. /* cause of reading NVRAM */
  158. typedef enum
  159. {
  160.     IMPS_NVRAM_INIT = 0,    /* initialization during power on */
  161.     IMPS_NVRAM_PROF_LIST,   /* retrieving profile list */
  162.     IMPS_NVRAM_PROF_EDIT    /* edit a specific profile */
  163. } mmi_imps_nvram_cause;
  164. /* type of chat room */
  165. typedef enum
  166. {
  167.     IMPS_ROOM_TYPE_SINGLE = 0,      /* single talk */
  168.     IMPS_ROOM_TYPE_GROUP_CREATE,    /* a created group */
  169.     IMPS_ROOM_TYPE_GROUP_JOIN       /* a joined group */
  170. } mmi_imps_room_type_enum;
  171. /* source of search */
  172. typedef enum
  173. {
  174.     IMPS_SEARCH_CONT = IMPS_SEARCH_USER,
  175.     IMPS_SEARCH_ROOM = IMPS_SEARCH_GROUP,
  176.     IMPS_SEARCH_WATCHER
  177. } mmi_imps_search_cause_enum;
  178. /* type of sorting type */
  179. typedef enum
  180. {
  181.     IMPS_SORT_BY_NAME = 0,
  182.     IMPS_SORT_BY_STATUS,
  183.     IMPS_SORT_BY_GROUP
  184. } mmi_imps_sort_type_enum;
  185. /* general info of whole IMPS application */
  186. typedef struct
  187. {
  188.     S32 seq_no;         /* global sequence number for chat and invite session */
  189.     U16 curr_action;    /* message id of currently request sent */
  190.     /* e28t? */
  191.     U8 gen_state;       /* general state of IMPS */
  192.     U8 is_login;            /* if it's currently login */
  193.     U8 curr_group;          /* current index of group (for background update) */
  194.     U8 curr_tab;            /* index of current highlighting tab */
  195.     U8 no_tab;              /* total number of tab */
  196.     BOOL auto_update_done;  /* if auto-update finished */
  197.     BOOL is_reentry;        /* re_entry IMPS application when progressing */
  198.     U8 ps_ready_state;  /* state to indicate if the PS is currently ready -- 
  199.                            an auxiliary flag to indicate if the auto-login process can start. */
  200. } mmi_imps_general_info_struct;
  201. /* structure of progressing screen */
  202. typedef struct
  203. {
  204.     U8 *strBody1;
  205.     U8 *strBody2;
  206.     FuncPtr lskFuncPtr;
  207.     FuncPtr rskFuncPtr;
  208.     FuncPtr endFuncPtr;
  209.     U16 strCaption;
  210.     U16 imgCaption;
  211.     U16 strLsk;
  212.     U16 imgLsk;
  213.     U16 strRsk;
  214.     U16 imgRsk;
  215.     U16 imgBody;
  216. } mmi_imps_progress_scr_struct;
  217. /* mapping between errro code and string index */
  218. typedef struct
  219. {
  220.     S32 err_cause;
  221.     U16 str_id;
  222. } mmi_imps_err_mapping_struct;
  223. /* profile */
  224. typedef struct
  225. {
  226.     UI_character_type prof_name[IMPS_PROF_NAME_LEN];    /* name of profile */
  227.     U16 proxy_port;                                     /* port number */
  228.     U8 server[IMPS_MAX_SERVER_ADDRESS_LEN];             /* address of server */
  229.     U8 username[IMPS_MAX_NAME_LEN];                     /* user name */
  230.     U8 passwd[IMPS_MAX_PASSWORD_LEN];                   /* password */
  231.     U8 proxy_ip[4];                                     /* address of proxy server */
  232.     U8 proxy_username[IMPS_MAX_NAME_LEN];               /* username */
  233.     U8 proxy_passwd[IMPS_MAX_PASSWORD_LEN];             /* password */
  234.     U8 conn_type;                                       /* WAP or HTTP */
  235.     U8 dt_acct;                                         /* data account */
  236.     U8 use_proxy;                                       /* use proxy or not */
  237.     U8 auto_login;                                      /* auto login or not */
  238.     U8 auto_update;                                     /* auto update presence data or not */
  239. } mmi_imps_prof_struct;
  240. /* about me NVRAM structure */
  241. typedef struct
  242. {
  243.     UI_character_type pic_name[(FMGR_MAX_FILE_LEN + 1)];    /* file name of the picture */
  244.     UI_character_type my_prof[IMPS_MAX_PA_STATUS_TEXT_LEN]; /* text of profile */
  245.     U8 status;                                              /* status of user */
  246.     U8 mood;                                                /* mood of user */
  247.     U8 is_pic;
  248. } mmi_imps_about_me_nvram_struct;
  249. /* inline editor structure for when editing about me */
  250. typedef struct
  251. {
  252.     S32 status;                                             /* for inline editor */
  253.     S32 mood;                                               /* for inline editor */
  254.     S32 is_pic;                                             /* for inline editor */
  255.     U8 *status_list[3];                                     /* for inline editor */
  256.     U8 *mood_list[IMPS_NUM_MOOD];                           /* for inline editor */
  257.     U8 *file_sel_list[2];                                   /* for inline editor */
  258.     UI_character_type my_prof[IMPS_MAX_PA_STATUS_TEXT_LEN]; /* profile text buff */
  259.     UI_character_type my_pic[IMPS_MAX_PIC_PATH_LEN];        /* original picture */
  260.     UI_character_type file_buff[FMGR_MAX_PATH_LEN];         /* path from FMGR */
  261.     UI_character_type pic_name[(FMGR_MAX_FILE_LEN + 1)];    /* new selected picture */
  262.     U8 is_pic_changed;
  263. } mmi_imps_about_me_struct;
  264. /* nvram struct */
  265. typedef struct
  266. {
  267.     mmi_imps_about_me_nvram_struct about_me;    /* about me */
  268.     mmi_imps_prof_struct prof[IMPS_PROF_COUNT]; /* list of profile */
  269.     U8 act_prof_indx;                           /* index of active profile */
  270.     U8 sort_type;                               /* type of sorting */
  271. } mmi_imps_nvram_struct;
  272. /* Structure used when to store temporary data when editing a Profile. */
  273. typedef struct
  274. {
  275.     S32 conn_type;                                          /* connection type */
  276.     S32 use_proxy;                                          /* user proxy or not */
  277.     S32 auto_login;                                         /* auto-login or not */
  278.     S32 auto_update;                                        /* auto-update or not */
  279.     UI_character_type proxy_ip[4][4];                       /* 255.255.255.255 */
  280.     UI_character_type prof_name[IMPS_PROF_NAME_LEN];        /* profile name */
  281.     UI_character_type server[IMPS_MAX_SERVER_ADDRESS_LEN];  /* server address */
  282.     UI_character_type username[IMPS_MAX_NAME_LEN];          /* username */
  283.     UI_character_type passwd[IMPS_MAX_PASSWORD_LEN];        /* password */
  284.     UI_character_type proxy_port[IMPS_PROF_PORT_LEN];       /* proxy port number */
  285.     UI_character_type proxy_username[IMPS_MAX_NAME_LEN];    /* username of proxy */
  286.     UI_character_type proxy_passwd[IMPS_MAX_PASSWORD_LEN];  /* password of proxy */
  287.     U8 curr_dt_acct;                                        /* index of data account */
  288. } mmi_imps_prof_edit_struct;
  289. /* All misc application when modifying profile settings. */
  290. typedef struct
  291. {
  292.     mmi_imps_prof_edit_struct edit_prof;    /* current editing profile */
  293.     U8 *yes_no_list[2];                     /* Inline selection list for "Yes" and "No" */
  294.     U8 *wap_http_list[2];                   /* Inline selection list for "HTTP" and "WAP" */
  295.     UI_character_type prof_name_list[IMPS_PROF_COUNT][IMPS_PROF_NAME_LEN];      /* List of profile names */
  296.     UI_character_type dt_acct_name[(MAX_DATA_ACCOUNT_NAME_LEN + 1)];    /* Name of current selected data account */
  297.     U8 act_prof_indx;                       /* Index of current active profile */
  298.     U8 hilte_prof;                          /* Index of current highlighted profile */
  299.     U8 setting_type;                        /* Index of current editing setting */
  300. } mmi_imps_prof_misc_struct;
  301. /* common and basic element of a contact */
  302. typedef struct
  303. {
  304.     UI_character_type sname[IMPS_MAX_NAME_LEN]; /* screen name, display name or nick name */
  305.     U8 id[IMPS_MAX_ID_LEN];
  306. } mmi_imps_entity_struct;
  307. /* search criteria structure for inline editor screen */
  308. typedef struct
  309. {
  310.     /* user part */
  311.     UI_character_type username[IMPS_MAX_NAME_LEN];
  312.     UI_character_type phone[IMPS_MAX_USER_MOBILE_PHONE_LEN];
  313.     UI_character_type alias[IMPS_MAX_NAME_LEN];
  314.     UI_character_type email[IMPS_MAX_USER_EMAIL_ADDRESS_LEN];
  315.     /* chat room part */
  316.     UI_character_type room_name[IMPS_MAX_NAME_LEN];
  317.     UI_character_type room_topic[IMPS_MAX_NAME_LEN];
  318.     UI_character_type room_owner[IMPS_MAX_ID_LEN];
  319.     UI_character_type room_joined_user[IMPS_MAX_ID_LEN];
  320. } mmi_imps_search_struct;
  321. /* data strucure of a contact */
  322. typedef struct
  323. {
  324.     UI_character_type nick_name[IMPS_MAX_NAME_LEN]; /* nikc name */
  325.     UI_character_type prof_text[IMPS_MAX_PA_STATUS_TEXT_LEN];   /* text profile */
  326.     U8 id[IMPS_MAX_ID_LEN];                         /* id */
  327.     U8 group_id[IMPS_MAX_ID_LEN];                   /* group id the contact belongs to */
  328.     U8 availability;                                /* availability */
  329.     U8 mood;                                        /* mood */
  330.     U8 comm_state;                                  /* common state */
  331. } mmi_imps_cont_struct;
  332. /* general information of all contacts */
  333. typedef struct
  334. {
  335.     mmi_imps_cont_struct cont_list[IMPS_MAX_NO_CONT];   /* array of contacts */
  336.     mmi_imps_sort_type_enum sort_type;                  /* current sorting criteria of contact list */
  337.     U8 curr_cont;                                       /* index of current highlighted contact */
  338.     U8 no_cont;                                         /* number of contact */
  339.     U8 clear_gui_buff;                                  /* flag to indicate if the GUI buffer of contact list screen shall be cleared or not */
  340.     U8 add_type;                                        /* auxiliary flag to indicate the method of adding a contact */
  341. } mmi_imps_cont_info_struct;
  342. /* structure of inline editor screen */
  343. typedef struct
  344. {
  345.     S32 open_status;                                    /* open online stauts or not */
  346.     S32 open_text;                                      /* open status text or not */
  347.     S32 open_mood;                                      /* open mood or not */
  348.     S32 open_pic;                                       /* open picture or not */
  349.     U8 *open_hide_list[2];                              /* inline selectoin items for open/hide */
  350.     UI_character_type group_name[IMPS_MAX_NAME_LEN];    /* input buffer of group name */
  351. } mmi_imps_group_inline_struct;
  352. /* structure of a group */
  353. typedef struct
  354. {
  355.     S32 no_users;                                       /* number of users in the group */
  356.     UI_character_type group_name[IMPS_MAX_NAME_LEN];    /* group name */
  357.     U8 group_id[IMPS_MAX_ID_LEN];                       /* group id */
  358.     U8 open_status;                                     /* opened/hidden state of online status */
  359.     U8 open_text;                                       /* opened/hidden state of text */
  360.     U8 open_mood;                                       /* opened/hidden state of mood */
  361.     U8 open_pic;                                        /* opened/hidden state of status content */
  362.     U8 is_sync;                                         /* if data is sync with server or not */
  363. } mmi_imps_group_struct;
  364. /* overall information of groups */
  365. typedef struct
  366. {
  367.     mmi_imps_group_inline_struct *inline_edit_group;        /* inline editor structure */
  368.     mmi_imps_group_struct group_list[IMPS_MAX_NO_GROUP];    /* list of groups */
  369.     U8 no_group;                                            /* number of groups */
  370.     U8 curr_item;                                           /* current selected item */
  371.     U8 is_created;      /*
  372.                          * auxiliary variable to indicate 
  373.                          * the group is editing or creating 
  374.                          * when in inline editor screen 
  375.                          */
  376. } mmi_imps_group_info_struct;
  377. /*
  378.  * Structure for a chat session. When the user sends a message to remote contacts, 
  379.  * we have to hold the previous sent message before the response comes back. 
  380.  * If the message is failed to send, we will display a error indication for the user 
  381.  * with the exact message he just tpyed. Success or not, after responses back, 
  382.  * the session will be destroyed. 
  383.  */
  384. typedef struct
  385. {
  386.     S32 session_id;                                         /* session ID */
  387.     UI_character_type input_buff[IMPS_MAX_CHAT_INPUT_LEN];  /* input buffer for the message */
  388.     U8 room_id[IMPS_MAX_ID_LEN];                            /* id of the room */
  389. } mmi_imps_chat_session_struct;
  390. /* structure to store chatting information */
  391. typedef struct
  392. {
  393.     mmi_imps_chat_session_struct chat_session[IMPS_MAX_CHAT_MSG_COUNT];
  394.     U8 curr_room;   /* current seleting highlighting chat room room */
  395.     U8 sel_sym;     /* current selected symbol */
  396. } mmi_imps_chat_info_struct;
  397. /* structure for a chat room */
  398. typedef struct
  399. {
  400.     mmi_imps_entity_struct member[IMPS_MAX_ENTITY_NUMBER];  /* member */
  401.     UI_character_type chat_buff[IMPS_MAX_CHAT_BUFF + 1];    /* buffer of chat history */
  402.     UI_character_type input_buff[IMPS_MAX_CHAT_INPUT_LEN];  /* buffer of current input message */
  403.     UI_character_type room_name[IMPS_MAX_NAME_LEN];         /* name of the chat room */
  404.     UI_character_type room_topic[IMPS_MAX_NAME_LEN];        /* topic of the chat room */
  405.     UI_character_type welcome[IMPS_MAX_NOTE_LEN];           /* welcome text of the chat room */
  406.     UI_character_type sname[IMPS_MAX_NAME_LEN];             /* screen name of the user in the chat room */
  407.     U8 room_id[IMPS_MAX_ID_LEN];                            /* id of the chat room */
  408.     mmi_imps_room_type_enum type;                           /* type of chat room (single talk or chat) */
  409.     U8 is_used;                                             /* is chat room in used */
  410.     U8 no_member;                                           /* number of members in the chat room */
  411.     U8 tab_index;                                           /* tab index that the chat room belongs to */
  412.     BOOL clear_gui_buff;                                    /* if clear GUI buffer is needed */
  413.     BOOL unread_msg;                                        /* if there is any unread message for in the chat room */
  414.     BOOL edit_mode;                                         /* it's in EDIT mode or not */
  415. } mmi_imps_room_struct;
  416. /* structure of inline editor screen when join/create a chat room */
  417. typedef struct
  418. {
  419.     UI_character_type room_name[IMPS_MAX_NAME_LEN]; /* name of chat room */
  420.     UI_character_type topic[IMPS_MAX_NAME_LEN];     /* topic of chat room */
  421.     UI_character_type welcome[IMPS_MAX_NOTE_LEN];   /* welcome text of chat room */
  422.     UI_character_type sname[IMPS_MAX_NAME_LEN];     /* user's screen name in the chat room */
  423.     UI_character_type room_id[IMPS_MAX_ID_LEN];     /* id of the chat room */
  424. } mmi_imps_room_inline_struct;
  425. /* inline editor structure of joining a chat room */
  426. typedef struct
  427. {
  428.     S32 disclose_id;                            /* disclose use's id or not */
  429.     U8 *yes_no_list[2];                         /* list of inline selection for Yes and No */
  430.     UI_character_type room_id[IMPS_MAX_ID_LEN]; /* id of chat room to join */
  431.     UI_character_type sname[IMPS_MAX_NAME_LEN]; /* screen name of the user in the chat room */
  432. } mmi_imps_join_inline_struct;
  433. /* overall information of chat rooms */
  434. typedef struct
  435. {
  436.     mmi_imps_room_struct room_list[IMPS_MAX_NO_ROOM];   /* list of chat rooms */
  437.     mmi_imps_room_inline_struct *inline_open_room;      /* inline editor for creating a chat room */
  438.     mmi_imps_join_inline_struct *inline_join;           /* inline editor for joining a chat room */
  439.     U8 no_rooms;                                        /* number of chat rooms */
  440.     U8 curr_item;                                       /* current selected item in room list */
  441.     U8 join_cause;                                      /* cause of join */
  442. } mmi_imps_room_info_struct;
  443. /* invite session */
  444. typedef struct
  445. {
  446.     S32 session_id;                 /* session id */
  447.     U8 cont_id[IMPS_MAX_ID_LEN];    /* contact id to invite */
  448.     U8 room_id[IMPS_MAX_ID_LEN];    /* chat room to invite */
  449. } mmi_imps_invite_session_struct;
  450. /* structure of pending invitation */
  451. typedef struct
  452. {
  453.     mmi_imps_invite_ind_struct *node;   /* local parameter of invite indication */
  454.     MYTIME time_stamp;                  /* time when invite indication comes */
  455. } mmi_imps_invite_list_struct;
  456. /* overall information of invitation */
  457. typedef struct
  458. {
  459.     S8 *invite_note;                        /* buffer for invitation string */
  460.     mmi_imps_invite_list_struct invite_pending_list[IMPS_MAX_PEND_INVITATION];  /* pending invitation list to process */
  461.     mmi_imps_invite_session_struct invite_session[IMPS_MAX_INVITEE_SESSION];    /* list of invite session that sends out */
  462.     U8 invite_cand_list[IMPS_MAX_NO_CONT];  /* temporary list of contact that can be invite */
  463.     U8 invite_count;                        /* number of invitation that sends out currently */
  464.     U8 curr_sel_cont;                       /* index of current selected contact to invite */
  465.     U8 curr_pend_invite;                    /* index of current pending invitation to process */
  466.     U8 reminder_flag;                       /* shall remind user in IDLE screen or not */
  467. } mmi_imps_invite_info_struct;
  468. /* structure to store result of search */
  469. typedef struct
  470. {
  471.     mmi_imps_entity_struct entity[IMPS_MAX_SEARCH_RESULT];  /* entity list of search result */
  472.     mmi_imps_search_cause_enum search_cause;                /* cause of search */
  473.     U8 count;                                               /* number of items in search result */
  474.     U8 curr_item;                                           /* index of current selected item in search result screen */
  475. } mmi_imps_search_result_struct;
  476. /* data structure used in View Friend's Detail screen */
  477. typedef struct
  478. {
  479.     U8 id[IMPS_MAX_ID_LEN];                                 /* id of the friend */
  480.     UI_character_type file_name[IMPS_MAX_FILE_NAME_LEN];    /* image file name */
  481. } mmi_imps_about_friend_struct;
  482. typedef struct
  483. {
  484.     mmi_imps_general_info_struct gen_info;  /* general information of IMPS application */
  485.     mmi_imps_prof_struct act_prof;  /* current active profile */
  486.     mmi_imps_prof_misc_struct *prof_misc;   /* misc data for editing profile */
  487.     mmi_imps_cont_info_struct cont_info;    /* contact list informaion */
  488.     mmi_imps_search_struct *search_data;    /* search criteria */
  489.     mmi_imps_search_result_struct search_result;    /* result of searching */
  490.     mmi_imps_about_me_struct *about_info;   /* inline buffer for editing about me info */
  491.     mmi_imps_chat_info_struct chat_info;    /* chatting related information */
  492.     mmi_imps_room_info_struct room_info;    /* chat room information */
  493.     mmi_imps_invite_info_struct invite_info;    /* invitation related information */
  494.     mmi_imps_group_info_struct group_info;  /* group releated information */
  495.     mmi_imps_about_friend_struct friend_info;   /* information of a friend when view his detail */
  496.     mmi_imps_progress_scr_struct progress_info; /* general progressing screen */
  497.     UI_character_type path_buff[(FMGR_MAX_PATH_LEN + 1)];   /* common buffer to store file path */
  498.     UI_character_type file_buff[FMGR_MAX_FILE_LEN]; /* common buffer to store file name */
  499. } mmi_imps_context_struct;
  500. /***************************************************************************** 
  501. * Extern Global Variable
  502. *****************************************************************************/
  503. extern mmi_imps_context_struct *imps_p;
  504. /***************************************************************************** 
  505. * Extern Global Function
  506. *****************************************************************************/
  507. #define UI_IMPS_PROT
  508. /* init function */
  509. extern void mmi_imps_init_hilite_hdlr(void);
  510. extern void mmi_imps_init_ps_hdlr(void);
  511. extern void mmi_imps_reset_cntx(void);
  512. extern void mmi_imps_init_icon_list(void);
  513. /* main menu */
  514. extern void mmi_imps_pre_entry_main(void);
  515. extern void mmi_imps_entry_main(void);
  516. extern void mmi_imps_pre_entry_cont(void);
  517. extern void mmi_imps_entry_cont(void);
  518. /* common function */
  519. #define COMM_UI_PROT
  520. extern void mmi_imps_display_progressing(void);
  521. extern void mmi_imps_entry_abort(void);
  522. extern void mmi_imps_pre_entry_progressing(
  523.                 U16 strCaption,
  524.                 U16 imgCaption,
  525.                 U16 strLsk,
  526.                 U16 imgLsk,
  527.                 U16 strRsk,
  528.                 U16 imgRsk,
  529.                 U8 *strBody1,
  530.                 U8 *strBody2,
  531.                 U16 imgBody,
  532.                 FuncPtr lskFuncPtr,
  533.                 FuncPtr rskFuncPtr,
  534.                 FuncPtr endFuncPtr);
  535. extern void mmi_imps_entry_progressing(void);
  536. extern void mmi_imps_entry_confirm(U16 msg, FuncPtr lskFuncPtr, FuncPtr rskFuncPtr);
  537. extern void mmi_imps_entry_comm_full_edit_opt(void);
  538. extern void mmi_imps_hilite_comm_input_meth(void);
  539. #define LOGIN_OUT_PROT
  540. extern void mmi_imps_hilite_login(void);
  541. extern void mmi_imps_login_progress(void);
  542. extern void mmi_imps_auto_login(void);
  543. extern void mmi_imps_entry_auto_login(void);
  544. extern void mmi_imps_entry_auto_login_confirm(void);
  545. extern void mmi_imps_auto_login_yes(void);
  546. extern void mmi_imps_entry_login(void);
  547. extern void mmi_imps_login_abort(void);
  548. extern void mmi_imps_login_abort_finish(void);
  549. extern void mmi_imps_re_entry_app(void);
  550. extern void mmi_imps_hilite_logout(void);
  551. extern void mmi_imps_entry_logout(void);
  552. extern void mmi_imps_logout_complete(void);
  553. #define PROF_IMPS_PROT
  554. extern void mmi_imps_pre_entry_prof(void);
  555. extern void mmi_imps_hilite_prof(void);
  556. extern void mmi_imps_prof_read_nvram(mmi_imps_nvram_cause type);
  557. extern void mmi_imps_entry_prof(void);
  558. extern void mmi_imps_prof_save(void);
  559. extern void mmi_imps_prof_save_no(void);
  560. extern void mmi_imps_prof_save_yes(void);
  561. extern U8 mmi_imps_prof_del_callback(void *param);
  562. extern void mmi_imps_prof_free_mem_n_back(void);
  563. extern void mmi_imps_prof_free_mem(void);
  564. extern void mmi_imps_hilite_prof_list(S32 index);
  565. extern void mmi_imps_entry_prof_opt(void);
  566. extern void mmi_imps_entry_prof_activate(void);
  567. extern void mmi_imps_hilite_prof_setting(void);
  568. extern void mmi_imps_hilite_prof_conn(void);
  569. extern void mmi_imps_pre_entry_prof_setting(void);
  570. extern void mmi_imps_pre_entry_prof_conn(void);
  571. extern void mmi_imps_pre_entry_prof_edit(void);
  572. extern void mmi_imps_dt_acct_callback(void);
  573. extern void mmi_imps_entry_prof_edit(void);
  574. extern void mmi_imps_entry_prof_setting(void);
  575. extern void mmi_imps_exit_prof_setting(void);
  576. extern void mmi_imps_prof_setting_fill_inline_struct(void);
  577. extern void mmi_imps_entry_prof_conn(void);
  578. extern void mmi_imps_exit_prof_conn(void);
  579. extern void mmi_imps_prof_conn_fill_inline_struct(void);
  580. extern void mmi_imps_hilite_prof_full_edit(void);
  581. extern void mmi_imps_prof_ip_addr_callback(U8 *string_buffer, U8 *IP1, U8 *IP2, U8 *IP3, U8 *IP4);
  582. extern void mmi_imps_hilite_prof_activate(void);
  583. extern void mmi_imps_hilite_prof_edit(void);
  584. extern void mmi_imps_hilite_prof_done(void);
  585. extern void mmi_imps_prof_list_data_acct(void);
  586. #define CONT_PROT
  587. extern void mmi_imps_entry_cont_opt(void);
  588. extern void mmi_imps_hilite_contact(S32 index);
  589. extern void mmi_imps_cont_redraw_list(void);
  590. extern void mmi_imps_cont_update_when_msg_come(imps_entity_struct *entity);
  591. #define DEL_CONT_PROT
  592. extern void mmi_imps_hilite_del_cont(void);
  593. extern void mmi_imps_entry_del_cont_confirm(void);
  594. extern void mmi_imps_del_cont(void);
  595. extern void mmi_imps_del_cont_finished(S32 result);
  596. #define ABOUT_PROT
  597. extern void mmi_imps_hilite_about_me(void);
  598. extern void mmi_imps_pre_entry_about_me(void);
  599. extern void mmi_imps_entry_about_me(void);
  600. extern void mmi_imps_exit_about_me(void);
  601. extern void mmi_imps_about_me_fill_inline_struct(void);
  602. extern void mmi_imps_hilite_about_me_inline_sel(S32 index);
  603. extern void mmi_imps_entry_about_me_sel_file(void);
  604. extern void mmi_imps_hilite_about_pic_sel(void);
  605. extern void mmi_imps_hilite_about_pic_view(void);
  606. extern void mmi_imps_hilite_about_pic_del(void);
  607. extern void mmi_imps_entry_about_pic_sel(void);
  608. extern void mmi_imps_entry_about_pic_view(void);
  609. extern void mmi_imps_entry_about_pic_del(void);
  610. extern void mmi_imps_about_sel_pic_callback(void *filePath, int is_short);
  611. extern void mmi_imps_about_save_pic_callback(void *info);
  612. extern void mmi_imps_about_me_save(void);
  613. extern void mmi_imps_about_me_save_yes(void);
  614. extern void mmi_imps_about_me_save_no(void);
  615. extern void mmi_imps_about_me_write_to_nvram(void);
  616. extern void mmi_imps_about_me_save_done(S32 result);
  617. extern U8 mmi_imps_about_me_del_callback(void *param);
  618. extern void mmi_imps_free_about_me_buff(void);
  619. extern void mmi_imps_about_free_mem_and_back(void);
  620. #define ABOUT_FRIEND_PROT
  621. extern void mmi_imps_hilite_about_friend(void);
  622. extern void mmi_imps_entry_about_friend(void);
  623. extern void mmi_imps_entry_about_friend_opt(void);
  624. extern void mmi_imps_hilite_about_friend_edit(void);
  625. extern void mmi_imps_hilite_about_friend_refresh(void);
  626. extern void mmi_imps_pre_entry_about_friend_edit(void);
  627. extern void mmi_imps_about_friend_edit_done(void);
  628. extern void mmi_imps_about_friend_edit_finish(S32 result);
  629. extern void mmi_imps_about_friend_refersh(void);
  630. extern void mmi_imps_about_friend_abort(void);
  631. extern void mmi_imps_about_friend_refresh_finish(void);
  632. #define ADD_CONT_PROT
  633. extern void mmi_imps_hilite_add_cont(void);
  634. extern void mmi_imps_entry_add_cont(void);
  635. extern void mmi_imps_hilite_add_direct(void);
  636. extern void mmi_imps_pre_entry_add_direct(void);
  637. extern void mmi_imps_entry_add_direct(void);
  638. extern void mmi_imps_exit_add_direct(void);
  639. extern void mmi_imps_add_direct_save(void);
  640. extern void mmi_imps_add_direct_save_yes(void);
  641. extern void mmi_imps_add_direct_fill_inline_struct(void);
  642. extern void mmi_imps_hilite_direct_search(void);
  643. extern void mmi_imps_pre_entry_cont_search(void);
  644. extern void mmi_imps_entry_cont_search(void);
  645. extern void mmi_imps_exit_cont_search(void);
  646. extern void mmi_imps_free_search_mem(void);
  647. extern void mmi_imps_search_free_mem_n_back(void);
  648. extern U8 mmi_imps_search_scr_del_callback(void *param);
  649. extern void mmi_imps_search_fill_inline_struct(void);
  650. extern void mmi_imps_entryt_search_opt(void);
  651. extern void mmi_imps_hilite_search_done(void);
  652. extern void mmi_imps_hilite_search_quit(void);
  653. extern void mmi_imps_search_start(void);
  654. extern void mmi_imps_search_quit(void);
  655. extern void mmi_imps_search_abort(void);
  656. extern void mmi_imps_abort_search_finish(void);
  657. extern void mmi_imps_hilite_search_from_phb(void);
  658. extern void mmi_imps_entry_search_from_phb(void);
  659. extern void mmi_imps_search_phb_callback(MMI_PHB_VCARD_STRUCT *entity);
  660. extern void mmi_imps_entry_search_result(void);
  661. extern void mmi_imps_hilite_search_result(S32 index);
  662. extern void mmi_imps_pre_entry_sel_group(void);
  663. extern void mmi_imps_entry_sel_group(void);
  664. extern void mmi_imps_hilite_sel_group(S32 index);
  665. extern void mmi_imps_pre_entry_input_name(void);
  666. extern void mmi_imps_entry_cont_input_name(void);
  667. extern void mmi_imps_entry_add_cont_input_name_opt(void);
  668. extern void mmi_imps_hilite_input_name_opt_done(void);
  669. extern void mmi_imps_add_cont_done(void);
  670. extern void mmi_imps_add_cont_finished(S32 result);
  671. #define SORT_PROT
  672. extern void mmi_imps_hilite_sort(void);
  673. extern void mmi_imps_entry_sort(void);
  674. extern void mmi_imps_hilite_sort_by_name(void);
  675. extern void mmi_imps_entry_sort_by_name(void);
  676. extern void mmi_imps_hilite_sort_by_status(void);
  677. extern void mmi_imps_entry_sort_by_status(void);
  678. extern void mmi_imps_hilite_sort_by_group(void);
  679. extern void mmi_imps_entry_sort_by_group(void);
  680. extern void mmi_imps_sort_list(void);
  681. extern void mmi_imps_sort_by_name(void);
  682. extern void mmi_imps_sort_by_group(void);
  683. extern void mmi_imps_sort_by_status(void);
  684. #define WATCH_LIST_PROT
  685. extern void mmi_imps_hilite_get_watch_list(void);
  686. extern void mmi_imps_get_watch_list(void);
  687. extern void mmi_imps_get_watch_list_abort(void);
  688. extern void mmi_imps_get_watch_list_abort_finish(void);
  689. extern void mmi_imps_entry_watch_list(void);
  690. extern S32 mmi_imps_pre_entry_watch_list(S16 *file_name);
  691. extern void mmi_imps_hilite_watch_list(S32 index);
  692. #define CHAT_PROT
  693. extern void mmi_imps_hilite_cont_send_msg(void);
  694. extern void mmi_imps_pre_entry_chat(void);
  695. extern void mmi_imps_chat_show_input_screen(void);
  696. extern void mmi_imps_chat_hide_input_screen(BOOL redraw);
  697. extern void mmi_imps_chat_register_key_hdlr(void);
  698. extern void mmi_imps_entry_chat(void);
  699. extern void mmi_imps_exit_chat(void);
  700. extern void mmi_imps_entry_chat_opt(void);
  701. extern void mmi_imps_hilite_chat_send(void);
  702. extern void mmi_imps_hilite_chat_write(void);
  703. extern void mmi_imps_entry_chat_write(void);
  704. extern void mmi_imps_entry_chat_send_opt(void);
  705. extern void mmi_imps_hilite_chat_insert_symbol(void);
  706. extern void mmi_imps_entry_chat_insert_symbol(void);
  707. extern void mmi_imps_hilite_symbol(S32 index);
  708. extern void mmi_imps_hilite_chat_invite(void);
  709. extern void mmi_imps_pre_entry_chat_invite(void);
  710. extern void mmi_imps_entry_chat_invite(void);
  711. extern void mmi_imps_hilite_chat_save(void);
  712. extern void mmi_imps_hilite_chat_member(void);
  713. extern void mmi_imps_entry_chat_member(void);
  714. extern void mmi_imps_entry_chat_save(void);
  715. extern void mmi_imps_chat_save_select_path_done(void *path, int is_short);
  716. extern void mmi_imps_entry_chat_save_filename(void);
  717. extern void mmi_imps_entry_chat_save_opt(void);
  718. extern void mmi_imps_hilite_chat_save_opt_done(void);
  719. extern void mmi_imps_chat_save_done(void);
  720. extern void mmi_imps_hilite_chat_close(void);
  721. extern void mmi_imps_entry_chat_close(void);
  722. extern void mmi_imps_chat_close(void);
  723. extern void mmi_imps_close_chat_room_done(S32 result);
  724. extern void mmi_imps_hilite_chat_send_done(void);
  725. extern void mmi_imps_chat_send_done(void);
  726. extern void mmi_imps_chat_input_opt(void);
  727. extern void mmi_imps_chat_send_key_hdlr(void);
  728. extern void mmi_imps_chat_disp_input_msg(void);
  729. extern void mmi_imps_chat_recv_msg(U16 *msg, U8 room_id, imps_entity_struct *sender);
  730. extern void mmi_imps_chat_disp_user_change_msg(S32 room_id, mmi_imps_entity_struct *member, S32 type);
  731. extern void mmi_imps_chat_display_send_failed(U8 room_id, U16 *msg);
  732. extern void mmi_imps_chat_flush_msg(U16 *data, S32 room_id);
  733. extern S32 mmi_imps_chat_insert_session(void);
  734. extern void mmi_imps_sym_sel_done(void);
  735. #define INVITE_PROT
  736. extern void mmi_imps_hilite_invite_item(S32 index);
  737. extern void mmi_imps_entry_invite_note(void);
  738. extern void mmi_imps_entry_invite_note_opt(void);
  739. extern void mmi_imps_hilite_invite_note_opt_done(void);
  740. extern void mmi_imps_invite_done(void);
  741. extern S32 mmi_imps_invite_insert_session(void);
  742. extern void mmi_imps_invite_disp_msg(void);
  743. extern void mmi_imps_invite_disp_failed_msg(void);
  744. extern void mmi_imps_invite_start(S32 state, S32 id);
  745. extern void mmi_imps_invite_finish(BOOL accept, S32 session_id, imps_entity_struct *sender, U16 *response_note);
  746. extern void mmi_imps_check_pending_invite(void);
  747. extern void mmi_imps_entry_invite_ind(void);
  748. extern void mmi_imps_ps_invite_reject(void);
  749. extern U8 mmi_imps_invite_ind_scr_del_callback(void *param);
  750. extern void mmi_imps_invite_ind_free_mem(void);
  751. extern void mmi_imps_invite_ind_free_n_back(void);
  752. extern void mmi_imps_invite_ind_release_node(void);
  753. extern void mmi_imps_invite_ind_gen_note(void);
  754. extern void mmi_imps_invite_accept(void);
  755. extern void mmi_imps_entry_invite_reminder(void);
  756. extern void mmi_imps_entry_invite_key_lokced(U16 lsk_img_id, U16 lsk_str_id, U16 rsk_img_id, U16 rsk_str_id);
  757. extern void mmi_imps_free_invite_list(void);
  758. #define GROUP_PROT
  759. extern void mmi_imps_hilite_manage_group(void);
  760. extern void mmi_imps_entry_group(void);
  761. extern void mmi_imps_hilite_group(S32 index);
  762. extern void mmi_imps_entry_group_opt(void);
  763. extern void mmi_imps_entry_group_edit(void);
  764. extern void mmi_imps_exit_group_edit(void);
  765. extern U8 mmi_imps_group_scr_del_callback(void *param);
  766. extern void mmi_imps_group_free_mem_n_back(void);
  767. extern void mmi_imps_group_free_mem(void);
  768. extern void mmi_imps_group_fill_inline_struct(void);
  769. extern void mmi_imps_group_save(void);
  770. extern void mmi_imps_group_save_yes(void);
  771. extern void mmi_imps_group_edit_done(S32 result);
  772. extern void mmi_imps_hilite_group_create(void);
  773. extern void mmi_imps_hilite_group_edit(void);
  774. extern void mmi_imps_pre_entry_group_create(void);
  775. extern void mmi_imps_pre_entry_group_edit(void);
  776. extern void mmi_imps_hilite_group_del(void);
  777. extern void mmi_imps_entry_group_del(void);
  778. extern void mmi_imps_group_del_yes(void);
  779. extern void mmi_imps_group_del_done(S32 result);
  780. extern void mmi_imps_hilite_group_list_member(void);
  781. extern void mmi_imps_pre_entry_group_list_member(void);
  782. extern void mmi_imps_entry_group_list_member(void);
  783. #define BLOCK_PROT
  784. extern void mmi_imps_hilite_block_grant(void);
  785. extern void mmi_imps_entry_block_grant(void);
  786. extern void mmi_imps_block_grant_done(S32 result);
  787. #define ROOM_PROT
  788. extern void mmi_imps_room_reset_cntx(mmi_imps_room_struct *room);
  789. extern void mmi_imps_room_close_finished(mmi_imps_room_struct *room);
  790. extern void mmi_imps_new_room_string(S8 *chat_buff, S8 *room);
  791. extern void mmi_imps_hilite_chat_room(void);
  792. extern void mmi_imps_entry_room(void);
  793. extern void mmi_imps_hilite_room(S32 index);
  794. extern void mmi_imps_entry_room_opt(void);
  795. extern void mmi_imps_hilite_room_open(void);
  796. extern void mmi_imps_pre_entry_room_open(void);
  797. extern void mmi_imps_entry_room_open(void);
  798. extern void mmi_imps_exit_room_open(void);
  799. extern U8 mmi_imps_room_scr_del_callback(void *param);
  800. extern void mmi_imps_free_room_mem(void);
  801. extern void mmi_imps_room_create_fill_inline_struct(void);
  802. extern void mmi_imps_room_create_done(void);
  803. extern void mmi_imps_room_create_yes(void);
  804. extern void mmi_imps_room_create_finish(S32 result);
  805. extern void mmi_imps_hilite_room_search(void);
  806. extern void mmi_imps_room_pre_entry_search(void);
  807. extern void mmi_imps_entry_room_search(void);
  808. extern void mmi_imps_exit_room_search(void);
  809. extern void mmi_imps_room_search_fill_inline_struct(void);
  810. extern void mmi_imps_entryt_room_search_opt(void);
  811. extern void mmi_imps_hilite_room_search_done(void);
  812. extern void mmi_imps_hilite_room_search_quit(void);
  813. extern void mmi_imps_room_search_quit(void);
  814. extern void mmi_imps_room_search_start(void);
  815. extern void mmi_imps_hilite_room_close(void);
  816. extern void mmi_imps_entry_room_close(void);
  817. extern void mmi_imps_room_close(void);
  818. extern void mmi_imps_hilite_room_jump_to(void);
  819. extern void mmi_imps_hilite_room_join(void);
  820. extern void mmi_imps_pre_entry_room_direct_join(void);
  821. extern void mmi_imps_entry_room_direct_join(void);
  822. extern void mmi_imps_eixt_room_direct_join(void);
  823. extern void mmi_imps_room_join_fill_inline_struct(void);
  824. extern void mmi_imps_room_direct_join_confirm(void);
  825. extern void mmi_imps_room_direct_join_yes(void);
  826. extern void mmi_imps_room_jump_to(void);
  827. extern void mmi_imps_pre_entry_join(void);
  828. extern void mmi_imps_entry_join(void);
  829. extern void mmi_imps_exit_join(void);
  830. extern void mmi_imps_join_fill_inline_struct(void);
  831. extern void mmi_imps_join_free_mem_n_back(void);
  832. extern U8 mmi_imps_join_scr_del_callback(void *param);
  833. extern void mmi_imps_join_free_mem(void);
  834. extern void mmi_imps_join_room(void);
  835. extern void mmi_imps_join_room_yes(void);
  836. extern void mmi_imps_join_room_finished(void *msg);
  837. #define PS_IMPS_PROT
  838. extern void mmi_imps_init_ps_before_idle(void);
  839. extern void mmi_imps_ps_send_msg(U16 msg_id, void *local_param_ptr, void *peer_buf_ptr);
  840. extern void mmi_imps_ps_login_req(void);
  841. extern void mmi_imps_ps_login_rsp(void *msg);
  842. extern void mmi_imps_ps_logout_req(void);
  843. extern void mmi_imps_ps_logout_rsp(void *msg);
  844. extern void mmi_imps_ps_abort_login_req(void);
  845. extern void mmi_imps_ps_abort_login_rsp(void *msg);
  846. extern void mmi_imps_ps_get_contact_list_req(void);
  847. extern void mmi_imps_ps_get_contact_list_rsp(void *msg);
  848. extern void mmi_imps_ps_view_contact_list_req(U8 index);
  849. extern void mmi_imps_ps_view_contact_list_rsp(void *msg);
  850. extern void mmi_imps_ps_search_req(U8 type);
  851. extern void mmi_imps_ps_search_rsp(void *msg);
  852. extern void mmi_imps_ps_abort_search_req(void);
  853. extern void mmi_imps_ps_abort_search_rsp(void *msg);
  854. extern void mmi_imps_ps_edit_contact_list_req(void);
  855. extern void mmi_imps_ps_edit_contact_list_rsp(void *msg);
  856. extern void mmi_imps_ps_add_contact_list_req(void);
  857. extern void mmi_imps_ps_add_contact_list_rsp(void *msg);
  858. extern void mmi_imps_ps_del_contact_list_req(void);
  859. extern void mmi_imps_ps_del_contact_list_rsp(void *msg);
  860. extern void mmi_imps_ps_del_cont_req(void);
  861. extern void mmi_imps_ps_del_cont_rsp(void *msg);
  862. extern void mmi_imps_add_cont_req(U8 *group_id, U8 *cont_id, S8 *nick_name);
  863. extern void mmi_imps_add_cont_rsp(void *msg);
  864. extern void mmi_imps_edit_cont_req(U8 *group_id, U8 *cont_id, S8 *nick_name);
  865. extern void mmi_imps_edit_cont_rsp(void *msg);
  866. extern void mmi_imps_sync_cont_list(void);
  867. extern void mmi_imps_ps_get_pa_req(void *);
  868. extern void mmi_imps_ps_get_pa_rsp(void *msg);
  869. extern void mmi_imps_ps_get_about_me_req(void);
  870. extern void mmi_imps_ps_get_single_pa_req(U8 *id);
  871. extern void mmi_imps_ps_get_single_pa_rsp(void *msg);
  872. extern void mmi_imps_abort_get_pa_req(void);
  873. extern void mmi_imps_abort_get_pa_rsp(void *msg);
  874. extern void mmi_imps_ps_pa_notify_ind(void *msg);
  875. extern void mmi_imps_ps_update_pa_req(void);
  876. extern void mmi_imps_ps_update_pa_rsp(void *msg);
  877. extern void mmi_imps_ps_block_entity_req(U8 type);
  878. extern void mmi_imps_ps_block_entity_rsp(void *msg);
  879. extern void mmi_imps_ps_get_block_list_req(void);
  880. extern void mmi_imps_ps_get_block_list_rsp(void *msg);
  881. extern void mmi_imps_ps_newmsg_ind(void *msg);
  882. extern void mmi_imps_ps_get_watch_list_req(void);
  883. extern void mmi_imps_ps_get_watch_list_rsp(void *msg);
  884. extern void mmi_imps_ps_abort_get_watch_list_req(void);
  885. extern void mmi_imps_ps_abort_get_watch_list_rsp(void *msg);
  886. extern void mmi_imps_ps_create_group_req(void);
  887. extern void mmi_imps_ps_create_group_rsp(void *msg);
  888. extern void mmi_imps_ps_join_group_req(S8 *id);
  889. extern void mmi_imps_ps_join_group_rsp(void *msg);
  890. extern void mmi_imps_ps_del_group_req(U8 *room_id);
  891. extern void mmi_imps_ps_del_group_rsp(void *msg);
  892. extern void mmi_imps_ps_leave_group_req(U8 *room_id);
  893. extern void mmi_imps_ps_leave_group_rsp(void *msg);
  894. extern void mmi_imps_ps_leave_group_ind(void *msg);
  895. extern void mmi_imps_ps_group_change_ind(void *ind);
  896. extern void mmi_imps_ps_ready_ind(void *msg);
  897. extern void mmi_imps_ps_invite_req(S32 id);
  898. extern void mmi_imps_ps_invite_rsp(void *msg);
  899. extern void mmi_imps_ps_invite_reply_req(BOOL accept);
  900. extern void mmi_imps_ps_invite_response_ind(void *msg);
  901. extern void mmi_imps_ps_invite_ind(void *msg);
  902. extern void mmi_imps_ps_invite_reply_rsp(void *msg);
  903. extern void mmi_imps_ps_reject_invite_reply_rsp(void *msg);
  904. extern void mmi_imps_ps_invite_res(void);
  905. extern void mmi_imps_ps_send_msg_req(S32 msg_id, S16 *msg, U8 *recv_id, U8 recv_type, S8 *screen_name);
  906. extern void mmi_imps_ps_send_msg_rsp(void *msg);
  907. extern void mmi_imps_ps_server_disconn_ind(void *msg);
  908. #define TAB_PROT
  909. extern void mmi_imps_tab_init(void);
  910. extern void mmi_imps_tab_del(U8 tab_index, U8 hilite);
  911. extern void mmi_imps_tab_prev(void);
  912. extern void mmi_imps_tab_next(void);
  913. extern void mmi_imps_tab_jump(int index);
  914. extern void mmi_imps_tab_redraw(U16 scr_id);
  915. extern void mmi_imps_tab_update_event(mmi_imps_room_struct *room, imps_entity_struct *entity);
  916. #define UTIL_IMPS_PROT
  917. extern void mmi_imps_util_init_list(void);
  918. extern U16 mmi_imps_util_get_err_str(S32 err);
  919. extern void mmi_imps_util_get_work_path(S8 *dest);
  920. extern void mmi_imps_util_get_img_path(S8 *dest);
  921. extern BOOL mmi_imps_util_is_imps_scr(U16 curr_scr);
  922. extern BOOL mmi_imps_util_is_in_imps(void);
  923. extern void mmi_imps_util_del_up_to_screen(U16 scr_id);
  924. extern void mmi_imps_util_go_back_2_hist(void);
  925. extern void mmi_imps_util_del_scr_after_progress(U16 result_scr);
  926. extern void mmi_imps_util_free_buff_when_logout(void);
  927. extern S32 mmi_imps_util_get_seq_no(void);
  928. extern void mmi_imps_util_read_nvram(void *buff);
  929. extern void mmi_imps_util_write_nvram(void *buff);
  930. extern S32 mmi_imps_util_get_file_size(S8 *filePathPtr, S32 *fileSizePtr);
  931. extern BOOL mmi_imps_util_check_file_exist(S8 *filePathName);
  932. extern void mmi_imps_util_update_cont(void);
  933. extern S32 mmi_imps_util_write_cont(void);
  934. extern S32 mmi_imps_util_read_cont(void);
  935. extern S32 mmi_imps_util_write_group(void);
  936. extern S32 mmi_imps_util_read_group(void);
  937. extern void mmi_imps_util_reset_cont_list(void);
  938. extern void mmi_imps_util_reset_about_me(void *prof_buff);
  939. extern BOOL mmi_imps_util_is_cont_exist(S8 *id);
  940. extern BOOL mmi_imps_util_is_id_same(S8 *src, S8 *dest);
  941. extern BOOL mmi_imps_util_is_room_joined(S8 *id);
  942. extern S32 mmi_imps_util_get_empty_room_slot(void);
  943. extern S8 *mmi_imps_get_mine_type(S8 *file_ext);
  944. extern void mmi_imps_util_append_dot(S8 *source);
  945. extern void mmi_imps_util_copy_with_dot(S8 *source, S8 *dest, S32 max_len);
  946. extern void mmi_imps_util_ansi_2_ucs2_menu(S8 *source, S8 *dest, S32 max_len);
  947. extern void mmi_imps_util_generate_name_hint(S8 *source, S32 hint_id, S32 max_len);
  948. extern BOOL mmi_imps_util_is_group_name_valid(S8 *name);
  949. extern BOOL mmi_imps_util_is_username_valid(S8 *name);
  950. extern void mmi_imps_util_append_wv(S8 *dest, S32 max_len);
  951. extern S8 mmi_imps_util_strnicmp(S8 *src, S8 *dest, S32 maxlen);
  952. extern S8 mmi_imps_util_stricmp(S8 *src, S8 *dest);
  953. extern void mmi_imps_util_blink_tab(void);
  954. extern mmi_imps_cont_struct *mmi_imps_util_search_cont(S8 *id);
  955. extern void mmi_imps_util_update_status_icon(void);
  956. extern void mmi_imps_util_update_login_icon(void);
  957. extern void mmi_imps_util_disp_err_popup(U16 str_id);
  958. extern void mmi_imps_util_disp_empty_popup(void);
  959. extern U8 mmi_imps_util_is_on_idle(void);
  960. extern void mmi_imps_util_disp_popup_done(void);
  961. extern void mmi_imps_util_disp_warning_popup(U16 str_id);
  962. extern void mmi_imps_util_play_tone(U8 tone_type);
  963. extern S32 mmi_imps_util_find_room(S8 *room_id);
  964. extern S32 mmi_imps_util_find_cont(S8 *cont_id);
  965. #ifdef IMPS_FOR_OMA_ONLY
  966. extern void mmi_imps_hilite_subscribe(void);
  967. extern void mmi_imps_hilite_unsubscribe(void);
  968. extern void mmi_imps_entry_subscribe(void);
  969. extern void mmi_imps_entry_unsubscribe(void);
  970. extern void mmi_imps_ps_subs_pa_req(S8 *id);
  971. extern void mmi_imps_ps_unsubs_pa_req(S8 *id);
  972. extern void mmi_imps_ps_subs_pa_rsp(void *msg);
  973. extern void mmi_imps_subscribe_pa_finished(S32 result);
  974. extern void mmi_imps_hilite_group_broadcast(void);
  975. extern void mmi_imps_entry_group_broadcast(void);
  976. extern void mmi_imps_group_broadcast_done(void);
  977. extern void mmi_imps_group_broadcast_finished(void);
  978. extern void mmi_imps_ps_broadcast_msg_rsp(void *msg);
  979. extern void mmi_imps_ps_broadcast_msg_req(S32 group_index, S8 *msg);
  980. extern void mmi_imps_ps_subs_group_pa_req(U8 *id);
  981. #endif /* IMPS_FOR_OMA_ONLY */ 
  982. #endif /* __MMI_IMPS__ */ /* #ifdef __MMI_IMPS__ */
  983. #endif /* _MMI_IMPS_PROT_H */