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可装插件

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...