Mar 142012
 

When moving projects to Symbian Belle and its SBSv2 build system, developers who use the help.mk file from classic context sensitive help tend to meet an error along the lines of “EPOCroot must be an absolute path”.

Fortunately, fixing this without loosing context sensitive help is relatively easy. First of all, create the usual clone of the project – for example, make the paths C:SymbianCarbideworkspaceTouchCalcSBS2 and C:SymbianCarbideworkspaceTouchCalc.

In the “new” folder, change the file help.mk so that it looks like this:

makmake:

clean :

bld :

freeze lib cleanlib final resource savespace releasables :

Then, look at the .pkg file of the new project. As you can see below, the help file will still be referenced in the position of the “old” project, which means that it will be recycled from the old project:

"C:SymbianCarbideworkspaceTouchCalchelpTouchCalcHelp.hlp" -"!:resourcehelpTouchCalcHelp.hlp"

If you now want to make changes to the help file, adjust the help file in the old S60v5 project and recompile it. Then, copy the .hrh file over to the new project to update the definitions – and enjoy a working compile process.

P.S. The idea behind the whole show is that the hlp file format has not changed between Belle and S60v5. So, we “abuse” the S60v5 toolchain to create the Belle help file.

P.S.2 It is not the nicest solution, but works on my Nokia C7…

Aug 072011
 

Looks like our friends at Nokia’s have found a new way to force unwanted software upon its once-loyal developer base – after discontinuing Qt for Carbide (welcome, Qt Creator), PC Suite seems to be the next victim.

If your workstation keeps giving you OSError or TCFErrors after installing a firmware update, switching to Ovi Suite is likely to help you out.

So far, everything works again – stay tuned for further info!

P.S. Thank you, Nokia. Now I need to update the correction flags for both my books aagin!

Mar 012011
 

We can not imagine our phones without themes, can we?? All those theme artists use nothing except the Carbide Theme Studio to create mesmerizing and stunning themes for us.

The good folks at Forum Nokia (they are the cousins of the good folks at Beta Labs…not…!!) have “released” the latest “release” of the Carbide Theme Studio, termed as 4.0. The changes include:

  1. Richer Component View: With faster refreshing, improved iconography, status indication, and filtering, reviewing components is now faster and better aligned to theme-development needs.
  2. Unified Properties View: All properties of a component — and the tools to manipulate them — are now in one place. New tools, such as a slicer to create nine-part components, are also available.
  3. Tabbed Preview: Preview screens are now grouped into convenient tabs, making it easier to find and display specific previews. This, in turn, enables the impact of component changes on the UI to be evaluated speedily.
  4. Colour and Gradient Editor: An improved colour-selection tool makes editing common colours and gradients straightforward. Get an instant preview of any change, then use the colour picker to sample colours from any source.
  5. Export to PDF: Export all preview screens to a PDF document — at full resolution. Designers can now easily evaluate and share theme ideas without having to first install them on a device.
  6. Automatic Updates: Whenever updates to Carbide.ui become available, an automatic alert is shown in the tool. Then, a single click is all that’s needed to get the latest features and functions.

So if you are a theme artist, head over to Forum Nokia to download the latest release of Carbide Theme Studio.

  • er refreshing, improved iconography, status indication, and filtering, reviewing components is now faster and better aligned to theme-development needs.
  • Unified Properties View: All properties of a component — and the tools to manipulate them — are now in one place. New tools, such as a slicer to create nine-part components, are also available.
  • Tabbed Preview: Preview screens are now grouped into convenient tabs, making it easier to find and display specific previews. This, in turn, enables the impact of component changes on the UI to be evaluated speedily.
  • Colour and Gradient Editor: An improved colour-selection tool makes editing common colours and gradients straightforward. Get an instant preview of any change, then use the colour picker to sample colours from any source.
  • Export to PDF: Export all preview screens to a PDF document — at full resolution. Designers can now easily evaluate and share theme ideas without having to first install them on a device.
  • Automatic Updates: Whenever updates to Carbide.ui become available, an automatic alert is shown in the tool. Then, a single click is all that’s needed to get the latest features and functions.
Jan 162011
 

When it comes to adjusting your apps to Symbian^3, fiddling around with control positions using SetPosition() is pretty common – and works well for most controls.

Unfortunately, code such as the one mentioned below is ignored by CEikEdwin-derived controls:

iITxtD->SetPosition(TPoint(iITxtD->Position().iX,iITxtD->Position().iY-15));

