Symbian学习笔记(12)

在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了。

时间: 2024-08-04 07:59:08

Symbian学习笔记(12)的相关文章

Symbian学习笔记

Symbian学习笔记(22) - 关于皮肤的小结 Symbian学习笔记(21)--原来还有这个工具wsdl2cpp,访问webserv Symbian学习笔记(20)--用gSOAP更简单地实现Web Services Clien Symbian学习笔记(19)--初探WebServices API的使用(下) Symbian学习笔记(18)--初探WebServices API的使用(中) Symbian学习笔记(17)--初探WebServices API的使用(上) Symbian学习

API Demos 2.3 学习笔记 (12)-- Views-&amp;gt;Rating Bar

更多精彩内容,请点击阅读:<API Demos 2.3 学习笔记> RatingBar是基于SeekBar和ProgressBar的扩展,用星型来显示等级评定.用户可以通过触屏点击或者轨迹球左右移动来进行星型等级评定.RatingBar有三种风格:ratingBarStyle 默认风格  ratingBarStyleSmall 小风格 ratingBarStyleIndicator 大风格 其中,默认风格的RatingBar是我们通常使用的可以交互的,而后面两种不能进行进行交互,只能作为指示牌

Symbian学习笔记(17)——初探WebServices API的使用(上)

很久没有学习Symbian了,今天研究一下如何使用Symbian中提供的WebService框架来SayHello. 从SDK文档中提供的资料来看这个接口似乎有点复杂,包括了Connection API.Description API和Manager API三套东西,此外还涉到了XML的解析之类的一些API的应用. 阅读了一下它的例子程序(S60Ex目录下的AddressBook),让我更晕乎了.怎么跟自己平时使用的WebService不一样了? 在SDK文档中关于CSenServiceConn

Symbian学习笔记(7)——定时器

Symbian教材里说到活动对象时,总拿CTimer来做例子,从CActive派生一个CMyActive然后它包括一个CTimer iTimer,再利用它的异步函数iTimer.After来演示活动对象的效果. 但是CTimer本身就已经是源于CActive了,所以我今天来讨论的是直接使用定时器,必竟在手机上定时器是一个比较常用的功能(在BREW开发中因为没有多线程,几乎所有的应用都会用上那个ISHELL_SetTimer). CTimer有两个子类CPeriodic和CHeartbeat,都可

Symbian学习笔记(5)——加载JPEG图像的方法

上次学习的是从MIF和MBM文件中加载图像,一般在程序中出现的图片都可以用这个方法,但有一点点遗憾,它只能使用svg或bmp格式,BREW或J2ME中的资源却多为png格式的. 如果想在symbian中使用jpg或者png图片,则需要用到symbian提供的那个Multimedia ICL库里的类了.其中比较重的是CImageDecoder类,提供了对图像进行解码的功能. 来看看如何使用它的吧.先定义两个字串: _LIT(KJPEGFile,"C:\\Data\\me.jpg"); _

Symbian学习笔记(4)——在GUI应用中使用图像

学习一下如何修改GUI程序中的图标与如何加载图像. 与2nd.不同的是,3rd.支持svg格式的可缩放图标(最大好处在于一个图标搞定,以前用bmp时为了应用程序的菜单图标得要做四个小图标).而且,现在有了一种新的图像打包格式mif(这名字咋跟BREW中那个MIF一样啊).虽然还支持以前的MBM方式但是不建议使用了. 要在应用程序中增加图像图标资源,过程如下: 第一步,先将要加入的图像放在工程的/gfx目录下,如: qgn_menu_DemoUI.svg splash2.bmp 前面一个就是应用程

Symbian学习笔记(2)——基本概念

第一次打开SymbianC++的程序源代码,第一感觉就是"这是C/C++吗?咋这么眼生啊". 看代码看书,才算是稍稍明白了一点,其实无非就是typedef罢了,symbian可比brew定义了更多的东西. 这是以后干活的基础,所以做个笔记,省得忘了. 一.基本数据类型 这个比较简单,都在e32def.h中写着呢.也就是以下这几个类型要注意一下,以后照着写罢了,含义也很明了,不用多说. typedef void TAny; typedef signed char TInt8; typed

Symbian学习笔记(21)——原来还有这个工具wsdl2cpp,访问webservice也很简单

在论坛里看到有人问使用wsdl2cpp生成代码,才知道原来symbian提供了一个辅助工具来生成webservice client的代码,比起我上回折腾的自己参考AddressBook例子做的webservice客户端要简单多了,类似于gSOAP的使用. 首先,去forum.nokia.com.cn搜一下WSDL-to-C++_for_S60,这是用于Carbice Vs的工具,不过也可以独立安装,用命令行来生成所需要的代码.下载安装即可. 第二步,运行它的wsdl2cpp工具,得到一些源代码,

Symbian学习笔记(20)——用gSOAP更简单地实现Web Services Client

昨天折腾了一下那个gSOAP,发现这东西比Symbian自带的WebServiceAPI更简单方便,推荐使用! gSOAP的官方网站是:http://gsoap2.sourceforge.net/ 具体使用方法不多说,因为网上GOOGLE 一下很多资料.下面只对在symbian环境下使用略说几点. 我下载的是最新版的v2.7.10,下载的压缩包里就有一个symbian目录,里面是在symbian的例子,可以参考. 试着做了一个HelloWorld,还是访问前面做的那个web service,按照