How to draw an Icon on the IndicatorPane of Series 60
2009-04-27 10:53
736 查看
Link: http://www.newlc.com/How-to-draw-an-Icon-on-the.html
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() 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.
IndicatorIconEx.zip
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() 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:
IndicatorIconEx.zip
相关文章推荐
- 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
- How to get IOleSite interface of the WebBrowser in an ActiveX control
- 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 add icon for the item of ListCtrl using C++ (Mail Attachment ListCtrl) - 如何用C++为ListCtrl的Item添加图标(邮件附件ListCtrl)
- 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 combine the value of multiple hashes within an array by the same key
- How to project an icon to the map taken from gps at com port
- How to put an object on the request in a servlet
- 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
- how to put the text on the left of a radio button in android