|
Below you can find answers to frequently asked questions
regarding S2U. In case you require additional information please contact us
at:
http://www.peroon.co.il/support.html
or
support@peroon.co.il.
1. Non-default
titles for Series 60 standard dialogs.
2. Embedding S2U
SIS file.
3. Platforms
supported by S2U and its add-ons.
4. UIQ DevKit with
S2U.
5. Scroll bar
visibility
6.
Setting control window after constructing the control.
7.
CEikEdwin::SetTextLimit() failure.
8. Smashed
look of progress dialog.
9. Panic 54 in
CListBoxView.
10. Tabs hide my
controls.
1.
Non-default titles for Series 60 standard dialogs.
Q: In Series 60 standard dialogs have no title bar and
therefore no title. When ported with S2U to UIQ, they do have a title bar with
a title assigned by S2U - "Note" for note dialogs, empty title for progress
dialogs, etc. How can I set a non-default title to such a dialog?
A: It can be done in one of 2 ways:
1) If a dialog is created from a resource, then simply
specify field "title" in the dialog resource, e.g.:
RESOURCE DIALOG r_my_wait_dialog
{
title = "My title";
...
}
2) To create a class derived from a standard dialog
class and to set the dialog title in the class's overriden method
SetSizeAndPosition() AFTER calling of the base class SetSizeAndPosition(),
e.g.:
class
CMyDialog:
public CAknProgressDialog
{
...
void CMyDialog::SetSizeAndPosition( const TSize& aSize)
{
CAknProgressDialog::SetSizeAndPosition( aSize);
SetTitleL( _L("My title"));
}
...
};
Up
2. Embedding S2U SIS
file.
Q: I don't want to force users of my application to
install S2U Run-Time Environment before the application installation. Can I
include the necessary S2U files in my application installation file (SIS)?
A: Please note that S2U Run-Time Environment can be
downloaded directly from Peroon Web site at:
http://www.peroon.co.il/Downloads/s2u_rte.sis
So you can point your users to this link when suggesting
them to install S2U before you application installation.
In addition, as described in S2U User Manual:
"An additional option is to “embed” S2U RTE into an
application installation file by replacing the "requisite" line in the PKG
file with:
@"FULLY_QUALIFIED_FILE_SYSTEM_PATH\s2u_rte.sis",(0x1020317B)
(It is required to specify the full path to s2u_rte.sis
on your PC in the PKG file in case you choose this option).
In this case, the standard Symbian utility makesis will
incorporate the S2U RTE installation file into the application installation
(SIS) file."
It's worth to mention that in case you embed S2U SIS
into your application installation, the size of the final SIS file will be
about 200KB greater than the original SIS (without the embedding).
In addition, device installations for S2U add-ons can be
downloaded directly as well:
http://www.peroon.co.il/Downloads/s2u_palb.sis - Photoalbum add-on
http://www.peroon.co.il/Downloads/s2u_pbk.sis - Phonebook add-on
Up
3.
Platforms supported by S2U and its add-ons.
Q: Which platforms are supported by S2U? S2U Photoalbum
add-on? S2U Phonebook add-on?
A: S2U Build-Time Environment (S2U BTE) supports UIQ 2.1
SDK, and all IDEs working with it (Metrowerks CodeWarrior, Borland C++
BuilderX, Microsoft Visual C++). In addition, S2U BTE was tested with UIQ 2.1
DevKit (release 015_7.0.16).
S2U Run-Time Environment (S2U RTE) was tested on the
following devices:
- SonyEricsson P800
- SonyEricsson P900
- SonyEricsson P910
- Motorola A920
- Motorola A925
BTE of S2U Photoalbum and Phonebook add-ons are included
in the S2U BTE installation, thus supporting the same SDKs and IDEs.
Photoalbum Run-Time supports all devices supported by
S2U RTE.
Phonebook Run-Time was tested on SonyEricsson
P800/P900/P910 devices. It does NOT support Motorola A920/A925 devices due to
incompatibility of phonebook engine on these phones.
Up
4. UIQ DevKit with
S2U.
Q: S2U installation requires UIQ 2.1 SDK installed on
PC. But I use UIQ 2.1 DevKit instead. How can I use S2U?
A: S2U supports UIQ 2.1 DevKit Release 015_7.0.16.
Please download a special package for DevKit at:
Download S2U
package for users of UIQ 2.1 DevKit
Please follow README.TXT file provided in the package to
install S2U.
Please note: the S2U package for DevKit consists of the
same binaries as the standard S2U installation, but - as the structure of
DevKit may vary - those binaries should be unpacked manually to the
appropriated places (please follow instructions in README.TXT files from the
package).
Up
5. Scroll bar
visibility
Q: I created a scroll bar attached to my
list/editor/etc. control. Nevertheless when I try to retrieve it with, e.g.
control->ScrollBarFrame()->VerticalScrollBar(), it returns NULL that causes my
application failure. Why?
A: The problem is that (unlike Series 60) in UIQ
controls do not always return scroll bar when calling to
CEikScrollBarFrame::VerticalScrollBar(), e.g. after:
CEikScrollBar* scroll = control->ScrollBarFrame()->VerticalScrollBar();
While in Series 60 if the list HAS vertical scroll bar
then it will be returned, in UIQ if the list HAS vertical scroll bar AND the
scroll bar IS currently displayed then it will be returned.
The solution may be either to change the scroll bar
visibility to CEikScrollBarFrame::EOn when creating the scroll bar (and to
have it on screen even when it is not needed), or simply to check the value of
"scroll" like:
if( scroll)
scroll->DrawDeferred();
The latter solution is much better programming style as
well.
Up
6.
Setting control window after constructing the control.
Q: After porting with S2U to UIQ, my application
consistently fails after creation of a control (e.g. CAknIntegerEdwin). Why?
A: A possible reason may be different requirements for
controls on Series 60 and UIQ, namely assigning of window to a control. Some
UIQ standard controls requires to have a window assigned (using
SetContainerWindowL() method of CCoeControl class) BEFORE calling to their
ConstructL() method. For example, this is true for CQikNumberEditor, which is
wrapped by S2U implementation of CAknIntegerEdwin). Thus please ensure that
you have:
CAknIntegerEdwin editor = new (ELeave) CAknIntegerEdwin;
editor->SetContainerWindowL( ...something...);
editor->ConstructL( ...);
and NOT:
CAknIntegerEdwin editor = new (ELeave) CAknIntegerEdwin;
editor->ConstructL( ...);
editor->SetContainerWindowL( ...something...);
Up
7.
CEikEdwin::SetTextLimit() failure.
Q: After porting with S2U to UIQ, my application
sometimes fails when it calls CEikEdwin::SetTextLimit(). Why?
A: The problem is in Symbian 7.0s implementation of
CEikEdwin::SetTextLimit(). The CEikEdwin::SetTextLimit() in DEBUG build
only(!) tries to check that the new limit is enough for the text already
existing in the editor, but if there is no text yet then this check fails.
Please note: 1) the release build (including build for device) should work
normally; 2) the text limit can be often set in call to ConstructL() of one of
CEikEdwin derivative classes, thus the call to SetTextLimit() may be
unnecessary.
Nevertheless, in order to solve the problem an
application has to assign a text to the control (e.g. using
CEikEdwin::SetTextL()) BEFORE calling to its SetTextLimit() method.
Up
8. Smashed
look of progress dialog.
Q: My application uses CAknProgressDialog, and after
porting to UIQ with S2U the dialog works, but looks ugly (the progress bar is
left aligned ad not centered, and the text is not see as it is under the
progress bar). What I did wrong?
A: The reason is that you created your
CAknProgressDialog from resource, but in the resource you mistakenly specified
EWaitLayout instead of EProgressLayout. Those 2 layouts are the same on Series
60, but they naturally differ on UIQ.
Up
9. Panic 54 in
CListBoxView.
Q: After porting with S2U to UIQ, a list in my
application sometimes causes a failure with message about "EIKON-LISTBOX Panic
54". What I did wrong?
A: There is a substantial difference in the behavior of
the basic Symbian CListBoxView class. More detailed: there is a method
CListBoxView::VerticalMoveToItemL(), which is called by various functions of
the class very often in order to set a new value of current item index and to
redraw the list box. But: while on Series 60 if the old value of current item
index (iCurrentItemIndex data field of CListBoxView class) is invalid (i.e.
either <0 or >= than number of items in the list model), then it is simply
ignored, on UIQ in case of invalid iCurrentItemIndex the panic 54 can be
issued.
The value of iCurrentItemIndex can become invalid in 2
cases (at least):
1) application has a class inherited from CListBoxView
(or one of its derivatives) and (as iCurrentItemIndex is protected) changes it
(e.g. setting it to -1 assuming that this will remove selection); or
2) application changes the content of the list model so
that the model consists of number of items <= iCurrentItemIndex and does not
updates/resets the correspondent CListBoxView.
The solution is to review the source of the application
and to synchronize the value of iCurrentItemIndex with the real number of
items in the list model. It can be done by calling methods like
CListBoxView::SetCurrentItemIndex(), CListBoxView::HandleItemAdditionL(), etc.
in appropriate places of the application.
Up
10. Tabs hide my
controls.
Q: My application created tabs (CAknTabGroup), and after
porting with S2U to UIQ, the tabs reside over controls of my application
partially hiding them. What can I do?
A: Usually the problem here is that the application took
once its ClientRect and continues to use it. This coding is based on the
assumption that the client rectangle will never change. This assumption is not
true for any Symbian-based platform beside Series 60, as all of them can
change the rectangle by either changing status pane size/position, or by
creation/removing of menubars/toolbars/tabs/etc. (generally speaking, this is
not true for Series 60 as well, as the size of Series 60 status pane can be
changed by switching status pane layout).
In this case the solution exists, and it is generic and
usable for all Symbian-based UI platforms - the application should have
implemented method HandleStatusPaneSizeChange() (either in its View or AppUi
class), where the sizes/positions of the app's controls should be reconsidered
based on the new ClientRect. If the function is written correctly is will be
portable and helpful on all UI platforms. Up
|