Typical day with Symbian

We want to add something like this:

to the next version of ContextContacts. Me and Renaud have been working on it for a bit and today I thought I’d really get to the bottom of it. Here are my notes on how it went:

We want to activate a menu from the right-key-press
on the idle screen.

It has to be an app, so it can be bound to the key
on S60V2.6 on.

We want it to be less than full-screen. It seems that
the UI framework assumes all apps

It is obviously possible, as that's what the fast
task-switch does. On the other hand, the fast task switching
always reacts to a long press of the menu key. It might
be a background process doing it's own draw and input handling,
or it might be an app that just draws that bit. So it
might not actually be possible to have a less-than-fullscreen
app.

Try to derive from CEikAppUi instead CAknAppUi -> loses
skin support.

CAknAppUis seem to always come with a status pane. It can
be set to invisible, but that doesn't create a redraw
of things behind it, so the screen is messed up.

There is no single application RWindow that we could resize.

We don't have the source code for the current platform.
The latest UI source code is for 6.0, and it's not that complete 
anyway.

The Series 60 application framework handbook states that
the fast-swap window is 'only a sleeping popup dialog,
not a full application itself'. It doesn't say how to
implement one, though.

There is a 'ENoScreenFurniture' flag you can pass to
the AppUi's BaseConstructL(). It is of course more
than adequately documented: 'Application uses no screen furniture'.
According to a Google search some people are using it,
but no more information is given.

On discussion.epoc.C++ there's a post asking how to
have an app without a statuspane and stating that ENoScreenFurniture
doesn't do it. The poster later comments that they will
try setting up a dummy status pane in the EIK_APP_INFO instead,
but don't tell whether they succeed or not.

The documentation states that layouts used for status panes
are fixed on any UI variant. It's not clear whether anything
else than EEikStatusPaneUseDefaults is available on S60.

Hmm. According to some Forum Nokia posts, there is a 
R_AVKON_STATUS_PANE_LAYOUT_EMPTY. Let's try that.
At least E32Frodo is using it.

So it seems to do about the same as hiding the status pane:
the status pane does not get drawn, but neither are things below
it. So we are still basically where we started.

This is how it looks now:

Not quite optimal…

This entry was posted in Symbian. Bookmark the permalink.

7 Responses to Typical day with Symbian

  1. Lauri W Ahonen says:

    Typical day indeed. Not to mention the numerous problems with the SDK. (eg. We have libs and headers no dll-files / we have good headers and working dll-files but libs are broken / all other permutations).

  2. We just had the same problem with the messed up screen behind the transparent application. And solved it! :)
    I cannot recall the exact class names until I go see the code in the office, but it was something very simple:
    1) In the beginning of the app’s ConstructL save the current pane (is this piece of the screen called status pane?), i.e. what kind of pane your background application had
    2) At the end of ConstructL set the status pane layout to what you’ve set on the step one.

    This way you won’t get exactly a transparent app, but you’ll successfully simulate the transparency.

  3. Giridhar.N says:

    we can avoid this problem jusz by setting status layout to R—-Idle–layout.
    and works fine for phones like 6630,6600 etc., then wat abt 6680,6681,and N90 where u have extra panel which lists 5 apps and a calendar bar ..how to solve for this???