<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="http://blogs.forum.nokia.com/styles/rss.css" type="text/css"?>
<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns="http://my.netscape.com/rdf/simple/0.9/"
>

 <channel>
  <title>Li Yongfei&#039;s Forum Nokia Blog</title>
  <link>http://blogs.forum.nokia.com/blog/li-yongfeis-forum-nokia-blog</link>
  <description>&lt;p&gt;sharing my experience with others! Welcome to my blog. Welcome to my website Http://www.symbianer.com&lt;/p&gt;
</description>
 </channel>
    <item>
   <title>Making TimeLine Control</title>
   <description>&lt;div class=&quot;post-body&quot;&gt;The timelnie in puzzle games, lifetime in fighting games, that is a very normol element.&lt;br /&gt;The following article will tell you how to make a timeline control step by step in S60.&lt;br /&gt;&lt;br /&gt;Author Website: &lt;a href=&quot;http://www.symbianer.com&quot;&gt;http://www.symbianer.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The keywords of artile: window, custom control, time, periodic.&lt;br /&gt;&lt;img src=&quot;https://blogs.forum.nokia.com/file.html?id=203&amp;amp;file=timeline.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;Frist, you need reffer to tow articles&lt;br /&gt;I.Symbian OS: Creating Custom Controls&lt;br /&gt;you can download here&amp;gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;II.Periodic timer active object.&lt;br /&gt;Developer Library &amp;gt;&amp;gt; API Reference &amp;gt;&amp;gt; C++ API reference &amp;gt;&amp;gt; Timers and Timing Services &amp;gt;&amp;gt; CPeriodic&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;1. Class Declaration:&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;span style=&quot;color: rgb(51, 153, 102);&quot;&gt;class CMyTimerContainer : public CCoeControl&lt;br /&gt;{&lt;br /&gt;&amp;#160;public:&lt;br /&gt;&amp;#160; &amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; void ConstructL(TInt aSecond ,TPoint aPoint, TSize aSize); // Initialize Seconds, Position, Size Of Timeline Control&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ~CMyTimerContainer();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; void Draw(const TRect&amp;amp; aRect) const;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; static TInt Start__(TAny* aObject);&amp;#160;&amp;#160; &amp;#160;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; void Start_();&lt;br /&gt;private: //data&lt;br /&gt;&lt;br /&gt;&amp;#160; CPeriodic* iPeriodic;&lt;br /&gt;&amp;#160; TInt iLeft; //Left times&lt;br /&gt;&amp;#160; TInt iTotal;//Total times&lt;br /&gt;&amp;#160; TPoint iPoint; //control position,&lt;br /&gt;&amp;#160; TSize iSize; //Control size&lt;br /&gt;}&lt;/span&gt;&lt;span style=&quot;color: rgb(51, 153, 102);&quot;&gt;&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;font color=&quot;#008000&quot;&gt;&lt;span style=&quot;font-weight: bold; color: rgb(0, 0, 0);&quot;&gt;2. Periodic Functions:&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238); color: rgb(51, 153, 102);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;TInt CMyTimerContainer::Start__(TAny* aObject)&lt;br /&gt;{&lt;br /&gt;&amp;#160; ((CMyTimerContainer*)aObject)-&amp;gt;Start_(); // cast, and call non-static function&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return 1;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void CMyTimerContainer::Start_()&lt;br /&gt;{&lt;br /&gt;&amp;#160; iLeft--;&lt;br /&gt;&amp;#160; if(iLeft==0)&lt;br /&gt;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DrawNow();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; iPeriodic-&amp;gt;Cancel();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return;&lt;br /&gt;&amp;#160; }&lt;br /&gt;&amp;#160; DrawNow();&lt;br /&gt;}&lt;/font&gt;&lt;/div&gt;