Instead, use SetExtent():

iITxtE->SetExtent(TPoint(iITxtE->Position().iX,iITxtE->Position().iY-20),iITxtE->Size());
iITxtE->DrawNow();

Anything to add?

Jan 162011
 

Symbian^3 and S60v5 are mostly downward compatible – unfortunately, the new screen layout in landscape mode requires some shuffling.

As User::Version() does not return meaningful info ever since OS8, a different way is needed to determine the Symbian OS version programatically. Enter Size(), as seen in the ConstructL call below:

void CTouchCalcMathBasicLandscape::ConstructL( ... )
{
...
// [[[ begin generated region: do not modify [Post-ActivateL initializations]
// ]]] end generated region [Post-ActivateL initializations]
...
if(Size().iHeight<288)
{//Symbian 3
}
else
{//S60v5
}

}

Not much to add here – if you know a different way to determine the Symbian OS version, why not talk back?

Dec 042010
 

Symbian^3 devices like the Nokia N8 support multitouch – even though Nokia never advertised it heavily, you can use it in many OS apps.

Unfortunately, creating multi-touch applications was extremely difficult because Nokia omitted the CAknTouchGestureFw API from the 0.9 version of the SDK.

As always, Tamoggemon does what Nokia doesn’t. If you want to use CAknTouchGestureFw in your programs, download and install the patch available via the URL below:
http://tamss60.tamoggemon.com/contents/2010/November/thamtpatch/mtpatch.zip

Implementing it is also easy – just put this segment of code into the ConstructL method of your form:

//TS advanced
RWindowBase x=Window();
x.EnableAdvancedPointers();
myGestureFw=CAknTouchGestureFw::NewL(*this,*this);
myGestureFw-)SetGestureInterestL(EAknTouchGestureFwAll);
//Activate
ActivateL();

And implement the Multitouch listener…

P.S. A detailed tutorial will follow shortly.

Oct 072010
 

Don’t ask me why, but Nokia has – so far – not made the TRK for Symbian^3 available to Carbide developers as it is not included in the official SDK.

The only way to get your hands onto the TRK sis file is to use the latest version of the Nokia Qt SDK – or, to trust TamsS60 to save your hide.

TRK 3.2.7, as intended for Symbian^3 devices like the Nokia N8, can be downloaded right here:
http://tamss60.tamoggemon.com/contents/2010/October/thasymbian3trk/Symbian^3_app_trk_3_2_7.sisx

Jul 252010
 

In the past, people have sent me emails about applications not working on their Omnia HD. So far, I perceived these as individual issues – unfortunately, it looks like there is some kind of bug in the firmware of the i8910.

Mr. Summeli, better known as Qt hacker extraordinaire, shares the following statement:

I got lot’s of complaints about the broken blit in gpsp4Symbian with Samsung i8910.

The root cause for this problem is that the following code doesn’t set the ScreenBuffer in samsung into Landscape orientation, while it does work just fine on Nokia’s phones. I heard that there are some other Qt applications ( at least AntSnesQt ;-) that have the same problem, so I felt this worth of sharing.

So: if you develop a Qt app on a Samsung i8910 and have issues enforcing landscape mode, hit the URL below to find out more:
http://www.summeli.fi/?p=1800

Jun 302010
 

Nokia has now provided a new page of its own, which contains more detail on the process. Please no longer use the script provided below, but instead head over to this site

Nokia’s QA has finally managed to ok my signed file, which means that the process I have used seems to be acceptable for now (they can change their opinion anytime, so don’t sue me). I promised a tutorial some time ago – here it is.

Step 1 – get Qt 4.6.3, Carbide 2.4 and SMI
First of all, it is important that you have the latest version of Qt (aka 4.6.3) on your machine. Furthermore, you should also be the proud owner of a somewhat recent Carbide.

As the Smart Installer is not included in the Qt 4.6.3, you need to download it from here and copy it to the folder indicated in the other post.

Step 2 – check the pkg files
If your Carbide is set up sanely, it will generate two .pkg files. The first one of them is called _template, and contains the build settings for your app. There is not much to do here except for setting up vendor and name strings.

The _installer file, however, creates the installer. It must be modified to use the creator ID Nokia has specified – the relevant section and the correct ID are in the snippet below:

; BallZ_installer.pkg generated by qmake at 2010-06-23T19:14:41
; This file is generated by qmake and should not be modified by the user
;

