示例#1
0
// =========================================================================
// 函数功能:确认键响应函数
// 输入参数:operatingDispara,当前正在操作的菜单项
// 输出参数:
// 返回值    :经过更新的当前正在操作的菜单项
// 说明        :在九宫格中,对于确认键,主菜会切换到子菜单项,子菜单会切换到子菜单项
//         如果没有子菜单项,则会执行当前操作项的钩子函数
// =========================================================================
struct menu_displaypara* KeyEnterAction_9cell(struct menu_displaypara* operatingDispara)
{

  if(NULL==operatingDispara->pre)//主菜单
  {
     if(GetSonMenuitem(operatingDispara->OperatingMenuitem))
     {
        operatingDispara=goto_submenu(operatingDispara);
     }
    else
    {
      operatingDispara= exe_menuitemfunc(operatingDispara);
    }
  }
  else//子菜单
  {
    if(GetSonMenuitem(operatingDispara->OperatingMenuitem))
        {
           operatingDispara=goto_submenu(operatingDispara);
        }
    else
        {
        operatingDispara= exe_menuitemfunc(operatingDispara);
        }
  }
  return operatingDispara;

}
示例#2
0
// =========================================================================
// 函数功能:确认键响应函数
// 输入参数:operatingDispara,当前正在操作的菜单项
// 输出参数:
// 返回值  :经过更新的当前正在操作的菜单项
// 说明   :在下拉菜单中,对于确认键,当前菜单项有子菜单则会展开子菜单项,否则会
//         执行当前菜单项的钩子函数
// =========================================================================
struct menu_displaypara* KeyEnterAction_pull(struct menu_displaypara* operatingDispara)
{
    if(GetSonMenuitem(operatingDispara->OperatingMenuitem))
        {
           operatingDispara=goto_submenu(operatingDispara);
        }
    else
        {
         operatingDispara=exe_menuitemfunc(operatingDispara);
        }
  return operatingDispara;

}
示例#3
0
// =========================================================================
// 函数功能:为九格显示参数创建显示参数
// 输入参数:pre,前级显示参数,menuitem,当前显示参数所关联的菜单项,Appwin,应用程序提供的显示窗口
//          注意当pre为空的时候表示的是创建主显示参数,这时候会用到APPWIN和menuitem,否则这两项会从
//          pre中提取
// 输出参数:
// 返回值  :
//需要说明的是:位置前面都计算好了,已经没有啥子好说的了
// =========================================================================
struct menu_displaypara *createmenudisparabypre_9cell(struct menu_displaypara *pre,struct menu_item *menuitem,struct GkWinRsc  *Appwin)
{

  bool_t  result;
  struct menu_displaypara  *cur=NULL;
  struct Rectangle   Disparawin_rec;
 // struct GkWinRsc  *win;
   //简单的根据前一个菜单窗口创建

  if((NULL==pre)&&((NULL==menuitem)||(NULL==Appwin)))
  {
     printf("Not enough  para to create the menudispara,You must be joking!\n");
  }
  cur=mallocdisplaypara();
  if(NULL==cur)
  {
     printf("Not enough mem for CreateParaMenuwinBypre!\n");
     return cur;
  }

  if(NULL==pre)
  {
     // printf("This is the main menu!\n");

      cur->AppWin=Appwin;
      cur->FVisualMenuitem=GetBBmenuitem(menuitem);
      cur->OperatingMenuitem=menuitem;
      cur->LVisualMenuitem=GetPreMenuitem(cur->FVisualMenuitem);

      cur->MyMenuDispalyFunction=NULL;
      cur->MyPeripheralGeneralAction=NULL;
      cur->MyDisplayPeripheralRespond=NULL;
      cur->AdjustVisualMenuitem=NULL;
      cur->CreateMenuDisparaBypre=NULL;
      cur->MyMenuInitFunction=NULL;
  }
  else
  {
      // printf("This is the sub menu!\n");
       cur->AppWin=pre->AppWin;
       cur->FVisualMenuitem=GetSonMenuitem(pre->OperatingMenuitem);
       cur->OperatingMenuitem=cur->FVisualMenuitem;
       cur->LVisualMenuitem=GetPreMenuitem(cur->FVisualMenuitem);
       //初始化一些函数指针
       cur->menukeyboard_action = pre->menukeyboard_action;
       cur->menumousetouch_ction = pre->menumousetouch_ction;
       cur->MyPeripheralGeneralAction = pre->MyPeripheralGeneralAction;

       cur->MyMenuDispalyFunction=pre->MyMenuDispalyFunction;
       cur->MyPeripheralGeneralAction=pre->MyPeripheralGeneralAction;
       cur->MyDisplayPeripheralRespond=pre->MyDisplayPeripheralRespond;
       cur->AdjustVisualMenuitem=pre->AdjustVisualMenuitem;
       cur->CreateMenuDisparaBypre=pre->CreateMenuDisparaBypre;
       cur->MyMenuInitFunction=pre->MyMenuInitFunction;
       //添加到链表中
       adddisplaypara(pre,cur);
    }
  //计算空间
   Disparawin_rec=CalDisAreaFromPre_9cell(pre,cur);
 //创建窗口
   result=create_menudisparawin(cur, Disparawin_rec, cur->FVisualMenuitem->node.name);
   if(!result)
   {
      printf("Failed--- createmenudisparabypre_9cell!\n");
      deldisplaypara(cur);
      cur=NULL;
      return cur;
   }
   return cur;
}