&lt;font color=&quot;#008000&quot;&gt;&lt;span style=&quot;font-weight: bold; color: rgb(0, 0, 0);&quot;&gt;3. Draw Funciton&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/font&gt;
&lt;div style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238); color: rgb(51, 153, 102);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;void CMyTimerContainer::Draw(const TRect&amp;amp; aRect) const&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CWindowGc&amp;amp; gc = SystemGc();&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /*Draw BackGround*************************/&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; gc.SetBrushColor( KRgbBlack );&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; gc.SetBrushStyle( CGraphicsContext::ESolidBrush );&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; gc.DrawRect(aRect);&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /*Drar Timeline*************************/&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; gc.SetBrushStyle( CGraphicsContext::ESolidBrush );&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; gc.SetBrushColor( KRgbRed );&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; gc.SetPenStyle( CGraphicsContext::ENullPen );&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; gc.DrawRect( TRect(TSize(iLeft*Size().iWidth/iTotal,iSize.iHeight)) );&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/div&gt;
&lt;font color=&quot;#008000&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; color: rgb(0, 0, 0);&quot;&gt;4. Construct Function&lt;/span&gt;&lt;br /&gt; &lt;/font&gt;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238); color: rgb(51, 153, 102);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;void CMyTimerContainer::ConstructL(TInt aSecond ,TPoint aPoint, TSize aSize)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CreateWindowL();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; iTotal = aSecond;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; iLeft = iTotal;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; iPoint = aPoint;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; iSize = aSize;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; iPeriodic = CPeriodic::NewL(CActive::EPriorityIdle);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; iPeriodic-&amp;gt;Start(0/*8000000*/, 1000000/*35714*/, TCallBack(Start__, this));&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SetExtent(aPoint,aSize);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ActivateL();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/div&gt;
&lt;font color=&quot;#008000&quot;&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold; color: rgb(0, 0, 0);&quot;&gt;5. How To Use The Timeline Custom Control&lt;/span&gt;&lt;br /&gt; &lt;/font&gt;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238); color: rgb(51, 153, 102);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;a.Add Custom Control in XXXContainer.h&lt;br /&gt;&amp;#160;&amp;#160; private: //data&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CMyTimerContainer* iTimer;&lt;br /&gt;&lt;br /&gt;b,Initialize Seconds, Position, Size Of Timeline Control&lt;br /&gt;void CXXXXContainer::ConstructL(const TRect&amp;amp; aRect)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CreateWindowL();&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; iTimer =&amp;#160; new (ELeave) CMyTimerContainer;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; iTimer-&amp;gt;ConstructL( 60/*init seconds*/,TPoint(0,100),TSize(176,15),this);&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SetRect(aRect);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ActivateL();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/div&gt;
&lt;font color=&quot;#008000&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;You can reffer to the codes of article to modify your codes. Welcome to &lt;/span&gt;&lt;/font&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;comment&amp;#160; &lt;/span&gt;&lt;/font&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;here.&lt;br /&gt;&lt;/span&gt;&lt;/font&gt;&lt;a href=&quot;http://www.symbianer.com/UserFiles/File/sis/TimeLiner-control.rar&quot;&gt;Download&amp;#160;Source  Codes&amp;gt;&amp;gt;&lt;/a&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt; &lt;br /&gt;English Version: &lt;a target=&quot;_blank&quot; href=&quot;http://www.symbianer.com/post/custom-control-timeline-en.html&quot;&gt;http://www.symbianer.com/post/custom-control-timeline-en.html&lt;/a&gt;&lt;br /&gt;Chinese Version: &lt;a href=&quot;http://www.symbianer.com/post/custom-control-timeline.html&quot;&gt;http://www.symbianer.com/post/custom-control-timeline.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mail: N-office@163.com&lt;br /&gt;Website: &lt;a href=&quot;http://www.symbianer.com&quot;&gt;http://www.symbianer.com&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;/span&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;br style=&quot;color: rgb(0, 0, 0);&quot; /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;</description>
   <link>http://blogs.forum.nokia.com/blog/li-yongfeis-forum-nokia-blog/2006/07/20/making-timeline-control</link>
      <pubDate>Thu, 20 Jul 2006 10:44:28 +0300</pubDate>   
  </item>
    <item>
   <title>Carbide.c++ team blog on S60.com</title>
   <description>The Carbide.c++ development team has&amp;#160;created its own blog on S60.com. There  Carbide.c++ team will post the detail of their&amp;#160;daily work, in which abstract  customer requirements are translated into actual product design.
