Small things I’ve had to fix in the past few days:
The value of EAknEnableSkin had changed. We had previously used a hardcoded value in the App Ui’s BaseConstructL call: BaseConstructL(0×1008), so we could compile on 2.0/2.1 and run correctly on higher FPs. When we specified the wrong flag, we of course didn’t get any skins but more seriously clicking on setting items crashed the application.
We have to move from etelmm/etelbgsm to the 3rd party telephony interface CTelephony. Basically all CTelephony methods are asynchronous (taking a TRequestStatus parameter), including the ones for requesting the IMEI and IMSI. We have needed the IMEI in a couple of places before, and accessed it with PlpVariant::GetMachineIdL, which is a synchronous call. So for 3rd edition, I wrote an alternative that uses CTelephony::GetPhoneId() and User::WaitForRequest’ing on the TRequestStatus. This of course hung the app. CTelephony is obviously written as a helper class on top of other asynchronous services and uses an active object internally to call them, and thus can not be waited on. Any code that calls CTelephony has to be asynchronous.
Calling CWsBitmap::Load for loading bitmaps from a MBM file is quite slow. Each call opens the file separately, reads the header structure and then the actual data. To speed this up I wrote my own function that handles the MBM header, keeps the file open and uses CWsBitmap::InternalizeL to actually read the data. This speeds up loading significantly. RFile::Open(fs, filename, EFileRead|EFileShareAny) returned an error on 3rd ed when used on the MBM file under \resource. It seems you are not allowed to specify EFileShareAny now, prob. due to platsec. Falling back on EFileRead seems to do the trick.
CSendAppUi is no more, and the less functional CSendUi seems to require a very extensive set of capabilities, including Read/WriteDeviceData (although this is under dispute). I’ll probably have to reimplement the UI functionality of CSendAppUi on top of the new RSendAs class.
More things will follow…