`
yesjavame
  • 浏览: 687216 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Symbian学习笔记(12):在StatusPane中加上TabGroup

阅读更多
在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中增加如下的描述:
RESOURCEEIK_APP_INFO
{
status_pane
=r_app_status_pane;
}

RESOURCESTATUS_PANE_APP_MODELr_app_status_pane
{
panes
=
{
SPANE_PANE
{
id
=EEikStatusPaneUidNavi;
type
=EAknCtNaviPane;
resource
=r_navi_decorator;
}
};
}

RESOURCENAVI_DECORATORr_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(TInti=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学习笔记

    这些学习笔记涵盖了Symbian开发的多个关键方面,包括调试、基础概念、应用框架、图形用户界面(GUI)开发、多线程处理、定时器、系统集成以及网络通信。 1. **Debug On Device**: 在设备上进行调试是开发过程中的...

    StatusPane.rar_symbian_symbian s60_标题栏

    在Symbian S60平台的开发中,动态修改标题栏是一个常见的需求,尤其是在创建自定义用户界面或者增强应用程序用户体验时。"StatusPane.rar_symbian_symbian s60_标题栏"这个压缩包文件可能包含了一套针对Symbian S60 ...

    symbian StatusPane

    symbian StatusPane TARGET StatusPane.app TARGETTYPE app UID 0x100039CE 0x101F610B TARGETPATH \system\apps\StatusPane SOURCEPATH ..\src SOURCE StatusPaneApplication.cpp SOURCE StatusPaneAppUi.cpp ...

    StatusPane.rar_s60 status pane_symbian

    在Symbian操作系统中,Status Pane(状态栏)是一个至关重要的组件,它位于手机屏幕的顶部,显示着各种系统信息和通知。这个"StatusPane.rar_s60 status pane_symbian"压缩包显然包含了关于如何在S60平台上操作和...

    StatusPane.rar_状态栏

    状态栏在软件开发中是一个重要的用户界面元素,它通常位于应用程序窗口的底部,用来显示一些实时更新的信息,如系统状态、提示消息、进度指示器等。对于初学者来说,理解和掌握状态栏的使用能极大地提升应用程序的...

Global site tag (gtag.js) - Google Analytics