<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-32555365</id><updated>2012-01-27T20:13:14.283+08:00</updated><category term='Non-Programming'/><category term='UIQ3'/><category term='Window Mobile - QT'/><category term='Symbian - QT'/><category term='S60'/><category term='Back to School [Symbian]'/><category term='Back to School [S60]'/><title type='text'>Mobile Development</title><subtitle type='html'>The Purpose of this Blog is to spread the less known facts to the Mobile developers.

If you want to post any article on the Blog please send it to me my email ID is skumar.mobiledev@gmail.com</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default?start-index=101&amp;max-results=100'/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>204</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-32555365.post-1511382002293866432</id><published>2009-01-27T13:12:00.000+08:00</published><updated>2009-01-27T13:13:42.625+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;h1&gt;Symbian Naming Conventions&lt;/h1&gt;Correct Symbian vaiable naming:&lt;br /&gt; i-prefix for member variables&lt;br /&gt; a-prefix for method parameters.&lt;br /&gt; C-prefix for classes that should be constructed on the heap.&lt;br /&gt; T-prefix for classes that can fit on the stack.&lt;br /&gt; L-postfix for methods that can leave.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1511382002293866432?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1511382002293866432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1511382002293866432' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1511382002293866432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1511382002293866432'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2009/01/symbian-naming-conventions-correct.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-728228316479552558</id><published>2009-01-15T09:47:00.003+08:00</published><updated>2009-01-15T09:50:32.585+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Symbian - QT'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Nokia's QT Every Where&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ZAjT-2iZ9R8/SW6WJakgT0I/AAAAAAAAAb0/ZbMQCj2S9CY/s1600-h/nokia_qt-software_reach_diag.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 205px;" src="http://2.bp.blogspot.com/_ZAjT-2iZ9R8/SW6WJakgT0I/AAAAAAAAAb0/ZbMQCj2S9CY/s400/nokia_qt-software_reach_diag.gif" alt="" id="BLOGGER_PHOTO_ID_5291331700702334786" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-728228316479552558?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/728228316479552558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=728228316479552558' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/728228316479552558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/728228316479552558'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2009/01/nokias-qt-every-where.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ZAjT-2iZ9R8/SW6WJakgT0I/AAAAAAAAAb0/ZbMQCj2S9CY/s72-c/nokia_qt-software_reach_diag.gif' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-4383855754658127715</id><published>2008-10-30T16:48:00.001+08:00</published><updated>2008-10-30T16:49:49.353+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S60'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to detect if phone has 3G enabled.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Some items in you applications you want to do some action only when there is 3G network (like video streaming upload or video calling.) So how to detect that phone has 3G network.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;TBool isSupported = CFeatureDiscovery:: IsFeatureSupportedL (KFeatureIdProtocolWcdma);&lt;br /&gt;if (isSupported)&lt;br /&gt;   {&lt;br /&gt;   // activate the service&lt;br /&gt;   }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-4383855754658127715?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/4383855754658127715/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=4383855754658127715' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4383855754658127715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4383855754658127715'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/10/how-to-detect-if-phone-has-3g-enabled.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2006037424605697</id><published>2008-10-25T11:29:00.002+08:00</published><updated>2008-10-25T11:31:57.076+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How to know current editing state of TextEditor.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can use CAknEnv::EditingStateIndicator() to get then current editing starts.&lt;br /&gt;code below show how to know if T9 is On or OFF.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;TBool t9_mode;&lt;br /&gt;MAknEditingStateIndicator* editingindicator = CAknEnv::Static()-&amp;gt;EditingStateIndicator();&lt;br /&gt;CAknIndicatorContainer* indicatorcontainer =editingindicator-&amp;gt;IndicatorContainer();&lt;br /&gt;if (indicatorcontainer-&amp;gt;IndicatorState(TUid::Uid(EAknNaviPaneEditorIndicatorT9)))&lt;br /&gt;  {&lt;br /&gt;  t9_mode = ETrue;&lt;br /&gt;  }&lt;br /&gt;else&lt;br /&gt;  {&lt;br /&gt;  t9_mode = EFalse;&lt;br /&gt;  }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2006037424605697?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2006037424605697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2006037424605697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2006037424605697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2006037424605697'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/10/how-to-know-current-editing-state-of.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1237765254112126194</id><published>2008-10-21T18:13:00.002+08:00</published><updated>2008-10-21T18:15:56.270+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to fource application to use AGPS instead of GPS.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Solution is you have circle through all the gps modules avaialble and select one with AGPS Support.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;RPositionServer iPosServer;&lt;br /&gt;RPositioner iPositioner;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;srv.GetNumModules(moduleCount);&lt;br /&gt;&lt;br /&gt;for(TInt i = 0 ; i &amp;lt; moduleCount ; i++)&lt;br /&gt; {&lt;br /&gt; TPositionModuleInfo modInfo;&lt;br /&gt; TInt error = iPosServer.GetModuleInfoByIndex( i, modInfo );&lt;br /&gt; if(modInfo.IsAvailable() &amp;amp;&amp;amp; (modInfo.TechnologyType() == TPositionModuleInfo::ETechnologyAssisted))&lt;br /&gt;     {&lt;br /&gt;     iPositioner.Open(iPosServer,modInfo.ModuleId());&lt;br /&gt;     break;&lt;br /&gt;     }&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1237765254112126194?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1237765254112126194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1237765254112126194' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1237765254112126194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1237765254112126194'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/10/how-to-fource-application-to-use-agps.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2843074607207406407</id><published>2008-10-21T18:03:00.001+08:00</published><updated>2008-10-21T18:03:43.655+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How to get UserAgent for S60 v3.x devices.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;use the following code to get the user agent of the device.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;iRepository= CRepository::NewLC(TUid::Uid(0x101f8731));&lt;br /&gt;TBuf&amp;lt;255&amp;gt; tmp;&lt;br /&gt;iRepository-&amp;gt;Get(7, tmp);&lt;br /&gt;iUserAgent = HBufC8::NewL(tmp.Length());&lt;br /&gt;iUserAgent-&amp;gt;Des().Copy(tmp);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2843074607207406407?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2843074607207406407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2843074607207406407' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2843074607207406407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2843074607207406407'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/10/how-to-get-useragent-for-s60-v3.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-575484113208531511</id><published>2008-10-21T17:58:00.000+08:00</published><updated>2008-10-21T17:59:26.601+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S60'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How to make old sdk installations foot-print disappear.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Problem: some times the emulator or my sdk [v3.0 MR] installation gets corrupted due to prolonged usage. and i want to reinstall so i uninstall the SDK and reinstall it but the new installation takes S60_3rd_MR_2 as epoc path so how to default it to S60_3rd_MR.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;1. Uninstall S60_3rd_MR from you PC and delete S60_3rd_MR folder.&lt;br /&gt;2. Open RegEdit&lt;br /&gt;3. Go to HKEY_LOCAL_MACHINE\SOFTWARE\Nokia\com.nokia.s60 and check the counter value&lt;br /&gt;4. if the counter value not "0" then set it to 0.&lt;br /&gt;5. restart PC and install S60_3rd_MR again.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-575484113208531511?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/575484113208531511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=575484113208531511' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/575484113208531511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/575484113208531511'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/10/how-to-make-old-sdk-installations-foot.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-5516700932902432582</id><published>2008-10-01T15:48:00.000+08:00</published><updated>2008-10-01T15:49:35.952+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to observe the flip open and flip close event&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you wanted to observe the flip open and flip close event in case of N93. then you have to use EnableScreenChangeEvents and try capturing events EEventCaseClosed, EEventCaseOpen in RunL()&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;if(iStatus == KErrNone)&lt;br /&gt;    {&lt;br /&gt;    TWsEvent e;&lt;br /&gt;    ws.GetEvent(e);&lt;br /&gt;    switch(e.Type())&lt;br /&gt;        {&lt;br /&gt;        case EEventCaseClosed:&lt;br /&gt;        case EEventCaseOpen:&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-5516700932902432582?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/5516700932902432582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=5516700932902432582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5516700932902432582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5516700932902432582'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/10/how-to-observe-flip-open-and-flip-close.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1291725711253943597</id><published>2008-10-01T15:25:00.000+08:00</published><updated>2008-10-01T15:26:14.756+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Taking ScreenShot in Symbian&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Below are steps we have to take ScreenShot and saving it to the file as .jpeg.&lt;br /&gt;&lt;br /&gt;1.Create blank bitmap:&lt;br /&gt;iBitmap = new (ELeave)CFbsBitmap;&lt;br /&gt;iBitmap-&gt;Create( TSize(176,208),EColor16M ); // Pass the Window Size to capture&lt;br /&gt;&lt;br /&gt;2.Create a rectangle of the window you want to capture:&lt;br /&gt;iScreenRect = TRect(TPoint(0,0),TSize(176,208)); // Pass the Window Size to capture&lt;br /&gt;&lt;br /&gt;3. Copy Screen To this bitmap and save it into memory.&lt;br /&gt;iScreenDevice-&gt;CopyScreenToBitmap(iBitmap,iScreenRect);&lt;br /&gt;&lt;br /&gt;4. Now we have to Encode CFbsBitmap to JPEG Format.&lt;br /&gt;&lt;br /&gt;TBuf&lt;50&gt; myBuf;&lt;br /&gt;myBuf.Append(KFileName);&lt;br /&gt;myBuf.AppendNum(iCaptureCount);&lt;br /&gt;myBuf.Append(KExtension);&lt;br /&gt;&lt;br /&gt;iEncoder = CImageEncoder::FileNewL(iFsSession, myBuf, CImageEncoder::EOptionAlwaysThread, KImageTypeJPGUid);&lt;br /&gt;&lt;br /&gt;TRequestStatus status;&lt;br /&gt;iEncoder-&gt;Convert(&amp;amp;status,*iBitmap);&lt;br /&gt;SetActive();&lt;br /&gt;&lt;br /&gt;5. The conversion process is asynchronous. When it is completed, RunL() is called. Inside RunL()&lt;br /&gt;&lt;br /&gt;Indside RunL():&lt;br /&gt;delete iEncoder;&lt;br /&gt;iEncoder = NULL;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1291725711253943597?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1291725711253943597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1291725711253943597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1291725711253943597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1291725711253943597'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/10/taking-screenshot-in-symbian.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1086325497202171724</id><published>2008-10-01T13:56:00.000+08:00</published><updated>2008-10-01T13:57:10.226+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How to simplify Symbian Classes using Template.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you all know we have to have 2-Phase consutsction in heap based classes. And also know that it's repetitive code that we have to write for each and every classes. If you can minimize the coding effort that will help us in long run, for that we can use the Symbian Templates.&lt;br /&gt;&lt;br /&gt;Define a class which is base class&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&lt;br /&gt;// baseclass.h&lt;br /&gt;#ifndef __BASE_CLASS_H__&lt;br /&gt;#define __BASE_CLASS_H__&lt;br /&gt;&lt;br /&gt;template &amp;lt;class T&amp;gt;&lt;br /&gt;class CBaseClass : public CBase&lt;br /&gt;   {&lt;br /&gt;public:&lt;br /&gt;   static T* NewL(RWsSession&amp;amp; aWsSession)&lt;br /&gt;       {&lt;br /&gt;       T *self = T::NewLC(aWsSession);&lt;br /&gt;       CleanupStack::Pop(self);&lt;br /&gt;       return self;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;   static T* NewLC(RWsSession&amp;amp; aWsSession)&lt;br /&gt;       {&lt;br /&gt;       T *self = new (ELeave) T(aWsSession);&lt;br /&gt;       CleanupStack::PushL(self);&lt;br /&gt;       self-&amp;gt;ConstructL();&lt;br /&gt;       return self;&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;public:&lt;br /&gt;   virtual void ConstructL() = 0;&lt;br /&gt;&lt;br /&gt;   };&lt;br /&gt;#endif&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;Now We can use in any class like below&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&lt;br /&gt;#ifndef __MYCLASS_H__&lt;br /&gt;#define __MYCLASS_H__&lt;br /&gt;&lt;br /&gt;#include "baseclass.h"&lt;br /&gt;class CMyClass;&lt;br /&gt;class CMyClass : public CBaseClass&amp;lt;CMyClass&amp;gt;&lt;br /&gt;   {&lt;br /&gt;public:&lt;br /&gt;   void ConstructL();&lt;br /&gt;public:&lt;br /&gt;   CMyClass()&lt;br /&gt;   {&lt;br /&gt;   }&lt;br /&gt;   ~CMyClass();&lt;br /&gt;   };&lt;br /&gt;#endif&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;note:&lt;/span&gt; you can improve the above implemetaion as per your requirement.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1086325497202171724?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1086325497202171724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1086325497202171724' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1086325497202171724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1086325497202171724'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/10/how-to-simplify-symbian-classes-using.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6142834479743883340</id><published>2008-10-01T13:32:00.002+08:00</published><updated>2008-10-01T13:33:33.809+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How to Copy BitMap Object to BitMap Object&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We can load a bit map using CEikonEnv::CreateBitmapL()&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;CFbsBitmap* myBitmap = iEikonEnv-&amp;gt;CreateBitmapL(KBmpPath,index);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Code below shows how to copy BitMap&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;CFbsBitmap* aBitmap = new (ELeave)CFbsBitmap;&lt;br /&gt;aBitmap-&amp;gt;Create(myBitmap-&amp;gt;SizeInPixels(),myBitmap-&amp;gt;DisplayMode());&lt;br /&gt;TRect tempRect(TPoint(0,0),myBitmap-&amp;gt;SizeInPixels() );&lt;br /&gt;TInt iBufLength = tempRect.Width() * tempRect.Height() * 2;&lt;br /&gt;Mem::Copy(aBitmap-&amp;gt;DataAddress(),myBitmap-&amp;gt;DataAddress(),iBufLength);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6142834479743883340?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6142834479743883340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6142834479743883340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6142834479743883340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6142834479743883340'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/10/how-to-copy-bitmap-object-to-bitmap.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6920396437267845626</id><published>2008-10-01T12:51:00.000+08:00</published><updated>2008-10-01T12:56:23.856+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How to choose a mobile platform&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When it comes to choosing the target platform and technology for your mobile project the possibilities are numerous. There are several kinds of PDAs and mobile phone platforms to choose from, and they all have somewhat different characteristics. You'll consider very different factors when you develop applications for the Pocket PC versus the Palm OS, even though their target markets are nearly the same. On the other hand, using Mobile Information Device Profile (MIDP) for application development is quite different from doing it using Symbian, even though these two platforms tend to target the same devices.&lt;br /&gt;&lt;br /&gt;Project scope and limitations&lt;br /&gt;&lt;br /&gt;Before you even begin to consider technology platforms and target devices, you must have a crystal-clear picture of the software you're developing. To begin, ask yourself these questions:&lt;br /&gt;&lt;br /&gt;  * Who is your target audience? Is your application intended for consumer use, or will it be used more in business or corporate environments? Consumer devices are generally different from business devices, so knowing your target audience will help you narrow down your target device -- quickly. You won't get far developing a children’s game for the Pocket PC.&lt;br /&gt;  * Are you developing a game or an application? If it's a game, consider the demographics of the people who will play it (age, gender, economic bracket, and so on). That will give you an idea of which consumer devices to target.&lt;br /&gt;  * Are there any pre-existing requirements? If your distributor only handles Symbian applications, for example, then your choice is easy. Likewise if you're developing a business app for a company that already has Symbian phones in place.&lt;br /&gt;  * What's your skill-set? Assuming you're doing the coding, if you're a Java™ developer then you probably want to stick with the Java platform (unless you have a good reason for switching to some other technology).&lt;br /&gt;  * How quickly do you need the application or prototype? Some technology solutions add complexity, and thus development time, to a project, whereas others limit both.&lt;br /&gt;  * How much money do you have? Money is almost always the most important factor to consider.&lt;br /&gt;&lt;br /&gt;While not so integral to choosing your development platform, it's also a good idea to know what niche your application will fall into. Is it unique enough to dominate the market on any target device, or will it be one application among many in a given genre? These considerations will help you decide how much time and money to invest in your application, as well as what kind of returns you can anticipate.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Mobile technology options&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mobile development technologies have quite a range -- from the stripped-down server-side scripting of Short Message Service (SMS) to the complete development platforms of Symbian and MIDP. Before I get into comparing the technologies most commonly used for mobile development, I'll briefly describe each one and discuss its pros and cons from both a development and a market perspective.&lt;br /&gt;&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;SMS and MMS&lt;/span&gt;&lt;br /&gt;  SMS (Short Message Service) and MMS (Multimedia Service) are by far the simplest technologies to use for mobile development. Both build on the basic functions of mobile phones, with the SMS/MMS development happening on the server side. The simplest way to make an SMS application (for example one that receives a message and sends a joke) is to sign a contract with a mobile service operator and write a simple PHP script that communicates with the operator's interface. MMS applications are the same but a bit more complicated, because you're handling different kinds of content.&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;MIDP&lt;/span&gt;&lt;br /&gt;  The Mobile Information Device Profile (better known as mobile Java) launched the mobile application revolution. Sadly, the technology fell flat of many developer's expectations when it turned out that its applications weren’t really write-once, run-everywhere. MIDP 2.0 fixed many of the problems inherent in the first version, but some developers still have doubts about MIDP. On the upside, MIDP development can be very fast, allowing you to make a working application or prototype in just a few days.&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;Symbian&lt;/span&gt;&lt;br /&gt;  Symbian is an increasingly popular operating system for smart phones. Symbian has a number of user interface platforms, including Nokia’s Series 40, Series 60, Series 80, and Series 90, and the UIQ, which is used by Sony Ericsson and Motorola among others. Symbian is a lot more complicated to work with than MIDP, but Symbian applications are designed and targeted for a particular UI and platform, making them more reliable. Symbian applications are written mainly in C++.&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;Pocket PC&lt;/span&gt;&lt;br /&gt;  Windows™ CE, Pocket PC Edition (aka Pocket PC or Windows mobile) is Microsoft’s operating system for PDAs. The Pocket PC platform resembles other Windows operating systems, which makes it quite easy to learn. A Pocket PC device also contains all the basic applications for word processing, personal information management, e-mail, and so on, making it a popular choice among consumers. On the other hand, Pocket PC devices don’t necessarily have network connections or phone functions. Pocket PC apps are typically written in C++, Visual Basic, or the Java language.&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;Smartphone&lt;/span&gt;&lt;br /&gt;  Smartphone is the smartphone version of Windows CE or Windows Mobile. It is aimed at smartphones and mainly competes in the same category as the Symbian OS. Smartphone development is similar to Pocket PC development. Because Smartphone is a mobile phone platform it is guaranteed to have phone functions and connectivity.&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;Palm OS&lt;/span&gt;&lt;br /&gt;  Palm OS is the operating system behind Palm devices, which were among the first practical handheld devices. These days there are Palm OS phones and PDAs. Palm devices have a loyal user base, which ensures a good market for Palm applications. Palm OS Garnet and Palm OS Cobalt are the two versions of the Palm platform, Cobalt being the newer version. Most Palm OS applications are written in C, but there are development environments that will let you create Palm OS applications in other languages including C++, Visual Basic, or Java programming.&lt;br /&gt;  &lt;span style="font-weight: bold;"&gt;Others.&lt;/span&gt;&lt;br /&gt;  iPhone, Android, Linux etc&lt;br /&gt;&lt;br /&gt;Now you have a clear sense of your application and the mobile technologies you could use to build it, but you're probably not sure yet which is the best one. Asking more questions (and answering them) will help you narrow the decision down even further.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What can you afford?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Money is the bottom line in application development. Knowing what you have to spend lets you determine how much time you have to develop your application and how many developers you can assign to the project. Symbian is probably the slowest and, thus, most expensive mobile development technology, while MIDP, Pocket PC (with Visual Basic), and SMS can be quite fast and cheap. Table below summarizes the budgeting considerations for each of the mobile development technologies profiled.&lt;br /&gt;&lt;br /&gt;&lt;a name="table1"&gt;&lt;b&gt;Budget factors compared&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;table class="data-table-1" summary="" width="100%" border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Technology&lt;/th&gt;&lt;th&gt;Budgeting considerations&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;SMS and MMS&lt;/td&gt;&lt;td&gt;You can use standard Web development tools, like Java programming or PHP, and you'll find plenty of experienced developers. It's also easy to learn these technologies yourself. You'll need a Web host for your scripts and a contract with your local mobile operator.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;MIDP&lt;/td&gt;&lt;td&gt;Development tools are free, although some of the commercial tools can make development faster and easier. The MIDP APIs are quite easy to learn and use. You can build a good application with a small team.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Symbian&lt;/td&gt;&lt;td&gt;Probably the most difficult to master, and thus expensive, but also rewarding. The software is reliable and has a solid reputation. Consumers are willing to pay more for Symbian. You will need a commercial development tool, which adds to the cost. Further, some distributors only accept tested applications, so you’ll have to use a third-party testing company to do the testing. And in the latest version of Symbian, you have to get your applications signed.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Pocket PC&lt;/td&gt;&lt;td&gt;Free tools let you start a development project with a small budget. Developing an application with a reasonable amount of features requires experience and time, however, as with any other Windows application.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Smartphone&lt;/td&gt;&lt;td&gt;Development is pretty straightforward if you’re familiar with Microsoft’s technologies and are fluent with Visual C++. You'll find a large community of experienced developers for Microsoft’s technologies, so the size of the team will depend on the size of your project.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Palm OS&lt;/td&gt;&lt;td&gt;You can download free development tools from Palmsource and get support for a small fee. Palm OS development is about as demanding as Windows Mobile (Pocket PC and Smartphone) development, with the same benefits and constraints.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;      &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How much time do you have?&lt;/span&gt;&lt;br /&gt;Table below shows the factors that affect development time for each mobile technology, then categorizes them by speed. (Of course, a lot depends on the experience of the development team.)&lt;br /&gt;&lt;br /&gt;&lt;a name="table1"&gt;&lt;b&gt;Development time factors compared&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;table class="data-table-1" summary="" width="100%" border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Technology&lt;/th&gt;&lt;th&gt;Factors that affect development time&lt;/th&gt;&lt;th&gt;Speed&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;SMS and MMS&lt;/td&gt;&lt;td&gt;Getting the contracts with a mobile operator can take some time, but the development itself should go quickly if you're an experienced Web developer.&lt;/td&gt;&lt;td&gt;&lt;b&gt;Fast&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;MIDP&lt;/td&gt;&lt;td&gt;Prototypes can be made very quickly. A simple application can be designed, implemented, and tested in a month. &lt;/td&gt;&lt;td&gt;&lt;b&gt;Fast&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Symbian&lt;/td&gt;&lt;td&gt;While this is the most time-consuming choice, it significantly increases the credibility of your application. You most likely need a development team that is experienced with Symbian. If you plan to learn the technology yourself make sure you reserve enough time.&lt;/td&gt;&lt;td&gt;&lt;b&gt;Slow&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Pocket PC&lt;/td&gt;&lt;td&gt;Visual Basic development is quite fast even for the beginner, but C++ development takes time. You can also use the Java platform, but doing so presents limitations for running the application easily in the device.&lt;/td&gt;&lt;td&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Smartphone&lt;/td&gt;&lt;td&gt;Quite like the Pocket PC. &lt;/td&gt;&lt;td&gt;&lt;b&gt;Medium&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Palm OS&lt;/td&gt;&lt;td&gt;Developing with C is slow compared to MIDP.               Other options are faster.&lt;/td&gt;&lt;td&gt;&lt;b&gt;Slow&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What's the ROI?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Not all people who own certain devices are potential buyers. Some don’t even know that their mobile phone is Java-enabled -- or even know what "Java-enabled" means. Knowing what to expect in returns will help you decide how much time and money to put into your application up front; this is an important consideration for some mobile platforms. Table 3 describes the potential market for different platforms and explains some of the variables that will affect your application's return on investment.&lt;br /&gt;&lt;br /&gt;&lt;a name="table1"&gt;&lt;b&gt;ROI and target consumers compared&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;table class="data-table-1" summary="" width="100%" border="1" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Technology&lt;/th&gt;&lt;th&gt;Market&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;SMS and MMS&lt;/td&gt;&lt;td&gt;Nearly everyone with a mobile phone is a             potential user of SMS or MMS services, although you'll find             more users in some demographics than others. Stock market             applications are strictly for business people, whereas almost anyone             could want to vote for their favorite reality television series candidate.&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;MIDP&lt;/td&gt;&lt;td&gt;Most mobile phones now include MIDP 2.0, but that doesn’t            mean that consumers know what to do with it. As a test, ask            all your friends and family if their phones are Java-enabled.            How many of them know that they have Java-enabled phones? How            many of them have used a mobile Java application?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Symbian&lt;/td&gt;&lt;td&gt;At the moment there are two market             segments for Symbian: young people for games and business             people for business apps. More users will tune into Symbian             soon, but for now these are the early adopters who are             willing to pay for applications. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Pocket PC&lt;/td&gt;&lt;td&gt;These devices are mostly owned by             business people, which guides the applications built for             them. Think PIM applications, travel applications, and the             like.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Smartphone&lt;/td&gt;&lt;td&gt;Smartphone is relatively new (compared to             Palm OS, for example) and so its market is quite fresh.             There are not very many devices out yet, but the number is             growing. The phones are quite large, so, at the moment it's             unlikely to woo the masses.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tb-row"&gt;Palm OS&lt;/td&gt;&lt;td&gt;The PDA's target audience is mainly business people or people with a high demand for contact and memo data. The phones could appeal to anyone, but their size and price suggests that they're targeted to business people or early adopters.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;In conclusion&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've focused in this column on considerations to help you choose the right mobile platform, starting with some questions to help you define your software project. Knowing the scope and limitations of your application -- from both a development and a market perspective -- is paramount in choosing the right technology to build it. From there, you'll want to consider market factors such as whether your application falls into a niche that is already dominated by a given technology or range of devices and the anticipated return on investment from your app. Finally, think about the development itself.&lt;br /&gt;&lt;br /&gt;Developing MIDP apps is relatively simple and takes place entirely on the Java platform. If you're building a lightweight consumer app and you know Java already, then MIDP is a good choice for you. If you want to build your application using Symbian -- a good choice for more robust applications that will compete for marketshare -- then you or your team must be proficient in C++ programming. An SMS application is easy to build and can target a wide audience, but offers a fairly limited user interface.&lt;br /&gt;&lt;br /&gt;The key to choosing the right technology for your projects is to think from multiple perspectives. Here, I've introduced the most commonly used mobile technologies and compared them based on the three essential considerations for any project: budget, development time, and ROI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6920396437267845626?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6920396437267845626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6920396437267845626' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6920396437267845626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6920396437267845626'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/10/how-to-choose-mobile-platform-when-it.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2147669818490373627</id><published>2008-09-12T12:59:00.000+08:00</published><updated>2008-09-12T13:00:21.045+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Why Should we use Resource Files in defining UIs ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Symbian (and its Licensees S60 and UIQ) provides a lot of the infrastructure for an application in Symbian.C++ that is already prebuilt[like MFC] so it is not really practical to reinvent the wheel with more code to rebuild the controls.&lt;br /&gt;&lt;br /&gt;Additionally to provide a consistent framework across devices, the underlying OS uses a framework calls LAF which dictates how controls should look and where they should be on the screen so that there is a common style to all applications.&lt;br /&gt;&lt;br /&gt;Also Keeping source code and resource files separate, which gives lots of advantages&lt;br /&gt;    1. easy localization,&lt;br /&gt;    2. developer only need to recompile resource files if there are any changes in the UI elements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2147669818490373627?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2147669818490373627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2147669818490373627' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2147669818490373627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2147669818490373627'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/09/why-should-we-use-resource-files-in.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7582199230386660463</id><published>2008-09-07T21:21:00.003+08:00</published><updated>2008-09-07T21:25:52.147+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Window Mobile - QT'/><title type='text'></title><content type='html'>&lt;div dir="ltr"&gt;                        &lt;h1 class="YfMhcb"&gt;&lt;span id=":38b" class="VrHWId"&gt;QT - Windows CE Applicatio&lt;wbr&gt;n Framework&lt;/span&gt;&lt;/h1&gt;&lt;p class="documentDescription"&gt;Qt for Windows® CE enables developers to write rich and high performance applications using an intuitive API available for a wide range of devices. Qt for Windows CE allows rapid application development, translation to numerous languages, and unparalleled ease of platform migration to Windows, Mac®, Linux®, embedded Linux® and Unix®. Enjoy efficient cross-platform development across multiple device types.&lt;/p&gt;&lt;h1 class="documentFirstHeading"&gt;Qt Cross-Platform Application Framework&lt;/h1&gt;                        &lt;p class="documentDescription"&gt;Qt is a cross-platform application framework for desktop and embedded development. It includes an intuitive API and a rich C++ class library, integrated tools for GUI development and internationalization, and support for Java™ and C++ development. &lt;/p&gt;                                          &lt;p&gt; &lt;img class="image-inline" src="http://trolltech.com/images/products/qt/ProductArch_Diagram_webfull.png" alt="" /&gt;&lt;/p&gt;&lt;h2&gt;&lt;b&gt;Innovate &amp;amp; Differentiate&lt;br /&gt;&lt;/b&gt;&lt;/h2&gt;  &lt;h3&gt;&lt;b&gt;Proven Technology&lt;/b&gt;&lt;/h3&gt; &lt;p&gt;Qt for Windows CE inherits the power and advantages of Qt, Trolltech's leading C++ cross-platform application framework. Trolltech has always demonstrated both commitment and ability to remain ahead of the technology curve, freeing customers to focus on front-end value-adding innovation rather than maintaining the software infrastructure.&lt;/p&gt; &lt;b&gt;&lt;a title="Visual Studio Integration for CE" href="http://trolltech.com/wince/visualstudiowince.png"&gt;&lt;img class="image-right" src="http://trolltech.com/wince/visualstudiowince.png/image_mini" alt="Visual Studio Integration for CE" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/b&gt; &lt;h3&gt;&lt;b&gt;Power to Differentiate&lt;/b&gt;&lt;/h3&gt;  &lt;p&gt;With full source code and &lt;span class="link-external"&gt;&lt;span class="link-external"&gt;&lt;a href="http://doc.trolltech.com/"&gt;documentation&lt;/a&gt;&lt;/span&gt;&lt;/span&gt; provided, Qt for Windows CE offers the freedom to create and innovate. Device and application developers using Qt can efficiently differentiate their products by taking control of the user experience.&lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Independence&lt;/b&gt;&lt;br /&gt;Qt for Windows CE has minimal &lt;a title="Requirements" href="http://trolltech.com/products/qt/qt-embedded/requirements"&gt;hardware dependencies&lt;/a&gt; and supports most existing Windows CE  configurations. Qt for Windows CE is easy to build even for custom hardware configurations.&lt;br /&gt;&lt;/p&gt; &lt;h3&gt;&lt;b&gt;High Productivity&lt;/b&gt;&lt;/h3&gt; &lt;p&gt;Whether you are developing for the desktop or Windows CE, Qt comes with a rich toolset enabling rapid application development, seamlessly integrated with &lt;a href="http://trolltech.com/products/qt/indepth/vs-integration"&gt;Visual Studio&lt;/a&gt;®.&lt;/p&gt;&lt;h3&gt;&lt;strong&gt;High Quality API&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Qt for Windows® CE supports the same API as Qt on the desktop: a growing library of over 600 C++ classes, which encapsulates a complete infrastructure for end-to-end application development. Qt for Windows CE benefits from Qt 4's leading technologies including high-quality rendering engine, concurrency abstraction, text rendering and multi-threading. Unused features can be excluded when compiling Qt for Windows CE in order to minimize software footprint.&lt;/p&gt;  &lt;h3&gt;&lt;a name="enhanced-graphics-capabilities"&gt;&lt;/a&gt;&lt;strong&gt;Enhanced Graphics Capabilities&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Speed optimization and visual quality, a primary focus for Qt, has even more impact on embedded devices. The Qt for Windows CE API allows for the capabilities of the hardware's accelerated graphics to be utilized. Qt integrates Scalable Vector Graphics (SVG 1.1/1.2 Tiny) drawings and animations on embedded with full support for multiple displays. OpenGL ES is supported including an OpenGL paint engine for accelerated 3D graphics.&lt;/p&gt;  &lt;h3&gt;&lt;a name="powerful-2d-graphics-canvas"&gt;&lt;/a&gt;&lt;strong&gt;Powerful 2D Graphics Canvas&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Qt Graphics View – a powerful 2D graphics canvas – enables the creation of interactive applications that responsively handle thousands of 2D graphics objects. Graphics View provides support for collision detection, optimized level-of-detail rendering, affine item transformations, enhanced control over animations and enhanced drag-and-drop features.&lt;/p&gt;  &lt;h3&gt;&lt;a name="native-and-customizable-look"&gt;&lt;/a&gt;&lt;strong&gt;Native and Customizable Look and Feel&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Qt for Windows CE adds two new native styles to Qt: the Windows Mobile and Windows CE style. At runtime, Qt applications will detect which style to use. The look and feel of Qt applications can be easily customized further with its unique widget stylesheets. Qt Style Sheets are a powerful mechanism that allows customization of widget appearance. The concepts, terminology, and syntax of Qt Style Sheets are inspired by HTML Cascading Style Sheets (CSS), but adapted to the world of widgets. With Qt Style Sheets, complex styles can be defined by anyone familiar with CSS techniques, in a fraction of the time and lines of code required for traditional UI styling.&lt;/p&gt;  &lt;h3&gt;&lt;a name="multimedia-framework"&gt;&lt;/a&gt;&lt;strong&gt;Multimedia Framework*&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Qt 4.4 incorporates Phonon: a straightforward, high-level, open-source media playback API. Phonon provides cross-platform support for video and audio playback using native media facilities.&lt;/p&gt;  &lt;h3&gt;&lt;a name="qt-webkit-integration"&gt;&lt;/a&gt;&lt;strong&gt;Qt WebKit Integration*&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Qt's integration with WebKit – a powerful open source web rendering engine – allows you to display and integrate dynamic web content and functionality in your local application. Applications can incorporate real-time web content and services, and utilize HTML and application scripting skills enabling new ways of creating and delivering user interfaces.&lt;/p&gt;  &lt;h3&gt;&lt;a name="advanced-text-layout-engine"&gt;&lt;/a&gt;&lt;strong&gt;Advanced Text Layout Engine&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Qt for Windows CE supports TrueType® and raster fonts. Targeting the global market is easier with Qt for Windows CE, with its extended Unicode support and right-to-left languages. Qt's rich text engine adds capabilities for complex text layouts including tables, path tracing and text which flows around shapes. Using Qt, it's has never been this easy to create rich text content in your embedded application.&lt;/p&gt;  &lt;h3&gt;&lt;a name="invaluable-tools"&gt;&lt;/a&gt;&lt;strong&gt;Invaluable Tools&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;Regardless of what platform you are targeting, Qt includes tools, which enable rapid and optimal development. All tools are seamlessly integrated with Visual Studio, making it possible to target multiple platforms from within the popular Windows IDE. Tools include automatic code completion and syntax highlighting, powerful GUI layout and forms design through an integrated Qt Designer, templates for the most common application types, and Qt documentation integrate  with Visual Studio online help. Also included are a set of tools designed to smooth the internationalization workflow.&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7582199230386660463?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7582199230386660463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7582199230386660463' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7582199230386660463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7582199230386660463'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/09/qt-for-windows-ce-enables-developers-to.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-4969231659968077397</id><published>2008-08-26T18:13:00.000+08:00</published><updated>2008-08-26T18:16:52.863+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S60'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to retrieve a list of the languages supported by the phone.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;    CPtiEngine* eng = CPtiEngine::NewL( ETrue );&lt;br /&gt; CleanupStack::PushL( eng );&lt;br /&gt; if ( eng-&amp;gt;NumberOfLanguages() )&lt;br /&gt;     {&lt;br /&gt;     RArray&amp;lt;TInt&amp;gt; languages;&lt;br /&gt;     CleanupClosePushL( languages );&lt;br /&gt;     eng-&amp;gt;GetAvailableLanguagesL( languages );&lt;br /&gt;     ........&lt;br /&gt;     CleanupStack::PopAndDestroy( &amp;amp;languages );&lt;br /&gt;     }&lt;br /&gt; CleanupStack::Pop (eng);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-4969231659968077397?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/4969231659968077397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=4969231659968077397' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4969231659968077397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4969231659968077397'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-to-retrieve-list-of-languages.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2379316352046072278</id><published>2008-08-25T18:04:00.001+08:00</published><updated>2008-08-25T18:09:38.707+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Naming convention used in Symbian&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why we require special "Naming convention" for symbian.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   * provide common syntax for Symbian OS C++&lt;br /&gt;   * help reinforce Symbian OS programming idioms&lt;br /&gt;   * help communicate Symbian OS C++ class design for APIs&lt;br /&gt;   * serve as checklist for coding&lt;br /&gt;   * act as reference during code inspection/review&lt;br /&gt;   * helps produce efficient and reliable code for ROM-based devices&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Fundamental data types in Symbian&lt;/span&gt;&lt;br /&gt;   * typedefs of built-in types for integer, floating-point, character, and pointer types (e32def.h), compiler-independent.&lt;br /&gt;   * TInt, TUint signed and unsigned 32-bit integers&lt;br /&gt;   * TBool, values ETrue (=1) and EFalse (=0)&lt;br /&gt;   * TReal, Double precision (64-bit) floating point number&lt;br /&gt;   * TText, Build independent general text character, In non-Unicode builds, this is mapped to TText8. In Unicode builds, this is mapped to TText16.&lt;br /&gt;   * TAny*, Pointer to anything (use instead of void*)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Symbian OS Classes&lt;/span&gt;&lt;br /&gt;   * Classes should have a clear role&lt;br /&gt;   * One class to one header file is recommended.&lt;br /&gt;   * Layout of header files:&lt;br /&gt;     #include files;&lt;br /&gt;     friend classes;&lt;br /&gt;         public,&lt;br /&gt;         protected,&lt;br /&gt;         private methods;&lt;br /&gt;         private,&lt;br /&gt;         protected,&lt;br /&gt;         public data.&lt;br /&gt;   * T-, C-, M-, R- convention to denote different class types&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Types of Symbian.C++ classes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;T Classes&lt;/span&gt;&lt;br /&gt;       * Behave like C++ built-in types&lt;br /&gt;       * No destructor =&gt; can be created on the stack and will be cleaned up correctly when the scope of function exits&lt;br /&gt;       * Contain member data which is:&lt;br /&gt;         -Built-in types&lt;br /&gt;         -Pointers and references with uses a relationship&lt;br /&gt;       * Contain all data internally&lt;br /&gt;       * Example:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;          class TInitParams {&lt;br /&gt;         public:&lt;br /&gt;         TInt iN1;&lt;br /&gt;         TInt iN2;&lt;br /&gt;         }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;       &lt;span style="font-weight: bold;"&gt;C Classes&lt;/span&gt;&lt;br /&gt;       * CBase (defined in e32base.h) is the base class for all C classes.&lt;br /&gt;       * All C objects are allocated on the heap.&lt;br /&gt;       * When it is first allocated on the heap all member data will be zero-filled&lt;br /&gt;       * When no longer needed heap-based objects must be destroyed&lt;br /&gt;       * It has a virtual destructor (destroyed properly by deletion through a CBase pointer)&lt;br /&gt;       * Example:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;          class CExample : public CBase&lt;br /&gt;         {&lt;br /&gt;         ...&lt;br /&gt;         }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;   &lt;span style="font-weight: bold;"&gt;R Classes&lt;/span&gt;&lt;br /&gt;       * R classes are proxies for objects usually owned elsewhere.&lt;br /&gt;       * There are two main motivations for this,&lt;br /&gt;           - the real object is owned by a server in a different thread or address space&lt;br /&gt;           -implementation of real object must be hidden from the client.&lt;br /&gt;       * There is no common base class for all R classes.&lt;br /&gt;       * The initialization function has a variety of names, like Open(), Create(), Allocate(), etc.&lt;br /&gt;       * The termination function has a variety of names, like Close(), Destroy(), Free(), etc.&lt;br /&gt; &lt;br /&gt;   &lt;span style="font-weight: bold;"&gt;M Classes&lt;/span&gt;&lt;br /&gt;       * The only form of multiple inheritance allowed by Symbian OS is where the extra classes are Mixins.&lt;br /&gt;       * Mixins (M classes), define an interface but do not provide an implementation of it&lt;br /&gt;       * they do not have any data members.&lt;br /&gt;       * only pure virtual functions&lt;br /&gt;       * A concrete class derived from a Mixin must implement its interface.&lt;br /&gt;       * Example:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;class MRadio&lt;br /&gt;         {&lt;br /&gt;         public:&lt;br /&gt;         virtual void TuneL() =0;&lt;br /&gt;         };&lt;br /&gt;&lt;br /&gt;         class MClock&lt;br /&gt;         {&lt;br /&gt;         public:&lt;br /&gt;         virtual void CurrentTimeL(TTime&amp;amp; aTime) =0;&lt;br /&gt;         };&lt;br /&gt;&lt;br /&gt;         class CClockRadio : public CBase, public MRadio, public MClock&lt;br /&gt;         {&lt;br /&gt;         public:&lt;br /&gt;         void TuneL();&lt;br /&gt;         void CurrentTimeL(TTime&amp;amp; aTime);&lt;br /&gt;         };&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;   &lt;span style="font-weight: bold;"&gt;Class members&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   * Data members: use prefix i -, should be private&lt;br /&gt;   * Arguments: prefix a-&lt;br /&gt;   * variables start with lower case, Functions Start With Capitals&lt;br /&gt;   * Setter functions: SetThing(aThing);&lt;br /&gt;   * Getter functions: myThing = Thing(); (return it)&lt;br /&gt;     GetThing(myThing); (pass it by ref.)&lt;br /&gt;   * Variables including arguments: &amp;amp; for uses-a and * for has-a&lt;br /&gt;   * Trailing L,C for functions that cause exceptions (L means leave function, LC means it may leave and the function keep object on cleanupstuck)&lt;br /&gt;   * Trailing D for functions that delete object&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2379316352046072278?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2379316352046072278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2379316352046072278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2379316352046072278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2379316352046072278'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/naming-convention-used-in-symbian-why.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3957054081196007440</id><published>2008-08-21T18:19:00.000+08:00</published><updated>2008-08-21T18:22:46.451+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S60'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to Display Phone Model&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;_LIT(KFilename,"Z:\\resource\\versions\\model.txt");&lt;br /&gt;RFile file;&lt;br /&gt;User::LeaveIfError(file.Open(CCoeEnv::Static()-&amp;gt;FsSession(),KFilename,EFileRead));&lt;br /&gt;CleanupClosePushL(file);&lt;br /&gt;&lt;br /&gt;TFileText text;&lt;br /&gt;text.Set(file);&lt;br /&gt;TBuf16&amp;lt;128&amp;gt; szModelName;&lt;br /&gt;User::LeaveIfError(text.Read(szModelName));&lt;br /&gt;CleanupStack::PopAndDestroy(&amp;amp;file);&lt;br /&gt;&lt;br /&gt;CAknInformationNote* note = new (ELeave) CAknInformationNote(ETrue);&lt;br /&gt;note-&amp;gt;ExecuteLD(szModelName);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3957054081196007440?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3957054081196007440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3957054081196007440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3957054081196007440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3957054081196007440'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-to-display-phone-model.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3190724363164329812</id><published>2008-08-14T10:37:00.000+08:00</published><updated>2008-08-14T10:40:09.243+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Non-Programming'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How to know what is your device Bluetooth address. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;The local bluetooth address of a device can usually be retrieved by typing the following star-hash code: &lt;span style="font-weight: bold;"&gt;*#2820#&lt;/span&gt; (*#BTA0#)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3190724363164329812?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3190724363164329812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3190724363164329812' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3190724363164329812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3190724363164329812'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-to-know-what-is-your-device.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7146632771819154521</id><published>2008-08-13T10:06:00.001+08:00</published><updated>2008-08-13T10:14:22.271+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Automating "Generating Errrd installing sis file"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Below code is just a .bat file code that automates the process of&lt;br /&gt;1. creating a pkg file.&lt;br /&gt;2. generating key and cert&lt;br /&gt;3. generate a signed sis.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;@echo off&lt;br /&gt;echo #{"ErrRd"},(0xEEEEEEEE),0,0,0 &amp;gt;ErrRd.pkg&lt;br /&gt;echo %%{"ErrRd"} &amp;gt;&amp;gt; ErrRd.pkg&lt;br /&gt;echo :"ErrRd" &amp;gt;&amp;gt; ErrRd.pkg&lt;br /&gt;echo [0x101F7961], 0, 0, 0, {"Series60ProductID"} &amp;gt;&amp;gt; ErrRd.pkg&lt;br /&gt;echo "nul"-"c:\resource\ErrRd" &amp;gt;&amp;gt;ErrRd.pkg&lt;br /&gt;makesis ErrRd.pkg&lt;br /&gt;makekeys -cert -password test -dname "CN=Developer OU=MobileDev" test.key test.cert&lt;br /&gt;signsis ErrRd.sis ErrRd.sisx test.cert test.key test&lt;br /&gt;del test.key&lt;br /&gt;del test.cert&lt;br /&gt;del .rnd&lt;br /&gt;del ErrRd.sis&lt;br /&gt;del ErrRd.pkg&lt;br /&gt;pause&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to use it.&lt;/span&gt;&lt;br /&gt;1. Create a .bat file in c:\\&lt;br /&gt;2. Copy above code to that file&lt;br /&gt;3. Save File&lt;br /&gt;4. double click on the .bat file.&lt;br /&gt;5. Follow the on screen instructions.&lt;br /&gt;6. At the end ErrRd.sisx will be generated.&lt;br /&gt;7. Install this .sisx on your development device.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;note:&lt;/span&gt; credit goes to original author "Wizard of Hungary" from forum.nokia.com&lt;br /&gt;http://wiki.forum.nokia.com/index.php/Extended_panic_code&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7146632771819154521?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7146632771819154521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7146632771819154521' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7146632771819154521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7146632771819154521'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/automating-generating-errrd-installing.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2172839021173822546</id><published>2008-08-09T14:09:00.001+08:00</published><updated>2008-08-09T14:10:56.208+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to know where on device my application is installed.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As you may want to provide user to install you application both on phone memory (C:\) OR on memory Card (E:\) So when try to access your data files you may require to find out which drive your application is installed.&lt;br /&gt;&lt;br /&gt;Pre-v9  SDK suppoerted devices.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;&lt;br /&gt;   TFileName fullPath(fileName);&lt;br /&gt;   CompleteWithAppPath(fullPath);    // from aknutils.h&lt;br /&gt;   // fullPath now will contain &amp;lt;drive&amp;gt;:\system\apps\&amp;lt;application_name&amp;gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;v9.x  SDK suppoerted devices.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;    TFileName appPath;&lt;br /&gt;   TBuf&amp;lt;2&amp;gt; appDrive;&lt;br /&gt;   // Returns private path of this application&lt;br /&gt;   // in following format: \Private\&amp;lt;SID of the application&amp;gt;\&lt;br /&gt;   // (does not contain drive specification).&lt;br /&gt;   iEikonEnv-&amp;gt;FsSession().PrivatePath( appPath );&lt;br /&gt;   // Extract drive letter into appDrive&lt;br /&gt;   appDrive.Copy(iEikonEnv-&amp;gt;EikAppUi()-&amp;gt;Application()-&amp;gt;AppFullName().Left(2));&lt;br /&gt;   // Insert drive letter into path&lt;br /&gt;   appPath.Insert(0, appDrive);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2172839021173822546?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2172839021173822546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2172839021173822546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2172839021173822546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2172839021173822546'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-to-know-where-on-device-my.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7245376860629387080</id><published>2008-08-09T09:12:00.001+08:00</published><updated>2008-08-09T09:15:46.938+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='S60'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to get information about Profile [Online / Offline].&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Profile information are enumerated as below.&lt;br /&gt;&lt;br /&gt;EProfileUnknown = -1,&lt;br /&gt;EProfileOffline = 5,&lt;br /&gt;EProfileOffline = -2&lt;br /&gt;&lt;br /&gt;Pre-v9 S60 devices.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;    TInt profileIndex = EUnknownProfile;&lt;br /&gt;   CSettingInfo* settingsInfo = CSettingInfo::NewL(NULL);&lt;br /&gt;   CleanupStack::PushL(settingsInfo);&lt;br /&gt;   User::LeaveIfError(settingsInfo-&amp;gt;Get(SettingInfo::EActiveProfile, profileIndex));&lt;br /&gt;   CleanupStack::PopAndDestroy(settingsInfo);&lt;br /&gt;   // profileIndex contains the profile information&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;v9.x S60 devices.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;    CRepository* repository = CRepository::NewL(KCRUidProfileEngine);&lt;br /&gt;   CleanupStack::PushL(repository);&lt;br /&gt;   User::LeaveIfError(repository-&amp;gt;Get(KProEngActiveProfile, profileIndex));&lt;br /&gt;   CleanupStack::PopAndDestroy(repository);&lt;br /&gt;   // profileInde contains the profile information&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7245376860629387080?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7245376860629387080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7245376860629387080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7245376860629387080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7245376860629387080'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-to-get-information-about-profile.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1597383763549609428</id><published>2008-08-08T10:57:00.002+08:00</published><updated>2008-08-08T11:00:37.854+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;10 Tips when using Symbian Descriptors &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip 1: &lt;/span&gt;Never instantiate a TDes or a TDesC&lt;br /&gt;The default constructors of TDes and TDesC are declared private so the compiler won’t let you construct them directly. But there is no copy constructor declared for either class, so the compiler won’t complain if you make a copy of a valid descriptor (in fact, it will go as far as to help you, by invoking an implicitly generated copy constructor).&lt;br /&gt;&lt;br /&gt;_LIT(KExample, "Fred");&lt;br /&gt;TPtrC original(KExample); // a valid TDesC-derived descriptor&lt;br /&gt;TDesC copy(original); // Uses the implicit copy constructor&lt;br /&gt;&lt;br /&gt;Your code probably won’t crash if it has been written safely, but you will rarely have a valid reason for doing this. The code will fail to work anyway, because TDes and TDesC contain no string data, so in effect are abstract classes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip 2: &lt;/span&gt;Check that there is sufficient space before writing to a descriptor.&lt;br /&gt;An attempt to access an area outside the area allocated for descriptor data will cause a panic in both debug and release builds, because the descriptor functions use __ASSERT_ALWAYS internally to check for out-of-bounds access. A panic causes your code will stop executing immediately, whether running in an application, server or test framework. So be absolutely certain that there is space in your target descriptor, if necessary, by doing a check first by using the Length() or MaxLength() methods.&lt;br /&gt;&lt;br /&gt;_LIT8(KImageGif, “image/gif”); // 9 characters&lt;br /&gt;TBuf8&lt;8&gt; mimeType8; // Space for only 8 characters&lt;br /&gt;mimeType8.Copy(KImageGif); // So Panic!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip 3:&lt;/span&gt; Need a small known length descriptor? Use TBuf or TBufC.&lt;br /&gt;These are suitable for when you know the required length at compile time. The recommended maximum length is 256 bytes or fewer (remember that’s 128 characters, a TBuf&lt;128&gt;, because each character occupies 2 bytes).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip 4:&lt;/span&gt; Need a larger or unknown length descriptor? Use HBufC.&lt;br /&gt;Heap-based descriptors, HBufC, are allocated on the heap at run time. They can be used as local variables or as class members. As with all heap-based objects, memory leaks must be avoided through use of the cleanup stack - for local variables - or deleted by a destructor if ownership is through a member variable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip 5:&lt;/span&gt; Need to modify an HBufC? Call Des().&lt;br /&gt;An HBufC is derived from TDesC, and inherits non-modifiable descriptor functionality. Because it is not derived from TDes, it isn’t modifiable. So to write into it, you have to create a modifiable descriptor over the data area. This is done by calling HBufC::Des() which returns a TPtr and thus gives you access to all the modification functions such as Format(), Append() and Fill():&lt;br /&gt;&lt;br /&gt;HBufC* buffer = HBufC::NewL(4); // Read Only buffer&lt;br /&gt;TPtr ptrBuffer(buffer-&gt;Des()); // Read Write buffer&lt;br /&gt;_LIT(KBert, "Bert");&lt;br /&gt;ptrBuffer.Copy(KBert); // The data area of robert now contains Bert&lt;br /&gt;&lt;br /&gt;Remember that that there must be space in the HBufC for the required change because descriptors don’t resize themselves automatically. If there isn’t, it will still compile - but you’ll get a panic at runtime.&lt;br /&gt;&lt;br /&gt;HBufC* buffer = HBufC::NewL(2); // Read Only buffer&lt;br /&gt;TPtr ptrBuffer(buffer-&gt;Des()); // Read Write buffer&lt;br /&gt;_LIT(KBert, "Bert");&lt;br /&gt;ptrBuffer.Copy(KBert); // Panic! Not enough memory allocated to hold "Bert"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip 6:&lt;/span&gt; Need to read from an HBufC? Don't call Des().&lt;br /&gt;To read from a descriptor, you only need it to be non-modifiable, a TDesC. Class HBufC derives from TDesC, so it has access to all the non-modifiable functions implemented by TDesC. All you need to do is dereference the pointer.&lt;br /&gt;&lt;br /&gt;_LIT(KBert, "Bert");&lt;br /&gt;HBufC* bert = KBert.AllocL();&lt;br /&gt;TPtrC halfOfBert = bert-&gt;Left(2);&lt;br /&gt;&lt;br /&gt;One of the most common mistakes made when using descriptors is to call Des() on an HBufC* when you only need a constant descriptor.&lt;br /&gt;&lt;br /&gt;_LIT(KBert, "Bert");&lt;br /&gt;HBufC* bert = KBert().AllocL();&lt;br /&gt;TPtrC halfOfBert = bert-&gt;Des().Left(2); // Unnecessary call to Des()&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip 7:&lt;/span&gt; For API design, use the descriptor base classes as parameters and return values.&lt;br /&gt;In your APIs, use the descriptor base classes TDes and TDesC as parameters and return values. And remember to pass them by reference for efficiency, and never by value. Thus, descriptor parameters should be passed and returned either as const TDesC&amp;amp; for constant descriptors or TDes&amp;amp; when modifiable.&lt;br /&gt;&lt;br /&gt;Thus, when defining functions you should always use the abstract base classes as parameters or return values. For example, class RFile defines straightforward file read and write methods as follows:&lt;br /&gt;&lt;br /&gt;IMPORT_C TInt Write(const TDesC8&amp;amp; aDes);&lt;br /&gt;IMPORT_C TInt Read(TDes8&amp;amp; aDes) const;&lt;br /&gt;&lt;br /&gt;The descriptor to write to the file is a constant descriptor, while to read from the file into a descriptor requires the parameter to be modifiable (the maximum length of the modifiable descriptor determines how much file data can be read into it).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip 8:&lt;/span&gt; Don't confuse Size() and Length().&lt;br /&gt;The base class TDesC defines both Size() and Length() methods, which are easy to confuse.&lt;br /&gt;&lt;br /&gt;Size() returns the number of bytes the descriptor occupies.&lt;br /&gt;Length() returns the number of characters the descriptor contains.&lt;br /&gt;&lt;br /&gt;For 8-bit descriptors, where each character occupies a byte, this is the same thing. However, on all releases of Symbian OS since v5u, the native character width has been 16 bits; that is, each character occupies two bytes.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;note:&lt;/span&gt; Size() always returns a value which is double that of Length().&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip 9: &lt;/span&gt;Beware of calling MaxLength() on the TPtr returned from HBufC::Des()&lt;br /&gt;There's an interesting side effect to calling Des() on an HBufC to return a modifiable descriptor.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tip 10:&lt;/span&gt; Use operator&gt;&gt; and operator&lt;&lt; to internalize and externalize descriptor data. But remember that they can leave!&lt;br /&gt;When externalizing data to a writable stream, or internalizing it from a readable stream, use the operators crafted for this purpose rather than 'rolling your own'.&lt;br /&gt;&lt;br /&gt;// Write the contents of aDes to aStream&lt;br /&gt;void CMyClass::ExternalizeL(RWriteStream&amp;amp; aStream, const TDesC&amp;amp; aDes) const&lt;br /&gt; {&lt;br /&gt; aStream &lt;&lt; aDes;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;// Read the contents of aStream and create an HBufC&lt;br /&gt;HBufC* CMyClass::InternalizeL(RReadStream&amp;amp; aStream)&lt;br /&gt; {// KMaxLength is defined elsewhere as the maximum length read from the stream&lt;br /&gt; HBufC* heapBuf = HBufC::NewL(aStream, KMaxLength);&lt;br /&gt; }&lt;br /&gt;referance: http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1597383763549609428?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1597383763549609428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1597383763549609428' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1597383763549609428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1597383763549609428'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/10-tips-when-using-symbian-descriptors.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-4436840958872513232</id><published>2008-08-05T22:43:00.001+08:00</published><updated>2008-08-05T22:43:54.297+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to know which capabilities a symbian v9.x exe has.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can see capability information using petran tool provided with SDK.&lt;br /&gt;you have to use &gt; petran -dump s &lt;applicationname.exe&gt;&lt;br /&gt;&lt;br /&gt;exmaple:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;C:\Symbian\9.1\S60_3rd_MR\Epoc32\release\GCCE\UREL&amp;gt;petran -dump s testUi.exe&lt;br /&gt;&lt;br /&gt;PETRAN - PE file preprocessor V02.01 (Build 549)&lt;br /&gt;Copyright (c) 1996-2005 Symbian Software Ltd.&lt;br /&gt;&lt;br /&gt;E32ImageFile 'testUi.exe'&lt;br /&gt;Secure ID: ecb33de7&lt;br /&gt;Vendor ID: 00000000&lt;br /&gt;Capabilities: 00000000 00010010&lt;br /&gt;              ReadDeviceData&lt;br /&gt;              WriteUserData&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-4436840958872513232?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/4436840958872513232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=4436840958872513232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4436840958872513232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4436840958872513232'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-to-know-which-capabilities-symbian.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6284581296901704110</id><published>2008-08-04T11:29:00.003+08:00</published><updated>2008-08-05T10:28:32.534+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [S60]'/><title type='text'></title><content type='html'>&lt;p&gt;&lt;span style="font-weight: bold;font-size:180%;" &gt;S60 Editions and Feature Packs&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;What are S60 Editions?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;S60 platform release versions are named as Editions. Editions include all the main features of the release. The latest S60 release is S60 3rd Edition. S60 3rd Edition includes all the main features of the S60 2nd Edition plus some new features.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What are Feature Packs?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Feature Packs include features that are additional to Edition. Feature Packs may also include device specific features. For example, S60 2nd Edition, Feature Pack 2 introduces WCDMA technology into S60 devices.&lt;br /&gt;&lt;br /&gt;The talk about "Feature Packs" is a bit misleading, as they are not something that you can easily upgrade to old devices, like the way you update Service Packs on Windows PCs. Instead, S60 and its Feature Packs are tightly integrated with certain Symbian releases and your hardware, to ensure the best possible user experience. If upgrading new S60 platform versions to old devices becomes possible in the future, I promise that you will hear about it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6284581296901704110?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6284581296901704110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6284581296901704110' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6284581296901704110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6284581296901704110'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/s60-editions-and-feature-packs-what-are.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2752074054255173592</id><published>2008-08-03T23:44:00.001+08:00</published><updated>2008-08-03T23:52:06.795+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Symbian, S60 and Nokia Phones&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;table style="text-align: center;" border="1"&gt;  &lt;tbody&gt; &lt;tr&gt; &lt;th&gt;S60 Edition&lt;/th&gt; &lt;th&gt;S60 version&lt;/th&gt; &lt;th&gt;Symbian OS version&lt;/th&gt; &lt;th&gt;Phone Models&lt;br /&gt;&lt;/th&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;S60, version 0.9&lt;/b&gt;&lt;/td&gt; &lt;td&gt;0.9&lt;/td&gt; &lt;td&gt;6.1&lt;/td&gt; &lt;td align="left"&gt; &lt;ul&gt;&lt;li&gt;Nokia 7650&lt;/li&gt;&lt;/ul&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;S60 1st Edition&lt;/b&gt;&lt;/td&gt; &lt;td&gt;1.2&lt;/td&gt; &lt;td&gt;6.1&lt;/td&gt; &lt;td align="left"&gt; &lt;ul&gt;&lt;li&gt;Nokia 3600&lt;/li&gt;&lt;li&gt;Nokia 3620&lt;/li&gt;&lt;li&gt;Nokia 3650&lt;/li&gt;&lt;li&gt;Nokia 3660&lt;/li&gt;&lt;li&gt;Nokia N-Gage&lt;/li&gt;&lt;li&gt;Nokia N-Gage QD&lt;/li&gt;&lt;li&gt;Sendo X&lt;/li&gt;&lt;li&gt;Sendo X2&lt;/li&gt;&lt;li&gt;Siemens SX1&lt;/li&gt;&lt;/ul&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;S60 2nd Edition&lt;/b&gt;&lt;/td&gt; &lt;td&gt;2.0&lt;/td&gt; &lt;td&gt;7.0s&lt;/td&gt; &lt;td align="left"&gt; &lt;ul&gt;&lt;li&gt;Lenovo P930&lt;/li&gt;&lt;li&gt;Nokia 6600&lt;/li&gt;&lt;li&gt;Panasonic X700&lt;/li&gt;&lt;li&gt;Panasonic X800&lt;/li&gt;&lt;li&gt;Samsung SGH-D720&lt;/li&gt;&lt;li&gt;Samsung SGH-D730&lt;/li&gt;&lt;/ul&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;S60 2nd Edition, Feature Pack 1&lt;/b&gt;&lt;/td&gt; &lt;td&gt;2.1&lt;/td&gt; &lt;td&gt;7.0s&lt;/td&gt; &lt;td align="left"&gt; &lt;ul&gt;&lt;li&gt;Nokia 3230&lt;/li&gt;&lt;li&gt;Nokia 6260&lt;/li&gt;&lt;li&gt;Nokia 6620&lt;/li&gt;&lt;li&gt;Nokia 6670&lt;/li&gt;&lt;li&gt;Nokia 7610&lt;/li&gt;&lt;/ul&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;S60 2nd Edition, Feature Pack 2&lt;/b&gt;&lt;/td&gt; &lt;td&gt;2.6&lt;/td&gt; &lt;td&gt;8.0a&lt;/td&gt; &lt;td align="left"&gt; &lt;ul&gt;&lt;li&gt;Nokia 6630&lt;/li&gt;&lt;li&gt;Nokia 6680&lt;/li&gt;&lt;li&gt;Nokia 6681&lt;/li&gt;&lt;li&gt;Nokia 6682&lt;/li&gt;&lt;/ul&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;S60 2nd Edition, Feature Pack 3&lt;/b&gt;&lt;/td&gt; &lt;td&gt;2.8&lt;/td&gt; &lt;td&gt;8.1a&lt;/td&gt; &lt;td align="left"&gt; &lt;ul&gt;&lt;li&gt;Nokia N70&lt;/li&gt;&lt;li&gt;Nokia N72&lt;/li&gt;&lt;li&gt;Nokia N90&lt;/li&gt;&lt;/ul&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;S60 3rd Edition&lt;/b&gt;&lt;/td&gt; &lt;td&gt;3.0&lt;/td&gt; &lt;td&gt;9.1&lt;/td&gt; &lt;td align="left"&gt; &lt;ul&gt;&lt;li&gt;Nokia 3250&lt;/li&gt;&lt;li&gt;Nokia 5500 sport&lt;/li&gt;&lt;li&gt;Nokia E50&lt;/li&gt;&lt;li&gt;Nokia E60&lt;/li&gt;&lt;li&gt;Nokia E61&lt;/li&gt;&lt;li&gt;Nokia E62&lt;/li&gt;&lt;li&gt;Nokia E65&lt;/li&gt;&lt;li&gt;Nokia E70&lt;/li&gt;&lt;li&gt;Nokia N71&lt;/li&gt;&lt;li&gt;Nokia N73&lt;/li&gt;&lt;li&gt;Nokia N75&lt;/li&gt;&lt;li&gt;Nokia N77&lt;/li&gt;&lt;li&gt;Nokia N80&lt;/li&gt;&lt;li&gt;Nokia N91&lt;/li&gt;&lt;li&gt;Nokia N91 8GB&lt;/li&gt;&lt;li&gt;Nokia N92&lt;/li&gt;&lt;li&gt;Nokia N93&lt;/li&gt;&lt;/ul&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;S60 3rd Edition, Feature Pack 1&lt;/b&gt;&lt;/td&gt; &lt;td&gt;3.1&lt;/td&gt; &lt;td&gt;9.2&lt;/td&gt; &lt;td align="left"&gt; &lt;ul&gt;&lt;li&gt;Nokia 5700 XpressMusic&lt;/li&gt;&lt;li&gt;Nokia 6110 Navigator&lt;/li&gt;&lt;li&gt;Nokia 6120 Classic&lt;/li&gt;&lt;li&gt;Nokia 6121 Classic&lt;/li&gt;&lt;li&gt;Nokia 6124 Classic&lt;/li&gt;&lt;li&gt;Nokia 6290&lt;/li&gt;&lt;li&gt;Nokia E51&lt;/li&gt;&lt;li&gt;Nokia E66&lt;/li&gt;&lt;li&gt;Nokia E71&lt;/li&gt;&lt;li&gt;Nokia E90 Communicator&lt;/li&gt;&lt;li&gt;Nokia N76&lt;/li&gt;&lt;li&gt;Nokia N81&lt;/li&gt;&lt;li&gt;Nokia N81 8GB&lt;/li&gt;&lt;li&gt;Nokia N82&lt;/li&gt;&lt;li&gt;Nokia N95&lt;/li&gt;&lt;li&gt;Nokia N95 8GB&lt;/li&gt;&lt;/ul&gt; &lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;S60 3rd Edition, Feature Pack 2&lt;/b&gt;&lt;/td&gt; &lt;td&gt;3.2&lt;/td&gt; &lt;td&gt;9.3&lt;/td&gt; &lt;td align="left"&gt; &lt;ul&gt;&lt;li&gt;Nokia 5320 XpressMusic&lt;/li&gt;&lt;li&gt;Nokia 6210 Navigator&lt;/li&gt;&lt;li&gt;Nokia 6220 Classic&lt;/li&gt;&lt;li&gt;Nokia 6650&lt;/li&gt;&lt;li&gt;Nokia N78&lt;/li&gt;&lt;li&gt;Nokia N96&lt;/li&gt;&lt;/ul&gt; &lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;/table&gt;  &lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2752074054255173592?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2752074054255173592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2752074054255173592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2752074054255173592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2752074054255173592'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/symbian-s60-and-nokia-phones-s60.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2462682144735040181</id><published>2008-08-02T20:31:00.001+08:00</published><updated>2008-08-02T20:31:59.771+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;When to return a TPtr or TPtrC?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;TPtr or TPtrC are descriptors which do not own string data; they simply refer to data that exists in another descriptor. So you can use them to return a descriptor which references part of another descriptor argument, as long as its lifetime will not extend beyond that descriptor's lifetime. For example:&lt;br /&gt;&lt;br /&gt;TPtrC LeftChar(const TDesC&amp;amp; aInput)&lt;br /&gt;{&lt;br /&gt;    if (aInput.Length()&gt;0)&lt;br /&gt;        return aInput.Left(1); // Returns the left-most character&lt;br /&gt;    else&lt;br /&gt;        return KNullDesC;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;This, however, is not OK because stack-based fred will cease to exist when GetFred() returns:&lt;br /&gt;&lt;br /&gt;TPtrC GetFred()&lt;br /&gt;{ &lt;br /&gt;  _LIT(KFred, "Fred");&lt;br /&gt;  TBufC&lt;4&gt; fred(KFred());&lt;br /&gt;  TPtrC fredPtr(fred);&lt;br /&gt;  return (fredPtr);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2462682144735040181?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2462682144735040181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2462682144735040181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2462682144735040181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2462682144735040181'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/when-to-return-tptr-or-tptrc-0-return.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6102580642129501324</id><published>2008-08-02T20:22:00.002+08:00</published><updated>2008-08-02T20:23:49.847+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to use heap descriptors as return types?&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I want to create a new descriptor in my function. How do I return it to the caller?&lt;br /&gt;You must return an HBufC* as follows:&lt;br /&gt;&lt;br /&gt;HBufC* CreateSomeDescriptorL()&lt;br /&gt;{&lt;br /&gt;  _LIT(KBert, "bert");&lt;br /&gt;  HBufC* newBert = KBert().AllocL();&lt;br /&gt;  return (newBert);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;The calling function needs to know that it must take ownership of the returned heap-based descriptor and be responsible for deleting it when it has finished with it. Failure to do this is a common cause of memory leaks.&lt;br /&gt;&lt;br /&gt;A similar function, which leaves the created descriptor on the cleanup stack for the caller, would be coded as follows:&lt;br /&gt;&lt;br /&gt;HBufC* CreateSomeDescriptorLC()&lt;br /&gt;{&lt;br /&gt;  _LIT(KBert, "bert");&lt;br /&gt;  HBufC* newBert = KBert().AllocLC();&lt;br /&gt;  return (newBert);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6102580642129501324?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6102580642129501324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6102580642129501324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6102580642129501324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6102580642129501324'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-to-use-heap-descriptors-as-return.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-8817781499199540803</id><published>2008-08-02T20:15:00.001+08:00</published><updated>2008-08-02T20:15:40.276+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to make a descriptor parameter read/write?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pass it as a non-constant reference to a modifiable descriptor (TDes&amp;amp;). For example:&lt;br /&gt;&lt;br /&gt;void SomeFunction(TDes&amp;amp; aReadWriteDescriptor);&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-8817781499199540803?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/8817781499199540803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=8817781499199540803' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8817781499199540803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8817781499199540803'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-to-make-descriptor-parameter.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2152140093654996611</id><published>2008-08-02T20:10:00.000+08:00</published><updated>2008-08-02T20:11:20.238+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to make a descriptor parameter read-only?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pass it as a constant reference to a non-modifiable descriptor (const TDesC&amp;amp;). For example:&lt;br /&gt;&lt;br /&gt;void SomeFunction(const TDesC&amp;amp; aReadOnlyDescriptor);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2152140093654996611?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2152140093654996611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2152140093654996611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2152140093654996611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2152140093654996611'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-to-make-descriptor-parameter-read.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-8291197693334747040</id><published>2008-08-02T20:09:00.000+08:00</published><updated>2008-08-02T20:10:13.638+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to use descriptors as parameters?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The base classes provide and implement the constant and modifiable descriptor operations regardless of the actual type of the derived descriptor. For consistency, they (basic types) should be used as arguments to functions, allowing descriptors to be passed without restricting the caller of the function to using a specific type.&lt;br /&gt;&lt;br /&gt;For example, the calling function can call a function with anything derived from TDesC and TDes. For example an HBufC and a TBuf&lt;8&gt;, or a TPtr and a TBuf&lt;3&gt;:&lt;br /&gt;&lt;br /&gt;void SomeFunction(const TDesC&amp;amp; aReadOnlyDescriptor, TDes&amp;amp; aReadWriteDescriptor);&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-8291197693334747040?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/8291197693334747040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=8291197693334747040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8291197693334747040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8291197693334747040'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-to-use-descriptors-as-parameters.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-8089723727549892923</id><published>2008-08-02T19:55:00.001+08:00</published><updated>2008-08-02T20:08:35.574+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;When to call Des() on an HBufC.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a common mistake. Des() gives you a modifiable descriptor, TDes, which itself derives from TDesC, so you can use it to call any of the TDesC functions. But it‚is unnecessary.&lt;br /&gt;&lt;br /&gt;Here‚is an example of this common mistake:&lt;br /&gt;&lt;br /&gt;TBuf&lt;4&gt; stackbasedFred(heapBasedFred-&gt;Des()); // Unnecessary, just use&lt;br /&gt;it must be&lt;br /&gt;TBuf&lt;4&gt; stackBasedFred(*heapBasedFred); // More efficient&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-8089723727549892923?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/8089723727549892923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=8089723727549892923' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8089723727549892923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8089723727549892923'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/when-to-call-des-on-hbufc.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6492211139528804085</id><published>2008-08-02T19:43:00.001+08:00</published><updated>2008-08-02T20:07:40.930+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How do I read from HBufC?&lt;/span&gt;&lt;br /&gt;You can just dereference the HBufC pointer, like this:&lt;br /&gt;&lt;br /&gt;TBuf&lt;15&gt; stackbasedFred(*heapBasedFred);&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6492211139528804085?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6492211139528804085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6492211139528804085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6492211139528804085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6492211139528804085'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-do-i-read-from-hbufc-you-can-just.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3869647490170651651</id><published>2008-08-02T19:21:00.001+08:00</published><updated>2008-08-02T19:26:01.615+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How do I then write to a heap descriptor? HBufC is not derived from a modifiable descriptor class?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;First you must call HBufC::Des() to get a TPtr, which is modifiable. You can then use that:&lt;br /&gt;&lt;br /&gt;TPtr fredPtr(heapbasedFred-&gt;Des());&lt;br /&gt;_LIT(KDes,"My Desc");&lt;br /&gt;fredPtr.Copy(KDes);&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3869647490170651651?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3869647490170651651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3869647490170651651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3869647490170651651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3869647490170651651'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-do-i-then-write-to-heap-descriptor.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1709054717223961609</id><published>2008-08-02T18:55:00.001+08:00</published><updated>2008-08-02T19:25:40.536+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How do I create a heap based descriptor? And how do I use it when I've got it?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create an HBufC (or an HBufC8 if you explicitly need 8-bit text).&lt;br /&gt;&lt;br /&gt;HBufC* heapbasedDesc=HBufC::NewL(512);&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1709054717223961609?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1709054717223961609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1709054717223961609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1709054717223961609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1709054717223961609'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-do-i-create-heap-based-descriptor.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1435833591643383324</id><published>2008-08-02T18:38:00.001+08:00</published><updated>2008-08-02T19:25:05.252+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;What if I want a descriptor to hold ASCII text?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are some cases where you do need to hold 8-bit text: MIME types, or binary data, for example. To do this, you should explicitly use the 8 bit descriptors:&lt;br /&gt;&lt;br /&gt;_LIT8(KImageGif,"image/gif");&lt;br /&gt;TBufC8&lt;15&gt; mimeType(KImageGif);&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1435833591643383324?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1435833591643383324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1435833591643383324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1435833591643383324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1435833591643383324'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/what-if-i-want-descriptor-to-hold-ascii.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-8634771621487290090</id><published>2008-08-02T18:06:00.002+08:00</published><updated>2008-08-02T18:19:57.490+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How do I create a small, stack-based descriptor?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If it needs to be modifiable, use a TBuf.&lt;br /&gt;If it's constant, use a TBufC. You'll need to specify the size of stack space allocated for the descriptor's data.&lt;br /&gt;&lt;br /&gt;Here‚is an example:&lt;br /&gt;&lt;br /&gt;_LIT(KFred, ‚"My sting"); // A string literal, these will be described later&lt;br /&gt;TBufC&lt;8&gt; constantFred(KFred);&lt;br /&gt;&lt;br /&gt;In reality, you probably wouldn't do this for a non-modifiable descriptor, since you can use the literal, KFred directly by calling the operator() function. That is, instead of creating constantFred, you could just call KFred().&lt;br /&gt;&lt;br /&gt;However, this approach is still useful for modifiable descriptors, for example, for logging purposes:&lt;br /&gt;&lt;br /&gt;_LIT8(KError, "RunError: %d");&lt;br /&gt;TBuf8&lt;35&gt; errorBuf;&lt;br /&gt;errorBuf.Format(KError, aError);&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-8634771621487290090?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/8634771621487290090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=8634771621487290090' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8634771621487290090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8634771621487290090'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/how-do-i-create-small-stack-based.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-4625063589933985470</id><published>2008-08-02T17:48:00.002+08:00</published><updated>2008-08-02T17:56:09.348+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Large stack-based descriptors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The amount of stack space on Symbian OS is pretty limited. So you should avoid creating large stack-based descriptors when it is unnecessary to do so. Every symbian developer should be aware of the this and only use stack-based descriptors.&lt;br /&gt;&lt;br /&gt;For example, TFileName is typedef-ed as follows:&lt;br /&gt;&lt;br /&gt;typedef TBuf&lt;kmaxfilename&gt; TFileName;&lt;br /&gt;where: const TInt KMaxFileName=0x100; // = 256 decimal&lt;br /&gt;&lt;br /&gt;Each character in a descriptor is 2 bytes, since Symbian OS is a wide, UNICODE. So each TFileName object created on the stack occupies 512 bytes, it does not matter if it does filled with data or not.&lt;br /&gt;&lt;br /&gt;For stack conservation, it's advisable to be aware of the amount of space the following objects consume:&lt;br /&gt;&lt;br /&gt; * TFileName 512 bytes&lt;br /&gt; * TEntry 544 bytes&lt;br /&gt; * TFullName 512 bytes&lt;br /&gt; * TName 256 bytes&lt;br /&gt;&lt;br /&gt;so it is suggested that you try using little of above descriptor types, or try converting then to heap based descriptors.&lt;br /&gt;&lt;br /&gt;further reading http://descriptors.blogspot.com/&lt;br /&gt;&lt;/kmaxfilename&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-4625063589933985470?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/4625063589933985470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=4625063589933985470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4625063589933985470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4625063589933985470'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/large-stack-based-descriptors-amount-of.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-29348196965932449</id><published>2008-08-01T15:29:00.001+08:00</published><updated>2008-08-02T16:50:52.958+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Back to School [Symbian]'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Symbian Developer FAQs [Descriptors]&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1. What are descriptors?&lt;/span&gt;&lt;br /&gt;Descriptors are Symbian OS strings.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2. why are they called 'descriptors' rather than strings?&lt;/span&gt;&lt;br /&gt;They're names as 'descriptors', because they are self describing (not literally, it means you donot have to give any parameters). Each descriptor object holds the length of the string of data it represents as well as its 'type', which identifies the underlying memory layout of the data it holds.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3. Descriptors can be used to store text?&lt;/span&gt;&lt;br /&gt;Descriptors can be used for storing text and binary data.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4. Do they store text data as ASCII or Unicode?&lt;/span&gt;&lt;br /&gt;It can store both types. There are two types, 8-bit and 16-bit descriptors. The 8-bit variant is used to store ASCII characters and raw binary data. while 16-bit for Unicode.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5. How do I know which I have got?&lt;/span&gt;&lt;br /&gt;Each type ends in 8-bit or 16-bit, for example TDesC8 or TDesC16. If nothing specified then default is 16-bit [Platform specific mostly symbian supports 16-bit as default now].&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6. Which width/type should I use?&lt;/span&gt;&lt;br /&gt;If you need to use 8-bit data, for example, to call a particular API method (such as the  RFile::Read() or  RFile::Write() functions ), for Internet email, or to manipulate ASCII data, you should use the explicitly 8-bit descriptors. If you want to store a chunk of binary data, use the 8 bit variety too.&lt;br /&gt;&lt;br /&gt;If you need to work with 16-bit text, for example, Java strings, and want to indicate this explicitly, use the 16-bit descriptors.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt; In general, unless you need to make the data width explicit, use the neutral descriptors. If nothing else, your code is more readable and it may even be portable if the default character width changes on a later platform.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7. Are they NULL-terminated like C strings?&lt;/span&gt;&lt;br /&gt;No. as the name suggests they're self-describing, descriptors know the length of their internal data. This means there’s no need for the data to be NULL-terminated to mark where the data ends. It also means that binary data can be stored in the same descriptor classes as store text data.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt; This isn’t possible with C strings because there’s no way of distinguishing the NULL terminating character from valid binary data.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;8. Can I use standard C arrays to store my text and binary data, and the C string library to manipulate them, like I have always done?&lt;/span&gt;&lt;br /&gt;Yes you can, but symbian native suggests using literals where possible.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;9. Why it is recommended to use standard C arrays in native symbian programming.&lt;/span&gt;&lt;br /&gt;Standard C arrays are unsafe, as they have no concept of how big they are. Null-terminated strings are clunky and inefficient. What’s more, if you want to write past the end of the allocated space of a standard C string, nothing is going to stop you. This leads to all kinds of mayhem, such as data corruption&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;10. Do descriptors automatically resize themselves if I need more memory?&lt;/span&gt;&lt;br /&gt;No. The memory allocated for a descriptor is fixed, and specified on construction. They do not resize themselves dynamically.&lt;br /&gt;&lt;br /&gt;Agree that would make life easier for the programmer, but it could also make them less efficient, and it would require complex code to be exception-safe.&lt;br /&gt;&lt;br /&gt;On Symbian OS, efficiency is paramount, so the programmer must take responsibility for memory management.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;11. What happens if I overrun a descriptor’s allocated space?&lt;/span&gt;&lt;br /&gt;You will get a panic in both debug and release builds. The panic will be part of the USER category.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;12. Do descriptors perform garbage collection?&lt;/span&gt;&lt;br /&gt;No. In the same way that descriptors do not perform allocation or re-allocation, they do not perform garbage collection, because of the extra overhead that would carry on OS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;13. Is there any size limit for a descriptor?&lt;/span&gt;&lt;br /&gt;Yes. Descriptors can be stored on the stack or heap. The normal limitations apply as for other Symbian OS variables:&lt;br /&gt;   * Stack descriptors should be kept small: a 256 byte limit (128 double-byte characters) is a good guide.&lt;br /&gt;   * Heap descriptors can be much larger, depending on the size of heap memory available on device.&lt;br /&gt;&lt;br /&gt;Note: For Heap descriptors the layout of a descriptor object will limit the maximum size of a descriptor to 2^28 bytes (256 MB). Since each UNICODE character = 2 bytes, the maximum length of a descriptor is thus 2^27 characters.&lt;br /&gt;&lt;br /&gt;reference: http://descriptors.blogspot.com/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-29348196965932449?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/29348196965932449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=29348196965932449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/29348196965932449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/29348196965932449'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/08/symbian-developer-faqs-descriptors-1.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7676221154832471640</id><published>2008-07-03T22:42:00.000+08:00</published><updated>2008-07-03T22:43:33.625+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How to know what all capabilities i need for my application.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This process is called "&lt;span style="font-weight: bold;"&gt;PlatSecDiagnostics&lt;/span&gt;" and is performed on the emulator.&lt;br /&gt;Steps are&lt;br /&gt;   1. Edit EPOCROOT/epoc32/data/epoc.ini File&lt;br /&gt;   2. Check that you have this line&lt;br /&gt;      PlatSecDiagnostics ON.&lt;br /&gt;   3. Run your application with steps your application have to follow.&lt;br /&gt;   note: emulator will not give any error.&lt;br /&gt;   4. EPOCWIND.OUT from windows temp folder.&lt;br /&gt;   5. If you inspect EPOCWIND.OUT file you will come to know which capabilities are required.&lt;br /&gt;   For Example&lt;br /&gt;&lt;pre   style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); line-height: 14px; width: 100%;font-family:Andale Mono,Lucida Console,Monaco,fixed,monospace;font-size:12px;"&gt;&lt;code&gt;    *PlatSec* ERROR - Capability check failed - A Message (function number=0x000000cf) from Thread  helloworld[10008ace]0001::HelloWorld, sent to Server !CntLockServer, was checked by Thread CNTSRV.EXE[10003a73]0001::!CntLockServer and was found to be missing the capabilities: &lt;span style="font-weight: bold;"&gt;WriteUserData &lt;/span&gt;. Additional diagnostic message: Checked by CPolicyServer::RunL&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7676221154832471640?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7676221154832471640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7676221154832471640' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7676221154832471640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7676221154832471640'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/07/how-to-know-what-all-capabilities-i.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-949919973083790036</id><published>2008-07-03T14:18:00.002+08:00</published><updated>2008-07-03T14:18:51.685+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to speedup emulator startup time.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Find and download "starer.rsc" file. &lt;http: com="" account="" file="" 53683065="" fa5ec2b7="" html=""&gt;&lt;br /&gt;&lt;br /&gt;1. Search in you SDK Epoc folder for file named "sartup.rsc".&lt;br /&gt;2. You will find this files in 2 places&lt;br /&gt;   a) Epoc32\Data\z\resource\apps&lt;br /&gt;   b) Epoc32\release\winscw\udeb\z\resource\apps&lt;br /&gt;3. Rename both files to "sartup_backup.rsc".&lt;br /&gt;4. Copy "starer.rsc" you downloaded to both folders.&lt;br /&gt;5. you are ready to go.&lt;br /&gt;&lt;br /&gt;Note: This is a hack to start emulator without a splash screen . &lt;span style="font-weight: bold;"&gt;USE IT IN YOUR OWN Risk&lt;/span&gt;.&lt;/http:&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-949919973083790036?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/949919973083790036/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=949919973083790036' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/949919973083790036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/949919973083790036'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/07/how-to-speedup-emulator-startup-time.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6852327852960812707</id><published>2008-07-01T11:46:00.001+08:00</published><updated>2008-07-01T11:48:01.123+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to auto start when application installed in memory card&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You must not hard code the autostart exe path in your autostart rSC file&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;RESOURCE STARTUP_ITEM_INFO startexe&lt;br /&gt;{&lt;br /&gt;executable_name = "!:\\sys\\bin\\startexe.exe";&lt;br /&gt;recovery = EStartupItemExPolicyNone;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6852327852960812707?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6852327852960812707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6852327852960812707' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6852327852960812707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6852327852960812707'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/07/how-to-auto-start-when-application.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1813041885174357388</id><published>2008-07-01T11:30:00.001+08:00</published><updated>2008-07-01T11:32:30.922+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to call python module from Symbian C++&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can execute python code from Symbian C++ application ! Here's an simple example :&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;CSPyInterpreter* it = CSPyInterpreter::NewInterpreterL();&lt;br /&gt;CleanupStack::PushL(it);&lt;br /&gt;PyEval_RestoreThread(PYTHON_TLS-&amp;gt;thread_state);&lt;br /&gt;&lt;br /&gt;PyRun_SimpleString("open(r'c:\\foo.txt', 'w').write('hello')\n");&lt;br /&gt;&lt;br /&gt;PyEval_SaveThread();&lt;br /&gt;CleanupStack::PopAndDestroy(it);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1813041885174357388?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1813041885174357388/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1813041885174357388' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1813041885174357388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1813041885174357388'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/07/how-to-call-python-module-from-c-you.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3577548050836775980</id><published>2008-07-01T11:29:00.001+08:00</published><updated>2008-07-01T11:29:32.246+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to create an instance of a T–class into heap with a new operator&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It is possible to create an instance of a T Class with a new operator, but these precautions must be taken:&lt;br /&gt;&lt;br /&gt;    * Instances of T Classes can be safely placed into the CleanupStack, assuming that they do not contain any pointers or references to external objects. CleanupStack handles the cleanup simply by calling User::Free().&lt;br /&gt;&lt;br /&gt;    * Member variables are not zeroed automatically on construction. Only CBase’s new operator zeroes members.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3577548050836775980?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3577548050836775980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3577548050836775980' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3577548050836775980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3577548050836775980'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/07/how-to-create-instance-of-tclass-into.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7450667623877893759</id><published>2008-07-01T11:27:00.000+08:00</published><updated>2008-07-01T11:28:25.679+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to take Control of the Call Application&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;RWindowGroup *pWG = &amp;amp;CCoeEnv::Static()-&amp;gt;RootWin();&lt;br /&gt;pWG-&amp;gt;SetOrdinalPosition(0, 2000);&lt;br /&gt;CAknInformationNote* informationNote;&lt;br /&gt;informationNote = new ( ELeave ) CAknInformationNote;&lt;br /&gt;TBuf16&amp;lt;30&amp;gt;message;&lt;br /&gt;message.ZeroTerminate();&lt;br /&gt;message.Copy(_L("Calling"));&lt;br /&gt;message.Append(aNumber);&lt;br /&gt;informationNote-&amp;gt;ExecuteLD(message);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7450667623877893759?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7450667623877893759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7450667623877893759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7450667623877893759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7450667623877893759'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/07/how-to-take-control-of-call-application.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7432344742588847171</id><published>2008-07-01T11:18:00.000+08:00</published><updated>2008-07-01T11:19:10.295+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to add any app to "Go To" for pre-v9 phones&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;TInt eError;&lt;br /&gt;TBuf8&amp;lt;KMaxFileName&amp;gt; lBuf;&lt;br /&gt;CPinbLinkBase *lBaseLnk = CPinbLinkBase::NewL(KLinkUidApplication);&lt;br /&gt;CleanupStack::PushL(lBaseLnk);&lt;br /&gt;lBaseLnk-&amp;gt;SetNameL(_L(&amp;quot;Hunter&amp;quot;));&lt;br /&gt;lBaseLnk-&amp;gt;SetDocumentIdIconL(EPinbUnknown);&lt;br /&gt;lBaseLnk-&amp;gt;SetParametersL(_L8(&amp;quot;E:\\System\\Apps\\MyApp\\MyApp.app&amp;quot;));&lt;br /&gt;lBaseLnk-&amp;gt;SetTailParametersL();&lt;br /&gt;lBaseLnk-&amp;gt;SetLinkFileNameL(_L(&amp;quot;C:\\system\\favourites\\MyApp.lnk&amp;quot;));&lt;br /&gt;lBaseLnk-&amp;gt;SetApplicationUidL(KUidMyApp);&lt;br /&gt;TInt lError = lBaseLnk-&amp;gt;ValidateLinkL();&lt;br /&gt;lBaseLnk-&amp;gt;UpdateLinkInDiskL();&lt;br /&gt;CleanupStack::PopAndDestroy(lBaseLnk);&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt; Above method does not work for symbian v9.x&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7432344742588847171?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7432344742588847171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7432344742588847171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7432344742588847171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7432344742588847171'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/07/how-to-add-any-app-to-go-to-for-pre-v9.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-8690544318355176916</id><published>2008-06-27T11:10:00.001+08:00</published><updated>2008-06-27T11:14:28.954+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UIQ3'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;How to Open Browser with a url in UIQ3.x&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;OpenBrowserWithUrlL(const TDesC&amp;amp; aUrl, CCoeEnv&amp;amp; aCoeEnv)&lt;br /&gt;   {&lt;br /&gt;   TVwsViewId id( KUidQWebApp, KUidQWebPageView);&lt;br /&gt;   TQWebDNLUrlEntry obj;&lt;br /&gt;   obj.iUrl = aUrl;&lt;br /&gt;   TQWebDNLUrlEntryBuf buf(obj);&lt;br /&gt;   aCoeEnv.AppUi()-&amp;gt;ActivateViewL(id, KQWebCustomMsgId, buf);&lt;br /&gt;   }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-8690544318355176916?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/8690544318355176916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=8690544318355176916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8690544318355176916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8690544318355176916'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/06/how-to-open-browser-with-url-in-uiq3.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6450421919362027492</id><published>2008-06-26T16:54:00.001+08:00</published><updated>2008-06-27T11:13:00.560+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UIQ3'/><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Auto-start In UIQ&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The auto starter in UIQ did not have any particular order&lt;br /&gt;&lt;br /&gt;To register with the auto starter your application must write a&lt;span style="font-weight: bold;"&gt; .ast&lt;/span&gt; file to the auto starter's import folder [&lt;span style="font-weight: bold;"&gt;\private\10274b9f&lt;/span&gt;]. On start-up the auto launcher parses the .ast files and will then add new ast files to its database of applications to be started. The ast format contains only the .exe name in plain text as the following example indicates:&lt;br /&gt;calc.ast:&lt;br /&gt;&lt;br /&gt;calc.exe&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1.&lt;/span&gt; No path is needed: the file is a plain text, one-line executable name. The auto launcher will look across different drives for the executable to launch and no path need be specified; if you install to a MS then the auto launcher will launch from the MS; if the executable cannot be found it will be ignored. The ast file must be written (either by the application or via SIS) to the following import folder:- c:\private\10274b9f\import\&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2.&lt;/span&gt; Security : The Auto starter will only start your application if it has the capability "&lt;span style="font-weight: bold;"&gt;WriteUserData&lt;/span&gt;".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6450421919362027492?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6450421919362027492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6450421919362027492' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6450421919362027492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6450421919362027492'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/06/auto-start-in-uiq-auto-starter-in-uiq.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3725305752765188684</id><published>2008-06-26T14:43:00.001+08:00</published><updated>2008-06-26T14:44:41.329+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Using Linux(Ubuntu) for Symbian.C++ 3rd edition application&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Below are the steps i followed.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1: &lt;/span&gt;Setup EPOCROOT and Points where you have symbian tools.&lt;br /&gt;   a) export PATH=~/gnupoc:${PATH}&lt;br /&gt;   b) export EPOCROOT=~/symbian-sdks/s60_31/&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2:&lt;/span&gt; Compile source code&lt;br /&gt;   a) cd ~/symbian-sdks/s60_31/s60ex/helloworldbasic/group&lt;br /&gt;   b) bldmake bldfiles&lt;br /&gt;   c) abld build gcce urel&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3:&lt;/span&gt; Create a SIS File&lt;br /&gt;   a) cd ../sis&lt;br /&gt;   b) makesis helloworldbasic_gcce.pkg helloworldbasic.sis&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4:&lt;/span&gt; Genearet key and certificate pair&lt;br /&gt;   makekeys -cert myselfcer.key myselfcer.cer&lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5:&lt;/span&gt; Sign SIS&lt;br /&gt;   signsis helloworldbasic.sis helloworldbasic.sisx myselfcer.cer myselfcer.key&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3725305752765188684?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3725305752765188684/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3725305752765188684' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3725305752765188684'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3725305752765188684'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/06/using-linuxubuntu-for-symbian.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2454703553147089324</id><published>2008-06-26T14:30:00.000+08:00</published><updated>2008-06-26T14:31:56.020+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Setting Up a Symbian C++ Development Environment with Linux(Ubuntu)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Below are the steps i followed.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1:&lt;/span&gt; Install Ubuntu 8.04 on a 32Bit system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2:&lt;/span&gt; The Default Ubuntu Install does not come with any Development Tools so you have to use ubuntu apt-get command to install tools and libraries we require.&lt;br /&gt;    a) sudo apt-get install build-essential [Compiler to build symbian build system ]&lt;br /&gt;    b) sudo apt-get install zlib1g zlib1g-dev [ZLIB Header files needed while building symbian build system ]&lt;br /&gt;    c) sudo apt-get install libssl-dev [OpenSSL Header files needed while building symbian build system (signsis / createsis etc)]&lt;br /&gt;    d) sudo apt-get install flex [Requred if you want to compile the gcce cross compiler on your own].&lt;br /&gt;    e) sudo apt-get install bison [Requred if you want to compile the gcce cross compiler on your own].&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3:&lt;/span&gt; You have to download some build scripts, compiler [/code] and SDKs&lt;br /&gt;    a) gnupoc-package latest. {http://www.4shared.com/account/file/52785287/c117ddb6/gnupoc-package-109tar.html}[It will contain the  EKA2 and EKA1 toolchain].&lt;br /&gt;    b) gcc cross compiler for symbian source. {http://www.symbianos.org/download/gcc-539-2aeh-source.tar.bz2} [If you are compiling for Pre-v9 devices]&lt;br /&gt;    c) gcce cross compiler for symbian source. {http://www.codesourcery.com/gnu_toolchains/arm/releases/2005Q1C} [If you are compiling for 9.x devices]&lt;br /&gt;    d) gcc and gcce cross compiler binaries for symbian  [If you donot want to compile gcc / gcce from source]&lt;br /&gt;        i. http://www.4shared.com/account/file/52785285/2f19bc9a/gnu-csl-arm-2005Q1C-arm-none-symbianelf-i686-pc-linux-gnutar.html&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4:&lt;/span&gt; Copy all downloaded files [step 3] files to "~/" of your system.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 5:&lt;/span&gt; Install symbian install Scripts for linux:&lt;br /&gt;    tar -zxvf gnupoc-package-1.09.tar.gz&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 6:&lt;/span&gt; Install ARM Build system&lt;br /&gt;    If you want to compile tools your self:&lt;br /&gt;    a) cd gnupoc-package-1.09/tools&lt;br /&gt;    b) ./install_gcc_539 ../../gcc-539-2aeh-source.tar.bz2 ~/symbian-gcc [If using for EKA1]&lt;br /&gt;    c) ./install_csl_gcc ../../gnu-csl-arm-2005Q1C-arm-none-symbianelf.src.tar.bz2 ~/csl-gcc [If using for EKA2]&lt;br /&gt;   &lt;br /&gt;    If you want to use pre-compiles tools:&lt;br /&gt;    a) mkdir csl-gcc&lt;br /&gt;    b) cd csl-gcc&lt;br /&gt;    c) tar -jxvf ../gnu-csl-arm-2005Q1C-arm-none-symbianelf-i686-pc-linux-gnu.tar.bz2&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 7:&lt;/span&gt; Install remaining tools&lt;br /&gt;    a) cd gnupoc-package-1.09/tools&lt;br /&gt;    b) ./install_eka1_tools ~/symbian-gcc [If using for EKA2]&lt;br /&gt;    b) ./install_eka2_tools ~/csl-gcc [If using for EKA2]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 8:&lt;/span&gt; To Set Evenvironment variable to point to your SDK and add the toolchain directory.&lt;br /&gt;    ./install_wrapper ~/gnupoc&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What you can't do with this method:&lt;/span&gt;&lt;br /&gt;    1. you can't build for emulator.&lt;br /&gt;    2. you can't run emulator.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt;&lt;br /&gt;    1. I don't mind using any other Ubuntu linux infect i have tried using OpenSuse and RedHat. Will post the steps for OpenSuse Soon.&lt;br /&gt;    2. Some of the sort comes like emulator specific can be over come with WINE will post how to use WINE in coming posts.&lt;br /&gt;    2. Refer to http://martin.st/symbian/ for more info.&lt;br /&gt;    3. Contact me at skumar.mobiledev@gmail.com with Subject [symbian on linux] if you have any problem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2454703553147089324?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2454703553147089324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2454703553147089324' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2454703553147089324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2454703553147089324'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/06/setting-up-symbian-c-development.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3295405202671956724</id><published>2008-06-26T11:47:00.000+08:00</published><updated>2008-06-26T11:49:00.763+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to launch a UI application with Arguments and Handle in Launched UI application&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;H to launch a application with Arguments.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;LaunchApplicationWithArgumentL(const TDesC&amp;amp; aExeName, const TDesC8&amp;amp; aArg = KNullDesC8())&lt;br /&gt;    {&lt;br /&gt;    CApaCommandLine* commandLine = CApaCommandLine::NewLC(); &lt;br /&gt;    commandLine-&amp;gt;SetCommandL(EApaCommandRun);&lt;br /&gt;    commandLine-&amp;gt;SetExecutableNameL(aExecName);&lt;br /&gt;    commandLine-&amp;gt;SetTailEndL(aArg);&lt;br /&gt;    RApaLsSession apaLsSession;&lt;br /&gt;    User::LeaveIfError(apaLsSession.Connect());&lt;br /&gt;    CleanupClosePushL(apaLsSession); &lt;br /&gt;    User::LeaveIfError(apaLsSession.StartApp(*commandLine));&lt;br /&gt;    CleanupStack::PopAndDestroy();&lt;br /&gt;    CleanupStack::PopAndDestroy(commandLine);&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;   &lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Handle Arguments in UI Application.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Over ride the virtual function ProcessCommandParametersL() of AppUi Class. 3rd parameter of the function aTail contains application parameters&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;TBool CMySymbianAppUi::ProcessCommandParametersL(TApaCommand aCommand, TFileName &amp;amp;aDocumentName, const TDesC8 &amp;amp;aTail)&lt;br /&gt;{&lt;br /&gt;    iLogger.WriteFormat(_L(&amp;quot;ProcessCommandParametersL %d&amp;quot;), aTail.Length());&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3295405202671956724?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3295405202671956724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3295405202671956724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3295405202671956724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3295405202671956724'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/06/how-to-launch-ui-application-with.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3592947419560606630</id><published>2008-06-13T00:03:00.001+08:00</published><updated>2008-06-13T00:03:19.104+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UIQ3'/><title type='text'></title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;What does the Application framework takes care while launching an application ?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The Framework will do following before starting the application.&lt;/div&gt;&lt;div&gt;    1. Create a connection to the file server.&lt;/div&gt;&lt;div&gt;    2. Create a connection to the window server.&lt;/div&gt;&lt;div&gt;    3. Create a connection to the memory manager.&lt;/div&gt;&lt;div&gt;    4. Do some application registration.&lt;/div&gt;&lt;div&gt;    5. Make sure the application is able to handle erroe and out-of-memory situtions.&lt;/div&gt;&lt;div&gt;    6. Initalize other application services like font etc.&lt;/div&gt;&lt;div&gt;    7. create default screen elements like status bar, menu bar, soft keys etc.&lt;/div&gt;&lt;div&gt;    8. Start active scheduler. (or you can send event loop)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3592947419560606630?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3592947419560606630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3592947419560606630' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3592947419560606630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3592947419560606630'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/06/what-does-application-framework-takes.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-8234066838667948651</id><published>2008-06-13T00:01:00.003+08:00</published><updated>2008-06-13T00:02:32.602+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UIQ3'/><title type='text'></title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;What the term "Downgrade path" mean in UIQ3.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If a application is not coded to work on all available "UI Configurations" the UIQ3 UI framework will try to look for a nearest match and configures the Screen to that configuration, this process is called "Downgrade path".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Downgrade path" also makes it possible for an application to run on a device which has a UI configuration that was not available at the time the application was written.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-8234066838667948651?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/8234066838667948651/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=8234066838667948651' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8234066838667948651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8234066838667948651'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/06/what-term-downgrade-path-mean-in-uiq3.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7990623403900661146</id><published>2008-06-12T23:59:00.002+08:00</published><updated>2008-06-13T00:00:01.556+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UIQ3'/><title type='text'></title><content type='html'>&lt;span class="Apple-style-span"  style="font-size:x-large;"&gt;How to configure UIQ3 emulator to a specific "UI Configuration" ?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When launching the emulator we have to pass -ui parameter to it get the desired "UI Configuration"&lt;br /&gt;eg. uiqenv -ui softkey&lt;br /&gt;OR&lt;br /&gt;We can use the SDKConfig application provided by the SDK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7990623403900661146?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7990623403900661146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7990623403900661146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7990623403900661146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7990623403900661146'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/06/how-to-configure-uiq3-emulator-to.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-4044690116050793711</id><published>2008-06-12T23:57:00.001+08:00</published><updated>2008-06-12T23:57:55.405+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UIQ3'/><title type='text'></title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;What does UIQ3 UI Configuration is consist of ?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;UI of UIQ3 is very versatile and can be configured by a 4 high-level configuration parameters. Combination all these parameters are called a UI configuration.&lt;/div&gt;&lt;div&gt;    &lt;b&gt;1. Screen Mode.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;        The following resolutions are commonly used.&lt;/div&gt;&lt;div&gt;        a) Portrait (QVGA, 240x320 pixels)&lt;/div&gt;&lt;div&gt;        b) Landscape (QVGA, 320x240 pixels)&lt;/div&gt;&lt;div&gt;        c) Portrait Small(240x256 pixels)&lt;/div&gt;&lt;div&gt;        d) Landscape Small(256x240 pixels)&lt;/div&gt;&lt;div&gt;    &lt;b&gt;2. Screen orientation.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;        Indicates whether screen is used in&lt;/div&gt;&lt;div&gt;        a) Normal Mode.&lt;/div&gt;&lt;div&gt;        b) Inverted Mode. (screen roated in 180 degrees)&lt;/div&gt;&lt;div&gt;    &lt;b&gt;3. Touch Screen.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;        Indicates whether to use advanced digitizer (Touch Screen) or Not.&lt;/div&gt;&lt;div&gt;    &lt;b&gt;4. Interaction style.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;        There are 2 general interaction styles used.&lt;/div&gt;&lt;div&gt;        a) Pen-Style. Optimized for pen use. also know as (Point Touch method)&lt;/div&gt;&lt;div&gt;        b) Softkey-Style. Optimized for one-handed navigation.&lt;/div&gt;&lt;div&gt;        &lt;/div&gt;&lt;div&gt;UI Configurations are enumerated in "Qikon.hrh" as&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;#define KQikSoftkeyStylePortrait (EQikScreenModePortrait  | EQikTouchScreenNo | EQikUiStyleSoftkey | EQikOrientationNormal)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As you can see the UI Configuration can have any combination above 4 parameters. But most commonly used paramets are&lt;/div&gt;&lt;div&gt;    a) KQikSoftkeyStylePortrait. Generally known as "SoftKey Style"&lt;/div&gt;&lt;div&gt;    b) KQikPenTouchPortrait. Generally known as "Pen Style".&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-4044690116050793711?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/4044690116050793711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=4044690116050793711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4044690116050793711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4044690116050793711'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/06/what-does-uiq3-ui-configuration-is.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-4433883851335224990</id><published>2008-06-12T23:53:00.000+08:00</published><updated>2008-06-12T23:55:29.463+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UIQ3'/><title type='text'></title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 24px;"&gt;&lt;span class="Apple-style-span" style="font-size: 16px; "&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: 24px; "&gt;What a UIQ3 SDK contains ?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;    1. Library, header and binary files. &lt;both&gt;&lt;/div&gt;&lt;div&gt;    2. Compilers &lt;/div&gt;&lt;div&gt;        a) GCCE compiler for device build,&lt;/div&gt;&lt;div&gt;        b) Nokia x86 compiler for emulator builds.&lt;/div&gt;&lt;div&gt;    3. Tools and scripts (including perl scripts) for building application in C++ and creating installation files to distribute applications.&lt;/div&gt;&lt;div&gt;    4. PC-Based emulator (No Simulator) of the UIQ3 platform to enable fast development and turn around time.&lt;/div&gt;&lt;div&gt;    5. Documentation.&lt;/div&gt;&lt;div&gt;        a) API reference.&lt;/div&gt;&lt;div&gt;        b) Guides.&lt;/div&gt;&lt;div&gt;        c) Sample code.&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-4433883851335224990?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/4433883851335224990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=4433883851335224990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4433883851335224990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4433883851335224990'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/06/what-uiq3-sdk-contains-1.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6626101329911759316</id><published>2008-05-22T12:21:00.001+08:00</published><updated>2008-12-11T17:41:56.322+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;Suggested Development process for Symbian S60 C++ Development.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ZAjT-2iZ9R8/SDT1SA9h9UI/AAAAAAAAATw/0DyRZU2iFtM/s1600-h/S60+Development+Process.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_ZAjT-2iZ9R8/SDT1SA9h9UI/AAAAAAAAATw/0DyRZU2iFtM/s400/S60+Development+Process.png" alt="" id="BLOGGER_PHOTO_ID_5203053159364293954" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;1. Analysis and design:&lt;/b&gt;&lt;br /&gt;Before starting to develop an application with an S60 C++ SDK, you must define at least&lt;br /&gt;a) requirements,&lt;br /&gt;b) scope, and&lt;br /&gt;c) functionality&lt;br /&gt;that you wish to implement in the application.&lt;br /&gt;It is good idea to take into account the various capabilities required by the APIs that you intend to utilize in your application at this Phase only.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Coding&lt;/b&gt;&lt;br /&gt;It is recommended that you use one of the supported IDEs [Visual Studio 2003/2005 with carbide.vs or Carbide.C++]. They provide project templates that you can use to create a standard project from a selection of project types. The template takes care of creating some of the basic folders and files that you need in developing an application. So developer donot have to worry and waste about creating repeated code sections.&lt;br /&gt;&lt;b&gt;note:&lt;/b&gt; I will be realsing a set of perl scripts that will generate templates projects to help development by avaoiding IDE. [I am making fixed to these scripts hopfully soon i will complete]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Creating and updating your build files.&lt;/b&gt;&lt;br /&gt;Before you can build your project, you must first create or update the bld.inf, mmp and extension makefiles.&lt;br /&gt;&lt;b&gt;note:&lt;/b&gt; Different IDEs support these files in different ways. Your development environment may maintain these files or just use them when importing the existing project into the IDE, then you are a lucky developer.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Building the source files.&lt;/b&gt;&lt;br /&gt;In S60 application development, builds are typically created for two different environments:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;a) the emulator and&lt;/i&gt;&lt;br /&gt;An emulator build is intended to be run on an SDK emulator for debugging purposes. The build process outputs are placed in the correct folder under the SDK emulator directory&lt;br /&gt;&lt;br /&gt;&lt;i&gt;b) the target mobile device.&lt;/i&gt;&lt;br /&gt;The device build is intended to be run on a mobile device and the output is a file that can be installed on a mobile device. You have to specify which file goes where in a PKG file. Or your IDE can handle it.&lt;br /&gt;&lt;br /&gt;Because the operating systems of the emulator and target device are different, two separate builds using different compilers are required. Here are some of the differances between both the builds.&lt;br /&gt;    01) emulator and device builds require different compilers.&lt;br /&gt;    02) installation of an application on a target device requires a sis file for installation&lt;br /&gt;    03) the emulator and device environments treat the processes and threads differently&lt;br /&gt;    04) the emulator and device environments treat the maximum stack sizes for applications differently&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. Testing and signing&lt;/b&gt;&lt;br /&gt;All S60 C++ application installation files must be signed before they can be installed to a mobile device. Typically, builds are first tested in the emulator and then final testing is performed on the target device.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6. Deploying&lt;/b&gt;&lt;br /&gt;Once your application is ready for deploying in a general release, package and deploy your application according to the steps in "Deploying". And you start making money if your application is not Free Application.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;br /&gt;1. This development process is only a suggestion. Your process may different completely or partially from this, depending your type of application and organizational environment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6626101329911759316?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6626101329911759316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6626101329911759316' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6626101329911759316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6626101329911759316'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/05/suggested-development-process-for.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_ZAjT-2iZ9R8/SDT1SA9h9UI/AAAAAAAAATw/0DyRZU2iFtM/s72-c/S60+Development+Process.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-8073114541276170593</id><published>2008-05-22T10:16:00.000+08:00</published><updated>2008-05-22T10:17:51.964+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to Set-up S60 v9.x CommandLineInterface(CLI) environment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Install&lt;br /&gt;1. ActivePerl Active Perl 5.6.1.x .... [Upper Versions may not work with out editing some scripts]&lt;br /&gt;2. Java Run-Time Environment (JRE) latest and&lt;br /&gt;3. S60 Platform SDK for Symbian OS, for C++ Feature Pack 1.&lt;br /&gt;4. Carbide.c++ Express . &lt;a&gt;&lt;br /&gt;&lt;br /&gt;5. Locate "Carbide.c++ Express" Installation folder usually&lt;br /&gt;"C:\Program Files\Nokia\Carbide.c++ v1.x\x86Build" -&gt; "env_switch" -&gt; "env_update.exe"&lt;br /&gt;6. Run "env_update.exe" by double-clicking on the exe file.&lt;br /&gt;7. You will be provided with all available WINSCW compiler versions.&lt;br /&gt;8. Choose select the latest one.&lt;br /&gt;9. Close the command prompt window.&lt;br /&gt;&lt;br /&gt;Now you are ready to build emulator builds using command line.&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-8073114541276170593?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/8073114541276170593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=8073114541276170593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8073114541276170593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8073114541276170593'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/05/how-to-set-up-s60-v9.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2091293774675465737</id><published>2008-05-22T10:14:00.000+08:00</published><updated>2008-05-22T10:15:06.360+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Types of Compilers Supported in S60 v9.x SDKs.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. WINSCW :&lt;/b&gt; Used to build an S60 application for the emulator. A WINSCW compiler is delivered with the Carbide products.&lt;br /&gt;&lt;b&gt;2. GCCE :&lt;/b&gt; A free GNU C Compiler (GCC) Embedded Application Binary Interface (EABI). The compiler is delivered with the S60 SDK and can be used for compiling S60 applications for mobile devices.&lt;br /&gt;&lt;b&gt;3. ARMV5 :&lt;/b&gt; ARMV5 builds are created with ARM Real View Compilation Tools (RVCT, version 2.2). ARM Real View Compilation Tools are usually used for performance reasons, when compiling S60 applications for mobile devices.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Note:&lt;/b&gt;&lt;br /&gt;1. When compiling for Device code compiled with ARMV5 is usually faster and small size then GCCE.&lt;br /&gt;2. If you want to improve GCCE performance or want to upgrade to newer version then you can get it from http://www.codesourcery.com/gnu_toolchains/arm&lt;br /&gt;3. Abouve recommendations are not must have but what i use, so you can differ with it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2091293774675465737?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2091293774675465737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2091293774675465737' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2091293774675465737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2091293774675465737'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/05/types-of-compilers-supported-in-s60-v9.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1719591339531468091</id><published>2008-05-22T10:01:00.001+08:00</published><updated>2008-05-22T10:04:15.322+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Required Environment and Tools for Symbian S60 C++ Development.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Computer running&lt;br /&gt;  a. Microsoft Windows 2000 SP4 / XP SP2 [Stay away from Vista]&lt;br /&gt;  b. Active Perl 5.6.1.x .... [Upper Versions may not work with out editing some scripts]&lt;br /&gt;  c. Java Run-Time Environment (JRE) latest.&lt;br /&gt;2. S60 Platform SDK for Symbian OS, for C++ (S60 C++ SDK)&lt;br /&gt;  You can get the S60 SDKs Free from forum.nokia.com. Loging required.&lt;br /&gt;3. A C++ IDE or Good Source Code Editor&lt;br /&gt;  If are looking for free IDE then i suggest Carbide.C++ Express. &lt;it&gt;&lt;br /&gt;  If are looking for a free Source code Editor then i suggest NotePad++.&lt;br /&gt;4. A target device [mobile device] based on the platform version that matches your development SDK.&lt;br /&gt;5. Setup connection between your PC and your mobile device. [Bluetooth or USB], i suggest using PC Suites that come with Phone Driver CD.&lt;/it&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1719591339531468091?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1719591339531468091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1719591339531468091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1719591339531468091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1719591339531468091'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/05/required-environment-and-tools-required.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2342757169707769806</id><published>2008-04-24T14:03:00.000+08:00</published><updated>2008-04-24T14:04:25.927+08:00</updated><title type='text'></title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;What is "S60 platform services"&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;S60 platform services are the fundamental services provided by the S60 platform, these include:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;1. Application Framework Services&lt;/b&gt; — providing the basic capabilities for &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;a) launching applications and servers, &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;b) state persistence management, and &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;c) UI components.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;2. UI Framework Services&lt;/b&gt; — providing &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;a) concrete look and feel for UI components and &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;b) handling UI events.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;3. Graphics Services&lt;/b&gt; — providing &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;a) capabilities for the creation of graphics and&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;b) drawing to the screen.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;4. Location Services&lt;/b&gt; — allowing the S60 platform to be aware of a device’s location.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;5. Web-Based Services&lt;/b&gt; — providing &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;a) services to establish connections and interact with Web-based functionality, including browsing, file download, and messaging.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;6. Multimedia Services&lt;/b&gt; — providing &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;a) capabilities to play audio and video, &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;b) support for streaming and speech recognition.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;7. Communication Services&lt;/b&gt; — providing &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;a) support for local and wide area communications, ranging from Bluetooth technology to voice calls.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2342757169707769806?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2342757169707769806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2342757169707769806' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2342757169707769806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2342757169707769806'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/what-is-s60-platform-services-s60.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1561554952903317705</id><published>2008-04-21T13:04:00.001+08:00</published><updated>2008-04-21T13:09:27.692+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How how to get information about my Certificate [Dev Cert].&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I do generate a lots of numbers of dev certs for development in office and personal use. and i am not used to generating a dev cert that have all the capabilities that it can have and all my device IMEIs. So each dev cert is different from other by following parameters.&lt;br /&gt;&lt;br /&gt;1. Capabilities.&lt;br /&gt;2. IMEIs&lt;br /&gt;&lt;br /&gt;let us say if i forget which capabilities and IMEIs a particular Dev cert has, and i do not have time to generate new ones.&lt;br /&gt;&lt;br /&gt;;-)&lt;br /&gt;&lt;br /&gt;I simple found the answer .... as follows.&lt;br /&gt;&lt;br /&gt;devertlist [/c] [/i] [/b] [/?] devcert.cer&lt;br /&gt;&lt;br /&gt;- /c - List the capabilities associated&lt;br /&gt;- /i - List the IMEI's associated with the devcert&lt;br /&gt;- /b - List the output as bare, suitable for pipelining&lt;br /&gt;- /? - print out the about information and command list&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1561554952903317705?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1561554952903317705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1561554952903317705' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1561554952903317705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1561554952903317705'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-know-information-about-my.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-175707066381022833</id><published>2008-04-18T18:33:00.000+08:00</published><updated>2008-04-18T18:34:29.479+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to use mobile theme skin as a background for our application.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. &lt;/b&gt;Enable skins support in our application by calling apps AppUi base constructor:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;void CMyAppUi::ConstructL()&lt;br /&gt;{&lt;br /&gt; BaseConstructL(EAknEnableSkin);&lt;br /&gt; ...&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. &lt;/b&gt;We will require a specific context to hold the skin bitmap for your control.&lt;br /&gt;&lt;br /&gt;CAknsBasicBackgroundControlContext* iBgContext;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. &lt;/b&gt;Initialise context to a reference of the background bitmap:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;void CMyAppView::ConstructL()&lt;br /&gt;{&lt;br /&gt; ...&lt;br /&gt; iBgContext = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgAreaMain,aRect,ETrue);&lt;br /&gt; ...&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. &lt;/b&gt;Don't forget to call the context destructor:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;void CSkinDemoAppView::~CSkinDemoAppView()&lt;br /&gt;{&lt;br /&gt; ...&lt;br /&gt; delete iBgContext;&lt;br /&gt; ...&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. &lt;/b&gt;As we are ready with a context that has the backgoround that we want to use in all controls. This is done throgh MOP relationship and we need to override the MopSupplyObject():&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;TTypeUid::Ptr CMyAppView::MopSupplyObject(TTypeUid aId)&lt;br /&gt;{&lt;br /&gt; if (iBgContext )&lt;br /&gt; {&lt;br /&gt;   return MAknsControlContext::SupplyMopObject( aId, iBgContext );&lt;br /&gt; }&lt;br /&gt; return CCoeControl::MopSupplyObject(aId);&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6. &lt;/b&gt;Each control Draw now be updated to display the skin as background:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;void CMyAppView::Draw(const TRect&amp;amp; aRect) const&lt;br /&gt;{&lt;br /&gt; // Get the standard graphics context&lt;br /&gt; CWindowGc&amp;amp; gc = SystemGc();&lt;br /&gt;  &lt;br /&gt; // Redraw the background using the default skin&lt;br /&gt; MAknsSkinInstance* skin = AknsUtils::SkinInstance();&lt;br /&gt; MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );&lt;br /&gt; AknsDrawUtils::Background( skin, cc, this, gc, aRect );&lt;br /&gt;&lt;br /&gt; ...&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;void CMyAppView::SizeChanged()&lt;br /&gt;{&lt;br /&gt; if(iBgContext)&lt;br /&gt; {&lt;br /&gt;       iBgContext-&amp;gt;SetRect(Rect());&lt;br /&gt;    if ( &amp;amp;Window() )&lt;br /&gt;    {&lt;br /&gt;        iBgContext-&amp;gt;SetParentPos( PositionRelativeToScreen() );&lt;br /&gt;    }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;7. Now we are ready so if we have to use it in a list box then we can use as below.&lt;br /&gt;ListBox-&gt;ItemDrawer()-&gt;ColumnData()-&gt;SetSkinEnabledL(ETrue)&lt;br /&gt;&lt;br /&gt;Header Files: AknsDrawUtils.h, AknsBasicBackgroundControlContext.h&lt;br /&gt;Lib Files: aknskins.lib aknskinsrv.lib&lt;br /&gt;&lt;br /&gt;&lt;b&gt;note: &lt;/b&gt;&lt;br /&gt;1. Nokia has introduced skin support only in S60 v2.&lt;br /&gt;2. Unfortunately, the Skin API is not very well documented and may not be compatible in S60 3rd Edition&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-175707066381022833?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/175707066381022833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=175707066381022833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/175707066381022833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/175707066381022833'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-use-mobile-theme-skin-as.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3105449376236265005</id><published>2008-04-04T19:15:00.001+08:00</published><updated>2008-04-04T19:16:52.210+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Nokia OS [NOS / ISA]&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nokia OS (NOS) is an informal name for the operating system in many Nokia mobile phones. These are informal names, there is no such product or trademark. Officially it is referred as ISA platform. It is a proprietary platform only for Nokia's internal use, it is not licensed to anyone. No direct API is provided either, but most ISA phones can be programmed with J2ME. It is sometimes called the "domestic OS"..&lt;br /&gt;&lt;br /&gt;ISA powers Nokia Series 40 and Series 30 mobile phones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3105449376236265005?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3105449376236265005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3105449376236265005' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3105449376236265005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3105449376236265005'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/nokia-os-nos-isa-nokia-os-nos-is.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3462172276723797029</id><published>2008-04-04T19:12:00.000+08:00</published><updated>2008-04-04T19:13:58.651+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Obtaining UID of a calling application.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Call Application UID is 0x10005883.&lt;br /&gt;&lt;br /&gt;you can find in the following way :&lt;br /&gt;1) Firstly retrieve window id of Call Application.&lt;br /&gt;2) Then passe this Window id to CApaWindowGroupName::FindByAppUid function which returns the UID.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3462172276723797029?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3462172276723797029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3462172276723797029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3462172276723797029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3462172276723797029'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/obtaining-uid-of-calling-application.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7474794542175129229</id><published>2008-04-04T16:40:00.001+08:00</published><updated>2008-04-04T16:42:54.586+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to start a application in a specific orientation&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;By default, applications are started in the current orientation of the device screen. In order to force an application to be started in landscape mode or portrait mode, a corresponding flag needs to be passed to the BaseConstructL() function in AknAppUi::ConstructL():&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;void CMyAppUi::ConstructL()&lt;br /&gt;   {&lt;br /&gt;   BaseConstructL( EAknEnableSkin | EAppOrientationLandscape );    // start in landscape mode&lt;br /&gt;   //BaseConstructL( EAknEnableSkin | EAppOrientationPortrait );    // start in Portrait mode&lt;br /&gt;   ...&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note: enums Passed  BaseConstructL() are different from enums that are passed to  SetOrientationL().&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7474794542175129229?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7474794542175129229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7474794542175129229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7474794542175129229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7474794542175129229'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-start-application-in-specific.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-5121823264358962285</id><published>2008-04-04T16:38:00.000+08:00</published><updated>2008-04-04T16:40:39.487+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to change screen orientation of UI application&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;void CMyClass::RotateMe()&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;    // Change the screen orientation.&lt;br /&gt;    if (CAknAppUi::EAppUiOrientationPortrait != AppUi()-&amp;gt;Orientation())&lt;br /&gt;        {&lt;br /&gt;        AppUi()-&amp;gt;SetOrientationL(CAknAppUi::EAppUiOrientationPortrait);&lt;br /&gt;        }&lt;br /&gt;    else&lt;br /&gt;        {&lt;br /&gt;        AppUi()-&amp;gt;SetOrientationL(CAknAppUi::EAppUiOrientationLandscape);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-5121823264358962285?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/5121823264358962285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=5121823264358962285' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5121823264358962285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5121823264358962285'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-change-screen-orientation-of-ui.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6263398548188280857</id><published>2008-04-04T15:58:00.000+08:00</published><updated>2008-04-04T15:59:10.438+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to handle Foreground / Background events&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The application framework calls CCoeAppUI::HandleForegroundEventL() when the application is switched to the foreground or background. While the default implementation of this method is empty, it can be, for example, used to display messages or pause a game when a focus change event occurs.&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;void CMyViewAppUi::HandleForegroundEventL(TBool aForeground)&lt;br /&gt;    {&lt;br /&gt;    if (aForeground==TRUE)&lt;br /&gt;        {&lt;br /&gt;        iEikonEnv-&amp;gt;InfoMsg(_L(&amp;quot;Foreground true&amp;quot;));&lt;br /&gt;        }&lt;br /&gt;    else&lt;br /&gt;        {&lt;br /&gt;        iEikonEnv-&amp;gt;InfoMsg(_L(&amp;quot;Foreground false&amp;quot;));&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note: The aForeground parameter is true if the application is switched to the foreground (is visible) and false if the application has gone to the background.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6263398548188280857?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6263398548188280857/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6263398548188280857' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6263398548188280857'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6263398548188280857'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-handle-foreground-background.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3717229759979353628</id><published>2008-04-04T15:57:00.001+08:00</published><updated>2008-04-04T15:57:46.772+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to handle Layout change events &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Layout change events are generated when the screen size or layout is changed. The S60 platform supports multiple screen resolutions[also called as "Scalable UI"]. Thus, layout awareness is particularly crucial for those applications to reorganize the position as required. Applications can detect the changes in layout with, for example, the following methods:&lt;br /&gt;&lt;br /&gt;    1. Controls can override the CCoeControl::HandleResourceChange() to detect the KEikDynamicLayoutVariantSwitch message.&lt;br /&gt;    The following example code for HandleResourceChange():&lt;br /&gt;   &lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;    void CMyControl::HandleResourceChange(TInt aType)&lt;br /&gt;        {&lt;br /&gt;        CCoeControl::HandleResourceChange(aType); //call base class implementation&lt;br /&gt;        if ( aType==KEikDynamicLayoutVariantSwitch )&lt;br /&gt;            {&lt;br /&gt;            TRect rect;&lt;br /&gt;            // ask where container's rectangle should be&lt;br /&gt;            // EMainPane equals to area returned by&lt;br /&gt;            //CEikAppUi::ClientRect()&lt;br /&gt;            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane,rect);&lt;br /&gt;            SetRect(rect);&lt;br /&gt;            }&lt;br /&gt;        } &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;br /&gt;&lt;br /&gt;    2. UI controllers can override the CEikAppUi::HandleResourceChangeL() to detect the KEikDynamicLayoutVariantSwitch message.&lt;br /&gt;&lt;br /&gt;    The following example code for HandleResourceChangeL():&lt;br /&gt;   &lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;    void CExampleAppUi::HandleResourceChangeL(TInt aType)&lt;br /&gt;        {&lt;br /&gt;        CAknAppUi::HandleResourceChangeL( aType );&lt;br /&gt;        if ( aType == KEikDynamicLayoutVariantSwitch )&lt;br /&gt;            {&lt;br /&gt;            // do the re-layout of the components&lt;br /&gt;            }&lt;br /&gt;        // Controls derived from CCoeControl, handled in a&lt;br /&gt;        // container class&lt;br /&gt;        iExampleControlContainer-&amp;gt;HandleResourceChange( aType );&lt;br /&gt;        //Must not call this if the components are on the control stack&lt;br /&gt;        //iView-&amp;gt;HandleResourceChangeL( aType );&lt;br /&gt;        }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3717229759979353628?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3717229759979353628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3717229759979353628' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3717229759979353628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3717229759979353628'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-handle-layout-change-events.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2574004617935504744</id><published>2008-04-04T15:53:00.000+08:00</published><updated>2008-12-11T17:41:56.617+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;br /&gt;S60 View based UI application architecture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The S60 view architecture only allows one view to be active in each application. If a new view is switched to within an application, the current view is immediately deactivated.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZAjT-2iZ9R8/R_XekC6T2_I/AAAAAAAAASI/6S5azNGyTxo/s1600-h/S60Viewbased.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZAjT-2iZ9R8/R_XekC6T2_I/AAAAAAAAASI/6S5azNGyTxo/s400/S60Viewbased.jpg" alt="" id="BLOGGER_PHOTO_ID_5185295256825093106" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;S60 platform applications that follow the S60 view architecture require:&lt;br /&gt;&lt;br /&gt;   1.    A UI controller derived from CAknViewAppUi&lt;br /&gt;       Responsibilities are&lt;br /&gt;       a) It creates one or more CAknView-derived view controllers.&lt;br /&gt;       b) It handles events that are not handled by the view controllers.&lt;br /&gt;       c) To switch between views, it activates and deactivates views.&lt;br /&gt;       d) It handles menu commands passed to it by the view controllers.&lt;br /&gt;       e) It receives events such as layout and foreground notifications from the run-time environment.&lt;br /&gt;     &lt;br /&gt;   2.    A view controller derived from CAknView&lt;br /&gt;       Responsibilities are&lt;br /&gt;       a) It creates one of more CCoeControl-derived views.&lt;br /&gt;       b) It handles registering controls for key event handling.&lt;br /&gt;       c) It handles menu commands.&lt;br /&gt;     &lt;br /&gt;   3.    1 or more views derived from CCoeControl&lt;br /&gt;       Responsibilities are&lt;br /&gt;       a) Shows application data and state on the screen.&lt;br /&gt;     &lt;br /&gt;As this architecture allows one view to be active in each application, so it is not appropriate in the following cases:&lt;br /&gt;&lt;br /&gt;   1. Applications with any view that cannot cleanly handle unexpected activation of another view in that application.&lt;br /&gt;   2. Applications that provide views that can be nested over other applications, [except where embedding is used.]&lt;br /&gt;   3. Applications that provide controls that can be used inside other applications (for example, using a Web control inside an e-mail viewer to show an e-mail with HTML content).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2574004617935504744?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2574004617935504744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2574004617935504744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2574004617935504744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2574004617935504744'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/s60-view-based-ui-application.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZAjT-2iZ9R8/R_XekC6T2_I/AAAAAAAAASI/6S5azNGyTxo/s72-c/S60Viewbased.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-4856681411731131804</id><published>2008-04-04T15:50:00.000+08:00</published><updated>2008-12-11T17:41:56.770+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;&lt;br /&gt;Traditional Symbian OS UI application architecture&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The traditional Symbian OS UI application architecture provides the most flexible approach to application UI construction. Traditional architecture is easier to port across different platforms. Traditional architecture is also the best choice for single-view applications, if launching the view from external applications is not required.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZAjT-2iZ9R8/R_XeEC6T2-I/AAAAAAAAASA/95aY6_EBGkE/s1600-h/Traditional.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZAjT-2iZ9R8/R_XeEC6T2-I/AAAAAAAAASA/95aY6_EBGkE/s400/Traditional.jpg" alt="" id="BLOGGER_PHOTO_ID_5185294707069279202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;S60 platform applications that follow the traditional Symbian OS UI application architecture require:&lt;br /&gt;&lt;br /&gt;  1.     A UI controller derived from CAknAppUi&lt;br /&gt;      Responsibilities are&lt;br /&gt;      a. It creates one or more CCoeControl-derived views.&lt;br /&gt;      b. It handles events, including enabling views to handle key events.&lt;br /&gt;      c. To switch between views, it creates and destroys or shows and hides views.&lt;br /&gt;      d. It handles menu commands.&lt;br /&gt;      e. It receives events such as layout and foreground notifications from the run-time environment.&lt;br /&gt;  2.     1 or more views derived from CCoeControl&lt;br /&gt;      Responsibilities are&lt;br /&gt;      a. Shows application data and state on the screen.&lt;br /&gt;      b. Receives user input.&lt;br /&gt;      c. Notifies the CAknAppUi-derived class of relevant events.&lt;br /&gt;      d. Often observes model changes (directly or via the UI controller) and updates the screen accordingly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-4856681411731131804?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/4856681411731131804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=4856681411731131804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4856681411731131804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4856681411731131804'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/traditional-symbian-os-ui-application.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZAjT-2iZ9R8/R_XeEC6T2-I/AAAAAAAAASA/95aY6_EBGkE/s72-c/Traditional.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1159978879568727301</id><published>2008-04-04T15:48:00.000+08:00</published><updated>2008-04-04T15:50:11.474+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;UI Controller in S60&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;UI controller is an object derived from either CAknAppUi or CAknViewAppUi, depending on your UI architecture. The UI controller is part of the controller structure in the Model - View - Controller (MVC) design pattern used to design the architecture of many GUI-based mobile applications.&lt;br /&gt;&lt;br /&gt;Examples of services and responsibilities provided by the UI controller are as follows:&lt;br /&gt;&lt;br /&gt;    1. control stack for event handling&lt;br /&gt;    2. construction of views for applications&lt;br /&gt;    3. the top-level window owning control of the application&lt;br /&gt;&lt;br /&gt;The UI controller is implemented in one of the following classes:&lt;br /&gt;&lt;br /&gt;    1. In a traditional architecture application architecture, the UI controller must be derived from CAknAppUi.&lt;br /&gt;    2. In S60 View application architecture, the UI controller must be derived from CAknViewAppUi.&lt;br /&gt;    3. In dialog architecture, the UI controller is typically derived from CAknAppUi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1159978879568727301?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1159978879568727301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1159978879568727301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1159978879568727301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1159978879568727301'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/ui-controller-in-s60-ui-controller-is.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6241164400622665468</id><published>2008-04-03T19:51:00.001+08:00</published><updated>2008-04-03T19:51:34.751+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;3 things you must have in mind while making your application scalable.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    If your application is scala then you allow your application to support the different display sizes, resolutions, and layouts for different S60 devices.&lt;br /&gt;   &lt;br /&gt;    1. Layout information should not be hard-coded.&lt;br /&gt;        The S60 platform provides the AknLayoutUtils class for building layouts from resource files.&lt;br /&gt;        Note: that you need to override CCoeControl::HandleResourceChange and CEikAppUi::HandleResourceChangeL in your application to draw your application again in the event that the orientation of the display changes.&lt;br /&gt;    2. Scalable fonts should be used.&lt;br /&gt;        The S60 platform provides methods in the AknLayoutUtils for using logical fonts from an enumeration in the avkon.hrh file.&lt;br /&gt;    3. Scalable icons should be used.&lt;br /&gt;        Scalable icons are based on SVG Tiny (SVG-T) format graphics.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6241164400622665468?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6241164400622665468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6241164400622665468' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6241164400622665468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6241164400622665468'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/3-things-you-must-have-in-mind-while.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3193877431074821842</id><published>2008-04-03T19:50:00.001+08:00</published><updated>2008-04-03T19:50:55.575+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;10 things you must remember when doing internationalization of your application:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;   1. Keep code and content separate.&lt;br /&gt;   2. Use Locales.&lt;br /&gt;   3. In UI component design, allow for text expansion.&lt;br /&gt;   4. Do not concatenate. [Localizing concatenated strings is difficult or impossible.]&lt;br /&gt;   5. Do not reuse strings. [The context, meaning, or the space available may change, making localization difficult.]&lt;br /&gt;   6. Use re-orderable parameters in strings.&lt;br /&gt;   7. Do not use text in graphics. [It all needs to be localizable.]&lt;br /&gt;   8. Comment the text strings.&lt;br /&gt;   9. Use common components&lt;br /&gt;          * Use AVKON component library wherever possible.&lt;br /&gt;          * Use StringLoader.h for re-orderable parameters.&lt;br /&gt;          * Use CharConv for inbound and outbound character conversions.&lt;br /&gt;          * CharConv contains conversion tables for all supported S60 languages and most common encodings.&lt;br /&gt;          * Use locale for sorting.&lt;br /&gt;          * Use AVKON time and date formatter strings for time/date formatting, or if you need to have new formats, use locale formatters.&lt;br /&gt;  10. Follow the formats / templates provided by symbian.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3193877431074821842?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3193877431074821842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3193877431074821842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3193877431074821842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3193877431074821842'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/10-things-you-must-remember-when-doing.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6944253847022245038</id><published>2008-04-03T18:41:00.000+08:00</published><updated>2008-04-03T18:42:04.489+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;What is Data Caging in Symbian V9.x?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Data caging means that different applications are allowed to access only particular data areas. This prevents applications from accessing the private data of other applications.&lt;br /&gt;&lt;br /&gt;The following list describes where different file types are stored on a mobile device:&lt;br /&gt;&lt;br /&gt;    1. The \sys\bin folder contains all binaries. This is the only folder from where an application can be launched.&lt;br /&gt;    Note: An application cannot read (or write) anything under the \sys\ folder without AllFiles (or TCB) capability.&lt;br /&gt;   &lt;br /&gt;    2. The private (\private\) folder includes folders for all applications. The &lt;application&gt;\ subfolders are application-specific and applications can access only their own folders. An application with AllFiles capability can access all private directories. The directory name under \private is determined by the SecureId (SID) of the application. If an SID is not specified, the UID3 provided in the mmp file is used.&lt;br /&gt;   &lt;br /&gt;    3. The resource folder (\resource\apps\) is used for resource files of applications. This data can be icons, bitmaps, and other material useful for all the applications. Read access is allowed by all applications, write access only by processes with the AllFiles capability.&lt;br /&gt;&lt;br /&gt;Note: So if you want to shared  File / databse for both read and write between applications or between 2 exes of same application, then use a folder in c:\data\&lt;application_name&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6944253847022245038?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6944253847022245038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6944253847022245038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6944253847022245038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6944253847022245038'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/what-is-data-caging-in-symbian-v9.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3662373320957699577</id><published>2008-04-03T18:38:00.001+08:00</published><updated>2008-04-03T18:40:02.175+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;What are @publishedAll APIs and How to find out which is @publishedAll API or not.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;These Group/set of symbian APIs can be used by a 3rd party developer to futre proof his application. That means these APIs will be changed in feature versions of the SDK. So @publishedAll APIs are binary and source compatible across OS releases&lt;br /&gt;&lt;br /&gt;By checking the .h files for the API a developer can find out if the API is @publishedAll or not.&lt;br /&gt;&lt;br /&gt;Other tags included in Symbian headers are.&lt;br /&gt;01) @internalTechnology&lt;br /&gt;02) @internalComponent&lt;br /&gt;03) @internalAll&lt;br /&gt;04) @publishedPartner&lt;br /&gt;05) @publishedAll&lt;br /&gt;06) @prototype&lt;br /&gt;07) @interim (a deprecated synonym of @prototype)&lt;br /&gt;08) @released&lt;br /&gt;09) @deprecated&lt;br /&gt;10) @removed&lt;br /&gt;11) @test&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3662373320957699577?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3662373320957699577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3662373320957699577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3662373320957699577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3662373320957699577'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/what-are-publishedall-apis-and-who-to.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2757900830323347287</id><published>2008-04-03T18:01:00.002+08:00</published><updated>2008-04-03T18:02:39.840+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How To:  Remove an installed application from the WINS Emulator?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;All applications on symbian os emulator must reside in&lt;br /&gt;[EPOCROOT]\epoc32\release\wins\udeb\z\system\apps\&lt;br /&gt;or&lt;br /&gt;[EPOCROOT]\epoc32\release\wins\urel\z\system\apps\&lt;br /&gt;or&lt;br /&gt;[EPOCROOT]\epoc32\wins\c\system\apps\&lt;br /&gt;&lt;br /&gt;just delete the dir of the application you want.&lt;br /&gt;&lt;br /&gt;Note: only applicable to pre-Symbian v9&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2757900830323347287?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2757900830323347287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2757900830323347287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2757900830323347287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2757900830323347287'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-remove-installed-application.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6339718616831294001</id><published>2008-04-03T17:59:00.000+08:00</published><updated>2008-04-03T18:00:44.392+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How To: display global notes (independent of the focused view)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;CAknGlobalNote* iGlobalNote = CAknGlobalNote::NewL();&lt;br /&gt;CleanupStack::PushL( iGlobalNote );&lt;br /&gt;iGlobalNote-&amp;gt;ShowNoteL(EAknGlobalConfirmationNote, _L(&amp;#8221;Screenshot taken!&amp;#8221;));&lt;br /&gt;CleanupStack::PopAndDestroy();&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6339718616831294001?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6339718616831294001/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6339718616831294001' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6339718616831294001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6339718616831294001'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-display-global-notes-independent.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6761556541477911309</id><published>2008-04-03T17:58:00.000+08:00</published><updated>2008-04-03T17:59:14.138+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How To: make asynchronous functions synchronous?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Simply add WaitForRequest() and remove SetActive();&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;TRequestStatus iStat = KRequestPending;&lt;br /&gt;iEncoder-&amp;gt;Convert(&amp;amp;iStat, *iImage, iJpgImageData);&lt;br /&gt;User::WaitForRequest(iStat); //Remove SetActive();&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6761556541477911309?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6761556541477911309/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6761556541477911309' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6761556541477911309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6761556541477911309'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-make-asynchronous-functions.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7977934778682966049</id><published>2008-04-03T17:49:00.001+08:00</published><updated>2008-04-03T17:52:03.745+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How To:  avoid repetitive key events when pressing a key?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Use TEventCode to only capture EEventKeyDown:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;TKeyResponse CAppUi::HandleKeyEventL(const TKeyEvent&amp;amp; aKeyEvent, TEventCode aType)&lt;br /&gt;{&lt;br /&gt;if((aKeyEvent.iScanCode == &amp;#8216;*&amp;#8217;)&amp;amp;&amp;amp; aType == EEventKeyDown)&lt;br /&gt;{&lt;br /&gt;iMenuView-&amp;gt;HandleCommandL(ECommand);&lt;br /&gt;return EKeyWasConsumed;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;return EKeyWasNotConsumed;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7977934778682966049?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7977934778682966049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7977934778682966049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7977934778682966049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7977934778682966049'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-avoid-repetitive-key-events-when.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7340559053950267927</id><published>2008-04-03T17:48:00.001+08:00</published><updated>2008-04-03T17:53:14.986+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How To: Externalizing and internalizing descriptors&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Example:&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;TBuf KMaxFileNameLength iFileName&lt;br /&gt;void TSettings Settings::ExternalizeL(RWriteStream&amp;amp; aStream) const&lt;br /&gt;{&lt;br /&gt;    aStream &amp;lt;&amp;lt; iFileName;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void TSettings::InternalizeL(RReadStream&amp;amp; aStream)&lt;br /&gt;{&lt;br /&gt;    aStream &amp;gt;&amp;gt; iFileName;&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7340559053950267927?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7340559053950267927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7340559053950267927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7340559053950267927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7340559053950267927'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-externalizing-and-internalizing.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-8228126146255068394</id><published>2008-04-03T17:47:00.002+08:00</published><updated>2008-04-03T17:48:08.965+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;In which files are UIDs used? (In Symbian v9.x)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    a. in xxxApplication.cpp file static const TUid KUidXXXApp = {0xXXXXXXXX};&lt;br /&gt;    b. in .pkg file Header #{”XXX”},(0xXXXXXXXX),1,0,0&lt;br /&gt;    “..\sis\backup_registration.xml” -”!:\private\xxxxxxxx\backup_registration.xml”&lt;br /&gt;    private directory&lt;br /&gt;    c. in resource file xxx_reg-rss UID3 0xXXXXXXXX&lt;br /&gt;    d. when sending application to the background (HandleCommandL)&lt;br /&gt;    e. in paths to private directory&lt;br /&gt;    f. In project/properties!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-8228126146255068394?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/8228126146255068394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=8228126146255068394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8228126146255068394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/8228126146255068394'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/in-which-files-are-uids-used-in-symbian.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-5273977164692479183</id><published>2008-04-03T17:47:00.001+08:00</published><updated>2008-04-03T17:47:22.984+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;In which files are UIDs used? (In Pre-Symbian v9.x)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;UIDs have to be stored in several locations:&lt;br /&gt; 1. in xxxApplication.cpp file static const TUid KUidXXXApp = {0xXXXXXXXX};&lt;br /&gt; 2. in .pkg file Header #{”XXX”},(0xXXXXXXXX),1,05,223&lt;br /&gt; 3. in .mmp file UID 0×100039CE 0xXXXXXXXX&lt;br /&gt; 4. in iaf resource file xxxaif.rss RESOURCE AIF_DATA { app_uid=0xXXXXXXX;….}&lt;br /&gt; 5. when sending application to the background:&lt;br /&gt;   &lt;br /&gt;        CApaWindowGroupName* wgName = CApaWindowGroupName::NewLC(CCoeEnv::Static()-&gt;WsSession(), task.WgId());&lt;br /&gt;        if (wgName-&gt;AppUid().iUid == 0xXXXXXXXX) //ur application uid&lt;br /&gt;        {&lt;br /&gt;            response = ETrue;&lt;br /&gt;            task.SendToBackground();&lt;br /&gt;        }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-5273977164692479183?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/5273977164692479183/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=5273977164692479183' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5273977164692479183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5273977164692479183'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/in-which-files-are-uids-used-in-pre.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1513301852694148590</id><published>2008-04-03T17:44:00.002+08:00</published><updated>2008-04-03T17:45:49.600+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How To: Symbian Signing and unsigning a sis&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    a. During development and testing a developer or self-signed certificate is used ( sis-file is signed with Createsis wrapper tool in Carbide)&lt;br /&gt;    b. Before submitting to test house developer certificate is stripped using “createsis strip” : createsis strip xxx.sis xxxstripped.sis&lt;br /&gt;    c. For freeware the stripped sis-file can be sent to user.( to be signed by user on there own)&lt;br /&gt;    d. For Commerical applications the sis-file has to be signed with ACS publisher ID with “signsis” :&lt;br /&gt;    signsis xxxstripped.sis xxxsigned.sis xxxx.cer xxxx.key&lt;br /&gt;    remark: “createsis sign” should perform the same but does not seem to work&lt;br /&gt;    e. At each stage the signing status of the file can be checked with “VerifySymbianSigned” : verifysymbiansigned xxx.sis&lt;br /&gt;     &lt;http://live.sdnhost.com/wiki/display/sign/tools+for+symbian+signed&gt; verifysymbiansigned.exe You need to log in and then download.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1513301852694148590?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1513301852694148590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1513301852694148590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1513301852694148590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1513301852694148590'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/how-to-symbian-signing-and-unsigning.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-7577676181061564219</id><published>2008-04-03T17:44:00.001+08:00</published><updated>2008-04-03T17:44:51.015+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;HowTo: Backporting from 3rd to 2nd edition&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    1. Create new S60 project&lt;br /&gt;        - File | new |C++ application for S60 project (choose view based app)&lt;br /&gt;        - Add UID&lt;br /&gt;    2. Delete all unnecessary files&lt;br /&gt;        Keep following files:&lt;br /&gt;        src: xxxapp.cpp xxxdocument.cpp&lt;br /&gt;        inc: xxxapp.h xxxdocument.h xxx.loc xxx.hrh&lt;br /&gt;        data: xxx.rss xxx_caption.rss&lt;br /&gt;        aif: xxx.aifdef xxxaif.rss&lt;br /&gt;        sis: xxx.pkg&lt;br /&gt;    3. Import 3d edition files&lt;br /&gt;        src/inc: from appui&lt;br /&gt;        aif: icons + add them in aifdef&lt;br /&gt;    4. Overwrite files&lt;br /&gt;        rss&lt;br /&gt;        hrh&lt;br /&gt;        loc&lt;br /&gt;        pkg&lt;br /&gt;    5. Add libraries&lt;br /&gt;    6. Add include path inc/icl&lt;br /&gt;    7. Change include and class names in xxxdocument.cpp and xxxdocument.h&lt;br /&gt;    8. Change parts of code (back port)&lt;br /&gt;    9. Change file location (settings file, sounds, images,…)&lt;br /&gt;    10. Replace name of all xxx.rsg , xxx.hrh xxx.mbg files&lt;br /&gt;    11. Replace all UIDs&lt;br /&gt;    12. Replace svg images with mbm files&lt;br /&gt;    13. pur resource files in right places&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-7577676181061564219?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/7577676181061564219/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=7577676181061564219' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7577676181061564219'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/7577676181061564219'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/howto-backporting-from-3rd-to-2nd.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-5626370399814088738</id><published>2008-04-03T17:42:00.000+08:00</published><updated>2008-04-03T17:43:29.399+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;HowTo: Security diagnostics and capability violations&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    In order to check capability violations build and run for the emulator and chsck the epocwind.out log-file located in “C:\Documents and Settings\myName\Local Settings\Temp\EPOCWIND.OUT” Lines to search for start with *PlatSec* . PlatSecDiagnostics has to be turned to ON in the Epoc.ini file located in Epoc32/data Capabilities allowed with self-signing : ReadUserData, WriteUserData, UserEnvironment, LocalServices, NetworkServices Leave all certificate fields including password empty&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-5626370399814088738?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/5626370399814088738/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=5626370399814088738' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5626370399814088738'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5626370399814088738'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/howto-security-diagnostics-and.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6943926216063137119</id><published>2008-04-03T17:41:00.000+08:00</published><updated>2008-04-03T17:42:24.012+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Free Symbian code verification tools    &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Automatic code verification tools are a great help to increase the production quality of software and also increase the probability to pass certification. They offer a quick and powerful way to get your code at a professional level.&lt;br /&gt;&lt;br /&gt;Below an overview of the available tools:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. The Symbian C++ compiler&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The compiler is of course the first verification tool for your code, though at the most basic level to get your code working. However, warnings often are not taken seriously although they are an important indicator for the cleanliness of your code.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.SymScan&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;SymScan is a free command line tool scanning for deprecated literal macro (“_L()”) , correct usage of the Cleanup stack , opening and closing of ‘R’ classes, functions marked as non-leaving which can leave and correct use of descriptors in function calls. It is available for download at the offical Symbian site.&lt;br /&gt;&lt;br /&gt;This utility is installed in the C:\Program Files\Common Files\Symbian\Tools\ directory.&lt;br /&gt;&lt;br /&gt;To scan single files, type from a Windows command prompt:&lt;br /&gt;&lt;br /&gt;symscan “filename.cpp” where filename.cpp is the name of the file you want to scan.&lt;br /&gt;&lt;br /&gt;To save the results you can pipe the output to a file e.g. symscan myfile.cpp &gt; output.txt&lt;br /&gt;&lt;br /&gt;There are several command line options, to limit the scanning to look for specific warnings.&lt;br /&gt;&lt;br /&gt;-H : Display help on available commands&lt;br /&gt;-C : Scan for CleanupStack violations&lt;br /&gt;-D : Scan for misuse of descriptors&lt;br /&gt;-S : Scan for standards violations i.e. deprecated _L()&lt;br /&gt;-L : LeaveScan will be executed when SymScan has completed parsing of the source file.&lt;br /&gt;-A : Perform all scans&lt;br /&gt;&lt;br /&gt;e.g. to scan for misuse of descriptors use the following: symscan -D t1.cpp &gt;output.txt&lt;br /&gt;&lt;br /&gt;Symscan can also be run from the command line to scan whole directories and output to a file. Use the Windows “for” command to scan directories, eg:&lt;br /&gt;&lt;br /&gt;for /R %i in (*.cpp) do SymScan “%i” &gt;&gt; SymScan.txt&lt;br /&gt;&lt;br /&gt;SymScan guarantees your code is compliant with the basic Symbian guidelines.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3.Review-X&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The trial version of Review-X available at the website of Tieto-X is limited to checks on Leaving function naming, class naming and function parameter naming. The price of the registered version is 500 Euros per license and includes:&lt;br /&gt;&lt;br /&gt;• constant naming&lt;br /&gt;• delete without reassignment&lt;br /&gt;• standard C++ construction&lt;br /&gt;• member variable destruction&lt;br /&gt;• leave with KErrNone&lt;br /&gt;• T-class member variable types&lt;br /&gt;• member variable naming&lt;br /&gt;• multiple inclusion&lt;br /&gt;• member variable cleanup&lt;br /&gt;• standard C++ types&lt;br /&gt;• NewLC used in a trap&lt;br /&gt;&lt;br /&gt;The full version also offers access to the command line interface, which can be integrated into your build scripts. Review-X features an easy to use graphical interface and html based reporting.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. LowMem&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Although strictly speaking LowMem is not a code verification tool, it indirectly points to badly written Symbian code. LowMem checks the start-up behaviour under simulated low-memory conditions by systematically increasing the available memory at startup by 1 kbyte, starting at 40 kbyte.&lt;br /&gt;Although this test is often described as “strange” it is very effective at exposing code which is not compliant with the Symbian code idioms. LowMem also reports the number of memory leaks. To pass the test a score of at least 90 % is required (less than 10 % failed startups).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5. AppTest Lite&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As LowMem, not a code verification tool. AppTest Lite for Symbian OS pre-v9 from SysOpen Digia aims at fully testing against the Symbian Signed Test citeria:&lt;br /&gt;&lt;br /&gt;PKG-01: ACS PUBLISHER ID&lt;br /&gt;PKG-02: INSTALLATION AND START UP&lt;br /&gt;PKG-03: FILE CREATION LOCATION&lt;br /&gt;PKG-04: UNINSTALL&lt;br /&gt;PKG-05: INSTALLATION TO ALL MEMORY DEVICES&lt;br /&gt;PKG-06: REINSTALL&lt;br /&gt;PKG-07: UID&lt;br /&gt;GEN-01: SYSTEM FEATURES AND OS FRIENDLY&lt;br /&gt;GEN-02: STRESS TEST&lt;br /&gt;MEM-02: LOW STORAGE MEMORY DURING EXECUTION&lt;br /&gt;PHN-01: SERVICE INTERRUPTION&lt;br /&gt;PHN-02: UNEXPECTED REBOOT&lt;br /&gt;CON-01: TASK LIST&lt;br /&gt;CON-03: BILLABLE EVENTS&lt;br /&gt;MEM-01: LOW MEMORY START-UP&lt;br /&gt;&lt;br /&gt;When your application passes all of the above tests you can submit it for certification with some confidence (but no guarantee of passing).&lt;br /&gt;&lt;br /&gt;LowMem and AppTest Lite are available at the SymbianSigned website.&lt;br /&gt;Note: At the time of writing there is no avaliable LowMem tool for Symbian v9.x.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Code verification tools and related utilities are becoming very important in Symbian mobile development. They allow to quickly verify if your code is compliant with the Symbian guidelines and increase the likelyhood to pass certification tests. They highlight the importance of the quality and robustness of mobile software in the constrained and demanding environment of mobile devices.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6943926216063137119?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6943926216063137119/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6943926216063137119' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6943926216063137119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6943926216063137119'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/free-symbian-code-verification-tools.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3209867658723489671</id><published>2008-04-01T15:26:00.002+08:00</published><updated>2008-04-01T15:27:33.092+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Using MIF files in Symbian OS (Part 1)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is a Mif File&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;.mif files - Machine-readable files with all the SVG-t/bmp icons packed into them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How to create a MIF File.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;There are at least three ways.&lt;br /&gt;1. The easiest way is to buy Adobe Illustrator CS2 to draw icons. Illustrator CS2 can save to SVG-Tiny format. It costs some money but it will save you a lot of time. If you're not great at drawing - there's a feature that will convert a photo to an SVG line drawing with color fills. So, make a photo of an object with your phone and have illustrator convert it to a line drawing.&lt;br /&gt;&lt;br /&gt;2. You can download a free editor named Inkscape. Inkscape saves to SVG format but not SVG-Tiny. You'll have to use the SVG2SVGT tool to convert the icon (found under S60Tools folder in SDK). But there's a problem. If you use certain draw object types then Inkscape will produce SVG code that will not work. Start with a very simple image such as a box - test it - and then add some details. (Inkscape is open source Java so anyone of us could fix it to directly generate SVG-T for S60.)&lt;br /&gt;&lt;br /&gt;3. You can type an SVG file into a text editor. It's XML syntax. {not recomended}&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How to create a MIF file.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Direct mifconv call method&lt;br /&gt;   go to your folder where your SDKs tools folder then run following command&lt;br /&gt; &lt;br /&gt;   c:\Symbian\9.1\S60_3rd_MR\Epoc32\tools&gt;mifconv MyNewApp.mif /c32 C:\TestIConPrj\gfx\Test_Icon1.svg ...&lt;br /&gt;   in this case the mif is created in the tools folder.&lt;br /&gt; &lt;br /&gt;2. Using Make File Method&lt;br /&gt;    a) Edit bld.inf File&lt;br /&gt;  &lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;        PRJ_MMPFILES&lt;br /&gt;       gnumakefile Test_Icon.mk&lt;br /&gt;       TestIConPrj.mmp&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;     &lt;br /&gt;   b) Create Test_Icon.mk file&lt;br /&gt;   You can use the Templete as given below.&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;  &lt;br /&gt;       ifeq (WINS,$(findstring WINS, $(PLATFORM)))&lt;br /&gt;       ZDIR=$(EPOCROOT)epoc32\release\$(PLATFORM)\$(CFG)\Z&lt;br /&gt;       else&lt;br /&gt;       ZDIR=$(EPOCROOT)epoc32\data\z&lt;br /&gt;       endif&lt;br /&gt;      &lt;br /&gt;       TARGETDIR=$(ZDIR)\resource\apps&lt;br /&gt;       ICONTARGETFILENAME=$(TARGETDIR)\Test_Icon.mif&lt;br /&gt;      &lt;br /&gt;       HEADERDIR=$(EPOCROOT)epoc32\include&lt;br /&gt;       HEADERFILENAME=$(HEADERDIR)\Test_Icon.mbg&lt;br /&gt;      &lt;br /&gt;       ICONDIR=..\gfx&lt;br /&gt;      &lt;br /&gt;       do_nothing :&lt;br /&gt;           @rem do_nothing&lt;br /&gt;      &lt;br /&gt;       MAKMAKE : do_nothing&lt;br /&gt;      &lt;br /&gt;       BLD : do_nothing&lt;br /&gt;      &lt;br /&gt;       CLEAN : do_nothing&lt;br /&gt;      &lt;br /&gt;       LIB : do_nothing&lt;br /&gt;      &lt;br /&gt;       CLEANLIB : do_nothing&lt;br /&gt;      &lt;br /&gt;       # In the below lines the c32,8 the 32 is for the image and&lt;br /&gt;       # 8 is for it's mask. See how the BMP file is mentioned&lt;br /&gt;       # below the SVG's here.&lt;br /&gt;      &lt;br /&gt;       RESOURCE :  &lt;br /&gt;           mifconv $(ICONTARGETFILENAME) /h$(HEADERFILENAME) \&lt;br /&gt;               /c32,8 $(ICONDIR)\Test_Icon1.svg\&lt;br /&gt;               /c32,8 $(ICONDIR)\Test_Icon2.svg\&lt;br /&gt;               /c32,8 $(ICONDIR)\Test_IconN.svg\&lt;br /&gt;               /c24  $(ICONDIR)\Test_BMPIcon1.bmp\&lt;br /&gt;               /c8  $(ICONDIR)\Test_BMPIcon1_Mask.bmp\&lt;br /&gt;               /c24  $(ICONDIR)\Test_BMPIcon2.bmp\&lt;br /&gt;               /c8  $(ICONDIR)\Test_BMPIcon2_Mask.bmp\&lt;br /&gt;               /c24  $(ICONDIR)\Test_BMPIconN.bmp\&lt;br /&gt;               /c8  $(ICONDIR)\Test_BMPIconN_Mask.bmp&lt;br /&gt;      &lt;br /&gt;             &lt;br /&gt;       FREEZE : do_nothing&lt;br /&gt;      &lt;br /&gt;       SAVESPACE : do_nothing&lt;br /&gt;      &lt;br /&gt;       RELEASABLES :&lt;br /&gt;           @echo $(HEADERFILENAME)&amp;amp;&amp;amp; \&lt;br /&gt;           @echo $(ICONTARGETFILENAME)&lt;br /&gt;      &lt;br /&gt;       FINAL : do_nothing&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;     &lt;br /&gt;   c) Clean build your project.&lt;br /&gt;   (note: you can't do this step from carbide.c++ or carbide.vs you have to use commandline).&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;        bldmake bldfiles&lt;br /&gt;       abld reallyclean&lt;br /&gt;       abld build gcce urel&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;1. Make your icon on a 44x44 pixel canvas. This might not be necessary in some cases but it is not clear whether S60 will scale your icon in all the places it can be used.&lt;br /&gt;&lt;br /&gt;2. Keep in mind that S60 caches icons between runs of your application - so sometimes when you update an icon you still see the previous version. Do not losing your mind - it's caching the icon. Try restarting the phone when updating icons.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3209867658723489671?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3209867658723489671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3209867658723489671' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3209867658723489671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3209867658723489671'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/using-mif-files-in-symbian-os-part-1.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2555792912004291491</id><published>2008-04-01T13:03:00.000+08:00</published><updated>2008-04-01T13:05:01.927+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;S60 3rd Edition SDK FP2 - Workarounds and Updates&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What is carbide.VS&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Carbide.vs is targeted at developers with Visual Studio skills who want to create C++ applications for Symbian OS platforms. Carbide.vs provides easy entry into Symbian OS C++ development with wizards and other automated functions that integrate with Visual Studio. User can get started with minimal manual configuration. Carbide.vs also contains functionality to automate several development tasks specific to Symbian OS.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Versions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Carbide.vs 2.x is a Visual Studio 2003 plugin which enables developers to use Visual Studio.NET 2003 as the IDE for Symbian development.&lt;br /&gt;&lt;br /&gt;2. Carbide.vs 3.x is a Visual Studio 2005 plugin that enables efficient Symbian OS C++ application development using the Microsoft Visual Studio.NET 2005 IDE and Symbian OS SDKs.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Workarounds for S60 3rd Edition FP2&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The available Carbide.vs versions (2.0.2 and 3.0.1) do not detect the S60 3rd Edition FP2 SDK. The steps given below must be followed to ensure that Carbide.vs detects this SDK.&lt;br /&gt;&lt;b&gt;Carbide.vs 2.0.2:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;    Install Carbide.vs 2.0.2. Copy the S60_3rd_FP2_v2.xml file to the folder C:\Program Files\Common Files\Symbian\SDK Descriptors\Nokia for Carbide.vs to detect the SDK.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Carbide.vs 3.0.1:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Case I: No Previous SDKs are installed in the system&lt;br /&gt;&lt;br /&gt;    Step 1:&lt;br /&gt;    To skip the SDK detection while installation of Carbide.vs 3.0.1 make following registry entry HKEY_LOCAL_MACHINE\SOFTWARE\Nokia\Carbide.vs.30 -&gt; Add String value "ForcePrereq" = "1".&lt;br /&gt;&lt;br /&gt;    Step 2:&lt;br /&gt;    To enable S60 3rd Edition, FP2 SDK detection in Carbide.vs 3.0.1, copy the S60_3rd_FP2_v3.xml file to the folder C:\Program Files\Common Files\Symbian\SDK Descriptors\Nokia.&lt;br /&gt;&lt;br /&gt;Case II: Previous SDKs are already installed in the system&lt;br /&gt;&lt;br /&gt;    Step 1:&lt;br /&gt;    To enable S60 3rd Edition, FP2 SDK detection copy the S60_3rd_FP2_v3.xml file to the folder C:\Program Files\Common Files\Symbian\SDK Descriptors\Nokia.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2555792912004291491?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2555792912004291491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2555792912004291491' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2555792912004291491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2555792912004291491'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/04/s60-3rd-edition-sdk-fp2-workarounds-and.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-752687125013605736</id><published>2008-03-26T15:44:00.000+08:00</published><updated>2008-12-11T17:41:57.014+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Symbian Signing Reference Wallpaper&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_ZAjT-2iZ9R8/R-n_JC6T29I/AAAAAAAAAR4/nfhiTCxqHCc/s1600-h/SymbianSinging.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_ZAjT-2iZ9R8/R-n_JC6T29I/AAAAAAAAAR4/nfhiTCxqHCc/s400/SymbianSinging.JPG" alt="" id="BLOGGER_PHOTO_ID_5181953377131813842" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-752687125013605736?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/752687125013605736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=752687125013605736' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/752687125013605736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/752687125013605736'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/symbian-signing-reference-wallpaper.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ZAjT-2iZ9R8/R-n_JC6T29I/AAAAAAAAAR4/nfhiTCxqHCc/s72-c/SymbianSinging.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3098717591704347647</id><published>2008-03-25T13:17:00.000+08:00</published><updated>2008-03-25T13:18:10.509+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to open SMS editor on self signed application? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you like to open a SMS Editor with some pre-inserted text from youe Symbian.C++ Application then you can use&lt;br /&gt;CSendUi::CreateAndSendMessageL().&lt;br /&gt;Note: this api requitres DRM capabilty some how. [may be it can be used for sending DMD protected MMS]&lt;br /&gt;But problem is you have can't Self Sign with this application.&lt;br /&gt;The work around is you have to use&lt;br /&gt;RSendAsMessage::LaunchEditorAndCloseL()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3098717591704347647?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3098717591704347647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3098717591704347647' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3098717591704347647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3098717591704347647'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/how-to-open-sms-editor-on-self-signed.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-4240934658296543333</id><published>2008-03-25T12:26:00.000+08:00</published><updated>2008-03-25T12:27:17.188+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to Display Task List Programmaticaly.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Task list is actually part of the Eikon environment so its a simply to call via Eikon of your application.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CEikonEnv::Static()-&gt;DisplayTaskList();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-4240934658296543333?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/4240934658296543333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=4240934658296543333' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4240934658296543333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4240934658296543333'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/how-to-display-task-list.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2853306514690358878</id><published>2008-03-24T15:51:00.000+08:00</published><updated>2008-03-24T15:52:51.843+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Getting Country Code and Operator name.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;class CNetwork : public CActive&lt;br /&gt;{&lt;br /&gt;public:&lt;br /&gt;    CNetwork(CTelephony* aTelephony);&lt;br /&gt;   &lt;br /&gt;    void ConstructL();&lt;br /&gt;   &lt;br /&gt;    ~CNetwork();&lt;br /&gt;   &lt;br /&gt;public: // New functions&lt;br /&gt;    void StartL(TTimeIntervalMicroSeconds32 aDelay);&lt;br /&gt;    void Stop();&lt;br /&gt;   &lt;br /&gt;private: // From CActive&lt;br /&gt;    void RunL();&lt;br /&gt;    void DoCancel();&lt;br /&gt;   &lt;br /&gt;public:&lt;br /&gt;    CTelephony* iTelephony; // telephony object we own&lt;br /&gt;    CTelephony::TNetworkInfoV1 iV1;&lt;br /&gt;    CTelephony::TNetworkInfoV1Pckg iPkg;&lt;br /&gt;    TTimeIntervalMicroSeconds32 iDelay;//get network interval&lt;br /&gt;    TNetworkInfo iNetworkInfo;&lt;br /&gt;};&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;CNetwork::CNetwork(CTelephony* aTelephony) : CActive(EPriorityStandard)&lt;br /&gt;,iTelephony(aTelephony), iPkg(iV1)&lt;br /&gt;{}&lt;br /&gt;&lt;br /&gt;void CNetwork::ConstructL()&lt;br /&gt;{&lt;br /&gt;    CActiveScheduler::Add(this);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;CNetwork::~CNetwork()&lt;br /&gt;{&lt;br /&gt;    Cancel(); // Cancel any request, if outstanding&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void CNetwork::DoCancel()&lt;br /&gt;{&lt;br /&gt;    iTelephony-&amp;gt;CancelAsync(CTelephony::EGetCurrentNetworkInfoCancel);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void CNetwork::StartL(TTimeIntervalMicroSeconds32 aDelay)&lt;br /&gt;{&lt;br /&gt;    Stop();&lt;br /&gt;    iStatus=KRequestPending;&lt;br /&gt;    iTelephony-&amp;gt;GetCurrentNetworkInfo(iStatus, iPkg);&lt;br /&gt;    SetActive();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void CNetwork::Stop()&lt;br /&gt;{&lt;br /&gt;    Cancel();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void CNetwork::RunL()&lt;br /&gt;{&lt;br /&gt;    if(iStatus == KErrNone)&lt;br /&gt;    {&lt;br /&gt;        TNetworkInfo tempNetworkInfo;&lt;br /&gt;        TBuf&amp;lt;30&amp;gt;strTemp;&lt;br /&gt;        strTemp = iPkg().iCountryCode;&lt;br /&gt;        CAknInformationNote* note = new (ELeave) CAknInformationNote();&lt;br /&gt;        note-&amp;gt;ExecuteLD(strTemp);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2853306514690358878?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2853306514690358878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2853306514690358878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2853306514690358878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2853306514690358878'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/getting-country-code-and-operator-name.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-4533853075480528010</id><published>2008-03-20T18:15:00.001+08:00</published><updated>2008-03-20T18:17:49.127+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Create a self-signed sisx using OpenSSL &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you want to create a self-signed certificate with validity periods other than 1 year, or with additional information about yourself, you can use a tool such as Open SSL to create it, rather than the standard MakeKeys utility that comes with the SDK.&lt;br /&gt;&lt;br /&gt;1. Download OpenSSL for your OS. [In my case windows so i will use "Shining Light Productions" - &gt; (Win32 OpenSSL v0.9.8g Light). &lt;a href="http://www.slproweb.com/products/Win32OpenSSL.html"&gt;here&lt;/a&gt;&lt;br /&gt;2. Install on your platform. (I assume that you installed on c:\OpenSSL)&lt;br /&gt;3. Open a Command line and change directory to c:\OpenSSL\. [cd c:\OpenSSL\]&lt;br /&gt;4. Run command "bin\openssl genrsa 1024 &gt;selfsigned.key"&lt;br /&gt;5. Run command "bin\openssl req -new -x509 -nodes -sha1 -days 3650 -key selfsigned.key &gt;selfsigned.cer"&lt;br /&gt;6. Fill in the information when assked for it.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;You are about to be asked to enter information that will be incorporated&lt;br /&gt;into your certificate request.&lt;br /&gt;What you are about to enter is what is called a Distinguished Name or a DN.&lt;br /&gt;There are quite a few fields but you can leave some blank&lt;br /&gt;For some fields there will be a default value,&lt;br /&gt;If you enter '.', the field will be left blank.&lt;br /&gt;-----&lt;br /&gt;Country Name (2 letter code) [AU]:SG&lt;br /&gt;State or Province Name (full name) [Some-State]:Singapore&lt;br /&gt;Locality Name (eg, city) []:Singapore&lt;br /&gt;Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company&lt;br /&gt;Organizational Unit Name (eg, section) []:Mobile Div&lt;br /&gt;Common Name (eg, YOUR name) []:Sunil Kumar&lt;br /&gt;Email Address []:skumar.mobiledev@gmail.com&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;7. copy selfsigned.key and selfsigned.cer to your sis folder.&lt;br /&gt;8. change your path to sis folder.&lt;br /&gt;9. Run Command "signsis -s my_unsigned_sis.sis my_singed_sis.sisx selfsigned.cer selfsigned.key"&lt;br /&gt;10. Now you can use my_singed_sis.sisx to install on any symbian v3 device.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-4533853075480528010?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/4533853075480528010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=4533853075480528010' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4533853075480528010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/4533853075480528010'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/create-self-signed-sisx-using-openssl.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6582615342662725929</id><published>2008-03-19T15:19:00.000+08:00</published><updated>2008-03-19T15:21:26.223+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Signing With Open Signed - A Tutorial...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A lot of people have been howling about the way Symbian Signed is going and criticising the change in system. As of now, nobody without a Publisher ID can create developer certificates and instead users are forced to use the new Online System. Open Signed has some positives and even more negatives although signing files capable of being signed (applications which are using unprotected UID range) is easier now and even need an account is not needed anymore. A lot of great freeware thus currently cannot be signed that way.&lt;br /&gt;&lt;br /&gt;Bery from the SymbianWebBlog has wriiten a complete guide on how to sign files using that system. He is using “GenialSis 2.0? for the purpose. So if you are looking to sign any of these LandscapePro, RockNScroll, ShakeMe, Gnubox, FlipSilent, ShakeLock, LargeTime, Audio Cube, Autolock, Callfilter, Calsync, CuteKeys, EmTube, Themes Laucher and so on jump over for the complete how to.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://symbianwebblog.wordpress.com/2008/03/18/the-totally-renewed-and-working-signing-tutorial-signing-with-open-signed-online/"&gt;Read More&lt;/a&gt; ...&lt;br /&gt;Try getting "GenialSis 2.0" from authers Site. &lt;a href="http://www.socci.eu/English/GenialSiS.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6582615342662725929?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6582615342662725929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6582615342662725929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6582615342662725929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6582615342662725929'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/signing-with-open-signed-tutorial.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-6527820327406130487</id><published>2008-03-18T12:32:00.002+08:00</published><updated>2008-03-18T12:33:49.238+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;Capabilities grouped by Signing procedure ...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;1. Self-Signing (Basic capabilities)&lt;br /&gt;   * LocalServices&lt;br /&gt;   * UserEnvironment&lt;br /&gt;   * NetworkServices&lt;br /&gt;   * ReadUserData&lt;br /&gt;   * WriteUserData&lt;br /&gt;&lt;br /&gt;2. Express Signing (Extended capabilities)&lt;br /&gt;   * Location&lt;br /&gt;   * SwEvent&lt;br /&gt;   * SurroundingsDD&lt;br /&gt;   * ProtServ&lt;br /&gt;   * PowerMgmt&lt;br /&gt;   * ReadDeviceData&lt;br /&gt;   * WriteDeviceData&lt;br /&gt;   * TrustedUI&lt;br /&gt;&lt;br /&gt;3. Certified Signed (Extended capabilities)&lt;br /&gt;   * NetworkControl&lt;br /&gt;   * MultimediaDD&lt;br /&gt;   * CommDD&lt;br /&gt;   * DiskAdmin&lt;br /&gt;&lt;br /&gt;4. OEM + Certified Signed (Manufacturer-approved capabilities)&lt;br /&gt;   * AllFiles&lt;br /&gt;   * DRM&lt;br /&gt;   * TCB&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-6527820327406130487?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/6527820327406130487/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=6527820327406130487' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6527820327406130487'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/6527820327406130487'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/capabilities-grouped-by-signing.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-5366310875861255323</id><published>2008-03-18T12:27:00.000+08:00</published><updated>2008-03-18T12:28:50.877+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:180%;" &gt;How to sign applications for free? &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Note: This is only applicable to Symbian v3 onwards.&lt;br /&gt;&lt;br /&gt;If you are a freeware developer, you may want to be able to develop your own stuff for your device (or No IMEI restriction) for free. You don't want to buy a Publisher ID, nor would you pay for any external testing or signing.&lt;br /&gt;&lt;br /&gt;Then here are the steps...&lt;br /&gt;&lt;br /&gt;To make a S60 3rd Ed (Symbian OS v9) application you have to:&lt;br /&gt;&lt;br /&gt;1. Write you application (use UID from the unprotected range, 0xe0000000 - 0xefffffff ) on Windows PC/ Linux / Mac.&lt;br /&gt;2. Try to use Symbian APIs that require only user granted capabilites. [LocalServices, UserEnvironment, NetworkServices, ReadUserData, WriteUserData ]&lt;br /&gt;3. Test it on Symbian EMULATOR that comes with SDK.&lt;br /&gt;4. make a SIS (use makesis)&lt;br /&gt;5. make your own certificate and key. (use keygen)&lt;br /&gt;6. sign it (the SIS file). (use signsis)&lt;br /&gt;7. transfer it to device usign PC Suit or Bluetooth.&lt;br /&gt;&lt;br /&gt;Note: If you are using APIs that are Non-user granted capabilites, then you have to get a Publisher ID and havet opay for signing and/or testing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-5366310875861255323?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/5366310875861255323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=5366310875861255323' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5366310875861255323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5366310875861255323'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/how-to-sign-applications-for-free-note.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-1074918958851333979</id><published>2008-03-17T20:16:00.000+08:00</published><updated>2008-03-17T20:17:46.299+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Signed Online vs Developer Certificate Q&amp;amp;A&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                1.1 Why did you suddenly turn off the ability to download Developer Certificates without a Publisher ID?.&lt;br /&gt;&lt;br /&gt;Current plans and approach were announced in consultation with the developer community in September 2007 and implementation has been phased in since that time.&lt;br /&gt;&lt;br /&gt;Many non-developers have been accessing the site through unapproved tools; hence it may have appeared sudden to these users as these unapproved tools would have stopped working and any documentation provided may not have been updated.&lt;br /&gt;&lt;br /&gt;1.2 My friends have certificates which are still valid for their phone, why can't I get one?&lt;br /&gt;&lt;br /&gt;In September 2007, we announced that we would provide an alternate solution to Developer Certificates using Open Signed Online, which is now in beta (since February 2008). Test applications can now be signed more simply without the need to acquire a Developer Certificate.&lt;br /&gt;&lt;br /&gt;1.3 My phone was broken and returned and my certificate does not work, why can't I get a new one?&lt;br /&gt;Open Signed Online will work for developing applications on your new phone. Developer Certificates are not necessary.&lt;br /&gt;&lt;br /&gt;1.4 I paid money for my phone and should be able to install whatever software I want, why are you stopping me?&lt;br /&gt;&lt;br /&gt;There are 10,000+ applications available, where developers have followed the correct release and deployment process, such that they can be installed on your phone without requiring you (the end-user) to use Symbian Signed service.&lt;br /&gt;&lt;br /&gt;This is approach is in line with agreed mobile industry recommendations.&lt;br /&gt;&lt;br /&gt;Symbian Signed is provided for development and testing purposes only. The policy of what an end-user can install on their phone, without Symbian Signed, is determined by your device manufacturer, via the concept of “User-Grantable Capabilities” configured by the manufacturer on shipment.&lt;br /&gt;&lt;br /&gt;A small number of developers are forcing end-users to go through a process intended for developers only.&lt;br /&gt;&lt;br /&gt;1.5 Why can I not get a certificate to sign Freeware, there is no other way to install Freeware?&lt;br /&gt;&lt;br /&gt;Contact your freeware developer and request him/her to re-release the application such that Developer Certificates are not required.&lt;br /&gt;&lt;br /&gt;a) Approx 60% of APIs do not require any Capabilities and applications using only those APIs do not need to use Symbian Signed services.&lt;br /&gt;&lt;br /&gt;b) The Capabilities; LocalServices, Location*, NetworkServices,ReadUserData ,UserEnvironment, WriteUserData: are user-grantable on the device. Applications using these Capabilities are not required to be Symbian Signed; an end-user can grant the permissions on their device. This allows people to do application development with a large amount of functionality for interesting apps. At least 25% of commercial apps are released without needing to use any Symbian Signed services.&lt;br /&gt;&lt;br /&gt;c) The Capabilities; PowerMgmt, Location*, ProtServ, ReadDeviceData, SurroundingsDD, SwEvent, TrustedUI, WriteDeviceData: are grantable by Open Signed Online, as well as all the user grantable permissions described in (2) .There is a requirement (as requested by the developer community) that you must own the application’s UID, or you may use a test UID (i.e. in the range 0xE0000000 to 0xEFFFFFFF). This protects the integrity of UID allocation process and prevents developers signing applications with UIDs which have been reserved by other developers.&lt;br /&gt;&lt;br /&gt;Note: Location* depends on device type&lt;br /&gt;&lt;br /&gt;1.6 I donated money to Freeware providers for their software and now I cannot install it because my phone has changed, why are you stopping me doing this?&lt;br /&gt;&lt;br /&gt;Contact your freeware developer (especially if they are accepting money) and request him/her to be responsible and release the application appropriately as most other developers have done; i.e. Express Sign the applications to assure end users that the application comes from a trusted source and meets the recommended minimum quality level as detailed in the Symbian Signed Test Criteria.&lt;br /&gt;&lt;br /&gt;1.7 Why is Symbian trying to make me pay $200 to get developer certificates, they are just trying to make more money?&lt;br /&gt;&lt;br /&gt;Symbian does not receive any money for a Publisher ID. Publisher IDs are available from TC Trustcenter and meet industry-agreed identity requirements for tracing the origin of an application.&lt;br /&gt;&lt;br /&gt;Publisher IDs are required to release applications to end-users in the mass market; developers using Express Signed and Certified Signed only need to obtain a Publisher ID once.&lt;br /&gt;&lt;br /&gt;1.8 I bought my phone specifically so that I can install applications like RotateMe, why can I no longer get a Developer Certificate?&lt;br /&gt;&lt;br /&gt;A beta UIQ version of RotateMe is being successfully signed via Open Signed Online the correct appropriate manner.&lt;br /&gt;&lt;br /&gt;1.9 Why does Open Signed Online not work with Freeware applications?&lt;br /&gt;&lt;br /&gt;There are 1000s of applications (including freeware) being successfully signed using Open Signed Online. Please contact the developer and encourage them to release their application in the correct manner.&lt;br /&gt;&lt;br /&gt;1.10 The Freeware route through Symbian does not work, how else can I distribute my Freeware application?&lt;br /&gt;&lt;br /&gt;There are already 1000s of applications (including freeware) being successfully signed using Open Signed Online?&lt;br /&gt;&lt;br /&gt;Once tested and as your freeware application becomes more popular, please consider going through Express Signed; it provides more trust to end users and Open Signed has a finite capacity which may have to be limited if it is over-used.&lt;br /&gt;&lt;br /&gt;1.11 Why is there all this security on Symbian OS, why can’t my phone just be completely open like others’ mobile phones?&lt;br /&gt;&lt;br /&gt;Symbian Signed’s approach to security is in line with mobile industry recommendations &lt;a class="jive-link-external" href="http://www.omtp.org/ProductProfile/"&gt;http://www.omtp.org/ProductProfile/&lt;/a&gt; . All open mobile phones shipping in mass market volumes are required to have some degree of trust and quality to protect mass market consumers’ from damage caused by poor applications.&lt;br /&gt;&lt;br /&gt;Symbian Signed aims to allow developers to sign an application once to deploy globally, without needing to be concerned by other stakeholders controlling the channel for deployment to a device.&lt;br /&gt;&lt;br /&gt;It is important that on behalf of mass market consumers, developers meet the requirements of Symbian Signed Services to provide trust and quality to deploy applications to 100s-of-millions of devices.&lt;br /&gt;&lt;br /&gt;1.12 I am not a developer I just own a phone, why do you keep saying you are thinking about developers?&lt;br /&gt;&lt;br /&gt;Symbian Signed is provided as a tool for developers to develop and release trusted applications for Symbian OS. The expectation is that developers should provide trusted and high quality applications to end users by ensuring their applications meet the Symbian Signed Test Criteria (using Express Signed and Certified Signed).&lt;br /&gt;&lt;br /&gt;Unfortunately a small number of developers are encouraging end-users to access Symbian Signed themselves rather than release applications in the correct manner.&lt;br /&gt;&lt;br /&gt;Device Manufacturers implement “User-Grantable Capabilites” on your device which determine what can be installed on your device without being Symbian Signed. As such many applications (and most certainly end-users) do not need to be aware of Symbian Signed.&lt;br /&gt;&lt;br /&gt;By installing an application that has been signed only with a Developer Certificate, you have no guarantee of origin and you put your device at increased risk of damage through a poorly performing application.&lt;br /&gt;&lt;br /&gt;1.13 I  just want to sign the “Hello World” application that I have developed using Carbide to run on my Nokia phone.&lt;br /&gt;&lt;br /&gt;You should not need to use any Symbian Signed services to do this successfully. Check the documentation on Forum Nokia’s web site via the following link:&lt;br /&gt;&lt;a class="jive-link-external" href="http://wiki.forum.nokia.com/index.php/Carbide.vs_Creating_and_deploying_projects_on_hardware"&gt;http://wiki.forum.nokia.com/index.php/Carbide.vs_Creating_and_deploying_projects_on_hardware&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1.14 Why do you only allow developers with a Publisher ID to acquire a Developer Certificates?&lt;br /&gt;&lt;br /&gt;This allows traceability to and accountability of the company responsible for signing (including Developer Certificates).&lt;br /&gt;&lt;br /&gt;1.15 I would like to purchase a Publisher ID, but I was told that only professional developers are able to get them. Is that right, or can anyone purchase such a certificate ?&lt;br /&gt;&lt;br /&gt;In compliance with industry recommendations (e.g. &lt;a class="jive-link-external" href="http://www.omtp.org/ProductProfile/"&gt;http://www.omtp.org/ProductProfile/&lt;/a&gt;) for Signing Schemes, a Class 3 Publisher ID is obtainable from TC Trustcenter.&lt;br /&gt;&lt;br /&gt;An Authorised Entity MUST be validated by either of the following:&lt;br /&gt; - Confirmation of articles of incorporation or&lt;br /&gt; - Registration with 3rd party databases (e.g. Dun and Bradstreet, German Handelsregister)&lt;br /&gt; - Or equivalent&lt;br /&gt;&lt;br /&gt;Class 3 certificates establish a level of trust that meets high standards for commercial needs. Any organizational data contained in a certificate is confirmed on the basis of the company memorandum (or similar documents) or documents signed by authorized employees.&lt;br /&gt;&lt;br /&gt;Class 3 certificates state, in addition to the checks required that&lt;br /&gt;&lt;br /&gt;1. A natural person be responsible for the certificate has been identified on the basis of his official identity card or passport.&lt;br /&gt; 2. Personal data contained in the certificate matches with that in the identity card or passport. “&lt;br /&gt;&lt;br /&gt;1.16 I want to purchase a publisher ID, but before I do, I have some questions: how many IMEIs can I enter when creating a .csr file?.&lt;br /&gt;&lt;br /&gt;Open Signed Offline using a Publisher ID allows a Developer Certificate to be created with up to 1000 IMEIs&lt;br /&gt;&lt;br /&gt;1.17 How many certificates can I generate per day on www.symbiansigned.com if I use a publisher ID? Are there any other limits when I have a publisher ID?&lt;br /&gt;&lt;br /&gt;There are daily limits in place to ensure fair usage. The limits are subject to change and are in line with reasonable development scenarios; i.e. a small number each day.&lt;br /&gt;&lt;br /&gt;1.18 Will Developer Certificates be available for users without a Publisher ID again? if not,why?&lt;br /&gt;&lt;br /&gt;Open Signed Online grants the same functionality as Developer Certificates, allows fair usage and has an easier to use interface with no registration/login required.&lt;br /&gt;&lt;br /&gt;1.19 What is the UID Range for Open Signed Online?&lt;br /&gt;&lt;br /&gt;Open Signed Online allows SIS files to be signed where&lt;br /&gt; - UIDs are in the Test Range (0xE0000000 to 0xEFFFFFFF) OR&lt;br /&gt;- UIDs where the email address of the submitter matches the email address of the UID owner for the Protected Range (0x20000000 - 0x2FFFFFFF) and Unprotected Range (0xA0000000 - 0xAFFFFFFF)&lt;br /&gt;&lt;br /&gt;1.20 I tried out the Open Signed Online beta now, with an application with an UID from the unprotected range (0xa000112c). Despite this, I got this error message:&lt;br /&gt;“FAILURE: Submitted .sis file uses a UID that is not allocated to the account holder matching this email address (0xa000112c)”&lt;br /&gt;&lt;br /&gt;Open Signed Online allows SIS files to be signed where&lt;br /&gt; - UIDs are in the Test Range (0xE0000000 to 0xEFFFFFFF) OR&lt;br /&gt;- UIDs where the email address of the submitter matches the email address of the UID owner for the Protected Range (0x20000000 - 0x2FFFFFFF) and Unprotected Range (0xA0000000 - 0xAFFFFFFF)&lt;br /&gt;&lt;br /&gt;1.21 Aren’t packages with UIDs from this range intended to be signable by anyone?&lt;br /&gt;&lt;br /&gt;The approach that has been implemented was at the request of developers to ensure they retain control over how their UIDs were used. Current recommendations are&lt;br /&gt;&lt;br /&gt;- Protected Range (0x20000000 - 02AFFFFFFF): Only to be used in Open Signed by the owner of the UID and required for Express Signed and Certified Signed.&lt;br /&gt;- Unprotected Range (0xA0000000 - 0xAFFFFFFF): Only to be used in Open Signed by the owner of the UID, cannot be used in Express Signed and Certified Signed.&lt;br /&gt;&lt;br /&gt;1.22 Do I need to register an account on symbiansigned.com to use Open Signed Online?&lt;br /&gt;&lt;br /&gt;Registration/Login is not required to use Open Signed Online.&lt;br /&gt;&lt;br /&gt;However if you need to use UIDs in the Protected (0x20000000 - 0x2FFFFFFF) and Unprotected Range (0xA0000000 - 0xAFFFFFFF)your submission email address must match the email address of the UID owner.&lt;br /&gt;&lt;br /&gt;1.23 What is the Size limitation on files submitted for signing?&lt;br /&gt;&lt;br /&gt; - Open Signed Offline: No effective limit, done locally on your development machine&lt;br /&gt; - Open Signed Online: 4Mb&lt;br /&gt; - Express Signed: 40Mb&lt;br /&gt; - Certified Signed: 40Mb&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-1074918958851333979?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/1074918958851333979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=1074918958851333979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1074918958851333979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/1074918958851333979'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/signed-online-vs-developer-certificate.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-5543739306197247925</id><published>2008-03-15T13:37:00.000+08:00</published><updated>2008-03-15T13:42:23.030+08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-weight: bold;font-size:130%;" &gt;Some Suggestion to Symbian Signing ....&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://blog.redinnovation.com/2008/03/14/symbian-digging-its-own-grave-with-symbiansignedcom/"&gt;ReadMore&lt;/a&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-5543739306197247925?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/5543739306197247925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=5543739306197247925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5543739306197247925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/5543739306197247925'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/some-suggestion-to-symbian-signing.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-3546417403825820907</id><published>2008-03-04T12:33:00.000+08:00</published><updated>2008-03-04T12:39:01.203+08:00</updated><title type='text'></title><content type='html'>&lt;h2&gt;&lt;span style="font-size:130%;"&gt;&lt;a href="http://mobilephonedevelopment.com/archives/560" rel="bookmark" title="Permanent Link: Symbian Dev Certs without Publisher ID"&gt;Symbian Dev Certs without Publisher ID&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;&lt;br /&gt;Well, Symbian has taken away the facility to create dev certs without a publisher ID. (For Time being)&lt;br /&gt;&lt;br /&gt;This means people can’t sign and use many of the freeware applications currently available. Symbian intend to introduce the new Open Signed process soon but until then there are lots of &lt;a target="_blank" href="http://discussion.forum.nokia.com/forum/showthread.php?t=128055"&gt;unhappy and confused people&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;No need to panic it will be back soon and it will get better then what was in past.&lt;br /&gt;&lt;br /&gt;From symbian Docs..&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://mobilephonedevelopment.com/wp-content/images/opensignedonline.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://mobilephonedevelopment.com/wp-content/images/opensignedonline.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-3546417403825820907?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/3546417403825820907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=3546417403825820907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3546417403825820907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/3546417403825820907'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/symbian-dev-certs-without-publisher-id.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-32555365.post-2265038529778720986</id><published>2008-03-02T01:43:00.000+08:00</published><updated>2008-03-02T01:45:25.303+08:00</updated><title type='text'></title><content type='html'>&lt;h2 style="color: rgb(0, 0, 0);"&gt;&lt;a href="http://symbianwebblog.wordpress.com/2008/02/29/symbian-signed-problems-solved-open-signed-online-starts-next/" rel="bookmark" title="Permanent Link: Open Signed Online starts next Week"&gt;Open Signed Online starts next Week&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;I think most of us hardcore Symbian users will have noticed that Symbian Signed was offline for all the ordinary people without a publisher ID.&lt;/p&gt; &lt;p&gt;A real shame, just now when unsigned great applications like “RockNScroll” are being published and people can’t use it because of the nerving signing process.&lt;br /&gt;Signing has been introduced by Symbian to raise security, but the current result is more than disappointing. The basic idea doesn’t seem bad, but signing should at least be possible EVERYTIME.&lt;/p&gt; &lt;p&gt;&lt;span id="more-624"&gt;&lt;/span&gt;It’s clear that this is not the case. The current offline state is no exception. Symbian Signed had quite much failures in the past. This keeps not only developers away from developing for Symbian, also newbies are not able to use great 3rd party software.&lt;/p&gt; &lt;p&gt;Although we don’t know anything about Symbian Signed is working at the problems for ordinary users, &lt;strong&gt;Symbian Signed has finally announced today an overworked signing service for developers without a publisher ID:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;We will commence roll-out the Beta version of Open Signed Online at the beginning of next week.&lt;/p&gt; &lt;div&gt;As demand is currently higher than the PKI signing capacity, you may experience some restrictions on availability. We are in the process of adding new PKI signing hardware to the signing service to increase signing capacity (but this will take several weeks to configure)As outlined below there is a maximum number of requests that we can service each hour which limits the number of users that can request at one time.Open Signed Online Beta will be available next week with the following restrictions: &lt;ul&gt;&lt;li&gt;• The Open Signed Online process is fully described &lt;a href="http://developer.symbian.com/main/downloads/files/TheCompleteGuideToSymbianSigned.zip"&gt;here &lt;/a&gt;&lt;/li&gt;&lt;li&gt;• During initial stages of the Open Signed Online beta, the service may only be available from &lt;span fn_index="0" info="Call +6509001500;0;+6509001500;0;" onmouseup="SetCallButtonPressed(this, 0,0)" onmousedown="SetCallButtonPressed(this, 1,0)" onmouseover="SetCallButton(this, 1,0);skype_active=CheckCallButton(this);" onmouseout="SetCallButton(this, 0,0);HideSkypeMenu();" context="0900-1500" rtl="false" class="skype_tb_injection" id="__skype_highlight_id"&gt;&lt;span title="Change country code ..." onclick="javascript:if(1){doRunCMD(event, 'chdial','0');}else{doRunCMD(event, 'call','+6509001500');}event.preventBubble();return false;" onmouseout="SetCallButtonPart(this, 0);" onmouseover="SetCallButtonPart(this, 1);" class="skype_tb_injection_left" id="__skype_highlight_id_left"&gt;&lt;span style="background-image: url(chrome://skype_ff_toolbar_win/content/cb_normal_l.gif);" class="skype_tb_injection_left_img" id="__skype_highlight_id_left_adge"&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/cb_transparent_l.gif" style="height: 11px; width: 7px;" class="skype_tb_img_adge" height="11" /&gt;&lt;/span&gt;&lt;span class="skype_tb_injection_left_img" id="__skype_highlight_id_left_img"&gt;&lt;img style="width: 16px;" src="chrome://skype_ff_toolbar_win/content/famfamfam/sg.gif" title="" class="skype_tb_img_flag" name="skype_tb_img_f0" /&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/space.gif" style="margin: 0px; padding: 0px; height: 1px; width: 1px;" class="skype_tb_img_space" height="1" width="1" /&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/space.gif" style="margin: 0px; padding: 0px; height: 1px; width: 1px;" class="skype_tb_img_space" height="1" width="1" /&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/arrow.gif" title="" class="skype_tb_img_arrow" name="skype_tb_img_a0" /&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/space.gif" style="margin: 0px; padding: 0px; height: 1px; width: 1px;" class="skype_tb_img_space" height="1" width="1" /&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/space.gif" style="margin: 0px; padding: 0px; height: 1px; width: 1px;" class="skype_tb_img_space" height="1" width="1" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/space.gif" style="margin: 0px; padding: 0px; height: 1px; width: 1px;" class="skype_tb_img_space" height="1" width="1" /&gt;&lt;span title="Call this phone number in Singapore with Skype: +6509001500" onclick="javascript:doRunCMD(event, 'call','+6509001500');event.preventBubble();return false;" onmouseout="SetCallButtonPart(this, 0)" onmouseover="SetCallButtonPart(this, 1)" class="skype_tb_injection_right" id="__skype_highlight_id_right"&gt;&lt;span class="skype_tb_innerText" id="__skype_highlight_id_innerText"&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/space.gif" style="margin: 0px; padding: 0px; height: 1px; width: 1px;" class="skype_tb_img_space" height="1" width="1" /&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/space.gif" style="margin: 0px; padding: 0px; height: 1px; width: 1px;" class="skype_tb_img_space" height="1" width="1" /&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/space.gif" style="margin: 0px; padding: 0px; height: 1px; width: 1px;" class="skype_tb_img_space" height="1" width="1" /&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/space.gif" style="margin: 0px; padding: 0px; height: 1px; width: 1px;" class="skype_tb_img_space" height="1" width="1" /&gt;0900-1500&lt;/span&gt;&lt;span style="background-image: url(chrome://skype_ff_toolbar_win/content/cb_normal_r.gif);" class="skype_tb_injection_left_img" id="__skype_highlight_id_right_adge"&gt;&lt;img src="chrome://skype_ff_toolbar_win/content/cb_transparent_r.gif" style="height: 11px; width: 19px;" class="skype_tb_img_adge" height="11" /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; GMT (UK time) Monday-Friday.&lt;/li&gt;&lt;li&gt;• Until capacity is increased with additional servers, there is a maximum number of requests that can be serviced each hour, if there is excessive demand (which is expected), some users may find Open Signed Online beta is not available.&lt;/li&gt;&lt;li&gt;• As for any beta, there may be issues that impact the performance and/or functionality of the service. Such problems may result in the service being taken off-line at short notice and/or for extended periods.&lt;/li&gt;&lt;li&gt;• Note: Open Signed Online does not allow you to sign a SIS that uses a UID from the “Protected Range”, unless the email address you use for Open Signed Online MATCHES the email address of the account which owns/created the UID.&lt;/li&gt;&lt;li&gt;• If you attempt to sign the same SIS file in rapid succession, the service you receive will proportionally slow down. This is to provide fair access to all.&lt;/li&gt;&lt;li&gt;• Installation of the signed SIS file will be restricted to a single IMEI (i.e. mobile phone) that you enter and valid for 36 months.&lt;/li&gt;&lt;li&gt;• SIS files that have been Open Signed will present a notification upon installation that the SIS file is intended for development purposes only.&lt;/li&gt;&lt;li&gt;• SIS files can be signed for all Platform Security Capabilities except CommDD, MultimediaDD, NetworkControl, DiskAdmin, DRM, AllFiles, TCB.&lt;/li&gt;&lt;/ul&gt; &lt;/div&gt; &lt;p&gt;Let’s hope that the new Open Signed service will win over even more developers for Symbian. And Symbian Signed should work on the signing problems for normal people…&lt;/p&gt; More information: &lt;a href="http://www.symbiansigned.com/app/page"&gt;http://www.symbiansigned.com/app/page&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/32555365-2265038529778720986?l=skumarmobiledev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://skumarmobiledev.blogspot.com/feeds/2265038529778720986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=32555365&amp;postID=2265038529778720986' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2265038529778720986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/32555365/posts/default/2265038529778720986'/><link rel='alternate' type='text/html' href='http://skumarmobiledev.blogspot.com/2008/03/open-signed-online-starts-next-week-i.html' title=''/><author><name>Sunil kumar</name><uri>http://www.blogger.com/profile/18300467193134157942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_ZAjT-2iZ9R8/SydWgYyC9zI/AAAAAAAAAiI/5Jt_DFMwV5o/S220/Sunil78x78.jpg'/></author><thr:total>0</thr:total></entry></feed>