&lt;div class=&quot;post-body&quot;&gt;
&lt;p&gt;&lt;strong&gt;The recent articles:&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://blogs.s60.com/creatingcarbidecpp/2006/06/carbidec_nears_beta_1.html&quot;&gt;Carbide.c++ nears Beta&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Carbide.c++  Developer/Professional v1.1 is nearing its beta launch -- we expect to have  product available for our closed beta group by the end of the month. Forum Nokia  PRO availability (via the tools alpha) is also planned. This will be the final  opportunity for beta testers to review the product and submit bug reports. So  far, based on the feedback we&#039;ve received from our beta group we&#039;ve managed to  do some significant changes to the product relatively close to our feature  complete date. The beta will reflect our view of what the product should look  like, except for a few things like getting icons, docs, licensing, and the  webstore into place...&lt;strong&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://blogs.s60.com/creatingcarbidecpp/2006/06/forum_nokia_tutorial_templates_1.html&quot;&gt;&lt;br /&gt;&lt;br /&gt;C++ tutorial templates&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/strong&gt;Previously C++ project  tutorials (that ship with the SDK or are available on Forum Nokia) have  consisted of a separate doc and zip file containing the project that required  you to import the MMP and open the instructions in a PDF reader. In order to  make learning about S60 a little easier, one of our developers is investigating  a more convenient way of accessing programming examples, to be delivered in v1.2  (or 1.1 if we&#039;re lucky). Take a look...&lt;br /&gt;&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://blogs.s60.com/creatingcarbidecpp/&quot;&gt;Get More  informations and&amp;#160;news about Carbibe.c++&amp;#160;&amp;gt;&amp;gt;&lt;/a&gt;&lt;/p&gt;
&lt;br /&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.symbianer.com&quot;&gt;http://www.symbianer.com&lt;/a&gt; &lt;/div&gt;</description>
   <link>http://blogs.forum.nokia.com/blog/li-yongfeis-forum-nokia-blog/2006/06/16/carbide.c-team-blog-on-s60.com</link>
      <pubDate>Fri, 16 Jun 2006 19:36:15 +0300</pubDate>   
  </item>
    <item>
   <title>TIP: Using extended filename Launching an application</title>
   <description>&lt;p&gt;&lt;br /&gt;Today, In Nokia Forum Discussion I found a developer&amp;#160;ask this question, this is a frequently asked questions. So I write this TIP. I wish it can help more developers. (author website: &lt;a target=&quot;_ablank&quot; href=&quot;http://www.symbianer.com&quot;&gt;http://www.symbianer.com&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;Q: How to use extended filename launch an application?&amp;#160; &lt;br /&gt;&lt;br /&gt;A: If your document is clicked on, a recognizer will run to launch your app and pass it the filename. OpenFileL() will be invoked on that file by default. About recognizer, you can reffer to the s60 sdk Document Handling&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Document File Creation&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;To further reduce application startup time, Series 60 by default disables document file creation and opening. In other words, CAknDocument::OpenFileL() returns NULL. OpenFileL() is called by the framework during application initialization, and returns the file store containing the application&amp;#8217;s document. Series 60 applications must override CAknDocument::OpenFileL() if they need to store and restore data.&lt;/p&gt;
&lt;div style=&quot;MARGIN-LEFT: 1em&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/div&gt;
&lt;div style=&quot;BORDER-RIGHT: rgb(105,140,195) 1px solid; PADDING-RIGHT: 8px; BORDER-TOP: rgb(105,140,195) 1px solid; PADDING-LEFT: 8px; PADDING-BOTTOM: 8px; MARGIN: 3px 1em 1em; BORDER-LEFT: rgb(105,140,195) 1px solid; PADDING-TOP: 8px; BORDER-BOTTOM: rgb(105,140,195) 1px solid; BACKGROUND-COLOR: rgb(238,238,238)&quot;&gt;&lt;font color=&quot;#339900&quot;&gt;in cAknDocument &lt;br /&gt;class CAknDocument : public CEikDocument&lt;br /&gt;{&lt;br /&gt;&amp;#160;public: // from CEikDocument&lt;br /&gt;&amp;#160;&amp;#160; IMPORT_C CFileStore* OpenFileL(TBool aDoOpen,const TDesC&amp;amp; aFilename,RFs&amp;amp; aFs);&lt;br /&gt;&amp;#160;protected:&lt;br /&gt;&amp;#160;&amp;#160; IMPORT_C CAknDocument(CEikApplication&amp;amp; aApp);&lt;br /&gt;};&lt;/font&gt;&lt;/div&gt;
&lt;p&gt;When you clicked your document, the file path and file name will pass by &amp;quot;aFilename&amp;quot;, so you can use &amp;quot;aFilename&amp;quot; to get the&amp;#160; informations of your clicked file.&lt;br /&gt;&lt;br /&gt;you can visit my website get more tips.&lt;br /&gt;&lt;br /&gt;website: &lt;a target=&quot;_ablank&quot; href=&quot;http://www.symbianer.com&quot;&gt;http://www.symbianer.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;#160;&lt;/p&gt;</description>
   <link>http://blogs.forum.nokia.com/blog/li-yongfeis-forum-nokia-blog/2006/06/16/tip-using-extended-filename-launching-an-application</link>
      <pubDate>Fri, 16 Jun 2006 05:47:05 +0300</pubDate>   
  </item>
    <item>
   <title>A small tool to get the members of the TKeyEvent class</title>
   <description>&lt;h1 class=&quot;Prototype&quot;&gt;A&amp;#160;small tool&amp;#160;to get the members of the TKeyEvent class&lt;br /&gt;&lt;/h1&gt;
