Symbian学习笔记(12)
创始人
2024-03-25 10:41:08
0
在symbian中的tabgroup的使用比较常见,在多视图的框架中就提供了一些代码。

  symbian把整个屏幕分成三大块上面的状态面板(StatusPane)、中间的主面板和下面的控制面板(ControlPane)。控制面板中就是那个CBA的东西,暂且不管。

  状态面板中可以让我们去操作的包括:标题栏(可以修改显示标题,缺省是应用程序名称)、上下文栏(就是大图标的位置),还有一个就是导航栏了(用来显示TabGroup或者一些文字信息比如日期、编辑模式之类的)。

  在代码中操作状态栏的方法并不复杂,在AppUi中有一个StatusPane()可以轻松的得到状态栏的引用。

 

iNaviPane
  = (CAknNavigationControlContainer*)StatusPane()->ControlL(TUid::Uid(EEikStatusPaneUidNavi));   

iDecoratedTabGroup = naviPane->ResourceDecorator();

if (iDecoratedTabGroup)...{
  iTabGroup = (CAknTabGroup*) iDecoratedTabGroup->DecoratedControl();
  iTabGroup->SetObserver( this );
}
 

  上面的代码是用来从资源中读取TabGroup的方法,所以需要在rss中增加如下的描述:

 

RESOURCE EIK_APP_INFO
    {
    status_pane = r_app_status_pane;
    }

RESOURCE STATUS_PANE_APP_MODEL r_app_status_pane
    {
    panes=
        {
        SPANE_PANE
            {
            id = EEikStatusPaneUidNavi;
            type = EAknCtNaviPane;
            resource = r_navi_decorator;
            }
        };
    }

RESOURCE NAVI_DECORATOR r_navi_decorator
    {
    type = ENaviDecoratorControlTabGroup;
    control = TAB_GROUP
        {
        tab_width = EAknTabWidthWithTwoTabs;
        active = 0;
        tabs = {
            TAB
                {
                id = EUniNewsTabSZ;
                txt = qtn_tab_title_sz;
                },
            TAB
                {
                id = EUniNewsTabGJ;
                txt = qtn_tab_title_gj;
                }
            };
        };
    }

  在代码中设置了TabGroup的观察者是this,说明当前的AppUi应该实现接口

        MAknTabObserver的方法void TabChangedL(TInt aIndex)。

  不过,我觉得TabGroup应该是动态生成的比较常用,所以可以不用在rss中描述这些东西,在代码中去创建就好了:

 

iTabGroup = CAknTabGroup::NewL(*iNaviPane);
iTabGroup->SetTabFixedWidthL(EAknTabWidthWithTwoTabs);
iTabGroup->SetObserver(this);
           
RArray *rc=iChannelHandler->GetChannels();
for(TInt i=0;iCount();i++)...{                  
  iTabGroup->AddTabL((*rc)[i].id,*((*rc)[i].title));      
}
                       
iDecoratedTabGroup=CAknNavigationDecorator::NewL( iNaviPane, iTabGroup, CAknNavigationDecorator::ETabGroup );
iNaviPane->PushL( *iDecoratedTabGroup );
iTabGroup->SetActiveTabByIndex(0);

  这样就OK了。

【编辑推荐】

  1. Symbian每6个月发布一款新开源操作系统
  2. 微软建WindowsMarketplace 完善智能机平台
  3. 大力模仿Android 传微软WM6.5可装插件

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...