How to draw an Icon on the IndicatorPane of Series 60
2008-08-02 17:46
627 查看
How to draw an Icon on the IndicatorPane of Series 60
Here is a way to show an icon on the IndicatorPane of Series 60. You can show an icone near to the battery pane or signal pane, for that you have to customise the code.
I’ve used a calss named CIndicatorIcon derived from CCoeControl. Now you have to create the ConstructL() should be like this:
void CIndicatorIcon::ConstructL()
{
iMyWindowGroup = RWindowGroup(iCoeEnv->WsSession());
User::LeaveIfError(iMyWindowGroup.Construct((TUint32)&iMyWindowGroup));
iMyWindowGroup.SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront);
iMyWindowGroup.EnableReceiptOfFocus(EFalse);
CreateWindowL(&iMyWindowGroup);
// by default setting the indicator icon to inactive
SetIndicatorIconL(EIndicatorIconAppActive);
ActivateL();
}
In the ConstructL() I was calling another function called SetIndicatorIconL(), to set the icon:
void CIndicatorIcon::SetIndicatorIconL(TIndicatorIcon aIndicatorIconType, TBool aRedraw)
{
switch(aIndicatorIconType)
{
case EIndicatorIconEmpty:
iIndicator = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_prop_empty);
iIndicatorMask = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_prop_empty_mask);
break;
case EIndicatorIconAppActive:
iIndicator = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_bt_connect_on);
iIndicatorMask = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_bt_connect_on_mask);
break;
case EIndicatorIconAppInactive:
iIndicator = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_prop_bt_audio);
iIndicatorMask = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_prop_bt_audio_mask);
break;
default:
break;
}
SetRect(TRect(TPoint(KIndicatorPosX, KIndicatorPosY),iIndicator->SizeInPixels()));
// if aRedraw == ETrue just draw the canvas again.
if(aRedraw)
{
DrawNow();
}
}
You have to over-ride Draw()[/i] from CCoeControl. The Draw function is as follows:
void CIndicatorIcon::Draw(const TRect& aRect) const
{
CWindowGc& gc = SystemGc();
gc.Clear();
gc.SetBrushStyle(CGraphicsContext::ENullBrush);
gc.BitBltMasked(TPoint(aRect.iTl.iX, aRect.iTl.iY),
iIndicator,
TRect(TPoint(0, 0), iIndicator->SizeInPixels()),
iIndicatorMask,
ETrue);
}
Now add these lines to the ConstructL() of your Application’s AppUi class:
iIndicatorIcon = CIndicatorIcon::NewL();
// The next line will set the icon to draw and it'll draw to the screen.
iIndicatorIcon->SetIndicatorIconL(CIndicatorIcon::EIndicatorIconAppInactive, ETrue);
Finally after running the application it’ll look like this:
You can download an example application from here.
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-5802524690470106";
//728x15, 创建于 07-11-13
google_ad_slot = "7233856721";
google_ad_width = 728;
google_ad_height = 15;
//--></SCRIPT>
<SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>
</SCRIPT>
Here is a way to show an icon on the IndicatorPane of Series 60. You can show an icone near to the battery pane or signal pane, for that you have to customise the code.
I’ve used a calss named CIndicatorIcon derived from CCoeControl. Now you have to create the ConstructL() should be like this:
void CIndicatorIcon::ConstructL()
{
iMyWindowGroup = RWindowGroup(iCoeEnv->WsSession());
User::LeaveIfError(iMyWindowGroup.Construct((TUint32)&iMyWindowGroup));
iMyWindowGroup.SetOrdinalPosition(0, ECoeWinPriorityAlwaysAtFront);
iMyWindowGroup.EnableReceiptOfFocus(EFalse);
CreateWindowL(&iMyWindowGroup);
// by default setting the indicator icon to inactive
SetIndicatorIconL(EIndicatorIconAppActive);
ActivateL();
}
In the ConstructL() I was calling another function called SetIndicatorIconL(), to set the icon:
void CIndicatorIcon::SetIndicatorIconL(TIndicatorIcon aIndicatorIconType, TBool aRedraw)
{
switch(aIndicatorIconType)
{
case EIndicatorIconEmpty:
iIndicator = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_prop_empty);
iIndicatorMask = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_prop_empty_mask);
break;
case EIndicatorIconAppActive:
iIndicator = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_bt_connect_on);
iIndicatorMask = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_bt_connect_on_mask);
break;
case EIndicatorIconAppInactive:
iIndicator = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_prop_bt_audio);
iIndicatorMask = CEikonEnv::Static()->CreateBitmapL(KSysIconFile, EMbmAvkonQgn_prop_bt_audio_mask);
break;
default:
break;
}
SetRect(TRect(TPoint(KIndicatorPosX, KIndicatorPosY),iIndicator->SizeInPixels()));
// if aRedraw == ETrue just draw the canvas again.
if(aRedraw)
{
DrawNow();
}
}
You have to over-ride Draw()[/i] from CCoeControl. The Draw function is as follows:
void CIndicatorIcon::Draw(const TRect& aRect) const
{
CWindowGc& gc = SystemGc();
gc.Clear();
gc.SetBrushStyle(CGraphicsContext::ENullBrush);
gc.BitBltMasked(TPoint(aRect.iTl.iX, aRect.iTl.iY),
iIndicator,
TRect(TPoint(0, 0), iIndicator->SizeInPixels()),
iIndicatorMask,
ETrue);
}
Now add these lines to the ConstructL() of your Application’s AppUi class:
iIndicatorIcon = CIndicatorIcon::NewL();
// The next line will set the icon to draw and it'll draw to the screen.
iIndicatorIcon->SetIndicatorIconL(CIndicatorIcon::EIndicatorIconAppInactive, ETrue);
Finally after running the application it’ll look like this:
Indicator icon when application is running in the foreground. | Indicator icon when application is running in the background.. | |
Indicator icon when application is running in the background with the task view.. |
<SCRIPT type=text/javascript><!--
google_ad_client = "pub-5802524690470106";
//728x15, 创建于 07-11-13
google_ad_slot = "7233856721";
google_ad_width = 728;
google_ad_height = 15;
//--></SCRIPT>
<SCRIPT src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>
</SCRIPT>
相关文章推荐
- How to draw an Icon on the IndicatorPane of Series 60
- How Can I Minimize a VI to an Icon on the Windows System Tray?
- How to draw a shape on top of a UIImage while respecting the image's alpha mask
- how to project an icon to any point on the map
- How to power on/of the machine by KVM
- Here's an example that shows how to enumerate through the features of a selection set, returning the value of each field in the attribute table except for the geometry colum.
- How To Customise the Tab Bar (UITabBar) in an iPhone Application (Part 1 of 2)
- How to get IOleSite interface of the WebBrowser in an ActiveX control
- How to calculate the SVG Path for an arc (of a circle)
- How to allow a user to click on TextBlocks which return an integer ID in the click handler
- How to maintain the position of the scrollbar on postbacks (across the entire site)
- How to put an object on the request in a servlet
- How to project an icon to the map taken from gps at com port
- How to combine the value of multiple hashes within an array by the same key
- How to Build an High Availability MQTT Cluster for the Internet of Things
- How To Customise the Tab Bar (UITabBar) in an iPhone Application (Part 2 of 2)
- How do I bind the values of an enum to a ComboBox?
- How to make an SDL window the child of another window in Win32
- uiview 某点返回 色值 How to get the color of a pixel in an UIView?
- how to put the text on the left of a radio button in android