&lt;p class=&quot;Prototype&quot;&gt;When processing a &lt;code&gt;TKeyEvent&lt;/code&gt;, the &lt;code class=&quot;ApiItem&quot; style=&quot;font-weight: bold;&quot;&gt;TStdScanCode&lt;/code&gt; in &lt;code class=&quot;ApiItem&quot; style=&quot;font-weight: bold;&quot;&gt;iScanCode&lt;/code&gt; should usually be ignored in favour of the &lt;code class=&quot;ApiItem&quot; style=&quot;font-weight: bold;&quot;&gt;TKeyCode&lt;/code&gt; in &lt;code class=&quot;ApiItem&quot; style=&quot;font-weight: bold;&quot;&gt;iCode&lt;/code&gt;. Using &lt;code&gt;iScanCode&lt;/code&gt; would bypass the keyboard mapping and any FEP that happens to be installed. The exceptions to this general rule are games where the positions of the keys are more important than their translations, and FEPs that are implementing keyboard maps themselves. In these cases, if the &lt;code&gt;iCode&lt;/code&gt; is used rather than &lt;code&gt;iScanCode&lt;/code&gt; to determine the key pressed, there will be two unfortunate consequences. Firstly, the low-level keyboard mapping might re-arrange the mapping that you are trying to impose. Secondly, you will subvert the CTRL+number method of entering Unicode literals.&lt;/p&gt;
&lt;p class=&quot;Prototype&quot;&gt;above-mentioned contents refers&amp;#160;to the &lt;a href=&quot;http://www.symbian.com/Developer/techlib/v9.1docs/doc_source/reference/reference-cpp/N1023E/TKeyEventStruct.html&quot;&gt;TKeyEvent in S60 SDK. &lt;/a&gt;&lt;/p&gt;
&lt;h4 class=&quot;Prototype&quot;&gt;in w32std.h file &lt;/h4&gt;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;struct TKeyEvent&lt;br /&gt;&amp;#160;{&lt;br /&gt;&amp;#160;//Key codes for special keys are defined in TKeyCode.&amp;#160;&lt;br /&gt;&amp;#160;TUint iCode;&lt;br /&gt;&amp;#160;//The scan code of the key that caused the event.&lt;br /&gt;//Standard scan codes are defined in TStdScanCode.&amp;#160;&lt;br /&gt;&amp;#160;TInt iScanCode;&lt;br /&gt;&amp;#160;//State of modifier keys and pointing device. Modifier keys are defined in TEventModifier.&lt;br /&gt;&amp;#160;TUint iModifiers;&lt;br /&gt;&amp;#160;/** Count of auto repeats generated.0 means an event without repeats. 1 or more means &amp;quot;this many auto repeat events&amp;quot;. &lt;br /&gt;&amp;#160;It is normal to ignore this value and treat it as a single event. */&lt;br /&gt;&amp;#160;TInt iRepeats;&lt;br /&gt;&amp;#160;};&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;This tool can display the key codes in screen. for example when you press a &amp;quot;Ok&amp;quot;, the screen like this:&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;border: 1px solid rgb(105, 140, 195); margin-left: 1em; width: 352px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;https://blogs.forum.nokia.com/file.html?id=140&amp;amp;file=mybmp.jpg&quot; /&gt;&lt;/font&gt;&lt;/div&gt;
&lt;font color=&quot;#008000&quot;&gt;&amp;#160;&lt;br /&gt;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;click this link to download this tool: &lt;a target=&quot;blank&quot; href=&quot;http://www.symbianer.com/&quot;&gt;KeyCodeExample.sis(S60 2rd FP3)&lt;/a&gt;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/div&gt;</description>
   <link>http://blogs.forum.nokia.com/blog/li-yongfeis-forum-nokia-blog/2006/05/27/a-small-tool-to-get-the-members-of-the-tkeyevent-class</link>
      <pubDate>Sat, 27 May 2006 04:25:09 +0300</pubDate>   
  </item>
    <item>
   <title>Using Theme in an Application</title>
   <description>&lt;h1&gt;Using Theme in an Application&lt;br /&gt;&lt;/h1&gt;
