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

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.  * grouplist.c
  39.  *
  40.  * Project:
  41.  * --------
  42.  *   MAUI
  43.  *
  44.  * Description:
  45.  * ------------
  46.  *   <file description>.
  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.  * removed!
  63.  * removed!
  64.  * removed!
  65.  *
  66.  * removed!
  67.  * removed!
  68.  * removed!
  69.  *
  70.  * removed!
  71.  * removed!
  72.  * removed!
  73.  *
  74.  * removed!
  75.  * removed!
  76.  * removed!
  77.  *
  78.  *------------------------------------------------------------------------------
  79.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  80.  *============================================================================== 
  81.  *******************************************************************************/
  82. /**
  83.  * Copyright Notice
  84.  * ?2002 - 2003, Pixtel Communications, Inc., 1489 43rd Ave. W.,
  85.  * Vancouver, B.C. V6M 4K8 Canada. All Rights Reserved.
  86.  *  (It is illegal to remove this copyright notice from this software or any
  87.  *  portion of it)
  88.  */
  89. #ifndef __MMI_REMOVE_CUG__
  90. /**************************************************************
  91.    FILENAME : GroupList.c
  92.    PURPOSE     : Screens for GroupList application
  93.    REMARKS     : nil
  94.    AUTHOR      : Anil Kumar Vutukuru
  95.    DATE     : 5/5/2003
  96. **************************************************************/
  97. #include "stdC.h"
  98. #include "L4Dr1.h"
  99. #include "MainMenuDef.h"
  100. #include "settingdefs.h"
  101. #include "wgui_categories.h"
  102. #include "ProtocolEvents.h"
  103. #include "NVRAMEnum.h"
  104. #include "NVRAMProt.h"
  105. #include "NVRAMType.h"
  106. #include "SettingProfile.h"
  107. #include "CallSetup.h"
  108. #include "DebugInitDef.h"
  109. #include "callsetupenum.h"
  110. #include "ProfileGprots.h"
  111. #include "CommonScreens.h"
  112. /* MTK Leo add 20040608 */
  113. #include "wgui_categories_popup.h"
  114. #include "wgui_categories_inputs.h"
  115. #define  MAX_CUG_GROUP_NUM    11
  116. #define  MAX_CUG_NAME_LENGTH     16
  117. #define  NVRAM_MAX_GROUP_NAME_SIZE     36
  118. typedef struct CUGItemStruct
  119. {
  120.     U8 name[(MAX_CUG_NAME_LENGTH *ENCODING_LENGTH) + 2];
  121.     U8 index;
  122. } CUGItemStruct;
  123. typedef struct
  124. {
  125.     CUGItemStruct GroupList[MAX_CUG_GROUP_NUM];
  126.     CUGItemStruct GroupItemInput;
  127.     U8 InputIndexBuf[3 *ENCODING_LENGTH];
  128.     U8 NumOfList;
  129.     U8 SelectIndex;
  130.     U8 DeactiveThenDelete;
  131. } CUGContext;
  132. CUGContext g_cug_context;
  133. void EntryCALLSETCUGEditOptions(void);
  134. void HighlightEditOptionsDone(void);
  135. void HighlightEditOptionsInputMethod(void);
  136. void InitNvramCUG(void);
  137. void AddNewGroup(void);
  138. void HighlightGroupList(S32 index);
  139. void EntryCALLSETCUGMain(void);
  140. void EntryCALLSETCUGOptions(void);
  141. void HighlightCALLSETCUGActive(void);
  142. void EntryGroupListActivate(void);
  143. void CALLSETCUGActiveRsp(void *info);
  144. void HighlightCALLSETCUGDeactive(void);
  145. void EntryGroupListDeactivate(void);
  146. void CALLSETCUGDeactiveRsp(void *info);
  147. U8 IsValidateIndex(U8 index);
  148. void HighlightCALLSETCUGAdd(void);
  149. void EntryCALLSETCUGAddList(void);
  150. void AddEntryToNVRAM(void);
  151. void EntryCALLSETCUGAddListIndex(void);
  152. void HighlightCALLSETCUGEdit(void);
  153. void GroupListDelete(void);
  154. void EntryCALLSETCUGDelListCfrm(void);
  155. void EntryCALLSETCUGEditList(void);
  156. void EditEntryNVRAM(void);
  157. void HighlightCALLSETCUGDelete(void);
  158. void GoBackTwoScreens(void);
  159. void EntryCALLSETCUGEditListIndex(void);
  160. void ExitCALLSETCUGAddListIndex(void);
  161. void CUGDelScrToMain(void);
  162. /*****************************************************************************
  163.  * FUNCTION
  164.  *  InitGroupListApp
  165.  * DESCRIPTION
  166.  *  Initialize GroupList Application
  167.  * NA
  168.  *  
  169.  * PARAMETERS
  170.  *  void
  171.  *  S16(?)      [OUT]       
  172.  * RETURNS
  173.  *  void
  174.  *****************************************************************************/
  175. S16 InitGroupListApp(void)
  176. {
  177.     /*----------------------------------------------------------------*/
  178.     /* Local Variables                                                */
  179.     /*----------------------------------------------------------------*/
  180.     /*----------------------------------------------------------------*/
  181.     /* Code Body                                                      */
  182.     /*----------------------------------------------------------------*/
  183.     /* set the menu hilite handlers */
  184.     SetHiliteHandler(MAIN_MENU_GROUPLIST_ACTIVATE, HighlightCALLSETCUGActive);
  185.     SetHiliteHandler(MAIN_MENU_GROUPLIST_DEACTIVATE, HighlightCALLSETCUGDeactive);
  186.     SetHiliteHandler(MAIN_MENU_GROUPLIST_ADD, HighlightCALLSETCUGAdd);
  187.     SetHiliteHandler(MAIN_MENU_GROUPLIST_DELETE, HighlightCALLSETCUGDelete);
  188.     SetHiliteHandler(MAIN_MENU_GROUPLIST_EDIT, HighlightCALLSETCUGEdit);
  189.     SetHiliteHandler(MENU_CUG_DONE_OPTION_ID, HighlightEditOptionsDone);
  190.     SetHiliteHandler(MENU_CUG_INPUT_METHOD_OPTION_ID, HighlightEditOptionsInputMethod);
  191.     return 0;
  192. }
  193. /*****************************************************************************
  194.  * FUNCTION
  195.  *  InitNvramCUG
  196.  * DESCRIPTION
  197.  *  Initialize NVRAM for GroupList
  198.  * NA
  199.  *  
  200.  * PARAMETERS
  201.  *  void
  202.  *  S16(?)      [OUT]       
  203.  * RETURNS
  204.  *  void
  205.  *****************************************************************************/
  206. void InitNvramCUG(void)
  207. {
  208.     /*----------------------------------------------------------------*/
  209.     /* Local Variables                                                */
  210.     /*----------------------------------------------------------------*/
  211.     S16 error;
  212.     U8 j;
  213.     /*----------------------------------------------------------------*/
  214.     /* Code Body                                                      */
  215.     /*----------------------------------------------------------------*/
  216.     /* Initialize the group list by reading from NVRAM */
  217.     for (j = 0; j < MAX_CUG_GROUP_NUM; j++)
  218.     {
  219.         ReadRecord(
  220.             NVRAM_EF_GROUPLIST_LID,
  221.             (U8) (j + 1),
  222.             &g_cug_context.GroupList[j],
  223.             NVRAM_MAX_GROUP_NAME_SIZE,
  224.             &error);
  225.         if (g_cug_context.GroupList[j].name[0] != 0xFF)
  226.         {
  227.             g_cug_context.NumOfList++;
  228.         }
  229.         else
  230.         {
  231.             break;
  232.         }
  233.     }
  234. }
  235. /*****************************************************************************
  236.  * FUNCTION
  237.  *  HighlightGroupList
  238.  * DESCRIPTION
  239.  *  Highlight grouplist menu item
  240.  * NA
  241.  *  
  242.  * PARAMETERS
  243.  *  index       [IN]        
  244.  * RETURNS
  245.  *  void
  246.  *****************************************************************************/
  247. void HighlightGroupList(S32 index)
  248. {
  249.     /*----------------------------------------------------------------*/
  250.     /* Local Variables                                                */
  251.     /*----------------------------------------------------------------*/
  252.     /*----------------------------------------------------------------*/
  253.     /* Code Body                                                      */
  254.     /*----------------------------------------------------------------*/
  255.     /* updating the highlited index */
  256.     g_cug_context.SelectIndex = (U8) index;
  257.     return;
  258. }
  259. /*****************************************************************************
  260.  * FUNCTION
  261.  *  EntryCALLSETCUGMain
  262.  * DESCRIPTION
  263.  *  Showing grouplist screen
  264.  * NA
  265.  *  
  266.  * PARAMETERS
  267.  *  void
  268.  * RETURNS
  269.  *  void
  270.  *****************************************************************************/
  271. void EntryCALLSETCUGMain(void)
  272. {
  273.     /*----------------------------------------------------------------*/
  274.     /* Local Variables                                                */
  275.     /*----------------------------------------------------------------*/
  276.     U8 *nStrItemList[MAX_CUG_GROUP_NUM];    /* Stores the strings id of submenus returned */
  277.     U8 *guiBuffer;                          /* Buffer holding history data */
  278.     U8 i;
  279.     static U8 firstTime = 0;
  280.     /*----------------------------------------------------------------*/
  281.     /* Code Body                                                      */
  282.     /*----------------------------------------------------------------*/
  283. #ifdef MMI_ON_WIN32
  284.     PopupNoSupport();
  285.     return;
  286. #endif /* MMI_ON_WIN32 */ 
  287.     /* if its not for the first time initialize the nvram for CUG */
  288.     if (firstTime != 1)
  289.     {
  290.         firstTime = 1;
  291.         /* initialize nvram */
  292.         InitNvramCUG();
  293.     }
  294.     EntryNewScreen(SCR_ID_CALLSET_CUG_MAIN, NULL, EntryCALLSETCUGMain, NULL);
  295.     /* Get current screen info into gui buffer  for history purposes */
  296.     guiBuffer = GetCurrGuiBuffer(SCR_ID_CALLSET_CUG_MAIN);
  297.     /* Register highlight handler to be called in menu screen */
  298.     RegisterHighlightHandler(HighlightGroupList);
  299.     for (i = 0; i < g_cug_context.NumOfList; i++)
  300.     {
  301.         nStrItemList[i] = (U8*) g_cug_context.GroupList[i].name;
  302.     }
  303.     if (g_cug_context.NumOfList == 0)
  304.     {
  305.         /* if the list is empty show empty list */
  306.         nStrItemList[0] = (U8*) GetString(STR_GLOBAL_EMPTY_LIST);
  307.         /* Display corresponding Screen */
  308.         ShowCategory6Screen(
  309.             STR_GROUPLIST_CAPTION,
  310.             MAIN_MENU_TITLE_SETTINGS_ICON,
  311.             STR_GLOBAL_ADD,
  312.             IMG_GLOBAL_OK,
  313.             STR_GLOBAL_BACK,
  314.             IMG_GLOBAL_BACK,
  315.             1,
  316.             nStrItemList,
  317.             NULL,
  318.             0,
  319.             guiBuffer);
  320.         /* Register function with left/right softkey */
  321.         SetLeftSoftkeyFunction(EntryCALLSETCUGAddList, KEY_EVENT_UP);
  322.         SetKeyHandler(EntryCALLSETCUGAddList, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
  323.     }
  324.     else
  325.     {
  326.         if (guiBuffer != NULL)
  327.         {
  328.             memset((void*)guiBuffer, 0, 2);
  329.             if (g_cug_context.SelectIndex >= g_cug_context.NumOfList)
  330.             {
  331.                 g_cug_context.SelectIndex = g_cug_context.NumOfList - 1;
  332.             }
  333.         }
  334.         else
  335.         {
  336.             g_cug_context.SelectIndex = 0;
  337.         }
  338.         /* Display corresponding Screen */
  339.         ShowCategory84Screen(
  340.             STR_GROUPLIST_CAPTION,
  341.             MAIN_MENU_TITLE_SETTINGS_ICON,
  342.             STR_GLOBAL_OPTIONS,
  343.             IMG_GLOBAL_OPTIONS,
  344.             STR_GLOBAL_BACK,
  345.             IMG_GLOBAL_BACK,
  346.             g_cug_context.NumOfList,
  347.             nStrItemList,
  348.             (U16*) gIndexIconsImageList,
  349.             1,
  350.             (S32) g_cug_context.SelectIndex,
  351.             guiBuffer);
  352.         /* Register function with left/right softkey */
  353.         SetLeftSoftkeyFunction(EntryCALLSETCUGOptions, KEY_EVENT_UP);
  354.         SetKeyHandler(EntryCALLSETCUGOptions, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
  355.     }
  356.     /* Register function with left/right softkey */
  357.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  358.     /* Register left arrow key */
  359.     SetKeyHandler(GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
  360.     return;
  361. }
  362. /*****************************************************************************
  363.  * FUNCTION
  364.  *  EntryCALLSETCUGOptions
  365.  * DESCRIPTION
  366.  *  Showing grouplist Options Screen
  367.  * NA
  368.  *  
  369.  * PARAMETERS
  370.  *  void
  371.  * RETURNS
  372.  *  void
  373.  *****************************************************************************/
  374. void EntryCALLSETCUGOptions(void)
  375. {
  376.     /*----------------------------------------------------------------*/
  377.     /* Local Variables                                                */
  378.     /*----------------------------------------------------------------*/
  379.     U16 nStrItemList[MAX_SUB_MENUS];    /* Stores the strings id of submenus returned */
  380.     U16 nNumofItem;                     /* Stores no of children in the submenu */
  381.     U8 *guiBuffer;              /* Buffer holding history data */
  382.     U16 menuId;
  383.     /*----------------------------------------------------------------*/
  384.     /* Code Body                                                      */
  385.     /*----------------------------------------------------------------*/
  386.     EntryNewScreen(SCR_ID_CALLSET_CUG_OPTIONS, NULL, EntryCALLSETCUGOptions, NULL);
  387.     /* Get current screen info into gui buffer  for history purposes */
  388.     guiBuffer = GetCurrGuiBuffer(SCR_ID_CALLSET_CUG_OPTIONS);
  389.     /* check if the list is full or not */
  390.     if (g_cug_context.NumOfList == 10)
  391.     {
  392.         /* if the list is full remove the add option */
  393.         menuId = MAIN_MENU_GROUPLIST_OPTIONS_MENUID_SUB;
  394.     }
  395.     else
  396.     {
  397.         /* if the list is not full */
  398.         menuId = MAIN_MENU_GROUPLIST_OPTIONS_MENUID;
  399.     }
  400.     /* Retrieve no of child of menu item to be displayed */
  401.     nNumofItem = GetNumOfChild(menuId);
  402.     /* Get attribute of menu to be displayed */
  403.     /* nDispAttribute = GetDispAttributeOfItem(menuId); */
  404.     /* Retrieve string ids in sequence of given menu item to be displayed */
  405.     GetSequenceStringIds(menuId, nStrItemList);
  406.     /* Set current parent id */
  407.     SetParentHandler(menuId);
  408.     if (g_cug_context.NumOfList == 0)
  409.     {
  410.         /* if the list is empty */
  411.         /* Display Category15 Screen */
  412.         ShowCategory15Screen(
  413.             STR_GROUPLIST_OPTION_CAPTION,
  414.             MAIN_MENU_TITLE_SETTINGS_ICON,
  415.             STR_GLOBAL_OK,
  416.             IMG_GLOBAL_OK,
  417.             STR_GLOBAL_BACK,
  418.             IMG_GLOBAL_BACK,
  419.             nNumofItem = 1,
  420.             nStrItemList + 1,
  421.             (U16*) gIndexIconsImageList,
  422.             1,
  423.             0,
  424.             guiBuffer);
  425.         /* Register function with left/right softkey */
  426.         SetLeftSoftkeyFunction(EntryCALLSETCUGAddList, KEY_EVENT_UP);
  427.     }
  428.     else
  429.     {
  430.         /* if the list is not empty */
  431.         /* Register highlight handler to be called in menu screen */
  432.         RegisterHighlightHandler(ExecuteCurrHiliteHandler);
  433.         /* Display Category15 Screen */
  434.         ShowCategory15Screen(
  435.             STR_GROUPLIST_OPTION_CAPTION,
  436.             MAIN_MENU_TITLE_SETTINGS_ICON,
  437.             STR_GLOBAL_OK,
  438.             IMG_GLOBAL_OK,
  439.             STR_GLOBAL_BACK,
  440.             IMG_GLOBAL_BACK,
  441.             nNumofItem,
  442.             nStrItemList,
  443.             (U16*) gIndexIconsImageList,
  444.             1,
  445.             0,
  446.             guiBuffer);
  447.     }
  448.     /* Register function with right softkey */
  449.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  450.     SetKeyHandler(GoBackHistory, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
  451.     return;
  452. }
  453. /*****************************************************************************
  454.  * FUNCTION
  455.  *  HighlightCALLSETCUGActive
  456.  * DESCRIPTION
  457.  *  Highlight grouplist Activate Options menu item
  458.  * NA
  459.  *  
  460.  * PARAMETERS
  461.  *  void
  462.  * RETURNS
  463.  *  void
  464.  *****************************************************************************/
  465. void HighlightCALLSETCUGActive(void)
  466. {
  467.     /*----------------------------------------------------------------*/
  468.     /* Local Variables                                                */
  469.     /*----------------------------------------------------------------*/
  470.     /*----------------------------------------------------------------*/
  471.     /* Code Body                                                      */
  472.     /*----------------------------------------------------------------*/
  473.     /* Change left soft key icon and label */
  474.     ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
  475.     /* Change right soft key icon and label */
  476.     ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
  477.     /* Register function for left soft key */
  478.     SetLeftSoftkeyFunction(EntryGroupListActivate, KEY_EVENT_UP);
  479.     /* Register function for right soft key */
  480.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  481.     return;
  482. }
  483. /*****************************************************************************
  484.  * FUNCTION
  485.  *  EntryGroupListActivate
  486.  * DESCRIPTION
  487.  *  function for sending req for grouplist Activate
  488.  * NA
  489.  *  
  490.  * PARAMETERS
  491.  *  void
  492.  * RETURNS
  493.  *  void
  494.  *****************************************************************************/
  495. void EntryGroupListActivate(void)
  496. {
  497.     /*----------------------------------------------------------------*/
  498.     /* Local Variables                                                */
  499.     /*----------------------------------------------------------------*/
  500.     mmi_cc_set_cug_req_struct *dataPtr;
  501.     MYQUEUE Message;
  502.     /*----------------------------------------------------------------*/
  503.     /* Code Body                                                      */
  504.     /*----------------------------------------------------------------*/
  505.     ClearInputEventHandler(MMI_DEVICE_ALL);
  506.     /* format the message and send req to l4 */
  507.     Message.oslSrcId = MOD_MMI;
  508.     Message.oslDestId = MOD_L4C;
  509.     Message.oslMsgId = PRT_MMI_CC_SET_CUG_REQ;
  510.     dataPtr = (mmi_cc_set_cug_req_struct*) OslConstructDataPtr(sizeof(mmi_cc_set_cug_req_struct));
  511.     dataPtr->index = g_cug_context.GroupList[g_cug_context.SelectIndex].index;
  512.     dataPtr->mode = CSMCC_ENABLE_CUG_TEMPORARY_MODE;
  513.     dataPtr->info = 0;
  514.     Message.oslDataPtr = (oslParaType*) dataPtr;
  515.     Message.oslPeerBuffPtr = NULL;
  516.     /* set rsp handler for set cug activate req */
  517.     SetProtocolEventHandler(CALLSETCUGActiveRsp, PRT_MMI_CC_SET_CUG_RSP);
  518.     /* send the formatted req to l4 */
  519.     OslMsgSendExtQueue(&Message);
  520.     return;
  521. }
  522. /*****************************************************************************
  523.  * FUNCTION
  524.  *  CALLSETCUGActiveRsp
  525.  * DESCRIPTION
  526.  *  function for processing rsp for grouplist Activate req
  527.  * NA
  528.  *  
  529.  * PARAMETERS
  530.  *  info        [?]     
  531.  * RETURNS
  532.  *  void
  533.  *****************************************************************************/
  534. void CALLSETCUGActiveRsp(void *info)
  535. {
  536.     /*----------------------------------------------------------------*/
  537.     /* Local Variables                                                */
  538.     /*----------------------------------------------------------------*/
  539.     mmi_cc_set_cug_rsp_struct *rsp;
  540.     /*----------------------------------------------------------------*/
  541.     /* Code Body                                                      */
  542.     /*----------------------------------------------------------------*/
  543.     /* S16 error ; */
  544.     rsp = (mmi_cc_set_cug_rsp_struct*) info;
  545.     /* if not for the for the first time */
  546.     if (rsp->result == 1)
  547.     {
  548.         DisplayPopup((PU8) GetString(STR_GLOBAL_DONE), IMG_GLOBAL_ACTIVATED, 1, CS_NOTIFYDURATION, SUCCESS_TONE);
  549.         g_cug_context.GroupList[g_cug_context.SelectIndex].index += 1;
  550.         /* WriteValue(NVRAM_GROUPINDEX, &g_cug_context.GroupList[g_cug_context.SelectIndex].index, DS_BYTE, &error); */
  551.         g_cug_context.GroupList[g_cug_context.SelectIndex].index -= 1;
  552.     }
  553.     else
  554.     {
  555.         /* incase of failure display the not done popup */
  556.         DisplayPopup((PU8) GetString(STR_GLOBAL_NOT_DONE), IMG_GLOBAL_UNFINISHED, 1, CS_NOTIFYDURATION, ERROR_TONE);
  557.     }
  558.     /* delete screens for maitaining hte history */
  559.     CUGDelScrToMain();
  560.     return;
  561. }
  562. /*****************************************************************************
  563.  * FUNCTION
  564.  *  HighlightCALLSETCUGDeactive
  565.  * DESCRIPTION
  566.  *  Highlight grouplist Deactivate Options menu item
  567.  * NA
  568.  *  
  569.  * PARAMETERS
  570.  *  void
  571.  * RETURNS
  572.  *  void
  573.  *****************************************************************************/
  574. void HighlightCALLSETCUGDeactive(void)
  575. {
  576.     /*----------------------------------------------------------------*/
  577.     /* Local Variables                                                */
  578.     /*----------------------------------------------------------------*/
  579.     /*----------------------------------------------------------------*/
  580.     /* Code Body                                                      */
  581.     /*----------------------------------------------------------------*/
  582.     /* Change left soft key icon and label */
  583.     ChangeLeftSoftkey(STR_GLOBAL_OK, 0);
  584.     /* Change right soft key icon and label */
  585.     ChangeRightSoftkey(STR_GLOBAL_BACK, 0);
  586.     /* Register function for left soft key */
  587.     SetLeftSoftkeyFunction(EntryGroupListDeactivate, KEY_EVENT_UP);
  588.     /* Register function for right soft key */
  589.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  590.     return;
  591. }
  592. /*****************************************************************************
  593.  * FUNCTION
  594.  *  EntryGroupListDeactivate
  595.  * DESCRIPTION
  596.  *  function for sending req for grouplist deactivate
  597.  * NA
  598.  *  
  599.  * PARAMETERS
  600.  *  void
  601.  * RETURNS
  602.  *  void
  603.  *****************************************************************************/
  604. void EntryGroupListDeactivate(void)
  605. {
  606.     /*----------------------------------------------------------------*/
  607.     /* Local Variables                                                */
  608.     /*----------------------------------------------------------------*/
  609.     mmi_cc_set_cug_req_struct *dataPtr;
  610.     MYQUEUE Message;
  611.     /*----------------------------------------------------------------*/
  612.     /* Code Body                                                      */
  613.     /*----------------------------------------------------------------*/
  614.     ClearInputEventHandler(MMI_DEVICE_ALL);
  615.     /* format the message and send req to l4 */
  616.     Message.oslSrcId = MOD_MMI;
  617.     Message.oslDestId = MOD_L4C;
  618.     Message.oslMsgId = PRT_MMI_CC_SET_CUG_REQ;
  619.     dataPtr = (mmi_cc_set_cug_req_struct*) OslConstructDataPtr(sizeof(mmi_cc_set_cug_req_struct));
  620.     dataPtr->index = g_cug_context.GroupList[g_cug_context.SelectIndex].index;
  621.     dataPtr->mode = CSMCC_DISABLE_CUG_TEMPORARY_MODE;
  622.     dataPtr->info = 0;
  623.     Message.oslDataPtr = (oslParaType*) dataPtr;
  624.     Message.oslPeerBuffPtr = NULL;
  625.     /* set rsp handler for set cug deactivate req */
  626.     SetProtocolEventHandler(CALLSETCUGDeactiveRsp, PRT_MMI_CC_SET_CUG_RSP);
  627.     /* send the formatted req to l4 */
  628.     OslMsgSendExtQueue(&Message);
  629.     return;
  630. }
  631. /*****************************************************************************
  632.  * FUNCTION
  633.  *  CALLSETCUGDeactiveRsp
  634.  * DESCRIPTION
  635.  *  function for processing rsp for grouplist deactivate req
  636.  * NA
  637.  *  
  638.  * PARAMETERS
  639.  *  info        [?]     
  640.  * RETURNS
  641.  *  void
  642.  *****************************************************************************/
  643. void CALLSETCUGDeactiveRsp(void *info)
  644. {
  645.     /*----------------------------------------------------------------*/
  646.     /* Local Variables                                                */
  647.     /*----------------------------------------------------------------*/
  648.     mmi_cc_set_cug_rsp_struct *rsp;
  649.     /*----------------------------------------------------------------*/
  650.     /* Code Body                                                      */
  651.     /*----------------------------------------------------------------*/
  652.     /* check the status of the response result */
  653.     rsp = (mmi_cc_set_cug_rsp_struct*) info;
  654.     /* check if the flow is from deactivate or from delete option */
  655.     if (g_cug_context.DeactiveThenDelete == 1)
  656.     {
  657.         /* if its from delete then delete the item */
  658.         g_cug_context.DeactiveThenDelete = 0;
  659.         if (rsp->result == 1)
  660.         {
  661.             /* incase of successful deactivate delete the item from list */
  662.             GroupListDelete();
  663.             return;
  664.         }
  665.     }
  666.     if (rsp->result == 1)
  667.     {
  668.         /* in case of success display the popup for the result status */
  669.         DisplayPopup((PU8) GetString(STR_GLOBAL_DONE), IMG_GLOBAL_ACTIVATED, 1, CS_NOTIFYDURATION, SUCCESS_TONE);
  670.     }
  671.     else
  672.     {
  673.         /* incase of failure display the not done popup */
  674.         DisplayPopup((PU8) GetString(STR_GLOBAL_NOT_DONE), IMG_GLOBAL_UNFINISHED, 1, CS_NOTIFYDURATION, WARNING_TONE);
  675.     }
  676.     /* delete screens for maitaining hte history */
  677.     CUGDelScrToMain();
  678.     return;
  679. }
  680. /*****************************************************************************
  681.  * FUNCTION
  682.  *  GoBackToCallSetup
  683.  * DESCRIPTION
  684.  *  function to take back to call setup main screen
  685.  * NA
  686.  *  
  687.  * PARAMETERS
  688.  *  void
  689.  * RETURNS
  690.  *  void
  691.  *****************************************************************************/
  692. void GoBackToCallSetup(void)
  693. {
  694.     /*----------------------------------------------------------------*/
  695.     /* Local Variables                                                */
  696.     /*----------------------------------------------------------------*/
  697.     /*----------------------------------------------------------------*/
  698.     /* Code Body                                                      */
  699.     /*----------------------------------------------------------------*/
  700.     if (IsScreenPresent(SCR_ID_CALLSET_MAIN))
  701.     {
  702.         CUGDelScrToMain();
  703.     }
  704.     else
  705.     {
  706.         GoBackHistory();
  707.     }
  708.     return;
  709. }
  710. /*****************************************************************************
  711.  * FUNCTION
  712.  *  IsValidateIndex
  713.  * DESCRIPTION
  714.  *  check the validity of the iput index
  715.  * NA
  716.  *  
  717.  * PARAMETERS
  718.  *  index       [IN]        Zero based
  719.  * RETURNS
  720.  *  void
  721.  *****************************************************************************/
  722. U8 IsValidateIndex(U8 index)
  723. {
  724.     /*----------------------------------------------------------------*/
  725.     /* Local Variables                                                */
  726.     /*----------------------------------------------------------------*/
  727.     U16 count;
  728.     /*----------------------------------------------------------------*/
  729.     /* Code Body                                                      */
  730.     /*----------------------------------------------------------------*/
  731.     /* check the index is within range or not */
  732.     if ((index <= 9))
  733.     {
  734.         /* check for the duplicacy */
  735.         for (count = 0; count < g_cug_context.NumOfList; count++)
  736.             if (index == g_cug_context.GroupList[count].index)
  737.             {
  738.                 return 0;
  739.             }
  740.         return 1;
  741.     }
  742.     else
  743.     {
  744.         return 0;
  745.     }
  746. }
  747. /*****************************************************************************
  748.  * FUNCTION
  749.  *  HighlightCALLSETCUGAdd
  750.  * DESCRIPTION
  751.  *  Highlight grouplist Add menu item
  752.  * NA
  753.  *  
  754.  * PARAMETERS
  755.  *  void
  756.  * RETURNS
  757.  *  void
  758.  *****************************************************************************/
  759. void HighlightCALLSETCUGAdd(void)
  760. {
  761.     /*----------------------------------------------------------------*/
  762.     /* Local Variables                                                */
  763.     /*----------------------------------------------------------------*/
  764.     /*----------------------------------------------------------------*/
  765.     /* Code Body                                                      */
  766.     /*----------------------------------------------------------------*/
  767.     /* Change left soft key icon and label */
  768.     ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
  769.     /* Change right soft key icon and label */
  770.     ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
  771.     /* Register function for left/right soft key */
  772.     SetLeftSoftkeyFunction(EntryCALLSETCUGAddList, KEY_EVENT_UP);
  773.     SetKeyHandler(EntryCALLSETCUGAddList, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
  774.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  775.     return;
  776. }
  777. /*****************************************************************************
  778.  * FUNCTION
  779.  *  EntryCALLSETCUGAddList
  780.  * DESCRIPTION
  781.  *  Showing grouplist Add Screen
  782.  * NA
  783.  *  
  784.  * PARAMETERS
  785.  *  void
  786.  * RETURNS
  787.  *  void
  788.  *****************************************************************************/
  789. void EntryCALLSETCUGAddList(void)
  790. {
  791.     /*----------------------------------------------------------------*/
  792.     /* Local Variables                                                */
  793.     /*----------------------------------------------------------------*/
  794.     U8 *guiBuffer;  /* Buffer holding history data */
  795.     /*----------------------------------------------------------------*/
  796.     /* Code Body                                                      */
  797.     /*----------------------------------------------------------------*/
  798.     EntryNewScreen(SCR_ID_CALLSET_CUG_ADD_LIST, NULL, EntryCALLSETCUGAddList, NULL);
  799.     /* Get current screen info into gui buffer  for history purposes */
  800.     guiBuffer = GetCurrGuiBuffer(SCR_ID_CALLSET_CUG_ADD_LIST);
  801.     if (guiBuffer == NULL)
  802.     {
  803.         memset(g_cug_context.GroupItemInput.name, 0, sizeof(g_cug_context.GroupItemInput.name));
  804.     }
  805.     /* Display Category Screen */
  806.     ShowCategory5Screen(
  807.         STR_GLOBAL_ADD,
  808.         MAIN_MENU_TITLE_SETTINGS_ICON,
  809.         STR_GLOBAL_OPTIONS,
  810.         IMG_GLOBAL_OPTIONS,
  811.         STR_GLOBAL_BACK,
  812.         IMG_GLOBAL_BACK,
  813.         INPUT_TYPE_ALPHANUMERIC_SENTENCECASE,
  814.         (PU8) g_cug_context.GroupItemInput.name,
  815.         (MAX_CUG_NAME_LENGTH) + 1,
  816.         guiBuffer);
  817.     /* Register function with left/right softkey */
  818.     SetLeftSoftkeyFunction(EntryCALLSETCUGEditOptions, KEY_EVENT_UP);
  819.     SetCategory5RightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  820.     return;
  821. }
  822. /*****************************************************************************
  823.  * FUNCTION
  824.  *  EntryCALLSETCUGAddListIndex
  825.  * DESCRIPTION
  826.  *  Showing grouplist Add index Screen
  827.  * NA
  828.  *  
  829.  * PARAMETERS
  830.  *  void
  831.  * RETURNS
  832.  *  void
  833.  *****************************************************************************/
  834. void EntryCALLSETCUGAddListIndex(void)
  835. {
  836.     /*----------------------------------------------------------------*/
  837.     /* Local Variables                                                */
  838.     /*----------------------------------------------------------------*/
  839.     U8 *guiBuffer;  /* Buffer holding history data */
  840.     /*----------------------------------------------------------------*/
  841.     /* Code Body                                                      */
  842.     /*----------------------------------------------------------------*/
  843.     EntryNewScreen(SCR_ID_CALLSET_CUG_ADD_LIST_INDEX, NULL, EntryCALLSETCUGAddListIndex, NULL);
  844.     /* Get current screen info into gui buffer  for history purposes */
  845.     guiBuffer = GetCurrGuiBuffer(SCR_ID_CALLSET_CUG_ADD_LIST_INDEX);
  846.     if (guiBuffer == NULL)
  847.     {
  848.         memset(g_cug_context.InputIndexBuf, 0, sizeof(g_cug_context.InputIndexBuf));
  849.     }
  850.     /* Display Category Screen */
  851.     ShowCategory5Screen(
  852.         STR_GROUPLIST_ADD_INDEX,
  853.         MAIN_MENU_TITLE_SETTINGS_ICON,
  854.         STR_GLOBAL_OK,
  855.         IMG_GLOBAL_OK,
  856.         STR_GLOBAL_BACK,
  857.         IMG_GLOBAL_BACK,
  858.         INPUT_TYPE_NUMERIC,
  859.         (PU8) g_cug_context.InputIndexBuf,
  860.         (1 * ENCODING_LENGTH),
  861.         guiBuffer);
  862.     /* Register function with left/right softkey */
  863.     SetCategory5RightSoftkeyFunction(GoBackTwoScreens, KEY_EVENT_UP);
  864.     SetLeftSoftkeyFunction(AddEntryToNVRAM, KEY_EVENT_UP);
  865.     return;
  866. }
  867. /*****************************************************************************
  868.  * FUNCTION
  869.  *  AddEntryToNVRAM
  870.  * DESCRIPTION
  871.  *  add entry to nv ram
  872.  * NA
  873.  *  
  874.  * PARAMETERS
  875.  *  void
  876.  * RETURNS
  877.  *  void
  878.  *****************************************************************************/
  879. void AddEntryToNVRAM(void)
  880. {
  881.     /*----------------------------------------------------------------*/
  882.     /* Local Variables                                                */
  883.     /*----------------------------------------------------------------*/
  884.     S16 error;
  885.     U8 index;
  886.     U8 tempBuf[5];
  887.     /*----------------------------------------------------------------*/
  888.     /* Code Body                                                      */
  889.     /*----------------------------------------------------------------*/
  890.     UnicodeToAnsii((S8*) tempBuf, (S8*) g_cug_context.InputIndexBuf);
  891.     /* check the input buffer is empty or not */
  892.     if (strlen((S8*) tempBuf) == 0)
  893.     {
  894.         /* if empty then display invalid index and terminate the add process */
  895.         DisplayPopup(
  896.             (PU8) GetString(STR_GROUPLIST_INVALID_INDEX),
  897.             IMG_GLOBAL_WARNING,
  898.             1,
  899.             CS_NOTIFYDURATION,
  900.             WARNING_TONE);
  901.         CUGDelScrToMain();
  902.         return;
  903.     }
  904.     /* if there is an not empty input */
  905.     index = atoi((S8*) tempBuf);
  906.     /* validate the index */
  907.     if (IsValidateIndex(index))
  908.     {
  909.         /* if the index is valid then add element to the nvram */
  910.         g_cug_context.GroupItemInput.index = index;
  911.         if (WriteRecord
  912.             (NVRAM_EF_GROUPLIST_LID, (U8) (g_cug_context.NumOfList + 1), &g_cug_context.GroupItemInput,
  913.              NVRAM_MAX_GROUP_NAME_SIZE, &error) < NVRAM_MAX_GROUP_NAME_SIZE)
  914.         {
  915.             PRINT_INFORMATION(("## ERROR: write grouplist at index %d: WriteRecord "
  916.                                "to NVRAM failed (ecode%d)n", index, (int)error));
  917.             return;
  918.         }
  919.         memcpy(
  920.             (S8*) & g_cug_context.GroupList[g_cug_context.NumOfList],
  921.             (S8*) & g_cug_context.GroupItemInput,
  922.             sizeof(CUGItemStruct));
  923.         /* update the count for entries in list */
  924.         g_cug_context.NumOfList++;
  925.         /* delete screens for maitaining the history */
  926.         CUGDelScrToMain();
  927.         GoBackHistory();
  928.     }
  929.     else
  930.     {
  931.         /* incase of invalid index then display error popup */
  932.         DisplayPopup(
  933.             (PU8) GetString(STR_GROUPLIST_INVALID_INDEX),
  934.             IMG_GLOBAL_WARNING,
  935.             1,
  936.             CS_NOTIFYDURATION,
  937.             WARNING_TONE);
  938.         CUGDelScrToMain();
  939.         return;
  940.     }
  941.     return;
  942. }
  943. /*****************************************************************************
  944.  * FUNCTION
  945.  *  HighlightCALLSETCUGEdit
  946.  * DESCRIPTION
  947.  *  Highlight grouplist Edit menu item
  948.  * NA
  949.  *  
  950.  * PARAMETERS
  951.  *  void
  952.  * RETURNS
  953.  *  void
  954.  *****************************************************************************/
  955. void HighlightCALLSETCUGEdit(void)
  956. {
  957.     /*----------------------------------------------------------------*/
  958.     /* Local Variables                                                */
  959.     /*----------------------------------------------------------------*/
  960.     /*----------------------------------------------------------------*/
  961.     /* Code Body                                                      */
  962.     /*----------------------------------------------------------------*/
  963.     /* Change left soft key icon and label */
  964.     ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
  965.     /* Change right soft key icon and label */
  966.     ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
  967.     /* Register function for left/right soft key */
  968.     SetLeftSoftkeyFunction(EntryCALLSETCUGEditList, KEY_EVENT_UP);
  969.     SetKeyHandler(EntryCALLSETCUGEditList, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
  970.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  971.     return;
  972. }
  973. /*****************************************************************************
  974.  * FUNCTION
  975.  *  EntryCALLSETCUGEditList
  976.  * DESCRIPTION
  977.  *  Showing grouplist Edit Screen
  978.  * NA
  979.  *  
  980.  * PARAMETERS
  981.  *  void
  982.  * RETURNS
  983.  *  void
  984.  *****************************************************************************/
  985. void EntryCALLSETCUGEditList(void)
  986. {
  987.     /*----------------------------------------------------------------*/
  988.     /* Local Variables                                                */
  989.     /*----------------------------------------------------------------*/
  990.     U8 *guiBuffer;  /* Buffer holding history data */
  991.     /*----------------------------------------------------------------*/
  992.     /* Code Body                                                      */
  993.     /*----------------------------------------------------------------*/
  994.     EntryNewScreen(SCR_ID_CALLSET_CUG_EDIT_LIST, NULL, EntryCALLSETCUGEditList, NULL);
  995.     /* Get current screen info into gui buffer  for history purposes */
  996.     guiBuffer = GetCurrGuiBuffer(SCR_ID_CALLSET_CUG_EDIT_LIST);
  997.     if (guiBuffer == NULL)
  998.     {
  999.         memcpy(
  1000.             g_cug_context.GroupItemInput.name,
  1001.             g_cug_context.GroupList[g_cug_context.SelectIndex].name,
  1002.             sizeof(g_cug_context.GroupItemInput.name));
  1003.     }
  1004.     /* Display Category Screen */
  1005.     ShowCategory5Screen(
  1006.         STR_GLOBAL_EDIT,
  1007.         MAIN_MENU_TITLE_SETTINGS_ICON,
  1008.         STR_GLOBAL_OPTIONS,
  1009.         IMG_GLOBAL_OPTIONS,
  1010.         STR_GLOBAL_BACK,
  1011.         IMG_GLOBAL_BACK,
  1012.         INPUT_TYPE_ALPHANUMERIC_SENTENCECASE,
  1013.         (PU8) (g_cug_context.GroupItemInput.name),
  1014.         (MAX_CUG_NAME_LENGTH) + 1,
  1015.         guiBuffer);
  1016.     /* Register function with left/right softkey */
  1017.     SetLeftSoftkeyFunction(EntryCALLSETCUGEditOptions, KEY_EVENT_UP);
  1018.     SetCategory5RightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  1019.     return;
  1020. }
  1021. /*****************************************************************************
  1022.  * FUNCTION
  1023.  *  EntryCALLSETCUGEditListIndex
  1024.  * DESCRIPTION
  1025.  *  Showing grouplist edit index Screen
  1026.  * NA
  1027.  *  
  1028.  * PARAMETERS
  1029.  *  void
  1030.  * RETURNS
  1031.  *  void
  1032.  *****************************************************************************/
  1033. void EntryCALLSETCUGEditListIndex(void)
  1034. {
  1035.     /*----------------------------------------------------------------*/
  1036.     /* Local Variables                                                */
  1037.     /*----------------------------------------------------------------*/
  1038.     U8 *guiBuffer;  /* Buffer holding history data */
  1039.     /*----------------------------------------------------------------*/
  1040.     /* Code Body                                                      */
  1041.     /*----------------------------------------------------------------*/
  1042.     EntryNewScreen(SCR_ID_CALLSET_CUG_EDIT_LIST_INDEX, NULL, EntryCALLSETCUGEditListIndex, NULL);
  1043.     /* Get current screen info into gui buffer  for history purposes */
  1044.     guiBuffer = GetCurrGuiBuffer(SCR_ID_CALLSET_CUG_EDIT_LIST_INDEX);
  1045.     if (guiBuffer == NULL)
  1046.     {
  1047.         memset(g_cug_context.InputIndexBuf, 0, sizeof(g_cug_context.InputIndexBuf));
  1048.         g_cug_context.InputIndexBuf[0] = (U8) ('0' + g_cug_context.GroupList[g_cug_context.SelectIndex].index);
  1049.     }
  1050.     /* Display Category Screen */
  1051.     ShowCategory5Screen(
  1052.         STR_GROUPLIST_EDIT_INDEX,
  1053.         MAIN_MENU_TITLE_SETTINGS_ICON,
  1054.         STR_GLOBAL_OK,
  1055.         IMG_GLOBAL_OK,
  1056.         STR_GLOBAL_BACK,
  1057.         IMG_GLOBAL_BACK,
  1058.         INPUT_TYPE_NUMERIC,
  1059.         (PU8) g_cug_context.InputIndexBuf,
  1060.         (1 * ENCODING_LENGTH),
  1061.         guiBuffer);
  1062.     /* Register function with left/right softkey */
  1063.     SetCategory5RightSoftkeyFunction(GoBackTwoScreens, KEY_EVENT_UP);
  1064.     SetLeftSoftkeyFunction(EditEntryNVRAM, KEY_EVENT_UP);
  1065.     return;
  1066. }
  1067. /*****************************************************************************
  1068.  * FUNCTION
  1069.  *  EditEntryNVRAM
  1070.  * DESCRIPTION
  1071.  *  edit entry to nv ram
  1072.  * NA
  1073.  *  
  1074.  * PARAMETERS
  1075.  *  void
  1076.  * RETURNS
  1077.  *  void
  1078.  *****************************************************************************/
  1079. void EditEntryNVRAM(void)
  1080. {
  1081.     /*----------------------------------------------------------------*/
  1082.     /* Local Variables                                                */
  1083.     /*----------------------------------------------------------------*/
  1084.     S16 error;
  1085.     U8 index;
  1086.     /*----------------------------------------------------------------*/
  1087.     /* Code Body                                                      */
  1088.     /*----------------------------------------------------------------*/
  1089.     /* check the index from input buffer */
  1090.     index = g_cug_context.InputIndexBuf[0] - '0';
  1091.     /* validate the index */
  1092.     if (IsValidateIndex(index))
  1093.     {
  1094.         /* if the index is valid then edit element in the nvram */
  1095.         g_cug_context.GroupList[g_cug_context.SelectIndex].index = index;
  1096.         if (WriteRecord
  1097.             (NVRAM_EF_GROUPLIST_LID, (U8) (g_cug_context.SelectIndex + 1), (U32*) & g_cug_context.GroupItemInput,
  1098.              NVRAM_MAX_GROUP_NAME_SIZE, &error) < NVRAM_MAX_GROUP_NAME_SIZE)
  1099.         {
  1100.             PRINT_INFORMATION(("## ERROR: write grouplist at index %d: WriteRecord "
  1101.                                "to NVRAM failed (ecode%d)n", g_cug_context.SelectIndex, (int)error));
  1102.             return;
  1103.         }
  1104.         else
  1105.         {
  1106.             pfnUnicodeStrcpy(
  1107.                 (S8*) g_cug_context.GroupList[g_cug_context.SelectIndex].name,
  1108.                 (S8*) g_cug_context.GroupItemInput.name);
  1109.             /* delete screens for maitaining the history */
  1110.             CUGDelScrToMain();
  1111.             GoBackHistory();
  1112.             return;
  1113.         }
  1114.     }
  1115.     else
  1116.     {
  1117.         if (g_cug_context.GroupList[g_cug_context.SelectIndex].index == index)
  1118.         {
  1119.             /* if the index is valid then edit element in the nvram */
  1120.             g_cug_context.GroupList[g_cug_context.SelectIndex].index = index;
  1121.             if (WriteRecord
  1122.                 (NVRAM_EF_GROUPLIST_LID, (U8) (g_cug_context.SelectIndex + 1), (U32*) & g_cug_context.GroupItemInput,
  1123.                  NVRAM_MAX_GROUP_NAME_SIZE, &error) < NVRAM_MAX_GROUP_NAME_SIZE)
  1124.             {
  1125.                 PRINT_INFORMATION(("## ERROR: write grouplist at index %d: WriteRecord "
  1126.                                    "to NVRAM failed (ecode%d)n", g_cug_context.SelectIndex, (int)error));
  1127.                 return;
  1128.             }
  1129.             else
  1130.             {
  1131.                 pfnUnicodeStrcpy(
  1132.                     (S8*) g_cug_context.GroupList[g_cug_context.SelectIndex].name,
  1133.                     (S8*) g_cug_context.GroupItemInput.name);
  1134.                 /* delete screens for maitaining the history */
  1135.                 CUGDelScrToMain();
  1136.                 GoBackHistory();
  1137.                 return;
  1138.             }
  1139.         }
  1140.         /* incase of invalid index then display error popup */
  1141.         DisplayPopup(
  1142.             (PU8) GetString(STR_GROUPLIST_INVALID_INDEX),
  1143.             IMG_GLOBAL_WARNING,
  1144.             1,
  1145.             CS_NOTIFYDURATION,
  1146.             WARNING_TONE);
  1147.         /* delete screens for maitaining the history */
  1148.         CUGDelScrToMain();
  1149.         return;
  1150.     }
  1151. }
  1152. /*****************************************************************************
  1153.  * FUNCTION
  1154.  *  HighlightCALLSETCUGDelete
  1155.  * DESCRIPTION
  1156.  *  Highlight grouplist delete menu item
  1157.  * NA
  1158.  *  
  1159.  * PARAMETERS
  1160.  *  void
  1161.  * RETURNS
  1162.  *  void
  1163.  *****************************************************************************/
  1164. void HighlightCALLSETCUGDelete(void)
  1165. {
  1166.     /*----------------------------------------------------------------*/
  1167.     /* Local Variables                                                */
  1168.     /*----------------------------------------------------------------*/
  1169.     /*----------------------------------------------------------------*/
  1170.     /* Code Body                                                      */
  1171.     /*----------------------------------------------------------------*/
  1172.     /* Change left soft key icon and label */
  1173.     ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
  1174.     /* Change right soft key icon and label */
  1175.     ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
  1176.     /* Register function for left/right soft key */
  1177.     SetLeftSoftkeyFunction(EntryCALLSETCUGDelListCfrm, KEY_EVENT_UP);
  1178.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  1179.     return;
  1180. }
  1181. /*****************************************************************************
  1182.  * FUNCTION
  1183.  *  DeactivateAndDelete
  1184.  * DESCRIPTION
  1185.  *  deactivate the group list item and then delete.
  1186.  * NA
  1187.  *  
  1188.  * PARAMETERS
  1189.  *  void
  1190.  * RETURNS
  1191.  *  void
  1192.  *****************************************************************************/
  1193. void DeactivateAndDelete(void)
  1194. {
  1195.     /*----------------------------------------------------------------*/
  1196.     /* Local Variables                                                */
  1197.     /*----------------------------------------------------------------*/
  1198.     /*----------------------------------------------------------------*/
  1199.     /* Code Body                                                      */
  1200.     /*----------------------------------------------------------------*/
  1201.     /* set delete flag */
  1202.     g_cug_context.DeactiveThenDelete = 1;
  1203.     /* deactivate before deleting the entry */
  1204.     EntryGroupListDeactivate();
  1205.     return;
  1206. }
  1207. /*****************************************************************************
  1208.  * FUNCTION
  1209.  *  EntryCALLSETCUGDelListCfrm
  1210.  * DESCRIPTION
  1211.  *  entry function for groupname delete confirmation
  1212.  * NA
  1213.  *  
  1214.  * PARAMETERS
  1215.  *  void
  1216.  * RETURNS
  1217.  *  void
  1218.  *****************************************************************************/
  1219. void EntryCALLSETCUGDelListCfrm(void)
  1220. {
  1221.     /*----------------------------------------------------------------*/
  1222.     /* Local Variables                                                */
  1223.     /*----------------------------------------------------------------*/
  1224.     /*----------------------------------------------------------------*/
  1225.     /* Code Body                                                      */
  1226.     /*----------------------------------------------------------------*/
  1227.     DisplayConfirm(
  1228.         STR_GLOBAL_YES,
  1229.         IMG_GLOBAL_YES,
  1230.         STR_GLOBAL_NO,
  1231.         IMG_GLOBAL_NO,
  1232.         get_string(STR_GLOBAL_DELETE),
  1233.         IMG_GLOBAL_QUESTION,
  1234.         WARNING_TONE);
  1235.     /* Register function with left/right softkey */
  1236.     SetLeftSoftkeyFunction(DeactivateAndDelete, KEY_EVENT_UP);
  1237.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  1238.     return;
  1239. }
  1240. /*****************************************************************************
  1241.  * FUNCTION
  1242.  *  GroupListDelete
  1243.  * DESCRIPTION
  1244.  *  grouplist delete
  1245.  * NA
  1246.  *  
  1247.  * PARAMETERS
  1248.  *  void
  1249.  * RETURNS
  1250.  *  void
  1251.  *****************************************************************************/
  1252. void GroupListDelete(void)
  1253. {
  1254.     /*----------------------------------------------------------------*/
  1255.     /* Local Variables                                                */
  1256.     /*----------------------------------------------------------------*/
  1257.     S16 error;
  1258.     U32 count;
  1259.     /*----------------------------------------------------------------*/
  1260.     /* Code Body                                                      */
  1261.     /*----------------------------------------------------------------*/
  1262.     memset(&g_cug_context.GroupItemInput, (U8) - 1, sizeof(g_cug_context.GroupItemInput));
  1263.     /* delete element to the nvram */
  1264.     if (WriteRecord
  1265.         (NVRAM_EF_GROUPLIST_LID, (U8) (g_cug_context.SelectIndex + 1), (U32*) & g_cug_context.GroupItemInput,
  1266.          NVRAM_MAX_GROUP_NAME_SIZE, &error) < NVRAM_MAX_GROUP_NAME_SIZE)
  1267.     {
  1268.         PRINT_INFORMATION(("## ERROR: write grouplist at index %d: WriteRecord "
  1269.                            "to NVRAM failed (ecode%d)n", g_cug_context.SelectIndex, (int)error));
  1270.         return;
  1271.     }
  1272.     else
  1273.     {
  1274.         /* if nvram is updated properly then update the list for display */
  1275.         for (count = g_cug_context.SelectIndex; count < g_cug_context.NumOfList; count++)
  1276.         {
  1277.             memcpy(
  1278.                 &g_cug_context.GroupList[count],
  1279.                 &g_cug_context.GroupList[count + 1],
  1280.                 sizeof(g_cug_context.GroupList[g_cug_context.SelectIndex]));
  1281.         }
  1282.         /* update the count */
  1283.         g_cug_context.NumOfList--;
  1284.         DisplayPopup((PU8) GetString(STR_GLOBAL_DONE), IMG_GLOBAL_ACTIVATED, 1, CS_NOTIFYDURATION, SUCCESS_TONE);
  1285.         CUGDelScrToMain();
  1286.         return;
  1287.     }
  1288. }
  1289. /*****************************************************************************
  1290.  * FUNCTION
  1291.  *  EntryCALLSETCUGEditOptions
  1292.  * DESCRIPTION
  1293.  *  entry function for edit group name options screen
  1294.  * NA
  1295.  *  
  1296.  * PARAMETERS
  1297.  *  void
  1298.  * RETURNS
  1299.  *  void
  1300.  *****************************************************************************/
  1301. void EntryCALLSETCUGEditOptions(void)
  1302. {
  1303.     /*----------------------------------------------------------------*/
  1304.     /* Local Variables                                                */
  1305.     /*----------------------------------------------------------------*/
  1306.     U8 *guiBuffer;  /* Buffer holding history data */
  1307.     U16 nStrItemList[MAX_SUB_MENUS];
  1308.     U16 numItems;
  1309.     /*----------------------------------------------------------------*/
  1310.     /* Code Body                                                      */
  1311.     /*----------------------------------------------------------------*/
  1312.     EntryNewScreen(SCR_ID_CALLSET_CUG_EDIT_OPTIONS, NULL, EntryCALLSETCUGEditOptions, NULL);
  1313.     /* Get current screen info into gui buffer  for history purposes */
  1314.     guiBuffer = GetCurrGuiBuffer(SCR_ID_CALLSET_CUG_EDIT_OPTIONS);
  1315.     /* Set current parent id */
  1316.     SetParentHandler(MENU_CUG_INPUT_METHOD_AND_DONE_OPTION_ID);
  1317.     /* Register highlight handler to be called in menu screen */
  1318.     RegisterHighlightHandler(ExecuteCurrHiliteHandler);
  1319.     /* Retrieve no of child of menu item to be displayed */
  1320.     numItems = GetNumOfChild(MENU_CUG_INPUT_METHOD_AND_DONE_OPTION_ID);
  1321.     /* Retrieve string ids in sequence of given menu item to be displayed */
  1322.     GetSequenceStringIds(MENU_CUG_INPUT_METHOD_AND_DONE_OPTION_ID, nStrItemList);
  1323.     /* Display Category15 Screen */
  1324.     ShowCategory15Screen(
  1325.         STR_GLOBAL_OPTIONS,
  1326.         MAIN_MENU_TITLE_SETTINGS_ICON,
  1327.         STR_GLOBAL_OK,
  1328.         IMG_GLOBAL_OK,
  1329.         STR_GLOBAL_BACK,
  1330.         IMG_GLOBAL_BACK,
  1331.         numItems,
  1332.         nStrItemList,
  1333.         (U16*) gIndexIconsImageList,
  1334.         LIST_MENU,
  1335.         0,
  1336.         guiBuffer);
  1337.     /* Register function with left/right softkey */
  1338.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  1339.     return;
  1340. }
  1341. /*****************************************************************************
  1342.  * FUNCTION
  1343.  *  HighlightEditOptionsDone
  1344.  * DESCRIPTION
  1345.  *  Highlight grouplist edit Options done
  1346.  * NA
  1347.  *  
  1348.  * PARAMETERS
  1349.  *  void
  1350.  * RETURNS
  1351.  *  void
  1352.  *****************************************************************************/
  1353. void HighlightEditOptionsDone(void)
  1354. {
  1355.     /*----------------------------------------------------------------*/
  1356.     /* Local Variables                                                */
  1357.     /*----------------------------------------------------------------*/
  1358.     /*----------------------------------------------------------------*/
  1359.     /* Code Body                                                      */
  1360.     /*----------------------------------------------------------------*/
  1361.     /* 1 Change left soft key icon and label */
  1362.     ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
  1363.     /* 2 Change right soft key icon and label */
  1364.     ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
  1365.     if (IsScreenPresent(SCR_ID_CALLSET_CUG_ADD_LIST))
  1366.         /* 3 Register function for left soft key */
  1367.     {
  1368.         SetLeftSoftkeyFunction(EntryCALLSETCUGAddListIndex, KEY_EVENT_UP);
  1369.     }
  1370.     if (IsScreenPresent(SCR_ID_CALLSET_CUG_EDIT_LIST))
  1371.         /* 3 Register function for left soft key */
  1372.     {
  1373.         SetLeftSoftkeyFunction(EntryCALLSETCUGEditListIndex, KEY_EVENT_UP);
  1374.     }
  1375.     /* 4 Register function for right soft key */
  1376.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  1377.     return;
  1378. }
  1379. /*****************************************************************************
  1380.  * FUNCTION
  1381.  *  HighlightEditOptionsInputMethod
  1382.  * DESCRIPTION
  1383.  *  Highlight grouplist edit Options inputMethod
  1384.  * NA
  1385.  *  
  1386.  * PARAMETERS
  1387.  *  void
  1388.  * RETURNS
  1389.  *  void
  1390.  *****************************************************************************/
  1391. void HighlightEditOptionsInputMethod(void)
  1392. {
  1393.     /*----------------------------------------------------------------*/
  1394.     /* Local Variables                                                */
  1395.     /*----------------------------------------------------------------*/
  1396.     /*----------------------------------------------------------------*/
  1397.     /* Code Body                                                      */
  1398.     /*----------------------------------------------------------------*/
  1399.     /* Change left soft key icon and label */
  1400.     ChangeLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
  1401.     /* Change right soft key icon and label */
  1402.     ChangeRightSoftkey(STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
  1403.     RegisterInputMethodScreenCloseFunction(GoBackTwoScreens);
  1404.     /* Register function for left soft key */
  1405.     SetLeftSoftkeyFunction(EntryInputMethodScreen, KEY_EVENT_UP);
  1406.     /* Register function for right soft key */
  1407.     SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
  1408.     return;
  1409. }
  1410. /*****************************************************************************
  1411.  * FUNCTION
  1412.  *  GoBackTwoScreens
  1413.  * DESCRIPTION
  1414.  *  go back history by two screens
  1415.  * NA
  1416.  *  
  1417.  * PARAMETERS
  1418.  *  void
  1419.  * RETURNS
  1420.  *  void
  1421.  *****************************************************************************/
  1422. void GoBackTwoScreens(void)
  1423. {
  1424.     /*----------------------------------------------------------------*/
  1425.     /* Local Variables                                                */
  1426.     /*----------------------------------------------------------------*/
  1427.     /*----------------------------------------------------------------*/
  1428.     /* Code Body                                                      */
  1429.     /*----------------------------------------------------------------*/
  1430.     GoBacknHistory(1);
  1431.     return;
  1432. }
  1433. /*****************************************************************************
  1434.  * FUNCTION
  1435.  *  CUGDelScrToMain
  1436.  * DESCRIPTION
  1437.  *  Delete all CUG screens except main
  1438.  * NA
  1439.  *  
  1440.  * PARAMETERS
  1441.  *  void
  1442.  * RETURNS
  1443.  *  void
  1444.  *****************************************************************************/
  1445. void CUGDelScrToMain(void)
  1446. {
  1447.     /*----------------------------------------------------------------*/
  1448.     /* Local Variables                                                */
  1449.     /*----------------------------------------------------------------*/
  1450.     /*----------------------------------------------------------------*/
  1451.     /* Code Body                                                      */
  1452.     /*----------------------------------------------------------------*/
  1453.     DeleteScreenIfPresent(SCR_ID_CALLSET_CUG_OPTIONS);
  1454.     DeleteScreenIfPresent(SCR_ID_CALLSET_CUG_ADD_LIST);
  1455.     DeleteScreenIfPresent(SCR_ID_CALLSET_CUG_ADD_LIST_INDEX);
  1456.     DeleteScreenIfPresent(SCR_ID_CALLSET_CUG_EDIT_LIST);
  1457.     DeleteScreenIfPresent(SCR_ID_CALLSET_CUG_EDIT_LIST_INDEX);
  1458.     DeleteScreenIfPresent(SCR_ID_CALLSET_CUG_EDIT_OPTIONS);
  1459. }
  1460. #endif /* __MMI_REMOVE_CUG__ */