; Language
&EN

; SIS header:
#{"BallZ installer"},(0x2002CCCF),1,0,0

; Localised Vendor name
%{"Tamoggemon"}

; Unique Vendor name
:"Tamoggemon"

; Manual PKG pre-rules from PRO files
; Default dependency to Qt libraries
; Default HW/platform dependencies
[0x101F7961],0,0,0,{"S60ProductID"}
[0x102032BE],0,0,0,{"S60ProductID"}
[0x102752AE],0,0,0,{"S60ProductID"}
[0x1028315F],0,0,0,{"S60ProductID"}

"C:/Symbian/Carbide/workspace/QtBallZ/BallZ.sis" - "c:admBallZ.sis"
@"C:/Qt/4.6.3/smartinstaller.sis",(0x2002CCCD)

Be aware that Qt will actively fight the changes, and will destroy them after every qmake run.

Step 3 – set up SIS builds
Now, build one sis for each pkg using Carbide’s SIS building settings.

The settings should be straightforward (sign all with the developer certificate), but do not change the file names of the “inner sis” – the outer sis won’t be able to find it otherwise.

Step 4 – Build, disable
In the next step, build the actual sis files so that Carbide creates them. Then, open the SIS properties and disable the rebuilding of the inner SIS:
qtidiotos Signing QT apps for Ovi   the inofficial how to

Step 5 – express sign inner sis
This one should be straightforward – get the inner SIS signed like you would sign any other application for distribution.

Step 6 – rebuild outer SIS
If you look again at the installer pkg, you will find a sis file name specified. Delete all sis files in the output folder of the project, and copy the signed file from step 5 into the place. Then, rename it to bear the name mentioned in the _installer pkg. In the case above, it were BallZ.sis.

Then, rebuild the SIS files – but check again that the other sis file is disabled as per step 4.

Step 7 – sign the “compound”
In the next step, get the compound signed. Don’t forget to rejoice – the Symbian Foundation has just earned some extra money.

Step 8 – upload to Ovi
Upload the compound to Ovi, setting the UID3 to the UID of the outer!!!! sis file.

Then, enjoy the wait.

P.S. Just in case anyone wonders if it works on a Vivaz: no dice. I tried it, and the installer fails with a weird message.

Legal disclaimer: no warranties for correctness!

Jun 282010
 

Over the years, Symbian Press has released quite a few books which can be benefitial for Symbian developers who are wondering about one or the other facette of the operating system or its programmation.

The Symbian Foundation has now made the following books available in ebook format via their wiki – the download can be had for free:

  • Python on Symbian
  • Symbian OS Communications Programming/5. Infrared
  • Symbian OS Internals/2. Hardware for Symbian OS
  • Symbian OS Platform Security/01. Why a Secure Platform?

So – bookmark the link below ASAP:
http://developer.symbian.org/wiki/index.php/Category:Book

Jun 112010
 

So far, not much has been disclosed on the differences between “legacy” and new Symbian systems. All we know is that the operating system is “supposed to be downward compatible”.

Forum Nokia has now provided its C++ developers further information on porting their apps. As not every Symbian head is a member of Forum Nokia, find the announcement below:

New Resources Make Symbian^3 Migration Even Easier
To help developers making the move to the Symbian^3 operating system, Forum Nokia offers several new and useful resources.

Among other new features, Symbian^3 introduces a finger-optimised UI with enhanced layout and new single-tap interaction style. This UI is described in the Forum Nokia Design and User Experience Library’s article, ‘UI in Symbian^3’.

Symbian^3’s new UI style requires minor changes for native applications. To learn how to port your existing Symbian C++ applications to Symbian^3, go to the Nokia Symbian^3 Developer’s Library.

While Web Runtime (WRT) widgets developed for earlier Symbian for S60 devices will work fine on Symbian^3but some optimisation might be needed for an even better user experience (UX). For example, a new loading indicator in the top right corner may require modifications to home screen content. Another significant change is the softkey and menu positioning in landscape mode. Applications designed to scale to 100 per cent width and height of available screen estate should not be affected by this change. But applications using native menus or resolution-specific custom layouts will most likely be affected; they may need to a redesign to some parts of the UI. For more information, check out this Forum Nokia Wiki article, ‘Web Runtime Widgets in Nokia Symbian^3 Devices’.

