首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> Symbian入门 >> 正文
Symbian学习笔记(12)——在StatusPane中加上TabGroup
作者:SHARE & …    文章来源:SHARE & TOP    更新时间:2008-4-14 15:16:26
在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
<TNewsChannel> *rc=iChannelHandler->GetChannels();
for(TInt i=0;i<rc->Count();i++){                   
  iTabGroup
->AddTabL((*rc)[i].id,*((*rc)[i].title));       
}

                       
iDecoratedTabGroup
=CAknNavigationDecorator::NewL( iNaviPane, iTabGroup, CAknNavigationDecorator::ETabGroup );
iNaviPane
->PushL( *iDecoratedTabGroup );
iTabGroup
->SetActiveTabByIndex(0);

这样就OK了。
相关文章:
Symbian学习笔记(22)——关于皮肤的小结
Symbian学习笔记(21)——原来还有这个工具wsdl2cpp,访问webservice也很简单
Symbian学习笔记(20)——用gSOAP更简单地实现Web Services Client
Symbian学习笔记(19)——初探WebServices API的使用(下)
Symbian学习笔记(18)——初探WebServices API的使用(中)
Symbian学习笔记(17)——初探WebServices API的使用(上)
Symbian学习笔记(16)——解析XML文件(下)
Symbian学习笔记(15)——解析XML文件(上)
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号