<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-1940111982610564587</atom:id><lastBuildDate>Sat, 19 Dec 2009 06:19:04 +0000</lastBuildDate><title>মুখোশে মেফিস্টোফিলিস</title><description></description><link>http://pritorius.blogspot.com/</link><managingEditor>pritorius@gmail.com (pritorius)</managingEditor><generator>Blogger</generator><openSearch:totalResults>45</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-561552830942323830</guid><pubDate>Tue, 20 Oct 2009 06:19:00 +0000</pubDate><atom:updated>2009-10-20T12:33:13.566+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>S60 2nd</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><category domain='http://www.blogger.com/atom/ns#'>S60 3rd</category><category domain='http://www.blogger.com/atom/ns#'>C++</category><title>Periodic task without using Active Objects</title><description>Sometimes you may want to call a function or do some task in regular interval without extending the class from CActive (i.e. You may want to show a informationNote on map - just like google maps does ;-)) . In that Situation it would be appropriate to a CPeriodic Object. Usage is trivial -&lt;br /&gt;In the header file add:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;      CPeriodic* iTimer;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Use two functions which should look like following&lt;br /&gt;&lt;br /&gt;/*Use this function whenever you have to start the time*/&lt;br /&gt;&lt;span style="font-style: italic;"&gt;void StartTimerL(TInt aStart, TInt aInterval)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    {&lt;br /&gt;   if(iTimer)&lt;br /&gt;  {&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;        delete iTimer;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;        iTimer = NULL;&lt;/span&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    iTimer = CPeriodic::NewL(EPriorityLow);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    iTimer-&gt;Start(aStart, aInterval, TCallBack(TimerCallback, this));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;/*This function will be called after the specified interval*/&lt;br /&gt;&lt;span style="font-style: italic;"&gt;TInt TimerCallback(TAny* aThis)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    {&lt;/span&gt;&lt;br /&gt; // Do whatever you have to do locally or you may call the following function&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   static_cast&lt;&gt;(aThis)-&gt;GlobalNoteProcessTimerEvent();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;   return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;  &lt;/span&gt;  }&lt;br /&gt;&lt;br /&gt;/*Use this function to stop the timer*/&lt;br /&gt;void CancelTimer()&lt;br /&gt;{&lt;br /&gt;  iTimer-&gt;Cancel();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Thats it!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-561552830942323830?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2009/10/periodic-task-without-using-active.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-6691030628032566779</guid><pubDate>Thu, 08 Oct 2009 04:39:00 +0000</pubDate><atom:updated>2009-10-08T10:46:01.946+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><category domain='http://www.blogger.com/atom/ns#'>S60 3rd</category><title>Transparent Animated GIF</title><description>I was trying to show an animated GIF over the maps as a blip to indicate user's position on the map. But I could not show a gif with transparent background. The gif background was shown to be white although the gif uimage had a transparent background. Then I changed a few lines of the &lt;a href="http://wiki.forum.nokia.com/index.php/Showing_GIF_animations"&gt;tutorial&lt;/a&gt; and then it worked. The lines I have changed is as follows :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;void CGifAnimatorContainer::Draw(const TRect&amp;amp; aRect) const&lt;br /&gt;    {&lt;br /&gt;        CWindowGc&amp;amp; gc = SystemGc();&lt;br /&gt;        if(iIsVisible)&lt;br /&gt;        {&lt;br /&gt;            if(iGif_Reader)&lt;br /&gt;            {&lt;br /&gt;                if(iGif_Reader-&gt;Bitmap() &amp;amp;&amp;amp; iGif_Reader-&gt;BitmapImg() &amp;amp;&amp;amp; iGif_Reader-&gt;BitmapMsk())&lt;br /&gt;                {&lt;br /&gt;                    if(iGif_Reader-&gt;Bitmap()-&gt;Handle() &amp;amp;&amp;amp; iGif_Reader-&gt;BitmapImg()-&gt;Handle() &amp;amp;&amp;amp; iGif_Reader-&gt;BitmapMsk()-&gt;Handle())&lt;br /&gt;                    {&lt;br /&gt;                        TSize gifSize =  TSize(iGif_Reader-&gt;Bitmap()-&gt;SizeInPixels());&lt;br /&gt;                        TSize screenSize = TSize(aRect.Size());&lt;br /&gt;                        TRect tempRect = TRect(TPoint((screenSize.iWidth - gifSize.iWidth)/2 ,(screenSize.iHeight - gifSize.iHeight)/2),gifSize);&lt;br /&gt;                        gc.DrawBitmapMasked(tempRect,iGif_Reader-&gt;BitmapImg(),&lt;br /&gt;                            TRect(0, 0, iGif_Reader-&gt;BitmapImg()-&gt;SizeInPixels().iWidth, iGif_Reader-&gt;BitmapImg()-&gt;SizeInPixels().iHeight),&lt;br /&gt;                            iGif_Reader-&gt;BitmapMsk(), EFalse);&lt;br /&gt;                        //gc.DrawBitmapMasked&lt;br /&gt;                    }&lt;br /&gt;                }   &lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;    }&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Just replace the original function with mine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-6691030628032566779?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2009/10/transparent-animated-gif.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-4686074962333875540</guid><pubDate>Tue, 26 May 2009 18:35:00 +0000</pubDate><atom:updated>2009-05-27T00:53:07.570+06:00</atom:updated><title>Performance tips for Symbian Developers</title><description>Have you seen it? If not, take a quick look:&lt;br /&gt;&lt;embed src="http://www.box.net/static/flash/box_explorer.swf?widget_hash=rhsdvss8yu&amp;amp;v=0&amp;amp;cl=0" width="460" height="230" wmode="transparent" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-4686074962333875540?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2009/05/performance-tips-for-symbian-developers.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-7642020320397451266</guid><pubDate>Wed, 08 Apr 2009 07:44:00 +0000</pubDate><atom:updated>2009-04-08T13:54:07.422+06:00</atom:updated><title>Specifying default installation drive in .pkg file</title><description>in the .pkg file , if we want to select the installation drive (Phone memory or Memory Card)at runtime , we put a "!" instead of the drive letter. If we dont want to show the drive selection dialog during installation, we can specify the drive letter in which we want to install out exe instead of the "!" letter. Like this:&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;"C:\S60\devices\S60_3rd_FP2_SDK\epoc32\data\z\resource\apps\MyApp.rsc"-"&lt;span style="color: rgb(255, 102, 102);"&gt;C&lt;/span&gt;:\resource\apps\MyApp.rsc"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But in Visual Studio 2005 , this solution does not work if we build the .SIS file using the VS2005 IDE. So, to make this thing work we have to go to the "sis" folder under the project folder and run the following command:&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;makesis MyApp.pkg&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then this thing will work. So, what we need to do when we are using  the VS2005 as development environment is to rebuild the solution and then run the above stated command. Building the SIS file using the IDE wont work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-7642020320397451266?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2009/04/specifying-default-installation-drive.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-2294216352848063176</guid><pubDate>Mon, 16 Feb 2009 19:06:00 +0000</pubDate><atom:updated>2009-02-18T11:19:17.163+06:00</atom:updated><title>leaves and traps..... (II)</title><description>&lt;span style="font-weight: bold; font-style: italic; color: rgb(153, 51, 0);"&gt;How to work with leaves&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;We assume that a function has previously allocated memory on the heap and this memory is pointed to by a local pointer variable. Now,if a leave occurs within that function then ,that pointer will be destroyed by the Leave (As Leave unwinds the stack frame upto the TRAP macro). Lets see,&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WYKEhPq_evM/SZuYDK5Xr3I/AAAAAAAAASg/WhH4sil5I0Y/s1600-h/Leave1.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 54px;" src="http://1.bp.blogspot.com/_WYKEhPq_evM/SZuYDK5Xr3I/AAAAAAAAASg/WhH4sil5I0Y/s320/Leave1.png" alt="" id="BLOGGER_PHOTO_ID_5304000166390902642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Eventually the memory pointed to by "test" variable is unallocated and will result in a memory leak.&lt;br /&gt;How to prevent this?&lt;br /&gt;&lt;br /&gt;If we have to use any local variable which point to heap objects, we must push the variable to the CleanupStack before calling any function that may leave.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(102, 0, 0);"&gt;Important Note:&lt;/span&gt;&lt;br /&gt;1. Member variables are leave-safe&lt;br /&gt;2.Neither a constructor nor a destructor should contain code that may&lt;br /&gt;leave, since doing so would potentially leak memory.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(102, 0, 0);"&gt;Leaves Vs Panics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. Leaves occur in exceptional conditions (Out of memory or Out of disk conditions). Leaves should be handled properly to continue the normal flow of execution. Leaves do not terminate the normal flow of execution. On the other hand, Panics cannot be caught and handled.&lt;br /&gt;&lt;br /&gt;2. Leaves occur at program runtime due to exception situation. Panics , on the other hand occur at the development time. If they occur at runtime, they cannot be fixed. So, the cause pf panics should be searched and fixed at development period.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-2294216352848063176?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2009/02/leave-and-trap-ii.html</link><author>pritorius@gmail.com (pritorius)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WYKEhPq_evM/SZuYDK5Xr3I/AAAAAAAAASg/WhH4sil5I0Y/s72-c/Leave1.png' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-5513772313318368164</guid><pubDate>Mon, 16 Feb 2009 18:35:00 +0000</pubDate><atom:updated>2009-02-17T01:06:32.580+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><category domain='http://www.blogger.com/atom/ns#'>C++</category><title>Leaves and traps  (I)</title><description>&lt;div style="text-align: justify;"&gt;How funny this should sound to a Symbian C++ programmer? Till now, I do not have a clear idea on Leave and Trap mechanism of Symbian OS. Anyways, better let than never!! Here are some informations that I found essential to know about Leave - Trap mechanism of Symbian C++.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(153, 0, 0);"&gt;BASICS&lt;/span&gt;&lt;br /&gt;           1. Standard C++ exception handling mechanism adds substantially to the size of compiled code and RAM overheads (irrespective of whether the exceptions are thrown or not). That is why Symbian OS introduced the Leave - Trap mechanism. Before Symbian OS version 9 , the standars C++ exception handling were disabled in compilers so that any call to try catch or throw would result in a compilation error.But in Symbian OS 9, the standars C++ is supported (Hurrah!!!!).&lt;br /&gt;     &lt;br /&gt;            2. The Leave - Trap mechanism is an alternative to standard C++ exception and conventional error checking. In other words, Leave- Trap constitutes to lightweight error handling of Symbian OS.&lt;br /&gt;&lt;br /&gt;            3.  a "leave" (i.e. &lt;span style="font-style: italic;"&gt;User::Leave() &lt;/span&gt;or &lt;span style="font-style: italic;"&gt;User::LeaveifError()&lt;/span&gt;) suspends the code execution at the point where the leave occurs and resumes the execution at the point where the "leave" is "Trap"ped. The trap harness in Symbian is actually a "TRAP" macro. The "leave" sets the stack pointer to the context of the "TRAP" and jumps to that location.&lt;br /&gt;&lt;br /&gt;           4. User::Leave() or User::LeaveIfError() ---- Throw&lt;br /&gt;              TRAP ------------------------------------- try + catch&lt;br /&gt;&lt;br /&gt;           5. Critical Information on Leave:&lt;br /&gt;    Unlike C++ throw, a Leave will simply deallocate objects on the stack - it does not call the descriptor of that object. So, if a stack object owns a resource which must be deallocated or released as a part of destruction, that resource is not released if a leave occurs. That is why we have a class naming convention of Symbian OS which clearly states which kinds of classes can be instantiated and used safely on the stack (T classes). So, only a stack based T class will be cleaned up correctly if a Leave occurs (because there is nothing of an object of T class in any place other than stack).&lt;br /&gt;&lt;br /&gt;6.R classes may also be created on the stack, but they must be made ‘‘leave safe’’, if used in functions that may leave, by using the cleanup stack.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic; color: rgb(153, 51, 0);"&gt;new(ELeave)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1. The overloaded new operator which takes ELeave as a parameter guarantees that the pointer return value will be valid if a Leave is not occured in the constructor. Use of this overload allows the pointer to be used without further test that the allcation was successful(The allocation would leave if it were not successful).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&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/1940111982610564587-5513772313318368164?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2009/02/leaves-and-traps-i.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-6134595466269238256</guid><pubDate>Sun, 25 Jan 2009 11:13:00 +0000</pubDate><atom:updated>2009-01-25T17:40:00.092+06:00</atom:updated><title>Giving Shadowed or Custom Background to CEikEdwin</title><description>If we look at the flash lite editbox, we will observe a shadowed background in the text boxes.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_WYKEhPq_evM/SXxLniKQWoI/AAAAAAAAAR4/4M1AEBwF8Gc/s1600-h/address_input1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 194px; height: 320px;" src="http://1.bp.blogspot.com/_WYKEhPq_evM/SXxLniKQWoI/AAAAAAAAAR4/4M1AEBwF8Gc/s320/address_input1.jpg" alt="" id="BLOGGER_PHOTO_ID_5295190404437662338" border="0" /&gt;&lt;/a&gt;How can we give the shadow on the textbox background like this? Flash lite application runs on Symbian phones, so they must have done some kind of tricks using Symbian. In my application, I was required to do the same thing. There is a way to put custom drawed background on the CEikEdwin. I dont know if it is the way that flashlite used to show shadow on TextBox background, but it surely works.&lt;br /&gt;&lt;br /&gt;  The things is , you have to implement MFormCustomDraw interface. Just take a Class which looks like&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#include &lt;e32std.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#include&lt;frmtlay.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;class CMyCustomDraw : public MFormCustomDraw&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;public: // Constructors and destructor&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    virtual void DrawBackground(const TParam &amp;amp;aParam, const TRgb &amp;amp;aBackground, TRect &amp;amp;aDrawn) const;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;    virtual void DrawLineGraphics(const TParam &amp;amp;aParam, const TLineInfo &amp;amp;aLineInfo) const;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The MFormCustomDraw has two some virtual functions (Drawbackground() and DrawLineGraphics()). We have to implement these two functions (Or preferrably only the first one) in order to get a custom shadow on the  CEikEdwin background.&lt;br /&gt;So, we have to just write the implementation of DrawBackground() function. The implementation is straight forward - you have the graphics Conrtext (aParam.iGc), you have the CEikEdwin Background Rectangle (aParam.iDrawRect), so you have everything. So, just put your code in&lt;br /&gt;CMyCustomDraw::DrawBackground(const TParam &amp;amp;aParam, const TRgb &amp;amp;aBackground, TRect &amp;amp;aDrawn) const{} function.&lt;br /&gt;&lt;br /&gt;Now, how do we use it with our CEikEdwin.  Lets say, you have a CEikEdwin in your container.So, you create your CEikEdwin in the natural way and after constructing you write,&lt;br /&gt;&lt;br /&gt;CMyCustomDraw* iCustomDraw = new (ELeave) CMyCustomDraw();&lt;br /&gt;and iTextField-&gt;TextLayout()-&gt;SetCustomDraw(iCustomDraw);&lt;br /&gt;&lt;br /&gt;and not only that. In the containers draw function, you have to set it everytime.&lt;br /&gt;iTextField-&gt;TextLayout()-&gt;SetCustomDraw(iCustomDraw);&lt;br /&gt;&lt;br /&gt;This is how we do it !!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-6134595466269238256?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2009/01/giving-shadowed-or-custom-background-to.html</link><author>pritorius@gmail.com (pritorius)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_WYKEhPq_evM/SXxLniKQWoI/AAAAAAAAAR4/4M1AEBwF8Gc/s72-c/address_input1.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-2720759353750609784</guid><pubDate>Tue, 13 Jan 2009 06:42:00 +0000</pubDate><atom:updated>2009-01-13T12:53:42.985+06:00</atom:updated><title>How to get the Screen Size Anywhere in a GUI application</title><description>Just a simple line of code to access the Application related data from any file.&lt;br /&gt;If you want to access the application rectangle or screen size then -&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;CEikonEnv::Static()-&gt;EikAppUi()-&gt;ApplicationRect().Size().iWidth&lt;/span&gt;&lt;br /&gt;and you have to include -&lt;br /&gt;&lt;span style="font-style: italic;"&gt;eikenv.h&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;eikappui.h&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-2720759353750609784?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2009/01/how-to-get-screen-size-anywhere-in-gui.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-6032185343549795347</guid><pubDate>Mon, 01 Dec 2008 10:21:00 +0000</pubDate><atom:updated>2008-12-01T16:27:17.738+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Thought Of The Day</category><title>Thoughts...</title><description>Some emotions are best kept inside the heart, should never be expressed. That way, those emotions remain warm forever. Otherwise those will become stale&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-6032185343549795347?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/12/thoughts.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-7102022327648792085</guid><pubDate>Thu, 27 Nov 2008 11:04:00 +0000</pubDate><atom:updated>2008-11-27T17:06:05.429+06:00</atom:updated><title>Thoughts...</title><description>The largest selling product ever in the history of human race is not made by human, Its made by GOD - &lt;span style="font-weight: bold; font-style: italic;"&gt;The Woman&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-7102022327648792085?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/11/thoughts_27.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-6806093268380440570</guid><pubDate>Thu, 27 Nov 2008 09:59:00 +0000</pubDate><atom:updated>2008-11-27T16:02:26.335+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>PyS60</category><category domain='http://www.blogger.com/atom/ns#'>Technical</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><title>Snake on a Phone</title><description>Think I should start exploring Python for S60 phones. Happy journey to myself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-6806093268380440570?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/11/snake-on-phone.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-8364221189893946167</guid><pubDate>Sat, 15 Nov 2008 06:51:00 +0000</pubDate><atom:updated>2008-11-16T11:20:44.297+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>S60 2nd</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><category domain='http://www.blogger.com/atom/ns#'>S60 3rd</category><title>Discerning Darkness</title><description>Some things to do before I loose my fascination on Symbian for ever :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Appear for the&lt;a href="http://en.wikipedia.org/wiki/Accredited_Symbian_Developer"&gt; Symbian ASD&lt;/a&gt; examination.&lt;/li&gt;&lt;li&gt;Get my groove on&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Symbian Messaging Type Modules.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Symbian SIP.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Basics of game programming in Symbian&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-8364221189893946167?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/11/some-things-to-do-before-i-loose-my.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-4822177507205989575</guid><pubDate>Wed, 05 Nov 2008 18:16:00 +0000</pubDate><atom:updated>2008-11-06T00:18:20.949+06:00</atom:updated><title>Thoughts....</title><description>No matter how sad you are today, you will have bigger sorrow to live on tomorrow..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-4822177507205989575?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/11/thoughts.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-1942912755171600705</guid><pubDate>Mon, 03 Nov 2008 04:56:00 +0000</pubDate><atom:updated>2008-11-07T11:20:57.008+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Technical</category><category domain='http://www.blogger.com/atom/ns#'>S60 3rd</category><category domain='http://www.blogger.com/atom/ns#'>Console App</category><title>Developing a console Application That works in Background - 2</title><description>Specifically what I did to achieve the above 4 requirements is most important to document. &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;For requirement 1,&lt;/span&gt; we have to do &lt;a href="http://pritorius.blogspot.com/2008/08/symbian-console-exe-auto-run-after.html"&gt;this&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;For requirement 2,&lt;/span&gt;we have to create a console exe program. The usefulness of such programs is that it works in background. So, one cannot view the program as a task in running application viewer.&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;For requirement 3&lt;/span&gt;, we have to install an active scheduler in the ConsoleApp.cpp file (where the function &lt;span style="font-style:italic;"&gt;E32Main()&lt;/span&gt; resides). We can put the following 3 lines of code in the E32Main() function :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;        &lt;span style="font-style:italic;"&gt;CActiveScheduler* scheduler = new (ELeave) CActiveScheduler();&lt;br /&gt; CleanupStack::PushL(scheduler);&lt;br /&gt; CActiveScheduler::Install(scheduler);&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        This active scheduler is what the program will work taking the help of.Then after initializing the appropriate classes, we have to start the active scheduler. Let me give a specific example: &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_WYKEhPq_evM/SQ6LKn5gc1I/AAAAAAAAAKU/UeSQ6mRUkI8/s1600-h/1.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 190px;" src="http://3.bp.blogspot.com/_WYKEhPq_evM/SQ6LKn5gc1I/AAAAAAAAAKU/UeSQ6mRUkI8/s320/1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5264298029067826002" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;     And then in the DoStartL() function - &lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_WYKEhPq_evM/SQ6OF8CUNNI/AAAAAAAAAKc/64fsc3FSYhQ/s1600-h/2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 142px;" src="http://4.bp.blogspot.com/_WYKEhPq_evM/SQ6OF8CUNNI/AAAAAAAAAKc/64fsc3FSYhQ/s320/2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5264301247109018834" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, if any class (i.e CCallStatusNotifier or CImageDownloader in my example) is an active object type class then we can add the active object to active scheduler like this:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;span style="font-weight:bold;"&gt;void CCallStatusNotifier::ConstructL()&lt;br /&gt;{&lt;br /&gt; CActiveScheduler::Add(this);&lt;br /&gt;}&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And then you will be able to use that active scheduler like normal active scheduler&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-1942912755171600705?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/11/developing-console-application-that.html</link><author>pritorius@gmail.com (pritorius)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WYKEhPq_evM/SQ6LKn5gc1I/AAAAAAAAAKU/UeSQ6mRUkI8/s72-c/1.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-7882470530949000892</guid><pubDate>Fri, 03 Oct 2008 13:05:00 +0000</pubDate><atom:updated>2008-10-03T19:16:41.342+06:00</atom:updated><title>Thoughts.....</title><description>So long as there shall exist, by reason of law and custom, a social condemnation, which in face of civilization,artificially creates hells on earth, and complicates a destiny that is divine,with human fatality;so long as the three problems of the age - the degradation of man by poverty, the ruin of woman by starvation, and the dwarfing of childhood by physical and spiritual night - are not solved;so long as, in certain regions, social asphyxia shall be possible; in other words, and from a yet more extended point of view, so long as ignorance and misery remain on earth, books like this cannot be useless.&lt;br /&gt;                                                                       Victor Hugo(1862)&lt;br /&gt;                                                                       &lt;span style="font-weight:bold;"&gt;Les Misérables&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-7882470530949000892?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/10/thoughts.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-8659715435608098819</guid><pubDate>Sun, 31 Aug 2008 05:48:00 +0000</pubDate><atom:updated>2008-08-31T11:53:44.051+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><category domain='http://www.blogger.com/atom/ns#'>Console App</category><title>Symbian Console Exe auto run after isntalling</title><description>I have written a console exe which I need to start just after installing. This is very easy to do as they say . Just put FR,RI in the .pkg after the application name:&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;"C:\Symbian\9.2\S60_3rd_FP1\epoc32\release\gcce\urel\consoleapp.exe"-"!:\sys\bin\consoleapp.exe",FR,RI&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;But even after doing this the application was not working in the device. After getting screwed for several hours and trying some unearthly things, I resorted to a friend for help. He said that self signing wont work. I have to go to make it &lt;a href="http://www.symbiansigned.com"&gt;Symbian Signed&lt;/a&gt;. Bummer...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-8659715435608098819?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/08/symbian-console-exe-auto-run-after.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-8600682928719580663</guid><pubDate>Sun, 10 Aug 2008 11:45:00 +0000</pubDate><atom:updated>2008-10-24T18:24:42.829+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>S60 2nd</category><category domain='http://www.blogger.com/atom/ns#'>Technical</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><category domain='http://www.blogger.com/atom/ns#'>S60 3rd</category><title>Developing a console Application That works in Background - 1</title><description>May be this kinda short-ass article has been written many times before. But I am sort of a dumb-truck and I cannot remember things for long. That is why I am writing this for myself.&lt;br /&gt;&lt;br /&gt;My requirement is : I want to build an application that :&lt;br /&gt;&lt;br /&gt;1. Will Auto start right after installing.&lt;br /&gt;2. Will be a console application - so it will work on background.&lt;br /&gt;3. It will periodically do something (for now - it will write some files).&lt;br /&gt;4. May be it will have to restart whenever the device is restarted.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;          To create an Application that fulfills the above stated requirements isnt that hard if one has sufficient amount of experience with Symbian. Like, for requirement &lt;span style="font-weight:bold;"&gt;No.2&lt;/span&gt; - we can build a console Application that does not have a UI. The console Application skeleton that VS2005 creates for us have some things related to colsole which waits for user input in a command prompt like thing. Only if we scrape off all those codes , we can then have a true background Application that does not show up in the task managers running tasks and which does not have any kind of GUI either.&lt;br /&gt;         &lt;br /&gt;         Now, for requirement &lt;span style="font-weight:bold;"&gt;No.1&lt;/span&gt;  we have to write FR(FileRun) and RI(RunInstall) in the .pkg file. Here is a sample line :&lt;br /&gt;"C:\Symbian\9.1\S60_3rd\epoc32\release\gcce\urel\consoleapp.exe"-"!:\sys\bin\consoleapp.exe, FR,RI. This will make the application auto run right after installing. (Important thing: You have to make it symbian signed if you want to use it on device.Self signing does not work for FR,RI options - as far as I know!!)&lt;br /&gt;&lt;br /&gt;        For requirement &lt;span style="font-weight:bold;"&gt;No.4&lt;/span&gt; one has to look at &lt;a href="http://www.newlc.com/autostart-your-application-phone-boot"&gt;this&lt;/a&gt; , although this is for S60 2nd edition devices. They say that one has to use at least two of the four APIs described in the article. I was building the App for Symbian S60 3rd edition (init release) phones. So, I did not need the "SonyEricsson AutoStarter API".&lt;br /&gt;          &lt;br /&gt;        For requirement No.3 , we have to set up an activescheduler so that we can install an active object. And after constructing the active object and adding it to the scheduler, we have to start the scheduler(Because active scheduler needs at least one active object waiting on it when it is started.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-8600682928719580663?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/08/developing-console-application-that.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-9219479691844056287</guid><pubDate>Wed, 30 Jul 2008 07:25:00 +0000</pubDate><atom:updated>2008-07-30T13:29:13.332+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Porting</category><category domain='http://www.blogger.com/atom/ns#'>Technical</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><title>Porting from 2nd Edition to Third Edition - 3</title><description>We were trying to use the bluetooth API for S60 3rd edition(Initial Release) SDK. But, whenever we tried to discover devices , the app crashed giving the User -Exec 3 error . But in 2nd edition, this app were working fine. Then we discovered that we need to add LocalServices capability to make this work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-9219479691844056287?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/07/porting-from-2nd-edition-to-third_2794.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-6617250450771324693</guid><pubDate>Wed, 30 Jul 2008 07:12:00 +0000</pubDate><atom:updated>2008-07-30T13:25:39.676+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Porting</category><category domain='http://www.blogger.com/atom/ns#'>Technical</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><title>Porting from 2nd Edition to Third Edition - 2</title><description>We have finally made a .SIS build for Nokia N73 and uploaded it to the phone . Whenever we tried to run the app , it showed a bizarre error called &lt;span style="font-weight:bold;"&gt;"Menu System Error(-1)"&lt;/span&gt; . Now, many has got the same error while porting from 2nd edition to 3rd edition, as there were quite a few posts and individual threads about this error in &lt;a href="http://newlc.com"&gt;NewLC&lt;/a&gt; and &lt;a href="http://discussion.forum.nokia.com"&gt;Nokia Discussion Forum&lt;/a&gt;. The error is grotesque because the execution did not even come to E32Main() function. So, we were not being able to debug this thing. In many of the discussions, they were telling about the resource file (.rss), registration file (_reg.rss) problems. We tried all of those fixes and still we were getting that error. Then the solution came magically when one of the team member thought out of the box and checked to see what happens if we eliminate the .gif file that we were using. And it worked like a charm. The problem is that, the AppUi class had a reference to a class which used a .gif file for busy screen animation. And the .gif file was included in the .pkg file. What (probably!!!) happens is that when the application is invoked, it tries to load the .gif file from the specified location, but for some reasons , it does not find it (That is why it gets KErrNotFound (-1) ).We have tried to install the .gif file in many other places but still not being able to fix that problem. The problem still occurs whenever we include the .gif file in the .pkg file.Lets see if we can find the solution of this problem...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-6617250450771324693?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/07/porting-from-2nd-edition-to-third_30.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-3082163085052722034</guid><pubDate>Mon, 28 Jul 2008 05:08:00 +0000</pubDate><atom:updated>2008-07-30T13:30:34.363+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Technical</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><category domain='http://www.blogger.com/atom/ns#'>S60 3rd</category><title>Symbian 3rd Edition : Displaying Error Code on Device</title><description>In Symbian S60 3rd edition , to display error codes on emulator, we have to put a file Called "ErrRd" (without extension) in the "\Epoc32\winscw\c\resource" folder . This same file can be used to display error codes on device too. we have to just use a .sis file provided by the forum nokia . This .SIS file can be downloaded from &lt;a href="http://wiki.forum.nokia.com/index.php/TSS000254_-_How_can_I_get_extended_information_in_error_messages%3F"&gt;here&lt;/a&gt;. The .SIS file is self signed , so we dont have to worry about signing it before installing. The "ErrRd" file is then installed in the "c:\resource\" folder of the device. After installing the .SIS file , you can see the extended panic code in the device so that you can get a feel of what's going wrong. Hope this helps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-3082163085052722034?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/07/symbian-3rd-edition-displaying-error.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-9057561350698405952</guid><pubDate>Tue, 22 Jul 2008 09:51:00 +0000</pubDate><atom:updated>2008-07-30T13:31:45.534+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Technical</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><category domain='http://www.blogger.com/atom/ns#'>S60 3rd</category><title>Symbian 3rd Edition .SIS file signing</title><description>We are working on a Symbian Project. Till a couple of weeks ago, we were developing it on the Symbian S60 2nd Edition platform. But now, we have to port it for later OS'es like Symbian 9.1 and 9.2 . Now, apparently these platforms API's have more access to OS core than the previous OS'es like 8.0x or 8.1x. So, now we have to &lt;a href="https://www.symbiansigned.com/app/page/public/openSignedOnline.do"&gt;sign&lt;/a&gt; a .SIS file with the IME number of the mobile phone on which we want to install and run it. The .SIS file that is created for out project is 940 KB (!!!) and at 90% of the time we fail to upload the file. So, we had to use the self-signing process. its very good for development and debugging phase.&lt;br /&gt;  The whole procedure is simple &lt;br /&gt;  &lt;span style="font-weight:bold;"&gt;makekeys -cert -password "urPassWord" -len 512 -dname "CN=WW CO=BD" keyfile.key certfile.cer&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  here 512 is the length of the key that is created by which we have to sign the program. It should be at least 512 (I tried for like 10 because , at the time of creating the key the program asks for random mouse clicks and the more the len the &lt;br /&gt;more there are mouse clicks :-( )&lt;br /&gt;  and CN = company name and CO = country code&lt;br /&gt;&lt;br /&gt;Then a .key file and a .cer file will be created. You can later sign all your test .SIS files using these two files as long as the certificate files does not expire.&lt;br /&gt;Then all you have to do is : run the following command :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;signsis MyFile.sis MyFile.sis certfile.cer keyfile.key "urPassWord"&lt;span style="font-style:italic;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then the .SIS file will be signed. At the time of installing, it will give some warning messages, but it will get installed and you will be relieved of the signing process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-9057561350698405952?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/07/symbian-3rd-edition-sis-file-signing.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-4028189108729899922</guid><pubDate>Sat, 19 Jul 2008 18:06:00 +0000</pubDate><atom:updated>2008-07-30T13:37:25.936+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Technical</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><category domain='http://www.blogger.com/atom/ns#'>S60 3rd</category><title>Porting from 2nd Edition to Third Edition  - 1</title><description>We are now porting a Symbian S60 2nd edition to 3rd edition. before starting to actually port, we had several speculations as how much pain the porting process is gonna give us.However, it turned out to be quite different from  what we anticipated. The first step was to successfully &lt;a href="http://pritorius.blogspot.com/2008/07/symbian-s60-3rd-edition-installation.html"&gt;install the 3rd edition SDK's and carbide for VS2005&lt;/a&gt; so that everything works fine. This step caused some travail. Anyways, we succeeded to install and run an application both with 3rd edition and 3rd edition fp2 sdk. The device signing is a thoroughly painful thing until we find a work around of this. &lt;br /&gt;&lt;br /&gt;  The reason behind such circumlocutions is a little bit subtle here. I thought porting will be tough because of two special API's that we have used in our project : bluetooth connectivity and http connectivity. But, it turned out that the porting process caused us pain from totally different aspect : from C++ programming construct aspect. i will try to mention the places and situation where I have encountered error when porting from 2nd Edition to third edition. Its not too much technical (I assume, of course - the symbian team has full fledged documentation of what places can get error when porting from 2nd to 3rd ), its just some sharing experience.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-4028189108729899922?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/07/porting-from-2nd-edition-to-third.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-9160619558219065945</guid><pubDate>Fri, 18 Jul 2008 02:57:00 +0000</pubDate><atom:updated>2008-07-30T13:32:17.442+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Technical</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><category domain='http://www.blogger.com/atom/ns#'>S60 3rd</category><title>Symbian S60 3rd edition Installation</title><description>Here is just a cursory installation procedure of symbian s60 3rd edition sdk for VS2005.&lt;br /&gt;    1. Download and install ActivePerl-5.6.1.633-MSWin32-x86.msi (other versions wont work for symbian s60 3rd edition - at least I couldn't)&lt;br /&gt;    2. Download and install Symbian S60 3rd edition SDK from forum nokia&lt;br /&gt;                                            &lt;span style="font-weight:bold;"&gt;(S60-SDK-0548-3.0-f.3.215f.zip)&lt;/span&gt;&lt;br /&gt;    3. Download and instll S60 3rd edition fp2 sdk &lt;br /&gt;                          &lt;span style="font-weight:bold;"&gt; S60-3.2-SDK-f.inc3.2130_S603rdEdition.zip&lt;/span&gt;&lt;br /&gt;    4. Download and install Carbide for Vs 3.0.1&lt;br /&gt;&lt;br /&gt;You will be immediately able to use the Symbian s60 3rd edition SDk. But probably the S60 3rd edition fp2 sdk will be disabled for VS2005. To enable it go &lt;a href="http://wiki.forum.nokia.com/index.php/S60_3rd_Edition_SDK_FP2_-_Workarounds_and_Updates"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;   Then you will be able to use both SDK in vs2005.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-9160619558219065945?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/07/symbian-s60-3rd-edition-installation.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-5515133321230645775</guid><pubDate>Tue, 01 Jul 2008 06:12:00 +0000</pubDate><atom:updated>2008-07-30T13:32:37.429+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>S60 2nd</category><category domain='http://www.blogger.com/atom/ns#'>Technical</category><category domain='http://www.blogger.com/atom/ns#'>Symbian</category><title>Changing Font of Rich Text Editor in Symbian</title><description>In CEikRichTextEditor, sometimes we may have to change the font, its size or color etc. Normally, the CEikRichTextEditor comes with its default font Attribute. If we use the default font then it looks like this :&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_WYKEhPq_evM/SGnOinl44pI/AAAAAAAAAHk/yj3vTJTPzbo/s1600-h/Before.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp1.blogger.com/_WYKEhPq_evM/SGnOinl44pI/AAAAAAAAAHk/yj3vTJTPzbo/s320/Before.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5217928737424204434" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To change its font color or font specification we have to do as follows:&lt;br /&gt;&lt;br /&gt;      &lt;span style="font-style:italic;"&gt;  _LIT(KFontSpec, "LatinPlain12");&lt;br /&gt; TFontSpec fontSpec(KFontSpec,20*6);&lt;br /&gt; CGraphicsDevice* screenDevice=iEikonEnv-&gt;ScreenDevice( );&lt;br /&gt; CFont* font;&lt;br /&gt; screenDevice-&gt;GetNearestFontInTwips(font,fontSpec);&lt;br /&gt; TCharFormat iCharFormat;&lt;br /&gt; iCharFormat.iFontSpec.iTypeface = fontSpec.iTypeface;&lt;br /&gt; iCharFormat.iFontSpec.iHeight = fontSpec.iHeight;&lt;br /&gt;&lt;br /&gt; TCharFormatMask iCharFormatMask;&lt;br /&gt; iCharFormatMask.SetAll();&lt;br /&gt;&lt;br /&gt; iEditBox-&gt;ApplyCharFormatL(iCharFormat,iCharFormatMask);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then the Rich Text Editor Looks like this:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_WYKEhPq_evM/SGnPGKRFLnI/AAAAAAAAAHs/no354XSuXH8/s1600-h/After.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp0.blogger.com/_WYKEhPq_evM/SGnPGKRFLnI/AAAAAAAAAHs/no354XSuXH8/s320/After.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5217929348027592306" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nothing apocalyptic in it. Just a bit of information which might be necessary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-5515133321230645775?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/06/changing-font-of-rich-text-editor-in.html</link><author>pritorius@gmail.com (pritorius)</author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_WYKEhPq_evM/SGnOinl44pI/AAAAAAAAAHk/yj3vTJTPzbo/s72-c/Before.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-1940111982610564587.post-4342000462461721328</guid><pubDate>Sun, 22 Jun 2008 03:55:00 +0000</pubDate><atom:updated>2008-06-22T09:58:40.771+06:00</atom:updated><category domain='http://www.blogger.com/atom/ns#'>Thought Of The Day</category><title>22.06.08</title><description>হাতের পিস্তলটাকে তরোয়ালের মতো ধরে দৌড়ে কোনো লাভ নেই ...।&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1940111982610564587-4342000462461721328?l=pritorius.blogspot.com' alt='' /&gt;&lt;/div&gt;</description><link>http://pritorius.blogspot.com/2008/06/220608.html</link><author>pritorius@gmail.com (pritorius)</author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></item></channel></rss>