Flash developers, attention: While applications developed for earlier releases should still work out-of-the-box, Symbian^3 brings some new compelling features with Flash Lite 4. Learn all about them in a Forum Nokia Wiki article, ‘Flash Lite 4 in Nokia Symbian^3 Devices’.

P.S. Forum Nokia is also open to Symbian developers on Samsung or SE machines. Join them, ASAP!

May 292010
 

Last week, our CFO Farid Hanna reported on a strange sighting he had on his Vivaz – the icons of the Tamoggemon applications (which happen to use bitmap icons :-) ) looked like this:
17052010014 Sony Ericsson Vivaz bitmap icons   the official fix

As yours truly was preparing for some speaker assignments, I didn’t have much time to go into more detail – but Sony Ericsson has already responded. The solution, fortunately, is simple – use an 8bit image as mask. If this is done, all works perfectly – 8bit masks can be rendered fine.

The bug in the firmware of the Vivaz is that the launcher seems to be unaware of a specialty of the Symbian icon system: a 1bit mask uses white for transparency, while an 8bit mask has transparent areas set in white. This explains the errors we saw on the device.

Fortunately, the issue seems to be limited in scope – icons rendered by the AVKON server inside an application (think list item icons, etc) are handled correctly.

As of now, we don’t know why the Vivaz diverges from standard Symbian behavior. Does anyone of you have a bit of extra info to share?

Mar 122010
 

Symbian’s context-sensitive help system can be a beast of its own – especially, as its HlpModel panics have not been documented anywhere.

Thanks to the USB stick from the Mobile World Congress, I now present you the official list – taken right from the Symbian Os source code:

// Enums
enum THlpPanic
{
EHlpNoRowAtCursor,
EHlpInvalidView,
EHlpInvalidTDbCol,
EHlpInvalidTDbKeyCol,
EHlpInvalidColName,
EHlpInvalidTableName,
EHlpInvalidComparison,
EHlpInvalidQuery,
EHlpDatabaseInTransaction,
EHlpDatabaseNotInTransaction,
EHlpNoCriterion,
EHlpNoCategoryList,
EHlpNoPictureFactory,
EHlpNoPictureStore,
EHlpNoHelpList,
EHlpNoItem,
EHlpNoTopic,
EHlpNoView,
EHlpAsynchSearchError,
EHlpTopicNoRowsInView,
EHlpFault,
EHlpUnlocatedHelpPicture,
EHlpNotEnoughZoomRatios,
EHlpNoHelpModelPointer,
//
EHlpLast
};

If that doesn’t help, what does ;)

Feb 282010
 

Even though the Hundredth-monkey effect has been proven to be wrong multiple times, followers of Forum Nokia likely thought about it quite a bit recently – tens of developers suddenly wondered how to implement background music loops using MP3 files. I eventually got it up and running – but had to use low-quality WAV files in the process…

The Chinese news service wanwann.com now claims to have created a solution of its own:


Well, here provides a solution to you, that you can decode your mp3 to raw music datas, and then mixing then play(by using a single streamming player) these decoded raw datas. However, this solution is an opensource project which is licenced under the GPL licence, please agree to the license before you use the sourcecodes.

Further information on this solution can be found at the URL below – keep in mind that I have not tested this:
http://www.wanwann.com/2010/02/21/symbian-s60-mp3-decoding-sound-mixing-solution/

P.S. My non-GPL solution with WAV files based on a Nokia example drops shortly…

Feb 282010
 

If you would have asked me about tetaphobia a few weeks ago, I would have flipped you the finger. Carbide 2.4 tought me better, and Mike Trujillo has just replied to my articles.

His reply contains material which I consider of common interest – here goes:

Tam,

Thank for flagging this. Please be sure to log any bugs in Bugzilla and send the bug numbers to me.

Here are known issues that I think are fixed/being fixed.

* Update site – early reports from users who had problems updating from v2.3 to v2.4. I believe this was isolated and now works.

* New WINSCW compiler. For most users this compiler is fine. Some older DLL in AVKON apps don’t work with the old compiler so you need to revert to the old compiler. We don’t think this will affect community users but if it does please log a bug.

* Qt – Qt build and project system is different than Symbian. v2.5 should have some usability improvements with Qt awareness in Carbide. I know that we have problems when the .PRO file is touched.

Version 2.5 is nearly done – you can take a look at:

http://tools.ext.nokia.com/download/dev_build.php

/Mike Trujillo
Product Mgr – Carbide.c++

Big thanks to Mike for talking back!