&lt;div&gt;This article can tell you how to&amp;#160;write a enable skins application.&lt;/div&gt;
&lt;div&gt;You can use theme in an Application&amp;#160;after version in Series 60 Platform  2.0. the following content will&amp;#160;tell you how to do these step by step.&lt;/div&gt;
&lt;img border=&quot;0&quot; src=&quot;https://blogs.forum.nokia.com/file.html?id=121&amp;amp;file=screenshot.jpg&quot; alt=&quot;&quot; /&gt;
&lt;h4&gt;Link against aknskins.lib and include files&lt;/h4&gt;
&lt;div&gt;&lt;strong&gt;Add the libray named aknskins.lib in SkinSample.mmp&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&amp;#160;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/div&gt;
&lt;div style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;LIBRARY aknskins.lib // link against  aknskins.lib&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;strong&gt;Add two include files in  SkinExampleContainer.h&lt;/strong&gt;
&lt;div&gt;&amp;#160;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/div&gt;
&lt;div dragover=&quot;true&quot; style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;#include &amp;lt;AknsDrawUtils.h&amp;gt;// add this  inlcude file skin&lt;br /&gt;#include &amp;lt;AknsBasicBackgroundControlContext.h&amp;gt; //add  this inlcude file skin&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;#160;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Enabling skins&amp;#160;in AppUi&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/div&gt;
&lt;div dragover=&quot;true&quot; style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;/* In SkinExampleAppUi.cpp */&lt;/font&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;void CSkinExampleAppUi::ConstructL()&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;  BaseConstructL( EAknEnableSkin );//Construct a enalbe skin&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;.....&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;new and delete a MAknsControlContext class in Container  class&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Add a MAknsControlContext class in container class&lt;/strong&gt;&lt;/div&gt;
&lt;div dragover=&quot;true&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;br /&gt;&lt;/font&gt;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/div&gt;
&lt;div dragover=&quot;true&quot; style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;/* In skinExampleContainer.h */&lt;/font&gt;
&lt;div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;class CSkinExampleContainer : public CCoeControl,  MCoeControlObserver&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;{&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;&amp;#160;....&amp;#160;&amp;#160;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;&amp;#160;&amp;#160;private:&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;&amp;#160;&amp;#160;&lt;font color=&quot;#ff0000&quot;&gt;MAknsControlContext*  iBackGround;&lt;/font&gt; // for skins support&amp;#160;&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;}&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&amp;#160;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;/* In SkinExapleContainer.cpp */&amp;#160;&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;void CSkinExampleContainer::ConstructL(const TRect&amp;amp;  aRect)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CreateWindowL();&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&amp;#160;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;&amp;#160;&amp;#160;&amp;#160; iLabel = new (ELeave) CEikLabel;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;  iLabel-&amp;gt;SetContainerWindowL( *this );&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; iLabel-&amp;gt;SetTextL( _L(&amp;quot;Skin  Example&amp;quot;) );&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&amp;#160;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;&amp;#160;&amp;#160;&amp;#160; SetRect(aRect);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color=&quot;#ff0000&quot;&gt;iBackGround = CAknsBasicBackgroundControlContext::NewL(  KAknsIIDQsnBgAreaMain, Rect(), EFalse );//&lt;/font&gt; new a background &lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;&amp;#160;&amp;#160;&amp;#160; ActivateL();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;#160;&lt;/div&gt;
&lt;div&gt;&lt;strong&gt;Delete iBackGroud&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div dragover=&quot;true&quot;&gt;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/div&gt;
&lt;div dragover=&quot;true&quot; style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;//  Destructor&lt;br /&gt;CSkinExampleContainer::~CSkinExampleContainer()&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;  {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;.....&lt;/font&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;&amp;#160;&lt;font color=&quot;#ff0000&quot;&gt;delete iBackGround;&lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;  }&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;#160;&lt;/div&gt;
&lt;h4&gt;Draw the background bitmap using Skin library&lt;/h4&gt;
&lt;div dragover=&quot;true&quot;&gt;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/div&gt;
&lt;div dragover=&quot;true&quot; style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;/* In SkinExapleContainer.cpp */&lt;/font&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;void CSkinExampleContainer::Draw(const TRect&amp;amp;  aRect) const&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; CWindowGc&amp;amp; gc = SystemGc();&lt;br /&gt;&amp;#160;// draw  background&lt;br /&gt;&amp;#160;&lt;font color=&quot;#ff0000&quot;&gt;MAknsSkinInstance* skin =  AknsUtils::SkinInstance();&lt;/font&gt;//new&lt;br /&gt;&amp;#160;&lt;font color=&quot;#ff0000&quot;&gt;MAknsControlContext* cc = AknsDrawUtils::ControlContext( this  );&lt;/font&gt;//new&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;font color=&quot;#ff0000&quot;&gt;AknsDrawUtils::Background( skin, cc,  this, gc, aRect );&lt;/font&gt;//new&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&amp;#160;&lt;/div&gt;
&lt;h4&gt;MObjectProvider Chains&lt;/h4&gt;
&lt;div&gt;MObjectProvider interface can be used to make object instances available to  child controls.&lt;/div&gt;
&lt;div&gt;MopSupplyObject returns a pointer based on the given UID.&lt;/div&gt;
&lt;div&gt;&amp;#160;&lt;/div&gt;
&lt;div dragover=&quot;true&quot;&gt;
&lt;div style=&quot;margin-left: 1em;&quot;&gt;&lt;em&gt;Code:&lt;/em&gt;&lt;/div&gt;
&lt;div dragover=&quot;true&quot; style=&quot;border: 1px solid rgb(105, 140, 195); margin: 3px 1em 1em; padding: 8px; background-color: rgb(238, 238, 238);&quot;&gt;&lt;font color=&quot;#008000&quot;&gt;/* In SkinExapleContainer.cpp */&lt;/font&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;TTypeUid::Ptr  CSkinExampleContainer::MopSupplyObject(TTypeUid aId)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;&amp;#160;&amp;#160;&amp;#160; if(aId.iUid == MAknsControlContext::ETypeId &amp;amp;&amp;amp;  iBackGround)&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return  MAknsControlContext::SupplyMopObject( aId, iBackGround);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;  }&lt;/font&gt;&lt;/div&gt;
&lt;div&gt;&amp;#160;&lt;/div&gt;
&lt;div&gt;&lt;font color=&quot;#008000&quot;&gt;&lt;font color=&quot;#ff0000&quot;&gt;&amp;#160;&amp;#160;&amp;#160; return  CCoeControl::MopSupplyObject( aId );&lt;br /&gt;&lt;/font&gt;&amp;#160;&amp;#160;&amp;#160;  }&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;strong&gt;Note: If you want to get the source code about this  article ,plz link to &lt;a href=&quot;http://www.symbianer.com&quot;&gt;http://www.symbianer.com&lt;/a&gt;.&lt;/strong&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</description>
   <link>http://blogs.forum.nokia.com/blog/li-yongfeis-forum-nokia-blog/2006/05/22/using-theme-in-an-application</link>
      <pubDate>Mon, 22 May 2006 15:54:10 +0300</pubDate>   
  </item>
    <item>
   <title>Flash Lite 2.0 in S60 3rd Edition, Feature Pack 1</title>
   <description>&lt;h1&gt;Flash Lite 2.0 in S60 3rd Edition, Feature Pack 1&lt;/h1&gt;
&lt;p&gt;Flash Lite 2 will be available for wide implementation in devices starting  with s60 3rd Edition FP1.Also Nokia S40 plans to implement support for Flash  Lite2&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;click here to read more &lt;a href=&quot;http://www.s60.com/pics/pdf/S60_Flash_Lite_May.pdf&quot;&gt;S60_Flash_Lite_May.pdf&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;&lt;font color=&quot;blue&quot; /&gt;&lt;/div&gt;</description>
   <link>http://blogs.forum.nokia.com/blog/li-yongfeis-forum-nokia-blog/2006/05/20/flash-lite-2.0-in-s60-3rd-edition-feature-pack-1</link>
      <pubDate>Sat, 20 May 2006 04:36:57 +0300</pubDate>   
  </item>
  </rdf:RDF>

