Version 0.01.047
================
(Made by DavidW, 1 September 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037
C32/022 EALWL/025
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/104 FONTS/029
ETEXT/046 TBOX/069 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Last build of Nokie!
This contains the state of the Nokie code prior to converting to
*) the new directory structure of E32/065
*) the new application architecture
Sizes (Gcc build): NOKIE.DLL 263,980 bytes
EIKSRV.EXE 12,908
NOKIE.RSC 4,115
CONE.MBM 2,868
From MartinB:
-------------
1) Rearranged aspects of the menu code in preparation for making it
go faster and for improving some of the menu UI
2) Further improvements to header files of menu code
3) Menu code once again builds cleanly under Gcc
4) Moved some drawing utility functions out of menu code into
EikDrawUtils code in EIKDUTIL.*
From Vipul:
-----------
5) Merged the code from CEikAutoDialog into CEikDialog itself, so
that all dialogs now support "auto" items, not just "Opl dialogs"
6) Modified existing CEikDialog code accordingly, and started work
on some test code for dialogs with auto items
From SimonC:
------------
7) Global and rich text editors now always use their own paragraph
and character format layers, rather than sharing those in CEikonEnv;
this avoids problems whereby bolding one global text editor caused
all other editors to be bolded as well
8) Further fixes to the HandlePointerEventL code in CEikEdwin so
that, for the first time, shift-clicking *and* picture stretching
both work properly
9) Improvements in the code creating a new folder inside the file
browser; eg the New Folder dialog now has a text label specifying the
(default) location of the new folder
10) If the New Folder button is used to create a folder on a
different drive from the one the File Browser is currently logged to,
the File Browser now switches to that drive on the termination of the
New Folder dialog
11) Workaround to an F32 bug, so that the Open File dialog can be be
used to read z: on the rack
12) Other internal improvements in file brower and directory
listboxes
From Bret:
----------
13) Fixed drawing bug in CEikWorldSelector in which not every pixel
was being drawn in some cases
14) Improvements in the display of world selectors in the case when
the font has been changed, to one different from that used to
calculate the size of the world selector
15) Changed from using the three character ellipsis "..." to the
single character "…" variant (Alt-133)
16) Eliminated an unneeded dependency on EIKENV.H in EIKWSEL.H
17) Other internal improvements to world selector code
From Siamak:
------------
18) Fixed various scrollbar-related and size-related problems in
listboxes (eg listbox min size was incorrectly calculated in the
presence of scrollbars, and the current item for a listbox in a
dialog wasn't always visible when the dialog first appeared)
19) See the "Script1" case in TLBX for a working example of a listbox
in a dialog having a scrollbar
20) Changed listbox default behavior to assume that any scrollbar
size should be included within the stated size of the listbox
21) Started added support for dimming in listboxes
22) Changed CListItemDrawer::DrawActualItem() to be pure virtual,
rather than simply empty
23) Test code TLBX now tests some panics in listbox code, but always
puts up a query dialog first to allow the user/operator to bypass
that test
From Neil:
----------
24) Provided scrollbars with the ability to be dimmed, eg for when
their parent listbox gets dimmed
25) Added an option to each of the scrollbar menus in test code
TScrlB0 to dim that scrollbar
26) If an application connects to the alarm alert server when there
is already a previous client, it is the application that now gets
panicked, rather than the alarm alert server panicking itself
From DavidW:
------------
27) Developed the logic of "auto-dialogs", with a new example in
TDialg0, and by converting the "Set time and date" dialog in LShell
to be an auto-dialog. The code for this dialog is now just
void CSimpleAppUi::LaunchTimeAndDateDialog()
{
TTime timeAndDate;
timeAndDate.HomeTime();
CEikDialog* dialog=new(ELeave) CEikDialog;
dialog->PrepareLC(R_LSHELL_TIME_AND_DATE_DIALOG);
dialog->DeclareAutoTimeAndDateEditor(ETimeAndDate,&timeAndDate);
if (dialog->RunLD())
User::SetHomeTime(timeAndDate);
}
28) The ExecuteLD(TInt aResourceId) function of CEikDialog is now
EXPORT_C TBool CEikDialog::ExecuteLD(TInt aResourceId)
{
PrepareLC(aResourceId);
return(RunLD());
}
so you can see that there now a new possibility for applications to
insert code in between the "PrepareLC" and the "RunLD" parts of a
dialog. Before, all such code had to go in (eg) the
PreLayoutDynInitL function, which meant that a custom subclass of
CEikDialog had to be created. However, from the above LSHELL code
you can see that the dialog class being used is none other than
CEikDialog itself - there is no need for a custom subclass here
29) The effect of a function call DeclareAutoXxx(TInt,TAny*) is to
add the specified control to the set of "auto" items for the dialog,
ie those whose return values are automatically filled in, just after
the call to OkToExitL() returns; the DeclareXxx function also seeds
the initial value of the control from the initial value pointed to by
the "return value" pointer
30) More DeclareAutoXxx() utility functions will shortly appear in
greater numbers in EIKDLGUT.*
31) You can have as many auto-items for any dialog that you like,
without incurring any additional storage overhead (a slot for a
return value pointer is now stored in CEikCaptionedControl property,
along with a record of the control type, to allow a check at run-time
that the control type is what any subsequent call to DeclareXxx might
assume it is
32) There's a lot of scope for simplifying existing Nokie code by
converting more dialogs to the auto form; this will be tackled in
stages over the next few days
33) Another thing that can be done with auto-item technology is to
build up a dialog entirely in memory, without going near a resource
file. Eg an example from the latest TDialg0:
void CSimpleAppUi::CmdAutoDialogL()
{
CEikDialog* dialog=new(ELeave) CEikDialog;
dialog->ConstructAutoDialogLC(EEikDialogFlagWait,
R_EIK_BUTTONS_CANCEL_OK);
dialog->SetTitleL(_L("Auto dialog"));
dialog->AddAutoNumberEditorL(_L("Number editor"),
101,0,300,&iAutoNumber);
dialog->AddAutoFloatEditorL(_L("Float editor"),
102,TReal(0),TReal(300),&iAutoReal);
dialog->AddAutoTextEditorL(_L("Text editor"),103,&iAutoText);
dialog->RunLD();
}
(the 101, 102, 103 are generated ID numbers, which have to be
distinct)
34) More AddAutoXxx() utility functions will shortly appear in
greater numbers in EIKDLGUT.*; apart from this, the essentials of
Eikon support for Opl dialogs are now firmly in place
35) Changed various ConstructL() functions of various controls not to
have their container window as a parameter; this simplifies the
corresponding AddAutoXxx() functions considerably
36) Started splitting up EIKPANIC.* into various self-contained *.PAN
files, thus EIKEDWIN.PAN, EIKMFNE.PAN, EIKDIALG.PAN and EIKLBX.PAN
all exist, and are now #included within the obvious source modules
instead of EIKPANIC.H
37) Reverted to the "dark gray when pressed" scheme for movers
(retaining the constants for the "white when pressed" scheme in a
commented section at the top of the source module)
38) Fixed the problems which were preventing TCombo1 from running
39) Trailers of invisible controls in dialogs now go invisible,
rather than just gray
40) Rationalized the hotkeys in TDialg0.
Version 0.01.046
================
(Made by DavidW, 30 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037
C32/022 EALWL/025
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/104 FONTS/029
ETEXT/046 TBOX/069 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 260,352 bytes
EIKSRV.EXE 12,904
NOKIE.RSC 4,094
CONE.MBM 2,868
(Build 045 was never formally released)
As a side-effect of some of the changes described below, the
following test apps have got broken, and are temporarily withdrawn:
TPDraw and TCombo1.
The code in TRTxtEd that causes a dependency on PRINT.DLL has been
temporarily commented out, to allow (the rest of) it to run under
WINS again.
From MartinB:
-------------
1) Yet another stage in the improvement of command buttons: the
button face now always scrolls as a whole, instead of its constituent
parts scrolling separately
2) As a result of the above, the Scroll() functions in CEikImage and
CEikLabel could be withdrawn; the change also means that other types
of "drawing controls" could be incorporated more easily on the button
face in the future
3) As an experiment, changed the colors used by the Mover control
when pressed to match those used by buttons, ie the background goes
white; on reflection this does not seem to be well liked and so this
is likely to revert to what it used to do
4) Minor changes to TEikGrip code
5) Some work on the menu code in preparation for it becoming beta:
applied more consts as appropriate, scoped more of the enums, moved
the definitions of some private implementation classes out of the *.H
files into the relevant source modules, and generally tidied things
up
From SimonC:
------------
6) Added support in CEikCaptionedControl for any control in a dialog
to have some trailing text ("trailer")
7) There's a new LTEXT field "trailer" in the DLG_LINE resource
struct that causes a trailer to be created for that line
8) See the "Floats" dialog in TDialg0 for an example of trailers in
dialogs
9) Fixed a bug in CEikEdwin in which shift-clicking in a rich-text
editor failed to extend the select region
10) Several changes to the way CEikEdwin gets initialized; made
corresponding changes to FPNE and Edit Combo code
11) Removed all hard-coded text from EIKEDWIN.CPP, using resource
strings as required
12) Added an optional "New folder" button to the file browser dialog,
allowing the user to create a new folder if the desire arises
13) File browser displays ought to be updated automatically whenever
a new folder is created from within them
14) Other internal improvements to various code, such as listboxes
and directory tree listboxes
From Neil:
----------
15) Reviewed and tidied up the scroll bar, scroll frame, and
scrollbar button code
16) Fixed bug in scroll button whereby holding down the pointer until
the thumb reached its extreme and the button dimmed, failed to
"release" the button (ie the background stayed dark) until the mouse
button was released
17) Commented out the functions in the "approximate scrollbars" API
(intended for use with partially formatted edwins) since this doesn't
work at all well (some more bright ideas are required on how to solve
this problem!)
18) Auto repeat settings for scrollbar buttons are now different for
the initial delay and subsequent repeats, in a similar way to
keyboard repeats
19) Similar change to auto-repeat timing for ears in captioned
controls
20) Improved the "access count" mechanism in the Eikon Server
visibility: ComeToForeground() and GoToBackground() now both take a
CEikServAppUi::TForegroundReason parameter to determine who is
calling it; this is to prevent the Eikon Server being inadvertently
stranded in either foreground or background
21) The Eikon Alarm Alert server now panics if a second client tries
to connect to it
22) Fixed problems in the Eikon Server if a key like Ctrl+E was
pressed when an alarm was showing
23) Improved test code TEar1
From Vipul:
-----------
24) Started work on a project currently called "auto dialogs", which
is a new class CEikAutoDialog in a new module EIKAUTOD.*
25) "Auto dialogs" are so-called because the variables they edit are
handled automatically by CEikAutoDialog code, once they are set up in
a suitable initialization struct; there's no need for the application
to supply custom PreLayoutDynInitL() and OkToExitL() functions
26) Auto dialogs are being created to serve the need of Opl dialogs,
but it is hoped that they can ease the way of other applications
programming "straightforward" dialogs; it is also likely that the
code in CEikAutoDialog will migrate into CEikDialog itself
From Julian:
------------
27) Replaced the CEikEdCmp class with CEikGlobalTextEditor, and
renamed the module EIKEDCMP.* to EIKGTED.* (matching the module name
EIKRTED.* which holds CEikRichTextEditor)
28) A "global text editor" responds to keys such as Ctrl+B by bolding
its entire contents
29) Added a "global text editor" dialog to TDialg0
30) With Simon, many internal changes in CEikGlobalTextEditor code
31) Fixed some redraw problems with the gray palette selector
32) Changed the mechanism used in the gray palette selector to show
the "current" color: instead of a black outline, there's now a
pointer arrow
From Siamak:
------------
33) Further improvements to TLBX listbox test code
34) Fixed some bugs in listboxes that came to light while testing
35) On Bill's suggestion, redefined a couple of protected functions
in CEikMultiColumnListBox so that any excess space in the viewrect is
at the bottom of the listbox rather than being spread evenly between
the top and the bottom (as happens for "normal" listboxes)
From Bret:
----------
36) Improved test code TWldSl by adding a toolbar plus some
additional hot-keys
37) Made EIKWSEL.* indepedent of EIKDIALG.H, by overriding the
CCoeControl function SetNeighbor() in CEikWorldSelector. This stores
the pointer of the previous dialog control in case a link needs to be
made to it in ConstructFromResourceL()
38) As a result of the above, the pair_id field in the world selector
resource struct is removed. Instead, when a selector wants to pair
up with the previous selector, it sets the new flag
EEikWorldSelSecondSelector
39) In a dialog selector pair scenario, the second selector will
automatically take the opposite type from the first selector (eg
country as opposed to city). Also the first selector in any pair now
defaults to being a city selector
40) Removed the flag EEikWorldSelDarkBackground; the background will
now always be white, except that it is black when the control is
focused
41) Removed the flag EEikWorldSelFlashingCursor, since the cursor
should always flash
42) Added a "chars_wide" field to the world selector resource struct
43) Many other internal changes in world selector code
From DavidW:
------------
44) A couple of minor changes to CEikProgressInfo code arising out of
a mini-review when its design was added to \design\eon.
Version 0.01.044
================
(Made by DavidW, 28 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037
C32/022 EALWL/025
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/104 FONTS/029
ETEXT/046 TBOX/069 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 258,220 bytes
EIKSRV.EXE 12,904
NOKIE.RSC 3,914
CONE.MBM 2,868
Released in synch with CONE 104 and with TBOX 069
(PRINT/020 uses a previous version of TBOX, and for this reason, test
apps that rely on PRINT fail to run under WINS. In practice, this
only means TRTxtEd. Somewhat to my surprise, TRTxtEd seems to run
fine under Gcc!)
From Neil:
----------
1) The Eikon Server now checks on start-up that the machine date and
time are sensible and, if they are less than 1980, sets them to 1997
2) Test code TEar1 now supports setting an alarm - either 10 seconds
in the past, or 65 seconds in the future, with the test alarm screen
appearing as a result, and beeps at regular intervals. (On WINS, the
"lights" in the middle of the Protea fascia.BMP flash, but I haven't
noticed anything like that on a real Protea)
3) The buttons on the alarm control are now active when an alarm is
in progress: you can Snooze, Silence, or Clear an alarm
4) Internal to the alarm supervisor, changed from using Universal
Time to using Home Time
5) Other internal changes inside the Eikon Server
6) Improved TEar1 to have a menu bar publicising all the features of
the app
From Siamak:
------------
7) Fixed various problems with pointer event handling in standard
and multi-column listboxes
8) Developed the test code TLBX further
From DavidW:
------------
9) The functions CEikDialog::MakeLineVisible() and
SetLineDimmedNow() both now work, supporting dynamic
dimming/undimming and hiding/showing of items in dialogs - for
examples, see the Sizes dialog in TPrgi, or the Choices or Floats
dialogs in TDialg0
10) The caption of a dialog line now goes dark gray if the control
for that line has been made either dimmed or invisible; note that not
all controls respect the dimmed state yet, by drawing themselves more
grayly (choice lists do; most others don't)
11) Clicking on a non-focused focusable window-owning-control in a
dialog now correctly gives the focus to that control
12) Fixed a typo in the anti-nesting declarations in EIKMVOBS.H
(picked up by running CCS EMPTY)
13) Further developed the test code TPrgi for CEikProgressControl
14) Made use of the new CCoeControl function SetNeighbor() to pass
each control in a dialog the handle of the *previous* control; this
function is called after the ConstructFromResourceL() for the control
15) Took advantage of the new CCoeControl function
PositionRelativeToScreen() to simplify the positioning of pop-outs in
choice list and gray selector code
16) Did a minimal conversion of edwin code for TBOX 069, so that the
test code at least runs without falling over in a heap (but there's
plenty scope for choosing more carefully which TBOX function to call
in many places)
17) Took advantage of the new TParaBorderArray class to simplify the
code in the Paragraph Borders Preview class.
Version 0.01.043
================
(Made by DavidW, 27 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037
C32/022 EALWL/025
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/103 FONTS/029
ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 255,252 bytes
EIKSRV.EXE 12,368
NOKIE.RSC 3,914
SYSTEM.MBM 2,868
Released in synch with CONE 103
From MartinB:
-------------
1) Changed command buttons to the latest plan of their backgrounds
going white when pressed (without there needing to be any changes in
the text color)
2) New test code TBORDER specifically for the TEikBorder class
3) Some fixes and internal changes to the TEikBorder class
4) Modified EIKLBM.H with the effect that EIKLBM.CPP is now empty
and has been removed from the project
5) Added FixedPointEditorValue() and SetFixedPointEditorValue() to
the dialog utility functions in EIKDLGUT.CPP
From Bret:
----------
6) World selectors are now implemented, in the new module EIKWSEL.*
7) World selector controls can be used inside or outside of dialogs,
as demonstrated by the test code TWldSl
8) World selectors can either be run individually, just to select
cities or countries, or in pairs, to select a city/country
combination
9) Declaring a single WORLD_SELECTOR in a dialog resource structure
will create a single world selector; the pair_id field should in this
case be left at its default value of 0 or else the control will go
hunting for a partner with the specified ID and will either die or
cause havoc. If the flags field includes EEikWorldSelCountrySelector
the selector will show countries, otherwise it will show cities
10) Two selectors in a dialog, one showing cities and the other
countries, can be connected so that one updates the other. This is
done by setting the pair_id in the second control to the dialog line
ID of the first control. The pair_id for the *first* control should
*not* be set to anything, otherwise it will go looking for the second
selector before that has been created
11) To create a single selector outside a dialog, call the
ConstructL() function; to create a second selector outside a dialog
that links to the first one, call ConstructSelectorPairL() passing a
pointer to the first selector
12) The search extent (whole world, or restricted to one country) can
be toggled by a CTRL+letter combination, for which the default key is
'L' but this can be overridden either in the resource structure, or
by calling SetSearchExtentToggleChar(). In the test code, it has
been set to 'C'
From Julian:
------------
13) Converted CEikGraySelector, the gray selector control, to the new
Eikon design, along with the associated pop-out control,
CEikGrayPalette
14) The gray selector control operates either in 4-gray mode or
16-gray mode, depending on a flag
15) Modified TDialg0 to contain a dialog with two gray selector
controls, one in each of the two modes
From SimonC:
------------
16) Made a number of changes to the hierarchical and directory
listbox classes after a review by Bill and MartinB
17) The largest changes are that CHierarchicalListBoxModel now
inherits from MListBoxModel rather than MTextListBoxModel,
THierListItem has been renamed CHierListItem and now inherits from
CBase, and a number of functions that used to take a TDes& now return
a TFileName instead. A number of convenience functions have been
removed from the controls, just to make applications work harder
18) Altered the listbox code so that it handles the case of not all
items having text for incremental matching
19) Updated file browser code in line with the above changes, and to
make other internal improvements
From Neil:
----------
20) New module EIKALSUP.* for the "alarm control supervisor",
containing code derived from Brendan's code in CEikAlarmControl in
the old Eikon design
21) Changed the Eikon Server start-up code to create an alarm control
supervisor which in turn creates an alarm control
22) Modified the test code in TEar1 to match the above changes
From DavidB:
------------
23) Added a dialog to LShell to allow the user to set the time and
the date (this dialog also acts as a further test of the combined
date-time editor)
From Vipul:
-----------
24) More improvements to the visuals of multi-page dialogs
From Siamak:
------------
25) Started work on a new listbox test app (still called TLBX) that
aims to exercise listboxes much more fully than before
(this is presently in a intermediate state)
26) Internal change in listbox code to avoid updating scrollbar
thumbs in cases when no scrolling actually took place
From DavidW:
------------
27) On advice from Duncan, changed the code in the CEikonEnv function
NewDefaultCharFormatLayerL() so that subsequent EText calls to sense
the effective character format will have less work to do
28) Changed the toolbar code in TDialg and TMfne to remove any
app-specific code, just leaving it to the latest CCoeControlGroup and
CEikToolBar code to sort things out themselves as good as they could
(though this has exposed some more bugs therein)
29) Made the function EikDrawUtils::DrawTextWithMnemonic() work for
non-zero margins with ECenter alignment; note that if some text has
to respect a left margin iLeftMargin and a right margin iRightMargin,
the "margin" value to pass in the case of center alignment is the
*difference* iLeftMargin-iRightMargin (so, code in CEikLabel had to
change too); in turn this leads to a different interpretation of the
margin value in the center aligned case from in the current BITGDI
code, so a workaround was introduced for that; all in all, the
scrolling behaviour of button faces is now correct in *almost* all
cases (the single exception I know of being the top-left button in
TBut3 in the center aligned case, when the face still fails to scroll
"as a whole")
30) Added a pair of InfoWinL() functions to CEikonEnv, with API very
similar to the QueryWinL() pair of functions, resulting in a stock
dialog with one or two lines of text in it, together with a
"Continue" button (this is different from calling AlertWin() in that
an app can have several QueryWinL or InfoWinL calls in play at any
one time, but only one AlertWin())
31) Sh-Ctrl-Alt-M, at any stage in any application, now brings up a
"Move me!" info dialog, which can be dragged around the screen at
will to test redraws (this complements the complete screen redraw
from Sh-Ctrl-Alt-R; both of these are provided by the CEikDebugKeys
class)
32) Added a TBool-return function ConfirmLossOfAllChangesL() to
CEikonEnv, which layers over QueryWinL() with a pair of well-chosen
text strings to make it clear to the user that changes will be lost
if (on an English machine) the 'Y' key is pressed
33) Adjusted the pointer repeat rate for ears in captioned controls
to once per 3/10 of a second, with the intention of making it easier
for users to fine-tune controls by their ears
34) Overhauled test code TPRGI for CEikProgressInfo, adding many new
features, to exercise the control more thoroughly
35) Added a function SetAndDraw(aValue) to CEikProgressInfo, and
simplified various test applications (TSound, TDialg0) by using this
rather than fighting with the IncrementAndDraw() function
36) Removed the concept of "initialValue" from CEikProgressInfo, so
that all progress bars now start at an API value 0
37) The flags in EIKPROGI.HRH are now EEikProgessTextPercentage and
EEikProgressTextFraction; the CEikProgressInfo class itself supports
futher derivation such that subclasses can provide their own text
format strings
38) Added support for changing various "layout" and "border" features
of a progress info control (see the spec in the "Eikon" database for
more details); fine-tuned the standard choices of these to match
Bill's visuals as closely as possible
39) Many other changes in the internals of CEikProgressInfo
40) Standardized the GetXxx() dialog utility functions so that the
control ID is always the final parameter
41) Removed the trailing ...L in CEikDialog::SetInitialCurrentLineL()
since the default implementation of this function does not Leave, and
there is no reason for any replacement for it to Leave either
42) Fixed the calculation of the position of pop-out listboxes to
work if the choice list is a child window of other than a top-level
window (as occurs in the present implementation of multi-page
dialogs); made a similar fix in GraySelector code.
Version 0.01.042
================
(Made by DavidW, 23 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037
C32/022 EALWL/025
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/102 FONTS/029
ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 243,696 bytes
EIKSRV.EXE 12,380
NOKIE.RSC 3,793
SYSTEM.MBM 2,868
From DavidB:
------------
1) Gave MFNEs a gap two pixels at the front and at the end, and a
*deep* sunken border, to give them the same look as choice lists
(a choice list has been temporarily added to the test dialog in TMfne
- press Space to access this dialog - to show this)
2) Times with single-digit hours are no longer padded with leading
zeros in date editors, thus six o'clock in the morning is "6:00 am"
in 12-hour format and "06:00" in 24-hour format
3) The test dialog in TMfne now runs on the rack, as a result of
reducing the lower date limits to 1970 (because, currently, nothing
on the rack causes the date to be initialized more meaningfully)
4) Fixed a bug pointed out by Kevin Dixon (defect report HA-200)
when date editors were set to the first day in the month (or the
first month in the year)
From Neil:
----------
5) New module EIKALMCT.* for what will become the alarm alert; for
now, this sets itself to the full screen, has a textured background,
an inactive mover as the title, and three command buttons (snooze,
silence, and clear)
6) This control looks like a dialog and behaves like a sleeping
dialog via functions ShowAlarm() and HideAlarm()
7) The Eikon Server now links to EALWL and the alarm server is
started up within the Eikon Server system startup code
8) Added a sleeping alarm control to test code TEar1, which is
toggled between its sleeping/awake states by pressing Ctrl+D
From Siamak:
------------
9) On Dan's request, made the CEikListBox function
AdjustRectHeightToWholeNumberOfItems() virtual
10) Fixed a header file dependency problem in EIKLBV.H
From Vipul:
-----------
11) Borrowed some ideas from menu bar drawing code to cut down on the
amount of work required to draw the page selector region of dialogs
12) Dialog pages now have proper borders drawn round them
13) Added the function Text() to CEikLabel returning a TPtrC of the
text inside the label
From DavidW:
------------
14) Changed CEikDialog::PrepareForFocusTransition() from private to
protected so that classes which replace this function can supersend
15) Added the protected function IdOfFocusControl() to CEikDialog (if
there is no line with the focus, the function returns 0).
Version 0.01.041
================
(Made by DavidW, 22 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037
C32/022 EALWL/025
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/102 FONTS/029
ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 241,536 bytes
EIKSRV.EXE 12,376
NOKIE.RSC 3,762
SYSTEM.MBM 2,180
From MartinB:
-------------
1) Reinstated four visually distinct states for command buttons -
the outcome is still experimental, because pressing on a button no
longer inverts its background, and this is at variance with most of
the rest of the UI
2) The command button scroll offset is now recorded internally,
rather than being infered, so that buttons should no longer have
their faces "walking" indefinitely
3) Renamed the field CEikCommandButton::iFlags to iCmdFlags
From Neil:
----------
4) Improved the code in CEikEdwin to find the first character on the
first fully visible line (required for some scrollbar purposes), by
using a recently created CTextLayout API
5) Ears for captioned controls now have auto-pointer repeat at a
rate of 10 per second
6) Changed the pointer repeat rate for nudge buttons and page
buttons in scrollbars (some more experimentation may still be
required here)
From SimonC:
------------
7) Converted the file browser dialog from eikon, and added test code
for it to TLBox1
8) Tidied up the browser code (including switching to using a button
coordinator for the sort order buttons)
9) Added an EEventItemDoubleClicked event to the listbox observer.
The hierarchical and directory contents listboxes report this event
whenever they have been expanded/collapsed regardless of whether a
double click has occurred or tab been pressed
10) Fixed an edwin panic reported by Gillian that occurred if anyone
called SetTextL for an edwin in a dialog before it was sized
From Vipul:
-----------
11) Modified the visuals of multi-page dialogs, to make them less
flickery, and to draw a border around the "page" part of the dialog
(note: currently this sometimes fails to be correctly redrawn)
From Siamak:
------------
12) Improved the implementation of the HandlePointerEventL() function
in listboxes, acting on suggestions from Neil and Steve
13) Fixed some bugs that had arisen in the recent reorganization of
listbox code
14) Removed all calls from EIKLBX to the model's ItemExist()
function, since this function is slated to disappear
15) On a suggestion from Simon, added a new function to CEikListBox
that returns the index of the bottomost visible item in the listbox.
Version 0.01.040
================
(Made by DavidW, 21 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037
C32/022 EALWL/025
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/102 FONTS/029
ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 238,440 bytes
EIKSRV.EXE 12,376
NOKIE.RSC 3,762
SYSTEM.MBM 2,180
From DavidB:
------------
1) Mfnes now support dynamic setting of their maximum and minimum
values, via SetMaximumAndMinimum() functions
2) New utility functions in EIKDLGUT.CPP to set the max/min of Mfnes
specified by control ID
3) Changed the drawing functions of Mfnes to leave one blank pixel
in between the top of the ascenders and the border, for improved
aesthetics
4) The Mfne dtor now calls HideCursor() if it is flashing a cursor
at the point of destruction, to avoid leaving the cursor behind in
some rare cases
5) Changed some IMPORT_C's to EXPORT_C's in EIKMFNE.CPP, allowing
MFNEs to be created and subclassed across a DLL boundary (so that
TMfne once again links and runs under Gcc)
From Vipul:
-----------
6) Further work on page selector controls - developed their visuals
(though this is not complete yet) so that it is clear which page is
the "current" page at any one time
7) Added HandlePointerEventL() and OfferKeyEventL() functions to
CEikPageSelector, both of which can change which page is current
8) By default, the user can press Alt+1 to move to the first page,
Alt+2 for the second page, and so on, as well as clicking with the
pen on a page selector
From Neil:
----------
9) Killing a task used to hang the rack due to a problem in E32 with
opening threads by passing the full name. Fixed by using a
TFindThread to find the thread and using the other variant of
RThread::Open()
10) Fixed a problem with an asynchronous object (the kill thread
timer) being passed a pointer to a buffer on the stack, which had
unwound by the time of the completion of the timer
11) Added a call to close the thread handle after the thread had been
killed, since otherwise trying to launch another app after killing
one hangs the rack. Unfortunately the call to Close() *itself* hangs
the rack, so this code remains commented out until resolved by the
Base team
From Siamak:
------------
12) Changed CEikListBox::SetCurrentItemIndex() so that it no longer
does any drawing as a result of changing the current item; if you
want to tell a listbox to change its current item and redraw the
affected items, call the new function SetCurrentItemIndexAndDraw()
13) Various internal changes to the listbox view code (fixing some
problems but with several known defects remaining - some old and some
new)
14) Updated TDialg0 so that the list dialog now remembers its state
when the dialog is exited via Ok/Enter
From SimonC:
------------
15) Started converting the full-screen file browser to the new
Cone/Eikon design, in the new module EIKFBROW.*
16) New test application TLBox1 to exercise the file browser
17) Added mask bitmaps for the browser's sort-order buttons (however,
these get lost against the dark background applying when the buttons
are latched down; some kind of rethink is required here)
18) Added MArray<TDesC> derived class to EIKDCLBM so that the
Directory Contents listbox model doesn't need to keep two copies of
its text
19) Fixed a bug in the Directory Contents item drawer class, which
sometimes lead to text being drawn in the same color as the
background
From DavidW:
------------
20) First Nokie with working multi-page dialogs, see the Lists
dialog in TDialg0, which has three pages each containing (as it
happens) a single list box
21) There are known issues about visuals and flicker (and eg about
the lack of initial keyboard focus in pages other than the first),
which are being worked on; also more examples will shortly be
available
22) New class CEikDialogPage, in EIKDPAGE.*, which is the window for
a page in a multi-page dialog; the basic design is that each page has
its own window, of which only one is visible at a time; another basic
part of the design is that the iLine pointer in CEikDialog property
is *not* owned by the dialog in the case of a multi-page dialog, but
rather is just a copy of the iLines pointer in the current page; note
finally that there is *no* new class CEikMultiPageDialog (or
whatever); isntead, you just subclass from CEikDialog as normal, and
what makes it a multi-page dialog is the contents of the resource
definition
23) Converted to CONE 102, by removing various empty Draw() functions
that are no longer required (because CCoeControl::Draw() is now
itself empty)
24) Adjusted the drawing code of choice lists to move one line of
empty pixels from the ascender area to the descender area, to prevent
the tops of letters colliding with the top border; this change
automatically benefits subclasses like CEikFileNameSelector too
25) Reduced the inter-item spacing between dialog controls (more
strictly, the extra vertical margins around a CEikCaptionedControl)
by two pixels top and bottom
26) Partly to compensate for the above, added back two pixels spacing
at the very top of a CEikCaptionedControlArray; the net result of
these changes is that a dialog with a title and eight "normal" lines
fits snugly within the screen height (eg, the dialog you get by
pressing Space in TMfne)
27) Moved down the prompts of captioned controls by three pixels, so
that they align more often with the controls on the right hand sides;
also set the margins of the prompts to 1 all-round, to improve their
appearance when highlighted.
Version 0.01.039
================
(Made by DavidW, 20 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037
C32/022 EALWL/025
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/101 FONTS/029
ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 226,960 bytes
EIKSRV.EXE 11,860
NOKIE.RSC 3,718
SYSTEM.MBM 2,180
From DavidB:
------------
1) MFNEs now support a duration editor, and a combined time-date
editor
2) Several of the STRUCTs used to declare MFNEs in resource files
have been simplified (in part as suggested by MartinB), including
shortening the sizes of some of the field names (eg just "max"
instead of "maximumvalue"); also the initial value declarations have
been removed from these STRUCTs, since these values will need to be
supplied at run-time by the application (typically in a DynInitL
function)
3) Added utility Get and Set functions for all MFNE controls to
EIKDIALG.H and EIKDLGUT.CPP
4) Extended and developed the test code in TMfne, eg by supplying it
with a toolbar
(Note that TMfne doesn't link in Gcc, however, and is omitted from
the build ROM images)
From Vipul:
-----------
5) First steps of the work to support multi-page dialogs: there's a
new module EIKPGSEL, defining a page selector control, that can
optionally appear as the top line of a dialog (underneath the title);
for now the visuals of this are rudimentary
6) The DIALOG struct defined in EIKDIALG.RH now has a "pages" LLINK
field in it, that defaults to 0, but which can be filled in to
identify an array of page titles and matching page resource
definitions (not operational yet)
7) Updated the sizing and control-counting functions in CEikDialog
to take account of the possible existence of a page selector
8) Updated TDialg0 to show a dialog with a page selector (the "List"
dialog)
From MartinB:
-------------
9) Made some experimental changes to CEikCommandButton, with the
effect that when a button contains some text and a bitmap, the bitmap
never gets scrolled; this turns out to be more visually satisfying
(however, the code has collapsed the four previously visually
distinct button states into only two, resulting in much less feedback
to the user for latching command buttons)
From Siamak:
------------
10) Added explicit default ctors and dtors for all the file selection
controls, so that they can be subclassed or created from other DLLs
11) Changed the default size of the folder selector in EIKFSEL.RH to
be a fixed value (20), so that the control does not attempt to work
out its width dynamically
12) Other internal changes to file selection controls
13) Changed the signature for CEikListBox::UpdateScrollBarsL() so
that it no longer takes any arguments
14) *** IMPORTANT *** removed the HandleListUpdateL() function from
CEikListBox, since it was trying to do too much. The two most common
situations in which this function was being used are as follows:
a) after one or more items have been added to the listbox model;
in this case, you can now use the new function HandleItemAdditionL(),
which updates the listbox's bottom item index and its scrollbars (if
any), and then redraws the listbox by calling DrawNow()
b) after the set of items in the listbox model has been
completely deleted or replaced; in this case, you can typically use
the following code fragment:
myListBox->Reset();
myListBox->UpdateScrollBarsL();
myListBox->DrawNow();
where the first of these functions sets the top and current item
indexes to 0, recalculates the bottom item index, and gets rid of any
selection
15) Updated various modules (eg EIKSRV, EIKHLBX, various test apps)
that were using listboxes, to take into account the above change
From Neil:
----------
16) Pressing on the top-most button of the left off-screen window (ie
the "Menu" button) now results (courtesy of new Eikon Server code) in
an F9 keypress being sent to the foreground app - causing it to
display the menu bar
17) The Task list can now be used to kill tasks. Initially the app
is sent a Ctrl+E key event to exit normally. If it doesn't respond
within two seconds (eg if a dialog is active) a query window will be
displayed asking the user if the task should be killed. Note that
later a more specific keypress, rather than Ctrl+E, will be used,
which will have the effect of exiting out of any straightforward
dialogs before switching to the Ctrl+E processing.
Version 0.01.038
================
(Made by DavidW, 19 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037
C32/022 EALWL/025
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/101 FONTS/029
ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 223,812 bytes
EIKSRV.EXE 11,316
NOKIE.RSC 3,630
SYSTEM.MBM 2,180
From DavidW:
------------
1) Dialogs can now have buttons, declared in resource files in a
manner very similar to in the "old" Eikon design
(Various aspects of the spacing of button layout will be beautified
in the run-up to B1 day)
2) Dialogs *without* buttons will no longer exit in response to any
keypress (such as Enter), with the single exception of Escape; so, be
sure to add button definitions to all of your dialogs; this usually
just means putting
#include <nokie.rsg>
near the top of your *.RSS files, and adding lines like
buttons=R_EIK_BUTTONS_CANCEL_OK;
near the top of each DIALOG definition
3) The definition of the OkToExitL() function for CEikDialog has
changed the name of the (single) TInt parameter back to aButtonId
from aKeyCode, ie the same as it was in the "old" Eikon design
4) In principle (though this hasn't been tested), command buttons in
dialogs can contain a mixture of an image and a label, ie not just
text; this is controlled in the same way as for buttons in toolbars
5) Converted dialogs to use a TEikBorder for their border drawing
and size calculation routines (something they had slipped through the
net before)
6) The TryChangeFocusToL() function of CEikDialog now takes a
control id for its parameter, as opposed to a line "index"
7) Likewise the HandleInteractionRefused(TInt) callback from
CEikDialog now passes the control id of the dimmed line, rather than
its line "index"
8) Reinstated "query" utility functions in CEikonEnv:
TBool QueryWinL(const TDesC& aFirstLine,const TDesC& aSecondLine);
TBool QueryWinL(TInt aFirstLineId,TInt aSecondLineId=0);
9) As an example, converted the "Repro" menu command in LShell to
call QueryWinL() instead of using a home-grown dialog
10) Added a function MnemonicKeycode() to CEikCommandButton, which
returns the value of the corresponding function of its label
component, if that exists, or zero otherwise.
Version 0.01.037
================
(Made by DavidW, 17 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037
C32/022 EALWL/025
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/101 FONTS/029
ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 221,136 bytes
EIKSRV.EXE 11,316
NOKIE.RSC 3,390
SYSTEM.MBM 2,180
Nokie depends on EALWL for the first time
From SimonC:
------------
1) With Siamak, numerous improvments to the file selection controls,
to solve various panics and unhandled exceptions, and to minimize the
amount of work that dialogs are required to do to coordinate their
file selection controls
2) Fixed TRTxtEd so that files can be loaded and saved once again
(thereby providing a meaningful test of the common file dialogs and
the controls they contain) - note that if you give your saved files
an extension other than *.RTX, a subsequent Open dialog will fail to
find them again
From Neil:
----------
3) New module EIKALSRV.* for the alarm/alert server, running inside
the Eikon Server process; for the time being, all (legal) requests
are simply completed with KErrNone
From Vipul:
-----------
4) Created a new module EIKBTPAN.* for the "button panel" class
CEikButtonPanel to implement panels of buttons in dialogs
5) Currently this class only reports its size, as read in from a
resource file; this is done to allow dialog geometry calculations to
be refined:
6) Modified the MinimumSize() and SizeChangedL() functions of
CEikDialog to take account of the presence of a possible button array
7) Defined the flag EEikDialogFlagButtonsBelow which, if set, will
position the panel of buttons along the bottom of the dialog;
otherwise (the default) they will be positioned down the right hand
side
8) Modified the dialogs defined in TDialg0.RSS to specify dummy
button panels (some at the bottom of their dialogs, and some down the
right hand side), which are drawn as dark gray rectangles for now
From DavidW:
------------
9) Introduced the virtual function CurrentItemChangedL() in
CEikChoiceListBase, to simplify the design of those of the file
selection controls that are derived from CEikChoiceList
10) Removed EDISP.DLL from NOKIE.OBY, since it is the display driver
used by the Text Window Server and isn't needed for graphics ROMs
11) Got fed up with test applications not having toolbars, and beefed
up the CEikToolBar class accordingly, together with support for
toolbars inside CEikAppUi
12) Added single toolbars to TDialg0 and LShell, and a pair of
toolbars (one down the side and one along the screen top) to TRTxtEd,
one of the latter replacing the toolbar which TRTxtEd used to
hand-craft
13) New function CEikAppUi::ClientRect() which applications using
built-in toolbar support should call, to find the TRect area that is
left behind once the toolbars are taken into account; client windows
should be created with that extent, rather than the extent of the
whole screen (otherwise the toolbars will be covered up)
14) Fixed a bug in test code whereby a descriptor was being passed by
value as a ... parameter to Format(), whereas its address needs to be
taken, to match a %S (thanks to the Gcc compiler for spotting this).
Version 0.01.036
================
(Made by DavidW, 16 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/037 C32/022
GDI/029 FNTSTORE/022 FBS/028 BITGDI/030
WSERV/042 CONE/101 FONTS/029
ETEXT/046 TBOX/068 GRID/068 PDRSTORE/012 PRINT/020
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 219,016 bytes
EIKSRV.EXE 10,256
NOKIE.RSC 3,390
SYSTEM.MBM 2,180
First release in synch with GDI/029 WSERV/042 ETEXT/046 TBOX/068 etc
Nokie depends on C32 for the first time (because PDRSTORE does)
Among other changes that come automatically (because of upstream
components) are the fact that cut and paste of rich text now
preserves embedded formatting
Note that Ears and ScrollBar buttons etc (anything using DrawPolygon)
fail to display themselves properly, pending a re-release of Wserv
From Neil:
----------
1) In the Eikon Server, the treatment of "special" keys (ie switch
off, and LCD contrast change) is now done in a keyboard filter
control, so that it still works even when the Eikon Server is
displaying a dialog
2) Changed the listbox in the task list dialog to have an
auto-visible scrollbar (but a known defect in listbox code prevents
this from displaying properly)
3) Altered the Draw() function of the CEikMover control to draw the
text inverted when the mover is being pressed, eg when a dialog is
being moved
4) Added an Auto swith off menu command to LShell, producing a
dialog for controlling the auto switch off properties (however the
corresponding UserHal functions in E32 haven't been implemented yet)
5) Added Set and Get utility functions for number editors in dialogs
to EIKDLGUT.CPP
6) Added a forward declaration of class CEikonEnv to EIKMFNE.H
From SimonC:
------------
7) Implemented CEikFolderNameSelector, which presents (in a choice
list, and then in a listbox, if tabbed out) a flat list of all the
directories in an expanded directory tree listing
Note that a dialog with a CEikFolderNameSelector takes a *very* long
time to initialize itself under WINS, since it will scan the entire
directory structure of your C:\ drive; this will change in the wake
of E32/065 when C: under WINS is mapped to a specified subset of your
hard disk
From Siamak:
------------
8) New classes CEikFolderNameEditor and CEikDriveNameSelector, and
developed the code for CEikFileNameEditor
9) Upgraded the common file dialogs to present coordinated sets of
the file selection controls - see eg TDialg0 for these dialogs
From Vipul:
-----------
10) Fixed typo bug that was causing the border of command buttons to
occasionally get drawn in the wrong state
11) Improved test code TPDraw1 to include a class of buttons in which
two different bitmaps are displayed on each face; this tests out
ideas and code for scrolling button faces
12) Improved test code TBtGrp1 to test the SetDisplayContent()
functionality of command buttons, via a new menu; this required the
function CEikCommandButton::SizeChangedL() to be made public; note
that only the display content of the "Word" button is altered
From DavidB:
------------
13) Simplified some of the structs used for declaring MFNEs in
dialogs - see TMfne for examples
14) EIKMFNE now supports range editors and lat/long editors
15) Extra test code in TMfne, available on Ctrl-F through Ctrl-H, to
show the new kinds of MFNEs
16) Single-field number editors now increment/decrement their ears
are nudged
17) New system-wide feature on Sh-Ctrl-Alt-P to display a dialog with
a number editor allowing the heap failure rate to be set; this can be
cancelled using Sh-Ctrl-Alt-Q; doubtless it will show up all kinds of
bugs where code has not been written in a Leave-safe manner
From Julian:
------------
18) Improved test code TSound to incorporate a progress bar to give
better visual feedback to the user during playback
19) Fixed a crash with stray signal death if the record button was
pressed while recording was already in progress
20) TSound now detects the "already exists" error when loading the
sound device driver, and now treats this as harmless, rather than
failing to complete application initialization
From DanH:
----------
21) Minor improvement to TGrid test code
From MartinB:
-------------
22) Fixed CEikToolBar code so that buttons are pushed on the cleanup
stack during their initialization (needed because of the removal of
the "reserved space" feature from CCoeControlGroup)
23) Renamed Button() to ButtonById() in the toolbar
24) Fixed CEikHorOptionButtonList to use TCharUC rather than
home-grown upper-casing
25) Renamed GEikGridWin to CEikGrid, and changed test code TGrid
accordingly
From DavidW:
------------
26) Converted all code to compile and link, in the wake of API
changes upstream; note that some further work remains to be done
within Nokie code to take better advantage of these API changes
(especially those within Form)
27) Changed the name of CEikDialog::ValidateFocusControlL() to
PrepareForFocusTransitionL(), in line with the related change of
CCoeControl::CheckStateIsValidL() to PrepareForFocusLossL()
28) Added a utility verb PUTYELLOW to MNT.CMD:
:putyellow
call prj tsrc
echo Copying eik%_ver%P1.img to r:\%_vgroup%\yellow ...
copy eik%_ver%P1.img r:\%_vgroup%\yellow >nul
goto end
Version 0.01.035
================
(Made by DavidW, 14 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/036
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/099 FONTS/029
ETEXT/044 TBOX/066 GRID/067 PDRSTORE/011 PRINT/019
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 210,624 bytes
EIKSRV.EXE 9,764
NOKIE.RSC 3,273
SYSTEM.MBM 2,180
Uses CONE 099 for the first time
Note that EIKBTGRP.* should be deleted, since it has been superseded
by COECTGRP.* in CONE
Before you can do a MNT BLDIMG to make your own P1 ROM image, you'll
need to have DASNP1.PDD on your PC, in \work\emarm. Doing MNT GETE32
will fetch it now (it wasn't originally released), or you can copy it
from Julian's U:\
From Julian:
------------
1) New test code TSOUND.* demonstrating the record and playback
features of the machine, working off an array of five buttons; this
is the first public outing for code that will eventually become the
VoiceNotes app
(this works best on a real Protea or on a rack-C)
From Siamak:
------------
2) Renamed EIKFNSEL.* has to EIKFSEL.*, since this module will
contain other file selector controls, in addition to the filename
selector class CEikFileNameSelector (derived from CEikChoiceList)
3) Created CEikFileNameEditor, derived from CEikEdwin
4) Modified the SaveAs dialog in EIKCFDLG to use the filename editor
(there's an example of this dialog in TDialg0)
5) New header file EIKFSO.H defining MEikFileSelectionObserver
6) Various internal changes to the choicelist and listbox code
From Neil:
----------
7) The Eikon Server now uses a listbox for its task list dialog
(presented when Ctrl-System is pressed) rather than a choice list
8) Clicking on System will task switch to LShell if it is running,
or if it is not running, it will start LShell (this feature is handy
if you unintentionally exit your last running LShell)
9) Improvements to the Notifier Server code, eg to panic the client
instead of self on receipt of bad parameters
10) New private header file EIKSVPAN.H for panics from the Eikon
Server
11) Added a "Machine info" menu command to LShell, but this always
just says V1.00(1), regardless of the OBY file saying eg 0.01(035)
12) Added Set/Get utility functions in EIKDLGUT for the current item
of a listbox in a dialog
13) Fixed a problem in text listbox model code
From Vipul:
-----------
14) Added the function SetDisplayContent() to CEikCommandButton,
which takes a TDisplayContent parameter to specify whether both the
text and bitmap of the button should be displayed, or just one
15) Changes to the StateChangedL() function of CEikCommandButton, to
prevent the button face from scrolling indefinitely in cases such as
the Bold Italic and Underline buttons on the TRTxtEd toolbar
16) Updates to TEikBt1 test code
From SimonC:
------------
17) Improved the BLD.CMD system in the ..\srcdata directory, so that
each constituent *.PBM file now gets listed in its own line in a
BLD.TXT text file
18) Minor improvements to the Repro Confirmation dialog in LSHELL
From DavidW:
------------
19) Added an "Eikon version" menu command to LShell, to display the
version number of Eikon/Nokie that is included; this also gets
displayed when LShell starts
20) In line with changes in CONE, renamed the bitmap store file
EIKON.MBM to SYSTEM.MBM (though the generated header file EIKON.MBG
retains its name, and likewise the enums in it)
21) Converted all MinimumSizeL const functions to be MinimumSize (non
const)
22) New (overloaded) TEikBorder constructor, specifying just the
TBorderType, and not bothering to pass any "adjacent" flags (which
the constructors effectively sets to ECoeAdjNone)
23) Managed to fix the Notifier Server so that it now works under Gcc
as well as under WINS.
Version 0.01.034
================
(Made by DavidW, 13 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/036
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/098 FONTS/029
ETEXT/044 TBOX/066 GRID/067 PDRSTORE/011 PRINT/019
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Sizes (Gcc build): NOKIE.DLL 212,472 bytes
EIKSRV.EXE 9,756
NOKIE.RSC 3,281
EIKON.MBM 2,180
Uses GRID/067 for the first time, with the result that *all* Nokie
test apps now run under Gcc
(Build 033 was released under-the-counter, without release notes.)
From Neil:
----------
1) The Eikon Server now implements the Notifier Server defined in
E32, ie if an app calls User::Notify() the Eikon Server will display
an alert dialog on its behalf
2) Added some explicit tests of the Notifier to TMenu3, in its Alert
menu
Note: for reasons unknown, calling User::Notifier under Gcc results
in the Eikon Server exiting
3) Reorganized some of the code in the Eikon Server, moving its
header files into ..\inc
4) Converted the task list dialog to be a "sleeping dialog", to help
ensure that it can always be displayed, even in low memory
circumstances
Note: another example of use of the Notifier is when an application
calls CEikonEnv::AlertWin (directly or indirectly) at such a time
before the Alert dialog for that application hasn't been constructed
yet; in this case, system code defaults to calling User::Notify();
note however that all application start-up code of the form
#if defined(__WINS__)
EXPORT_C TInt EntryPoint(TAny*)
#else
GLDEF_C TInt E32Main()
#endif
{
CEikonEnv* coe=new CEikonEnv;
TRAPD(err,ConstructAppL(coe));
if (!err)
coe->ExecuteD();
return(err);
}
needs to change to
#if defined(__WINS__)
EXPORT_C TInt EntryPoint(TAny*)
#else
GLDEF_C TInt E32Main()
#endif
{
CEikonEnv* coe=new CEikonEnv;
TRAPD(err,ConstructAppL(coe));
if (err)
coe->HandleError(err);
else
coe->ExecuteD();
return(0);
}
in order for these errors during program startup to be properly
notified to the user; with this done, errors such as resource files
being missing get notified
From SimonC:
------------
5) Converted the hierarchical, directory tree, and directory
contents listboxes from \eikon, along with their bitmaps
(as a result, the module count in \nokie\src hits 72)
6) Added test code for all these kinds of lists in TLBox2. On
startup this contains a directory tree listbox. The type of listbox
displayed can be changed by using the menu. Try double clicking, to
expand or collapse branches, in all cases
7) TLBox2 contains its own example of a hierarchical listbox
subclass, which shows a hierarchy of continents, countries, and
cities, read in from a plain text file
From MartinB:
-------------
8) CEikToolBar now has a ConstructFromResourceL and a NewL function,
so that toolbars can be loaded from resource files (this is a bare
bones implementation at the moment)
9) The ConstructFromResourceL function supports buttons with
bitmaps and/or text
10) New file EIKTBAR.RH with definitions of TOOLBAR and
TOOLBAR_BUTTON
11) Change to CEikButtonGroup so that some layout is handled when
buttons are added
12) Updated TRTxtEd test code to reflect the above
From Vipul:
-----------
13) Fixed various bugs to do with the borders drawn for buttons at
the edges of button groups
14) Introduced a couple of panics in command button code to catch
problems earlier
15) Upgraded TBtGrp1 to allow the setting of button spacing in a
button group
16) Other improvements to TBtGrp1 such as "radio button" displays in
menus
From Dan:
---------
17) Removed the call to ReportEventL(EEventRequestFocus)
from CEikGridWin::HandlePointerEventL (this is no longer needed,
under the new CONE design)
From DavidW:
------------
18) Controls and their prompts are once again properly aligned within
dialogs, courtesy of the new class CEikCapCArray, the array of
captioned controls, defined in the new module EIKCAPCA.*
19) Converted test code TCAPC1.* to use CEikCapCArray
20) Key Up/Down in dialogs now bypass lines which are non-focusing
21) Changed the settings for a few controls in EIKFCTRY.CPP to say
they are non-focusing
22) Took back the earlier idea that any line in a dialog without a
prompt is non-focusing (easy counter-example: the character map
control)
23) Fixed a bug in the character map in which it could try to draw a
flashing cursor even when it wasn't focused
24) Label controls in dialogs are now given center alignment
(intended for use in the likes of alerts and notifiers)
25) Changed TMenu3 to print up the keycode and modifiers of keys
received, as an aid to figuring out which keys do what on a real
Protea
26) Changed the background in LSHELL from dark gray to textured
(philosophically much sounder, and much better looking on real
Proteas)
27) Converted the startup code of all live Nokie test apps to the
form indicated above, so that errors during program startup get
notified (in due course, when the application architecture is running
again, that code will be taken over into Eikon.DLL itself, out of the
hands of individual test applications).
Version 0.01.032
================
(Made by DavidW, 13 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/036
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/098 FONTS/029
ETEXT/044 TBOX/066 GRID/066 PDRSTORE/011 PRINT/019
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 192,512 bytes
*** A few source files re-put, 11:30 13/08 -
..\group\release.txt, ..\group\mnt.cmd, ..\tsrc\nokie.oby
allowing all but one of the test apps to run on the rack. Basically
more files needed to be added into nokie.oby. TGrid still won't run,
due to a version mismatch between Bafl and Grid (I had forgotten that
Grid depends on Bafl; adding in the sound services to Bafl had the
effect of breaking TGrid!)
I've also added the verb "MNT REPRO" to mnt.cmd
:repro
call prj tsrc
prepro eik%_ver%P1.img
goto end
The file r:\nokie\yellow\nok032p1.img has been updated to match ***
This is the first Nokie to release "over-the-counter" a ROM image
that can be reproed onto any of the (working) yellow Proteas. These
ROM images will henceforth be placed in the directory
r:\nokie\yellow
a./ First you need to get hold of a repro cable. That's the *really*
hard bit! They're rarer than, err, hen's teeth
b./ Then you have to prepare your Protea for reproing. If it's
already got Nokie software running on it, there's nothing to be done
- just go to LShell and find the Repro command on the menu bar. If
it's still running the original (text shell) software, you have to
type (into the text shell on the Protea)
cd ram
copy repro.exe c:
c:
c./ Then you need to be sure you've got PREPRO.EXE in your path.
Best here is to type, on your PC
set s=s:
cd \tools
getrel ptool peiger 104
set s=r:
d./ Then you start PREPRO.EXE on your PC. Type
prepro r:\nokie\yellow\nok032p1.img
e./ Then you start REPRO.EXE on your Protea. Either complete the
Repro confirmation dialog under LShell, or type "repro" into the text
shell (depending on what software's already on the Protea)
f./ Wait (around six minutes) and watch the numbers tick by on the
PC. Make sure power is maintained to the Protea at all times
g./ When the PC beeps and tells you, you reboot the Protea (eg remove
all power for a few moments, or else jab its reset hole with an
unfolded paper clip), and you can press Esc to exit PREPRO on your PC
NB The Nokie software is in a highly transitional (and frequently
broken!) state; repro at your own risk
For the time being, you can switch off a Protea by Ctrl-Fn-Del
From Vipul:
-----------
1) A new implementation of button face scrolling for command buttons
(the way the face scrolls when the button state changes): there are
now Scroll() functions in each of CEikLabel and CEikImage
2) Made CEikButtonGroup::AddButtonL() virtual as requested by
MartinB
3) The AddButtonL() function of CEikButtonGroup now always allocates
an extra space in the array, to simplify the calling code (also as
suggested by MartinB)
4) Extended the functionality of CEikButtonGroup, as can be seen by
the latest version of the TBtGrp1 test code
5) Various improvements to TBtGrp1 to make its functionality more
apparent
From Vamsi:
-----------
6) New class CEikToolBar in the module EIKTBAR.* containing a
subclass of CEikButtonGroup suitable for applications to use as their
toolbars
7) Added example of CEikToolBar to test code TRTxtEd
(Note: more work remains to be done to make button groups/ toolbars
friendlier for applications to create, eg from resource files. Also
the visuals need further refinement.)
From SimonC:
------------
8) Added a Repro menu command to LShell, which (after an "Are you
sure" query) runs the program z:\ram\repro.exe
Note: until we convert to the forthcoming E32/065, the repro.exe that
ends up in the Protea ROM has to be the "repro.RAM" file which is
*different* from the repro.EXE file released by E32/064. The new MNT
verb FIXREPRO will create repro.RAM from repro.EXE for you. If you
try to invoke "mnt bldimg" (or equivalently, just "bldimg") without
repro.RAM existing on your PC, the MNT will fail, telling you that
you need to do "mnt fixrepro" first.
Also note: "mnt bldimg" now defaults to creating a P1 variant of the
ROM, that can be reproed onto a Yellow Protea (as well as onto a
mini-rack). Before, it used to default to a rack-B ("PB") variant.
To create a rack-B variant of the ROM, type "MNT BLDIMG PB" (or "MNT
BLDIMG RB") (you can use either upper-case or lower-case letters)
Again note: there is a new naming convention for the *.IMG files;
what would formerly have been called EIK032B.IMG is now EIK032PB.IMG,
ie with an extra 'P' inserted; this allows for EIK032P1.IMG for the
Protea hardware v1 variant, instead of all the numbers running
together as EIK0321.IMG, as would formerly have been the case
Final point: if you're preparing your *own* ROM for reproing - make
double sure you include REPRO.RAM in your *.OBY file, renaming it to
REPRO.EXE; PEIGER a PB or PC version onto a rack first, to check that
it boots okay, before you PREPRO it onto a Protea.
Version 0.01.031
================
(Made by DavidW, 12 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/036
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/098 FONTS/029
ETEXT/044 TBOX/066 GRID/066 PDRSTORE/011 PRINT/019
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 190,932 bytes
Once again, a couple of test apps seem not to run on the rack, for no
obvious reason
From DavidW:
------------
1) Developed the technology for "sleeping dialogs", ie dialogs which
are pre-allocated and which remain invisible ("asleep") until such
time as the application needs them
2) Implemented CEikon::AlertWin() to use a sleeping dialog (which is
guaranteed not to fail with OOM when required)
3) Changed the CEikDialog::SetXxx utility functions in EIKDLGUT.CPP
not to be const.
Version 0.01.030
================
(Made by DavidW, 10 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/036
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/098 FONTS/029
ETEXT/044 TBOX/066 GRID/066 PDRSTORE/011 PRINT/019
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 189,316 bytes
Once again, a couple of test apps seem not to run on the rack, for no
obvious reason
First Nokie release using Bafl/036 and Cone/098
From Neil:
----------
1) The Eikon server now displays a list of running tasks on receipt
of Ctrl-System; go to an entry in this list and press Enter to bring
that to foreground
2) This list is constructed using Window Server enquiry functions,
and the names displayed are (for now) concocted by Wserv from the
corresponding thread names; this will be sanitized shortly
3) New module EIKDLL.* containing a static function to encapsulate
launching an application (with the correct code in either WINS or
GCC); changed EIKSRV and LSHELL code to call this rather than their
own versions of this function
4) New private function SetEnvSystemModalApp() in CEikonEnv, that
can be called (as a friend) by the Eikon Server, with the effect that
all pointer-capturing windows in the Eikon Server actually capture
the pointer relative to all window groups (whereas usually pointer
capture doesn't prevent the user from clicking on the windows of
another window group); thus modal dialogs in the Eikon Server are
automatically system modal
From SimonC:
------------
5) Started a rich text editor control that can be used in dialogs -
source code in EIKRTED.*; this supports Ctrl-BIUF to toggle Bold
Italic and/or Underline, and to display the Font dialog; also
Ctrl-XCV for clipboard operations (courtesy of functionality from the
CEikEdwin level)
6) Added example of rich text editor in dialog in TDialg0 (run the
dialog twice to see how the rich text can be preserved across
invocations)
7) Fixed an edwin panic that could occur when constructing from a
resource
8) Changed the name EEdwinFontUnderlineOn to EEdwinFontUnderline in
EIKEDCMP.H as the old name was misleading
9) Fixed a bug in the font dialog which meant that changing the bold
or italic settings was not having any effect
From Vamsi:
-----------
10) New function ButtonId(CEikButtonBase*) in CEikButtonGroup that
returns the Id of the specified button (required for application
toolbar purposes)
11) Fix to CEikHorOptionButtonList to report state-changed events
when changed by Left or Right keys
From Siamak:
------------
12) Made alterations to CEikListBox and CEikTextListBox as required
to support listboxes in dialogs
13) Added an example in TDialg0 of a listbox in a dialog
14) Changed CEikScrollBar::EStandardWidth to be public, to aid
various size calculations
From DavidW:
------------
15) Increased the size of check boxes; unfortunately this has the
side-effect that some dialogs are now too large for the screen;
pending extra control over dialog geometry, I've commented out the
"print position" line in the Font dialog
16) Moved the OfferKeyEventL() function from CEikCheckBox to
CEikButtonBase, as it applies equally well to all kinds of button
17) Changed the default animation period of buttons to 0, so that
clicking on the ears of check boxes (or pressing Left or Right) no
longer suffers noticeable delays; the animation period for command
buttons remains at 2/10 of a second
18) Fixed the drawing problems with the Font dialog (and the font
preview control)
19) Starting changing all the CEikDialog::SetXxx() utility functions
to call DrawNow() on their controls, as an undoubted code-saving
and sanity-preserving measure
20) The AlertWin() functions in CEikonEnv are now functional again
(both the single and the double TDesC& variant); well they display
either one or two info messages (suitably paced) but a
dialog-oriented implementation is just around the corner; changed the
Edit menu in TMenu3 to an Alert menu to allow these functions to be
tested
21) Fixed various coding infelicities so that (temporarily, no doubt)
Nokie compiles without a single warning under Gcc
22) To avoid confusion, I deleted ..\inc\eikctrls.rh and removed it
from the li.prj and incc.prj files.
Version 0.01.029
================
(Made by DavidW, 9 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/035
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/097 FONTS/029
ETEXT/044 TBOX/066 GRID/066 PDRSTORE/011 PRINT/019
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 189,288 bytes
For reasons unknown to me, TScrlB0 and TRTxtEd fail to run on the
rack. All other test apps run fine.
The test app TDialg1 has been removed as no longer required.
Nokie officially depends on PDRSTORE(011) and PRINT(019) for the
first time, as they are now required by some test code (and will
shortly be required by Nokie.DLL itself)
From DavidB:
------------
1) Further developments in EIKMFNE.*
2) Further developments in test code TMfne.*; in particular, there's
now a dialog there, containing a number editor, a time editor, and a
date editor (the number editor displays ears, but these are currently
ineffective)
From Siamak:
------------
3) Fixed problem in listbox code when the user clicked on an item
when the previously selected item had been scrolled offscreen (the
display scrolled to expose the previously selected item, rather than
the new one)
From MartinB:
-------------
4) Changed the implementation of CEikDialog::ConstructFromResourceL
so that the array of lines is pre-allocated, once the number of lines
is known - this saves pushing and popping each line on the cleanup
stack as they are individually created
From Vamsi:
-----------
5) Converted part of EIKPRTDG.* - the page spec and page margins -
from Eikon to Nokie
6) Added options in TRTxtEd to test the above dialogs
7) TRTxtEd now also has features to test the text find/replace
dialogs
8) Changed the implementation and design of CEikHorOpButList to be
able to pass on control events from the individual buttons to the
observer of the list as a whole
9) Minor bug fix in EIKFINDD.CPP
From SimonC:
------------
10) Converted the border preview control CEikBorderPreview from Eikon
11) Converted the paragraph format dialogs from Eikon and added
options to access them from TRTxtEd
12) Defined a new control CEikFontPreviewLabel in EIKFPREV.*, which
leaves the CEikLabel class less encumbered for general usage
13) Added two more constructors to CEikEdwin which take a global text
pointer - for use by Data (and no doubt by others)
14) Fixed the progress bars example dialog in TDialg0 so that the
bars reset once they have reached their limits
15) Provided Set/Get methods for twips editors in DLGUT.CPP
16) Fixed a minor bug in CEikComboBox::SetArray
From Vipul:
-----------
17) Some changes to CEikButtonGroup, to support the notion of
"direction", eg from top to bottom or bottom to top (used when
wrapping buttons)
18) Fixed some bugs in TBtGrp1
From DavidW:
------------
19) Changed the maximum heap allowed for applications from 0x10000 to
0x200000 (the same as it used to be in the old Eikon)
20) Removed the iFlags field from the resource file definition of
DLG_LINE, since this is now handled by the control factory
21) Moved the definition of KEikDefaultCursorWidth from EIKEDWIN.H to
EIKENV.H.
Version 0.01.028
================
(Made by DavidW, 8 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/035
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/097 FONTS/029
ETEXT/044 TBOX/066 GRID/066
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 169,756 bytes
From Neil:
----------
1) Started the Nokie implementation of the Eikon Server, in the
module ..\eiksrv\eiksrv.cpp; this builds to create EIKSRV*.EXE (.DLL
under WINS) which now (courtesy of a change in WSINI.INI) gets
started by the Window Server instead of LSHELL
2) In turn the Eikon Server starts LSHELL; quite a lot of the
functionality from LSHELL has been relocated in EIKSRV
(One side-effect of the change has been that you get a blank screen
on exiting LSHELL - more correctly, on exiting the last "normal"
Nokie app. This is the silent face of the Eikon server. Just press
Ctrl+E again to exit the whole thing.)
3) On advice from Bill, changed the Draw() function of CEikMover not
to change the control's appearance depending on whether it is active
From Vipul:
-----------
4) Fixed a bug in TEikBorder for the case when a button had adjacent
neighbors both to its right and below it
5) Changed the scrolling effects in command buttons again
6) Introduced support for "button wrapping" in CEikButtonGroup
From DavidW:
------------
7) Fixed a bug that had crept back into Nokie in the previous build,
whereby clicking on dialog items could panic (the point is that
auto-focusing of dialog items is handled at the *line* level and not
by individual controls, so *all* controls in a dialog end up with the
no-auto-focusing flag set for them)
8) Made a quick attempt to fix some of the broken merge (in the last
build) of the MFNE code and test code, but gave this up (with a few
of my additional merges in place) as a lengthy job best delegated!
(so, TMfne is left in its instantly panicking state)
9) Changed some of the case statements in the control factory code
to set some "has ears" and/or "do not focus" flags as required.
Version 0.01.027
================
(Made by MartinB, 7 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/035
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/097 FONTS/029
ETEXT/044 TBOX/066 GRID/066
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
From Neil
=========
EIKDLGUT.CPP & EIKDIALG.H
-------------------------
Added "utility functions" eg SetCharMap(TInt aControlId, TInt aChar)
to avoid every application having to look up the control id, cast and
call the appropriate function themselves. Get/Set functions provided
for all controls currently in the control factory.
EIKCHMAP.*
----------
Added a SetChar() function for use in eg a dialogs
PreLayoutDynInitL() function to seed the character map with a value
other than 32 (space)
TSCRLB0.*
---------
Added menus, dialogs and hotkeys to change the proportion of the
bitmap and scrollbar button appearance/dimming.
From Vipul
==========
1. Renamed TEikPlinth to TEikBorder as preferred by Bill. Also made
significant changes to the API as discussed with Bill and MartinB.
This has made TEikBorder much easier to use than the previous
TEikPlinth.
2. Updated ALL Eikon source code that had any reference to
TEikPlinth.
3. Added the virtual function SetAdjacent() to CEikButtonBase which,
by default does nothing. It is meant to be over-ridded by sub-classes
that have a border. CEikCommandButton, for example uses it to set
whether a button is adjacent to other buttons.
4. From 3. above, removed SetPacking() and SetBorderDepth() functions
from CEikCommandButton and replaced them with SetAdjacent(). Note
that all command buttons now have a plinth with a border depth of 1
pixel and this cannot be changed.
5. Re-introduced the scrolling effect in buttons. It seems to work
quite nicely now.
6. Introduced a new struct called SEikButton to EIKBTGRP.H. This
holds a CEikButtonBase* and a button id. So the button group now
holds an array of SEikButton's rather than CEikCommandButton*'s.
7. Added iHSpacing and iVSpacing to CEikButtonGroup to hold the
horizontal and vertical spacing between buttons respectively. The
function SetButtonSpacing() can be called to set the values for
iHSpacing and iVSpacing
8. Removed the enum TButtonLayout from CEikButtonGroup as it was no
longer needed. Also removed any functions that dealt with
TButtonLayout.
9. Updated the test codes TBUT3,TBUT4, and TBTGRP. (Note that TBUT1
and TBUT2 can be evaporated since they are no longer needed!)
Also note that due to the changes in TEikBorder, the button group
drawing has broken down and does not work properly. I'm looking into
this. Also CEikButtonGroup is not complete yet and there are some
function whose names will change. When you run TBTGRP, you will
initially have only a blank screen since the initial values of iRows
and iColumns have been set to 1. By pressing 'v', 'h' or 'm' the
groups will be drawn.
From Vamsi
==========
1) removed iPlinth in EIkopbut.* since it was no longer required.
2) Provided two new functions in EikHopbt.*
- Label() in CEikLabelledOptionButton class which returns
CEikLabel*
MatchMnemonicKey() in CEikHorOptionButton class.
3) Few changes to the OfferKeyEventL() function of
CEikHorOptionButton class. If the user presses tab key the focus is
set to the next button (same as rightarrow)
4) Provided EIKHOPBT.RH file. HorOptionBt can be created from
resource files. Changes to the ConstructFromResourceL() of
CEikHorOptionButton class.
5) converted find dialog code (EikFindd.*) from eikon to nokie.
6) added find,repalce dialog to Nokie.rss .
7) The SetContainerWindowL() of ComboBox,Edwin,edwin::constructL()
take "const" CCoeControl* instead of CCoecontrol*
8) Provided EIKCMBOX.RH for the above dialog.
9) made changes to EIkedwin and eikedcmp.* files to support the above
dialog
10) supplied new test code called tdialg1 for option buttons. I
guess you don't have to add this because the find dialog supports the
optionbuttons.
The find/replace dialogs do not work properly!!
11) Changes to TRTxted.* files to support the find/replace dlgs.
From DavidB
===========
1) Lots of MFNE changes.
From Simon
1) added iMinSize member to CEikLabel so that labels in dialogs could
specify a minimum size greater than their current minimum.
2) added preview label to font dialog.
3) fixed some edwin/combobox bugs that prevented combos being used on
dialogs. These bugs were spotted by Vamsi.
4) added progress bar and floating point editors to eikctrls.hrh and
eikfctry.cpp
5) added OfferKeyEvent to CEikCheckBox. Tab and left and right arrow
can be used to change the state.
6) converted trtxted to use the file open and save dialogs.
7) added dialogs testing progress editors, check boxes, fpnes and
option button lists to tdialg0. All dialogs can now be launched from
a menu as well as hotkeys. Some of these dialogs don't work properly
yet because of problems with the controls they contain.
8) added eiklabel.rh so labels could be used in dialogs.
9) fixed a bug in eikprogi that sometimes stopped a block with splits
being drawn.
From Siamak
===========
1. Following Colly's suggestion, modified the static function
CreateByTypeL() in TEikControlFactory such that it now returns a
SEikControlInfo structure (this contains a pointer to the control
created by the afctory as well as boolean flags that specify (1)
whether ot the control has ears and (2) whether or not it is
non-focusing) rather than a pointer to a CCoeControl. A similar
change was made to the CreateCustomControlL() fucntion of CEikDialog.
This means that for standard Eikon controls, these two flags no
longer need to be specified in resource files; they are automatically
set if it is appropriate to do so.
2 Modified TDIALG0's resource file such that the aforementioned flags
are no longer specified.
From MartinB
============
Mainly tidying up operations
1) Made some things const
2) Moved inlines out of class definitions.
3) Fixed a function that did not have the same signature of the
function it was overriding (can't remember what it was).
4) Replaced spaces with tabs in header files.
5) Moved some assignments in constructors into the initialisation
list.
6) Made CEikDialog::ControlId protected.
7) Made CEikDialog::ValidateFocusControlL virtual.
8) Fixed TDialg0 and TGrid test code (problem was that they did not
have the dummy static data).
Version 0.01.026
================
(Made by DavidW, 3 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/035
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/095 FONTS/029
ETEXT/044 TBOX/066 GRID/066
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
This is the A1-day release
Size of NOKIE.DLL (Gcc build): 163,840 bytes
Includes GRID for the first time in Nokie
From DavidB:
------------
1) Replaced EIKNUMED.* with a new implementation of numeric editors
in EIKMFNE.* (MFNE stands for Multi-Field Numeric Editors) - note
that the design is significantly different from before
2) So far, various integer editor variants have been implemented,
along with a date editor and a time editor
3) See new test code TMfne.* for examples (replaces TNumed.*)
From DanH:
----------
4) Converted test code TGrid to the new design, showing an example
of access to the GRID DLL
From Neil:
----------
5) Reinstated support in the console classes for a using backed up
window via new public flag CEikConsoleScreen::EUseBackedUpWindow
passed at construction time
6) Added a new item "Window type" in the "Special" menu pane in
TCons0; selecting this has the effect of destroying the console and
restarting it with a different window type (ie normal or backed up)
7) Added a FocusChanged() function to the console window to
show/hide the cursor as appropriate
8) The console window now uses CEikonEnv to show/hide its cursor, to
help prevent/track down "cursor theft" bugs
9) Fixed bug in scrollbar buttons where events were still being
reported when the cursor had been dragged off them
10) Added a SetFont() function in CEikCharMap, and fixed a cursor bug
when resizing
11) Pressing Ctrl+F in test code TChMap0 now changes the font, thus
providing simple zoom functionality
12) Converted the character editor class, CEikCharEditor, to the new
design, in the module EIKCHRED.*
From SimonC:
------------
13) Rearranged edwin code so that floating point editors can be
constructed again
14) Rearranged some of the floating point editor code, providing
ConstructL and ConstructFromResourceL functions for all variants
15) Moved the resource structs for floating point editors into their
own new file, EIKFPNE.RH
16) Changed test code TFpne in line with the above changes: added a
resource file containing the definition of one of each type of editor
in order to test the construction of these editors from resources
17) Tidied up combo box code CEikComboBox
18) Fixed the HandlePointerEventL function in CEikEdwin so that it is
(finally!) possible to resize a selected picture by dragging on any
of the blobs (or sides) of its rubber band
19) Fixed some other bugs in CEikEdwin::HandlePointerEventL, eg ctrl
clicking now correctly selects whole words
20) Converted the character map dialog and the font dialog to the new
dialog scheme, and added menu commands in test code TRTxtEd to access
them
From Vipul:
-----------
21) Added support in CEikButtonGroup for multi-column/row button
groups; for this to happen, the button layout flag has to be set to
EBlock
22) The block mode of button group layout supports partially filled
rows or columns, eg with 8 buttons in a 4x2 grid
23) New features in test code TBtGrp1: press 'v' to get vertical
layout, 'h' for horizontal, and 'm' for block ("mixed"); with an
appropriate layout chosen, press 'l' or 'r' to position the group at
the left or right of the screen, and 't' or 'b' for top or bottom
24) Improved the code in CEikImage for handling a bitmap larger than
the control extent
From Vamsi:
-----------
25) On Bill's recommendations, made some changes to the appearance of
the progress indicator control, eg using a sunken plinth instead of a
raised one, having a plinth border of 1 instead of 2, and changing
the appearance of the blocks
26) Changed the color of the top-left border of sunken plinths from
dark gray to light gray (this improves matters for progress
indicators, but it remains to be agreed whether it is a forwards or a
backwards step from the point of view of other users of plinths)
27) Fixed a bug in TEikButtonCoordinator in the case when it was
asked to re-select the same button as was already selected
From Siamak:
------------
28) Provided a starting point for standard FileOpen and FileSaveAs
dialogs, in the module EIKCFDLG.*
29) For an idea on how to use these dialogs, see the new examples
added to TDialg0, available on Ctrl-O for OpenFile, and Ctrl-S for
SaveFile
From DavidW:
------------
30) On MartinT's recommendation, changed all instances of "Labelled"
in the API to the American form "Labeled"
31) Changed the MnemonicKeycode() function of CEikLabel to always
return the TCharF (ie folded, case-insensitive) version of the
mnemonic
32) Fixed mnemonic matching in dialogs, to work case-insensitively
33) Matching the mnemonic of the current line now has the effect of
sending a Tab character to the control in that line (typically this
should animate any button-like object on that line) - this is
intended to meet a specification requirement spelt out long ago but
never implemented until now
34) Fixed a bug in CEikDialog::HandleControlEventL() which could try
to set the focus to the wrong item in a dialog - spotted and
diagnosed by Vamsi and Siamak
35) Fixed another bug in CEikDialog causing a crash when some items
were clicked on (noticed by Simon) - the fix here is to ensure that
all raw controls in the dialog are set to NonFocusing(), leaving it
to the lines as wholes to take the focus when clicked on
36) Put in place a temporary workaround to allow controls in dialogs
to receive Up and Down keys when they are the only control in the
dialog (such as the Character Map dialog)
37) Added a "character" line to the "Choice list" dialog in TDialg0,
containing an example of a character editor
38) Removed a #include of <eikctrls.hrh> from various modules that
didn't need it
39) Added FocusChanged() messages to some of the "root controls" of
test programs, delegating to the focus control within that container,
as required to prevent cursors keeping on flashing in the root
controls when emphasis should have transfered to eg a dialog or menu
40) On a suggestion from Simon, moved the call to
SetInitialCurrentLineL() during CEikDialog::ExecuteLD() until after
the call to ActivateL(), since otherwise the control that ends up
receiving the focus-changed message may not be ready for it
41) On a suggestion from SteveT, removed the call to DrawNow() at the
end of the initialization of a menu pane, to speed up the response
when the user eg presses Right rapidly three times in a row to move
from the first to the fourth menu in a menu bar.
Version 0.01.025
================
(Made by DavidW, 2 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/035
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/094 FONTS/029
ETEXT/044 TBOX/065
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
An interim release, with only WINS Ascii built
Basically I have ignored all the other work (and there's lots of it!)
submitted to me in the past 24 hours, to focus on producing a working
CEikDialog class
This now exists, in EIKDIALG.*, and there is working example code,
TDialg0:
*) on starting TDialg0, you'll just see a blank screen
*) Press Ctrl-C to get a dialog with choice lists in it
*) Press Ctrl-P to get a dialog with passwords in it
*) Press Ctrl-E to exit
Some limitations of the existing implementation:
*) Dialog layout isn't yet aligned neatly into two columns
*) For each control in your dialog that should have ears, you
have to set a flag for this
*) Dialogs don't have buttons, but respond to Esc and Enter keys
*) Setting controls dim or invisible probably won't work
*) App dialogs have to duplicate lots of Set/Sense utility
functions, that will shortly get gathered up into CEikDialog
Some other changes:
-------------------
1) I'm killing off EIKCTRLS.RH, by stages moving its contents to
specific *.RH files like EIKCHLST.RH and EIKNUMED.RH
2) For convenience, I'm putting a line like #include <eikchlst.hrh>
at the foot of each corresponding *.rh file, to minimize the number
of separate #include's needed by app writers in their *.RSS files
3) Various improvements to the APIs of specific controls, triggered
by trying to use them in dialogs
4) Started the static class EikControlFactory, with its single
function CreateByTypeL(), in EIKFCTRY.CPP.
Version 0.01.024
================
(Made by DavidW, 1 August 1996)
Uses: E32/064 F32/028 STORE/019 BAFL/035
GDI/028 FNTSTORE/021 FBS/027 BITGDI/029
WSERV/041 CONE/094 FONTS/029
ETEXT/044 TBOX/065
E32TOOLS/036 GDITOOLS/023 EIKTOOLS/106 RCOMP/305
First release using E32/064 et al
Size of NOKIE.DLL (Gcc build): 145,572 bytes
*** Re-put at 12:45pm Aug 1st, now with a Gcc build
No change to source code, except that NOKIE.OBY now includes EON9.GDR
instead of EON8.GDR. What makes the Gcc build possible is a
re-release of Bafl. Type "MNT GETBAFL" to fetch that by itself, if
you've already got all the other bits ***
From Neil:
----------
1) Converted the console classes in EIKCONSO.* and EIKCONSW.CPP to
the new design
2) New test code TCONS0.* for the console classes
3) Converted the character map control CEikCharMap to the new
design; also added the ability for this class to report state changes
4) New test code TChMap0.* for the character map control
5) Added a SetFont(CFbsFont* aFont) function to CEikMover to allow
different fonts; the default on construction is the TitleFont, and
this is also used whenever a NULL pointer is passed in SetFont()
6) Fixed a bug in Mover whereby calling SetActive(EFalse) while the
mover was in a pressed state left the text invisible (the pressed
state is now cancelled in this situation)
7) Developed test code TEar1 so that pressing Ctrl+F now toggles
the mover's font between the title and annotation fonts
From Siamak:
------------
8) Converted CEikFileNameSelector to NOKIE and modified the TCHLST
test app so that it creates a filename selector control and adds it
to its container control
9) Modified the code in the choicelist that creates the tab button
such that it now specifies the tab button mask as well
10) Fixed a memory leak problem caused by the destructor of CEikImage
not destroying the mask bitmap
From SimonC:
------------
11) Converted the edit combo box CEikComboBox to the new design, in
the module EIKCMBOX.*; for now, this is derived from CCoeControl
rather than from CEikChoiceList (since although there are *some*
elements in common with choice list, equally there are many
dissimilar elements)
12) CEikComboBox works similarly to the old one in Eikon, except that
selecting an item from the history list will now move it to the top
of this list; if the control is given a size larger than its minimum
it will stretch horizontally and center itself vertically (if it is
given a size that is too small, it will panic, for now)
13) New test code TCombo1.* for the edit combo box
14) The combo box showed up a few problems with CEikEdwin which have
now been fixed
(In consequence, floating point number editors have stopped working)
15) James pointed out why clicking on many of the blobs around a
picture was being ignored; now, only the bottom corners seem to get
ignored when clicked on
16) Menu tiles are now spaced slightly further apart than before
From Vipul:
-----------
17) Renamed CEikButtonArray to CEikButtonGroup, and renamed the
source module EIKBUTAR.* to EIKBTGRP.*
18) New test code TBtGrp1.* showing something that looks rather
similar to a toolbar
19) Changed the implementation of CEikCommandButton to hold a
TEikPlinth in its property, rather than constructing one on the fly
whenever required; selective access to the functions of the plinth
are available through the functions SetPlinthDepth() and
SetPlinthPacking() in CEikCommandButton
20) Changed code in CEikButtonBase so that a new callback,
StateChanged(), gets called whenever the state of the button is
altered in a way that affects how it will be drawn; StateChanged()
can be compared to the SizeChangedL() and FocusChanged() functions;
as in these other cases, the default implementation is to do nothing
21) CEikCommandButton overrides the StateChanged() function to alter
the plinth in its property, as required
From Vamsi:
-----------
22) New implementation of the horizontal option button list, in which
it now consists of a series of CEikLabelledOptionButton instances.
This latter class is derived from CEikButtonBase, and has two
components: a CEikLabel, and a CEikOptionButton. These two
components are identical from the point of view of pen clicks
23) Modified test code THopBut in line with these changes
From Brendan:
-------------
24) Fixed some minor problems with test code TColLB (this now runs on
the rack)
From DavidW:
------------
25) Made changes to Nokie code and source code as required by E32/064
and all associated downstream software components - mainly, changed
various array functions from the pointer form (no longer supported)
to the reference form
26) Fixed the captioned control class so that it knows the difference
between being de-focussed yet current (as when a listbox has been
popped out from that line) and being de-focussed *and* non-current;
in the former case, the label is drawn in partial emphasis (dark-gray
background), whereas in the latter, the label is drawn with nill
emphasis
27) Implemented the above by introducing the function SetCurrent in
CEikCaptionedControl, taking a TBool parameter
28) Modified LSHELL so that it switches the machine off whenever
Ctrl-Alt-Backspace is pressed (only effective under Gcc)
29) Created static utility function CreateStandardTabButtonL() to
CEikonEnv, which is now called by code in CEikChoiceListBase and in
CEikComboBox
30) Provided a function CEikButtonBase::CopyDrawStateTo(), which
takes another CEikButtonBase* pointer as a parameter, for use in the
simple implementation of a class such as CEikLabelledOptionButton
which is a button containing another button inside itself
31) Added a GETGDITOOLS verb to MNT, which is automatically invoked
as part of any MNT TOOLS
32) Wrote a first cut of the header file EIKDIALG.H, for a dialog
that (currently) doesn't have any buttons in it (it just has an array
of CEikCaptionedControl instances, topped by a CEikMover).
Implementation to follow shortly.
Version 0.01.023
================
(Made by DavidW, 31 July 1996)
Uses: E32/063 F32/027 STORE/018 BAFL/034
GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
WSERV/040 CONE/093 FONTS/028
ETEXT/043 TBOX/064
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 124,144 bytes
From Siamak:
------------
1) Changed to using a bitmap rather than text for the tab-out button
in choice lists (the new bitmaps have been added to the built file
EIKON.MBM, and their sources have been added to ..\srcdata)
2) Various internal changes to choice lists and listboxes in
preparation for their use within dialogs
3) New resource constants header file EIKLBX.HRH for listboxes
From Vipul:
-----------
4) The three ConstructL()'s in CEikCommandButton have been replaced
by the following:
SetTextL(const TDesC& aText);
SetPictureL(CFbsBitmap* aMain,CFbsBitmap* aMask=NULL);
SetPictureFromFileL(const TDesC& aFilename,TInt aMain,TInt aMask=-1);
which makes it easier for applications to create command buttons
5) All command buttons now default to "stay clear" behaviour; if any
other type of behaviour is required, call the SetBehaviour() function
(this used to be protected in CEikButtonBase but is now public)
6) Changed TBut2, TBut3, TBut4 to accommodate the above changes
7) New member iPlDepth in CEikCommandButton to hold the plinth
depth; this is set to 2 pixels by default, but can be altered using
the new function SetPlinthDepth()
8) See examples in TBut4 for buttons with varying plinth depths
9) Enhanced TBut4.MBM by including another set of bitmaps
10) Started work on a new module EIKBUTAR.* containing a button array
class (early days here)
From Brendan:
-------------
11) New test code TColLB which is basically the same as TLBx, except
that it allows the user to create a trial new version of a listbox,
the "column aligned listbox", which is similar to CEikTextListBox,
except that the text entries can have embedded tab characters,
meaning to jump to the next column
12) In TColLB, there's an example of a listbox with three columns,
with alignments Right, Center, and Left respectively
Stop Press: TColLB fails to build under Gcc, and has been excluded
from NOKIE.OBY
From DavidW:
------------
13) New class CEikCaptionedControl, in EIKCAPC.*, supporting optional
ears, plus one "value" control and an optional "caption" (label)
control
14) These ears are larger than in the old design, and instead of
scrolling when pressed, change color, as per more recent ideas
(similar to what happens when a scrollbar button is pressed)
15) Controls get the benefit of ears, without needing to supply any
code to this end themselves, but all that's required is for the
function SetUsesEars() to be called during the construction of the
associated CEikCaptionedControl
16) See the new test code TCapC1 for an example of using captioned
controls; this code should migrate shortly to become the basis of the
CEikDialog class (clearly there's still some way to go)
17) Changed all Nokie code and test code as required by the
introduction of MCoeControlContext in CONE 093; by and large this
simplified things (as well as fixing some bugs that couldn't
otherwise be fixed)
(the main pain was changing all ActivateSystemGc()s to ActivateGc())
18) New utility function SetContextTextured() in CEikonEnv, taking a
MCoeControlBrushContext* parameter
19) Took advantage of the improved API to command buttons to reduce
the plinth depth of the tab-out button in choice lists to 1, and also
reduced the "all-round" margin of this button to 1, resulting in a
button of equal height to the rest of the choice list
20) Added an optimization to various SetPictureFromFileL routines
whereby passing TPtrC() for the filename means that the Eikon bitmap
file \e32data\eikon.mbm gets used automatically
21) Removed the line
iCoeEnv->WsSession().SetDoubleClick(1000000,4);
from goodness knows how many test apps, since this is now taken care
of by startup code in LSHELL
22) Changed a few test apps to use the constant EEikCmdExit from
EIKCMDS.HRH rather than home-grown versions
23) Changed various bits of code that was calling SystemGc()
repeatedly to call it only once and cache the value.
Version 0.01.022
================
(Made by DavidW, 30 July 1996)
Uses: E32/063 F32/027 STORE/018 BAFL/034
GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
WSERV/040 CONE/092 FONTS/028
ETEXT/043 TBOX/064
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 120,016 bytes
From Vamsi:
-----------
1) First released version of the class CEikHorOptionButtonList, in
the new module EIKHOPBT.*
2) New test code THOPBUT for the above, featuring two horizontal
button lists; use Up or Down to change the (currently invisible)
focus between the two lines, and eg Left or Right to change the
selected button in the focused line
From Siamak:
------------
3) Added a tab-out button to CEikChoiceListBase, which can be
clicked on to get a pop-out list, and which animates when the Tab key
is pressed; see TChLst for an example of choice lists
(The tab-out button currently displays the text "tab", but this will
shortly be changed to a suitable bitmap)
4) Added a new class called MEikListBoxObserver, which currently is
a root class (not inheriting from anything); this has a function
HandleListBoxEventL(), with two listbox-specific events: "item
clicked" and "enter key pressed"
From Neil:
----------
5) The appearance of the Mover control now varies according to its
state, ie whether it is being pressed, and whether it is inactive
(potentially corresponding to the situation when a listbox has been
tabbed out from a dialog)
6) In test code TEar1, press Ctrl+a to toggle the mover's active
state
From Vipul:
-----------
7) Changed the Draw() function of CEikImage so as not to require a
clipping region
8) Fixed the MinimumSizeL() function in CEikCommandButton to take
into account the size of the plinth
9) New test code TBut4 which features some command buttons intended
as more realistic (partly by means of TBUT4.MBM containing more
bitmaps than before)
From DavidW:
------------
10) Fixed a bug I introduced earlier whereby the Legend font was
being created exactly the same as the Annotation font, ie without
being bolded.
Version 0.01.021
================
(Made by DavidW, 27 July 1996)
Uses: E32/063 F32/027 STORE/018 BAFL/034
GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
WSERV/040 CONE/091 FONTS/028
ETEXT/043 TBOX/064
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 116,864 bytes
From Neil:
----------
1) Improvements to the appearance of the mover class, including
using grips
2) The movable window in TEar1 can now have its text changed, by
using Ctrl+T
From SimonC:
------------
3) Started sample rich text editor application, TRTxtEd: this
creates a CEikEdwinCmp the size of the screen and allows bold, italic
or underline to be set, and the text to be cut, copied, and pasted
(there's a known EText problem with cutting or copying any text from
the first line)
4) Also the user can press Ctrl+S to save the text (to the hard-wired
filename \nokie\tsrc\trtxted.rtx) and Ctrl+O to load it in again
5) Changed the way an edwin calculates its size, to avoid having to
make these calculations in MinimumSizeL (which can now avoid casting
away const-ness)
6) Changed CEikEdwin::iNumberOfLines back to being zero by default
From Vipul:
-----------
7) Changed CEikImage to allow it to use two bitmaps at once, with
the second of these providing the mask for blitting the first; this
is necessary to allow the same bitmap to be drawn using two different
backgrounds
(this is not yet fully flicker-free, as it is waiting on additional
BITGDI functionality being made available)
8) Various improvements to test code, eg updated TBut3 to use a new
set of bitmaps that is closer to those in spec pictures
From KevinDe:
-------------
9) Converted the floating point editor classes in EIKFPNE.* to the
new design
10) New test code TFpne.* for the above: it creates one editor of
each of the three types, with the range set to 0-100; the fixed point
editor has 4 decimal places, and the twips editor is hard-wired to
imperial.
Version 0.01.020
================
(Made by DavidW, 26 July 1996)
Uses: E32/063 F32/027 STORE/018 BAFL/034
GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
WSERV/040 CONE/091 FONTS/028
ETEXT/043 TBOX/064
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 114,268 bytes
From Vipul:
-----------
1) CEikImage can now have its bitmap specified either by CFbsBitmap*
or by a filename plus index number - in the latter case, use the new
function CreatePictureFromFileL()
2) CEikImage now owns its bitmap by default, ie it will destroy it
on exit, but this can be changed by calling the function
SetPictureOwnedExternally()
3) Corrected some bugs in EIKCMBUT.CPP that were causing vertically
laid out buttons to be drawn incorrectly; also changed some calls to
SetExtentL() to SetRectL()
4) Some minor changes to TPDraw1 and TBut2 to accommodate the above
5) New test application TBut3 that tests buttons with pictures and
text in them; in this case, press L C or R to change the horizontal
alignment of all the buttons, or T M or B to change their vertical
alignment
From Siamak:
------------
6) The public function DrawItem() of CEikListBox now always scrolls
if necessary to make sure that the specified item is made visible
7) Fixed some more problems with incremental matching in list boxes
8) Other internal changes to listbox code, eg fixing some problems
with scrollbar positioning
From Neil:
----------
9) Changed CEikScrollBar in preparation for using the new style (ie
implemented by Wserv) of pointer repeat requests; thus the TRect
iSlowDragRect property disappears (this won't be fully operational
until the next release of Wserv)
10) Produced a first version of CEikMover in the new module
EIKMOVER.* (together with the definition of its observer class in
EIKMVOBS.*); this supports moving, but has no grips in its appearance
yet
11) Added a movable window in TEar1 to test the mover control
From SimonC:
------------
12) Added a very simple picture class CBitmapPicture to TEdwin, based
(for now) solely on the bclkmask.bmp file; there's a picture in the
multi-line editor to start with, and others can be inserted by
pressing Ctrl-I
13) CEikEdwin now has limited (and fitful) support for resizing
pictures through interacting with their rubber band; clicking on the
center blob of the picture frame on any side other than the right
creates a rubber band around the picture, which can be dragged to
resize it. A new version of FORM will be required to make this work
better (and this will also resolve some known panics). Some thought
will have to be given, too, to the fact that the blobs are next to
impossible to click on the rack. Finally some drawing weirdnesses
have been traced to a known bug in BITGDI
14) Some internal improvements to CEikRubberBand, removing its
dependency on the file \nokie\inc\frame.h which can now be deleted
(since it has been superseded by the file \form\inc\frmframe.h)
15) Relocated the destruction of CEikonEnv::iParaFormatLayer and
iCharFormatLayer, during system shutdown code, so that they still
exist when EText wants to refer to them when deleting pictures inside
an Edwin
16) Various internal improvements to CEikEdwin
From DavidW:
------------
17) Rewrote TEikDrawUtils::DrawTextWithMnemonic() to streamline it,
make it more efficient, and to fix a bug
18) Moved the source for LSHELL into its own directory,
\nokie\lshell, and made the MNT BLDxxx and MNT ARMREL verbs build it
as well as NOKIE.DLL; a built LSHELL is now included in the files
fetched by "MNT GETREL" (so it's no longer necessary to build it
before running any other Nokie test code).
Version 0.01.019
================
(Made by DavidW, 25 July 1996)
Uses: E32/063 F32/027 STORE/018 BAFL/034
GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
WSERV/040 CONE/091 FONTS/028
ETEXT/043 TBOX/064
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
Uses CONE 091 for the first time
Size of NOKIE.DLL (Gcc build): 112,680 bytes
From Vipul:
-----------
1) In a significant change of design, the CEikTextDrawer class has
migrated into the CEikLabel class, which is now a subclass of
CCoeControl, and the CEikPictureDrawer class has migrated into the
CEikImage class, which is likewise a subclass of CCoeControl. The
former module EIKIDRAW.*, EIKTDRAW.* and EIKPDRAW.* have been
withdrawn, being replaced by EIKLABEL.* and EIKIMAGE.*
(Most of what was common between the "item drawer" classes before,
that does not come under the heading of "control", is now supplied by
the TCoeAlignment class introduced in CONE 091; each of CEikLabel and
CEikImage contain a TCoeAlignment component)
2) Changed the design of CEikCommandButton over to use the new label
and image classes; CEikCommandButton is the first class to override
the ResetGcForComponents() function from CCoeControl
3) Developed and extended the test programs TTDRAW1.CPP, TPDRAW1.CPP
and TBUT2.CPP.
Version 0.01.018
================
(Made by DavidW, 24 July 1996)
Uses: E32/063 F32/027 STORE/018 BAFL/034
GDI/027 FNTSTORE/020 FBS/026 BITGDI/028
WSERV/040 CONE/090 FONTS/028
ETEXT/043 TBOX/064
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
First release compatible with STORE/018 GDI/027 WSERV/040 etc
Size of NOKIE.DLL (Gcc build): 112,180 bytes
Dead files that you should remove: EIKSLBM.*, EIKSLBX.* and EIKLBD.*
Note that you have to build LSHELL before you can run any Nokie app
(a built LSHELL will be released as part of Nokie from the next
release onwards)
From KevinDe:
-------------
1) LSHELL now scans for its list of files dynamically, listing files
*.APD in Debug builds and *.APP in Release builds; as a result, the
file \e32data\dll_list.txt is no longer used and can be deleted
Note that the build settings for all live test code have been altered
so that instead of building eg Temp0D.DLL and Temp0.DLL, they now
build Temp0.APD and Temp0.APP
Also the obey file Nokie.OBY has been altered to rename the *.EXE
files built by Gcc to be *.APP files
2) Clicking on the System button will now bring the LSHELL
application to foreground (or, if it is already in foreground, it
will send it into background again); this involved converting the
class CEikOffScreenWindow in the module EIKOFWIN.* to the new design
3) On system startup, LSHELL now initializes the double click
settings and the keyboard repeat settings to the same values as used
to be set by the Eikon Server
From Neil:
----------
4) Changed the strategy for drawing grips. Filling in all the rects
between every line, individually, was taking far too much time;
switched to a simpler system whereby the owner of the grip draws the
background first, before calling the grip, to draw the lines
Note: strictly speaking this isn't flicker free, but in most cases no
flicker actually shows (particularly on the rack), and further Wserv
changes are pending which will further decrease the occurrence of any
flicker; overall, the result is preferable to all the other schemes
that have been considered so far, each of which involves a high
memory cost or speed degradation
5) Modified the test code in TScrlB0 so that larger grips can be
viewed
From Siamak:
------------
6) Followed another set of suggestions from Bill and MartinB for
reducing the size of the listbox API (albeit at the cost of
emasculating it, eg zoom support has been removed from listboxes)
7) CEikStandardListBox has been renamed to CEikTextListBox; its
module has changed its name from EIKSLBX.* to EIKTXLBX.*
8) CStandardListBoxModel has been renamed to CTextListBoxModel; its
module has changed its name from EIKSLBM.* to EIKTXLBM
9) Scrollbar support is back in listboxes, eg the LSHELL program
now has it
10) Fixed a problem with incremental matching in listboxes, and set
the listbox in LSHELL to be incremental matching
11) Advanced users of listboxes should note that the model class
MBitmapAndTextListBoxModel has been replaced by MTextListBoxModel,
which inherits from MListBoxModel
12) Also, instead of CBitmapAndTextListItemDrawer, there is now just
CTextListItemViewer
13) The interface class TListBoxDrawInfo has been dropped, and so the
module EIKLBD.* has been deleted
From DavidW:
------------
14) Converted Nokie code and test code as required by the new GDI etc
15) On a suggestion from MartinB, changed the build settings of all
live Nokie test code so that the preprocessor definitions of _WINDOWS
and WIN32 are no longer set
16) Removed some "unreachable code" from some test applications
(thanks to the Release mode compiler in MSVC for spotting this).
Version 0.01.017
================
(Made by DavidW, 23 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/089 FONTS/028
ETEXT/042 TBOX/062
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 110,431 bytes
From KevinDe:
-------------
1) Nokie nows runs with its own shell program, LSHELL, instead of
the Window Server shell; this is an Eikon list box (if you still get
the Window Server shell, check that the STARTUP line in WSINI.INI in
\e32data specifies LSHELL not SHELL)
2) LShell acts on either an Enter keypress or a pointer-up to launch
the program highlighted; drag and scroll off the bottom to expose
other names not originally visible
3) LShell captures the Ctrl+Alt+, and Ctrl+Alt+. key combinations to
adjust the LCD constrast, and captures Ctrl+Alt+Tab to bring itself
to foreground (or, if already in foreground, to send it into
background again)
From Neil:
----------
4) New module EIKSCBUT.* containing CEikScrollButton, a button with
a triangular pointer, used inside scrollbars (and potentially
elsewhere too)
5) Changed CEikonEnv::DrawPolygon() to set the brush style from
null to solid on entry, and back to null again on exit
6) Changes in EIKSCRLB.* to utilize the scroll buttons (instead of
just have a blank area in place of the buttons), and changes to test
code TSCRLB0 to test them
7) Removed Set(Clear)ScrollBarFrameFlags() functions in EIKSBFRM.*
in favor of custom functions for each former flag
8) Changed CEikEdwin code in line with the above changes
From SimonC:
------------
9) Converted EIKEDCMP.* and EIKRUBTL.* to the new (Nokie) design -
although much of EIKEDCMP remains commented out, pending the
rearrival of dialogs
10) Improved test code TEDWIN0 so that it is possible to use the up
and down arrow keys to navigate between the single line editors
11) Various other improvements to edwin code based on suggestions by
MartinB.
Version 0.01.016
================
(Made by DavidW, 22 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/089 FONTS/028
ETEXT/042 TBOX/062
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 103,008 bytes
From SimonC:
------------
1) Eikon is dependent on EText(042) and TBox(062) again
2) Converted a large part of EIKEDWIN.* to the new design, including
clipboard and scrollbar support
3) New test code TEdwin, which creates five different one-line edit
windows and one multi-line edit window complete with scrollbar; as
for many of the other test applications, move the focus by clicking
in a control
From Vamsi:
-----------
4) Implementation of CEikOptionButton, in the new module EIKOPBUT.*
5) Implementation of TEikButtonCoordinator, added to EIKBUTB.*
6) New test code TOpBut1.* for both of the above features
From Neil:
----------
7) Simplification of sprite-handling code in test application TEar1,
with the result that the second bitmap file, EARMASK.MBM, is no
longer required, and can be deleted from hard disks
From Vipul:
-----------
8) Combined CEikTextDrawer and CEikPictureDrawer to produce a base
class CEikItemDrawer from which the above two classes are now
derived; this has led to the creation of a new module EIKIDRAW.*
9) Introduced a TMargin8 struct, in EIKDUTIL.H for now, to hold four
different TUint8 margin values (for left, right, top and bottom)
rather than just assuming that all four of these values will be the
same; the restriction to a TUint8 saves 96 bytes per class instance
compared to the full TMargins struct from GDI.H
10) Changed the system for specifying text or bitmap alignment, to
use the values such as EHLeftVBottom from COEDEF.H
11) New static function PlaceInRect(), currently in CEikItemDrawer,
taking an outer rect, an inner size, and a TEikItemPos "alignment"
value, producing the corresponding "inner rect"
12) Converted test code as required by the above changes
From DavidW:
------------
13) Converted all Nokie code and test code to match CONE 089; the
main change (apart from in test code) was to rename EEventChanged to
EEventStateChangedL everywhere; took the opportunity to tidy up
various test applications a bit while converting to this scheme
14) Needed to call SetAllowStrayPointers() for all menu windows
15) Split MEikMenuObserver::WarnMenuDisplayL(TInt aMenuId,
CCoeControl* aMenuWindow) into two functions, each of which are more
type-precise: in DynInitMenuPaneL() the CCoeControl* is typed as a
CEikMenuPane*, and in DynInitMenuBarL() it is typed as a CEikMenuBar*
16) Simplified various pieces of test code in the light of the above
change
17) Recompiled TEXTURED.PBM and EIKON.MBM since they turn out to be a
few bytes different from before.
Version 0.01.015
================
(Made by DavidW, 20 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/088 FONTS/028
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
Size of NOKIE.DLL (Gcc build): 87,840 bytes
From DavidB:
------------
1) First stage of converting the MNFE classes to the Nokie design,
in a new version of EIKNUMED.*
2) New test code TNumed that demonstrates some of the features of
numeric editors
From Vipul:
-----------
3) New command button class, CEikCommandButton, in the new module
EIKCMBUT, for what's sometimes been called "action buttons" or "push
buttons"; each command button can contain a CEikTextViewer, and will
shortly be able to contain a CEikPictureViewer as well
4) New test code, TBut2, to test command buttons
5) Feedback is welcome on the look and feel of these buttons; note
that the idea of scrolling the text (as in TBut1) has been dropped
just now, and all that changes when a button is pressed is the color
scheme and the plinth type
6) Introduced the Legend font in CEikonEnv, which is a bolded
version of the Annotation font, and which is the default font for the
legends printed on command buttons
7) Extended CEikTextDrawer to cope with being asked to draw text in
a rectangle that isn't wide enough for all of the text (this gets
tested in TBut2)
8) Started work on yet another new class, CEikPictureDrawer, in the
module EIKPDRAW.* (no test code available for this yet); this class
will probably be partially merged with CEikTextDrawer before long, to
produce (eg) a CEikItemDrawer superclass
From Siamak:
------------
9) New module EIKLBD.* defining a class (or, more practically a
struct) TListBoxDrawInfo holding various bits of drawing-related
information that needs to be shared between the listbox control,
view, and item drawer; this has the effect of eliminating some data
being duplicated in two or more classes, and reduces the API of
CListItemDrawer
10) Listboxes now have some settable color attributes, for their
background color, text color, etc
From Neil:
----------
11) The first main phase in converting the scrollbar system to Nokie
is complete - there are now modules EIKSBOBS.H (scrollbar observer),
EIKTHUMB.* (scrollbar thumb), EIKSCRLB.* (scrollbar itself), and
EIKSBFRM.* (scrollbar frame); no scrollbar buttons yet, though
12) New test code TScrlB0 which is a simplified version of the old
TScrlB0 from \eikon\tsrc
13) Improvements to the drawing code for CEikGrip: the grip is now
centered in the rectangle passed to Draw(), instead of leaving all
blank space at the end
14) Another slight change to CEikonEnv::FillRect(), which now resets
the Gc brush style to null on exit
From DavidW:
------------
15) Changed to draw the standard flashing cursor by XORing with
white, as opposed to XORing with dark gray as before (which gave very
insipid results).
Version 0.01.014
================
(Made by DavidW, 19 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/088 FONTS/028
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
This release incorporates some (but not all!) of the Eikon
submissions in my in-tray - more to come later
Stop press - for some reason only the first two of the ten test apps
seem to run on the rack - this sounds more like a repro-ing problem
than a software problem (I've often had my suspicions about that
rack-C) so I won't hold up the release for that
From SimonC:
------------
1) Many changes to menu code as suggested by code and design reviews
2) Improvements to the appearance of menus, in line with visuals
supplied from the spec team; eg the menu highlight now joins smoothly
onto the associated pane
3) Changed to another version of the "textured" bitmap
4) Added more features to test code TMenu3 (copying from the old
TMenuB0 by Bret)
5) Changed CEikonEnv::FillRect() so that it sets the Gc brush style
to solid
6) Removed #includes of <nokie.rsg> from a few *.CPP files where it
was not needed
From Siamak:
------------
7) Made most of the remaining changes to the listbox code that were
suggested by the review committee, as well as other changes to try to
reduce the size of the API (and to follow current coding guidelines)
8) The various flavors of ConstructL() no longer take position and
size arguments; instead it is up to the client application to invoke
eg SetExtentL() on the listbox after calling ConstructL()
9) Functions in the public API of CEikListBox such as
SetCurrentItemIndex(), ClearSelection(), and HandleListUpdateL(),
which used (optionally) to redraw the relevant portions of the
listbox, no longer do any kind of drawing; instead it is up to the
client to explicitly ask the listbox either to draw individual items,
using the new DrawItem() function, or to draw all visible items,
using DrawNow()
10) To get/set the selection state in a single-selection listbox,
clients now need only to call CurrentItemIndex() and
SetCurrentItemIndex() respectively, since in a single selection
listbox, the current item (provided the listbox is non-empty) is
always selected; in contrast, to do the same thing in a
multi-selection listbox, use SelectionIndexes() and
SetSelectionIndexes() as before
From Vamsi:
-----------
11) Converted the CEikProgressIndicator control, in the module
EIKPROGI.*
12) New test code TPROGI.* containing three differently styled
progress indicators; press Ctrl-F to make them go forwards or Ctrl-B
to make them go back.
Version 0.01.013
================
(Made by DavidW, 18 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/088 FONTS/028
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
From Vipul:
-----------
1) Started the CEikTextDrawer class, in the new module EIKTDRAW.*
From DavidW:
------------
2) Refined the CEikButtonBase class as suggested at an earlier
design review meeting, and made corresponding changes in the test
code TBut1
3) Added back some of the "Eikon Debugging keys" via the class
CEikDebugKeys in the module EIKDEBUG.*; keys currently supported are
Ctrl-Alt-Shift-R forces redraw of whole screen
Ctrl-Alt-Shift-F turns on Window Server flushing
Ctrl-Alt-Shift-G turns off Window Server flushing
Ctrl-Alt-Shift-A displays alloc info for local heap
Ctrl-Alt-Shift-B info on File Server resources
Ctrl-Alt-Shift-C info on Window Server resources
4) Test apps should no longer explicitly call SetAppUi as part of
their ConstructAppL() functions, since this is now done inside the
CEikAppUi::ConstructL() call - right at the beginning (the change was
needed so that the CEikDebugKeys object could get added to the
control stack at the right time)
5) Changed every #include of <e32virt.h> to <e32keys.h>
6) Extended the CEikTextDrawer class, providing independent test
code TTDraw; press L C or R to make the texts Left Center or Right
aligned in their boxes; or T M or B to make them Top Middle or Bottom
aligned vertically; or 1 2 or 3 (or the mnemonic for a given box) to
make that box the emphasized one (and to make the formerly emphasized
one, if any, move to a partially emphasized state)
7) Fixed the font initialization in CEikonEnv::InitSystemFonts() to
ask for "Thin" rather than "Arial" for the AnnotationFont(), which
avoids an inappropriate font being matched when other *.GDR files may
be present on the PC
8) Removed the function CEikonEnv::TexturedBitmap(), that used to
return a CFbsBitmap* pointer to the textured bitmap, in favor of a new
utility function CEikonEnv::SetTexturedBrush(CGraphicsContext& aGc)
9) Based on the latest design of CEikButtonBase, implemented
CEikCheckBox, which turns out to be a very thin class! See also the
new test code TChkBx1, which features five check boxes, all
differently sized, two of which are dimmed, and one of which supports
a visually distinct indeterminate state; try clicking on the boxes,
or press 0 through 4 to animate one of them.
PS I've just noticed that there's a compiler warning in EIKLBX under
Gcc; sorry for not picking this up earlier; this will be removed for
the next release
Version 0.01.012
================
(Made by DavidW, 17 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/088 FONTS/028
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
From Siamak:
------------
1) Many changes to listbox header files and implementation, taking
into account recommendations from recent review meetings (other
changes remain pending); perhaps the most visible change is that
"item viewer" has been systematically renamed to "item drawer"
2) Added the file SINGLE.CPP to \nokie\src as a service to other
Eikon authors (similar to EMPTY.CPP) - see the comment in this file
for more details of its purpose
From Vipul:
-----------
3) Made EikDrawUtils::DrawText(...) work for alignments other than
left (note: this function has now been renamed DrawTextWithMnemonic)
4) New test code TUTIL to test EikDrawUtils functions
From DavidW:
------------
5) Added two more functions to EikDrawUtils: ClearBetweenRects() and
DrawBetweenRects(); the former just calls the latter after setting
the passed Gc to have null pen and solid brush (which get reset at
the end of ClearBetweenRects() to solid pen and null brush); these
functions are to be preferred to using a clipping region to achieve
the same effect, since they avoid the IPC overhead of transferring
the details of the clipping region
6) Changed TEMP0 to use EikDrawUtils::ClearBetweenRects() rather
than its home-grown version of that function
7) Based on a suggestion from Nick Healey, changed the standard
error text for KErrDoesNotExist from "Does not exist" to "Not found"
Version 0.01.011
================
(Made by DavidW, 16 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/088 FONTS/028
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
From Vipul:
-----------
1) Started the EikDrawUtils class, in new module EIKDUTIL.*
2) The first function in EikDrawUtils is a variant of DrawText()
that supports flicker-free redrawing of text containing an underlined
mnemonic character
3) Converted code in EIKMENUP.CPP and EIKMENUB.CPP to use this new
routine, rather than their home-grown mnemonic-drawing code
From Neil:
----------
4) New test code TEAR1.*, containing some experimental code for
animating (scrolling) a triangular "ear" over a textured background.
This is done by using (for the first time in NOKIE.DLL or EIKON.DLL)
the sprite technology from the Window Server.
Version 0.01.010
================
(Made by DavidW, 15 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/088 FONTS/028
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
This build runs on the rack, for the first time in a while!
From Neil:
----------
1) Code for the TEikGrip class now exists in the module EIKGRIP.*
2) Added some test code for TEikGrip into TLBX.CPP
3) Fixed a long-standing bug with info messages in which they would
get covered up if another window was created while they were
displayed
From DavidW:
------------
4) Upgraded to version 105 of TOOLS GCC, which means that all the
extra "forwarding" function definitions that had to be inserted
before, can now be removed (this has been done for all test apps)
5) Changed the way hotkeys get defined in resource files, and
changed the API of the CEikHotKeysTable to match; see the latest
forms of the ..\tsrc\*.rss files for what's now required; this change
was required to work round an as yet incompletely diagnosed problem
with 16-bit access on the rack
(known defect: hotkeys don't get correctly displayed in menu panes
with this build)
6) Converted code as required for CONE 088; among other things this
allows the CContainer class in test code TChLst to have the following
FocusChanged() function
void CContainer::FocusChanged(TDrawNow aDrawNow)
{
iFocusControl->SetFocus(Focused(),aDrawNow);
}
7) Fixed a long-standing bug in CEikChoiceListBase which was calling
DisplayCursor() in some cases even when not Focused() - a bug caught
by a new panic check inside CEikonEnv.
Version 0.01.009
================
(Made by DavidW, 11 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/087 FONTS/028
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
From DavidW:
------------
1) Changed Eikon as required by the changes in CONE 087:
2) Note that all MinimumSizeL() functions have to be changed to be
const
3) Made more use of the new TCoeWinPos combined 2-D "corner" enum
4) Changed all occurrences of "SystemFont" to "NormalFont"; also
changed all "BoldSystemFont" to "TitleFont", and "SmallSystemFont" to
"AnnotationFont"
5) Had to waste some code in removing all occurrences of the former
function UseSystemFont()
6) Removed a few calls to "RequestFocus", since system code (in
CCoeControl::HandlePointerEventL) now takes care of this properly
7) Some functions which were formerly called off Window() for
controls are now called off DrawableWindow() instead, as the latter
remains public, but the former is now protected.
Version 0.01.008
================
(Made by DavidW, 10 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/086 FONTS/028
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
From Siamak:
------------
1) The incremental matching option for listboxes has been reinstated
2) Improved the display of listbox items, ie less blank space
following the last visible item in the listbox
3) Test app NOKLBX has been renamed to TLBX for consistency with the
other apps
4) Improvements in the list box control header file
5) Various other internal changes in list box code
6) Fixed a couple of minor bugs in the MNT.CMD and NOKIE.RSS files
From DavidW:
-----------
7) Added some additional placeholder error texts at the end of
EIKSYSER.RA - ie one for each of the new KErrXxx values that have
appeared in E32STD.H since the last time I checked (these text
messages are expected to be taken over shortly by E32).
Version 0.01.007
================
(Made by DavidW, 9 July 1996)
Uses: E32/063 F32/027 STORE/017 BAFL/034
GDI/025 FNTSTORE/019 FBS/025 BITGDI/027
WSERV/039 CONE/086 FONTS/028
E32TOOLS/034 EIKTOOLS/106 RCOMP/305
Converted to E32/063 et al
The result of switching to the new compiler was an immediate 24.2%
reduction in codesize, for the Gcc build
That's definitely a step forward, but there's an equally definite
step back, in that due to some as yet undiagnosed feature, any Eikon
program that uses a hot-key table crashes the entire rack stone dead
when the table is loaded
After five hours of putting in dozens of infomsgs, I've found that
the crash occurs in a totally innocent line of code; until it's
proved otherwise, I'm going to blame the Gcc compiler for this, in
particular assuming that some kind of register corruption has taken
place
(of course if Cygnus had delivered a half-decent debugger, it ought
to have been possible to tie this one down, conclusively, in a
fraction of the time - too bad the debugger's on the omission list
now)
Back on the plus side, all template instantiations can go.
But back on the negative side, there's arguably a *worse* "MI across
the DLL boundary" bug than before, for which the workaround is to
place the following block of lines of code
private: // workaround horrific Gcc compiler bug
void ProcessCommandL(TInt aCommandId)
{CEikAppUi::ProcessCommandL(aCommandId);}
void SetEmphasis(CCoeControl* aMenuWindow,TBool aEmphasis)
{CEikAppUi::SetEmphasis(aMenuWindow,aEmphasis);}
void WarnMenuDisplayL(TInt /*aMenuId*/,CCoeControl* /*aMenuWindow*/)
{}
void HandleAttemptDimmedSelectionL(TInt /*aCommandId*/)
{}
TBool CheckHotKeyNotDimmedL(TInt /*aCommandId*/)
{return(ETrue);}
void RestoreMenuL(CCoeControl* aMenuWindow,TInt aMenuId)
{MEikMenuObserver::RestoreMenuL(aMenuWindow,aMenuId);}
in the definition of your CEikAppUi derived class (of course, if you
have got an independent body for eg the WarnMenuDisplayL function,
you miss that line out of the above "workaround" section).
Fail to do that, and the Gcc compiler will simply stop, reporting an
error, but not telling you what the error is.
More precisely, if your class inherits (directly or indirectly) from
a mixin that is defined in a different DLL, you have to provide, in
your DLL, bodies for *all* of the virtual functions defined by that
mixin.
Anyway, once you've got all that sorted out, you can run any Eikon
test app that doesn't have a hotkey table. Out of the five live
Eikon test apps, that rules out four, leaving only TBut1. Moral:
steer well clear of the rack for the time being (but follow the
discipline of getting your code to clean compile and link under Gcc)
Other changes:
--------------
1) Note that BITGDI can no longer open "single" .PBM files; you have
to create a "multiple bitmap file" (*.MBM file) instead, using the
tools MULTIPBM; there's a batch file BLD.CMD in ..\srcdata that joins
together all the live Eikon bitmaps; this creates the file EIKON.MBM
that gets included in the ROM (and which lives in \e32data for WINS),
together with the generated header file \e32inc\eikon.mbg, which
defines some enum values that you may need to use in code
2) To add another bitmap, be sure to archive its .BMP version in
PVCS, as well as its .PBM version, and then alter BLD.CMD to include
that in the list of source files
3) Changed all calls CancelClipping() into one or other (or both!)
of CancelClippingRect() or CancelClippingRegion()
4) Removed all remaining calls to Validate() and replaced them with
appropriate calls to BeginRedraw() etc
5) Tidied up the MNT.CMD and *.OBY files, etc, not to download or
include any components apart from those used by the current Eikon
code (thereby excluding eg C32, GRID, ETEXT, TBOX, CLOCK, EALWL,
PRINT, PDRSTORE, ...).
Version 0.01.006
================
(Made by DavidW, 8 July 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
GRID/064 CONE/083 ETEXT/040 TBOX/059 FONTS/027
EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
From DavidW:
------------
1) Changed various functions in controls that used to be
parameterised like
void GetXxx(TInt* aValue) const;
to be parameterised instead like
TInt Xxx() const;
Likewise changed various functions from the form
void SetXxxL(const TInt* aValue);
to
void SetXxxL(TInt aValue);
Finally for parameters of "larger type", eg TLargeType, the idea
(suggested by SteveT) is to change from eg
void GetXxx(TLargeType* aValue) const;
void SetXxxL(const TLargeType* aValue);
to
void GetXxx(TLargeType& aValue) const;
void SetXxxL(const TLargeType& aValue);
(removing the chance that callers will pass uninitialised pointers)
2) Added a utility function TSize SizeDelta() to TEikPlinth, and
modified various pieces of existing code to use this
3) Changed CEikButtonBase over to the "four drawstates" system, with
new protected function DrawState() returning the TDrawState value
4) Changed the button class in TBut1 over to this scheme; this now
matches the latest button spec as suggested by Bill and Nick (though
the visuals on the rack take a bit of getting used to)
5) Changed EIKON code in line with the improvements in the
"SetFocus()" and "FocusChanged()" system introduced in CONE 085
6) Reinstated the CEikonEnv functions DrawCursor() and HideCursor(),
but (in line with suggestions made a while back) the coordinates that
should be passed to DrawCursor() should now be relative to the
window, rather than to the control
7) Improvements to TChLst test code, which now contains a sample
"container control" which other test code could usefully copy (until
such time as CONE/EIKON contains a class like that); this container
now contains three choice lists plus two secret editors; the first of
the choice lists supports incremental matching and therefore has a
flashing cursor when focused
8) Continuing along the path of removing moribund test code, the
source directory ..\demo has been deleted
9) To reduce the number of "mistaken" hits during eg Find In Files,
all file ..\src\*.cpp and ..\inc\*.h* that aren't part of the live
build of EIKON have been deleted and removed from the LI.PRJ file (of
course, copies of them still exist in the \eikon source directory).
Version 0.01.005
================
(Made by DavidW, 6 July 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
GRID/064 CONE/083 ETEXT/040 TBOX/059 FONTS/027
EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
For the first time, NOKIE is released in all three "standard
variants", ie WINS Debug and Release, and GCC Release
From SimonC:
------------
1) Changed source code and test code as required, so that a NOKIE
ROM can be built
2) Changed TEXTURED.PBM to be the same as the one used by Brendan,
which has much better effect
From Siamak:
------------
3) Development of choice list code (the code for tabbing out a
listbox still needs some work doing on it)
4) New test code TCHLST to test standalone choice lists
From Neil:
----------
5) Converted the secret editor code to the new control design (no
test code for it yet, though).
Version 0.01.004
================
(Made by DavidW, 5 July 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
GRID/064 CONE/082 ETEXT/040 TBOX/059 FONTS/027
EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
From SimonC:
------------
1) Menu bars are now operational again; try pressing F9 (or Alt) in
the new test application TMenu3, derived from TMenuB0 of old (only the
Exit command has any effect yet)
2) The visuals of menus have changed quite a lot; take a look and
see (arguably the single-pixel thin text for eg "Ctrl+E" gets lost on
the textured background; we really need to look at this on the rack
soon, before commiting too much further to it)
3) Changed the name of the bitmap MENUBACK.PBM to TEXTURED.PBM, and
moved the code that accesses it into CEikonEnv
From Siamak:
------------
4) Started converting choice lists to the new design; the module
EIKCHLST.* now compiles, but doesn't yet get exercised by any code
5) New resource constant header file EIKCHLST.HRH
From DavidW:
------------
6) New module EIKBUTB.* for a totally new implementation of the
CEikButtonBase class, which makes much fewer presuppositions than the
corresponding class from old:
7) The class CEikButtonBase doesn't presuppose anything about the
button face scrolling on transit between the up to down states;
instead, a subclass has to provide (at least) DrawUp(), DrawDown(),
and DrawPressed() functions; optionally the function
DrawHavingTransitioned() can also be supplied; in principle radio
buttons, check buttons, and command buttons could all be implemented
as subclasses of CEikButtonBase
8) By default the button reports an ECommand event to its observer
(if any) on the PenUp of a click; use SetReportOnPointerDown() to get
the event reported on the PenDown instead; replace the function
ReportButtonClickL() to report an event other than ECommand
9) New test application TBut1 that starts to demonstrate some of the
potential of CEikButtonBase, by providing its own subclass
CTestButton; the detailed visuals of this example need to be
improved, but some of the basic behaviour of CEikButtonBase can be
seen; click on any of the buttons, or press 0 1 or 2 to animate one
of them
10) Removed all old test code from \nokie\tsrc, to speed up PVCS
operations (there is of course an independent copy of it in
\eikon\tsrc).
Version 0.01.003
================
(Made by DavidW, 4 July 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
GRID/064 CONE/082 ETEXT/040 TBOX/059 FONTS/027
EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
From SimonC:
------------
1) Development of the CEikMenuPane class according to the new
design:
2) Menu pane background is now a textured bitmap
3) Menu pane item highlights extend right across the menu pane
4) Menu corners are now always square, and the border is handled by
a CEikPlinth
5) The "dotted rect" style for de-focused current menu items (ie
when a cascade has been launched for them) has been superseded by the
new design (try the test code TEMP0 and see)
6) Some menu positioning logic has been changed, etc
7) Added EIKMENUB.* to the NOKIE project - this file compiles, but
doesn't run (yet)
8) Moved the functions FillRect() and DrawPolygon() (back) into
CEikonEnv, for now
From Siamak:
------------
9) Development of the CEikListBox class family:
10) The 6 "main" list box modules are now part of the NOKIE build
11) The list box border is now handled by a CEikPlinth
12) List box flags are now private, being protected by accessor
functions, just like CCoeControl
13) New test code NOKLBX allowing the main features of listboxes
to be exercised: click on the screen background to get a pop-up menu
allowing to choose/swap a single column and a multi-column list box
From DavidW:
------------
14) Development of the Temp0 test code, which now draws an array of
12 rects, each with plinths, and with the spacing between the plinths
configurable by a new menu option (allowing testing of packing flags)
15) Started EIKBORDR.H, which will in due course replace EIKPLNTH.H
16) Converted EIKON code and test applications, as required by CONE
083 changes
17) There's a new virtual function in the MEikMenuObserver mixin,
MakeModal(), which removes the need for a CCoeControlStack* (or
equivalent) parameter to eg the CEikMenuBar construction
18) CEikonEnv needs its own independent copy of the CEikAppUi*
pointer, since it can't rely on casting the MCoeAppUiBase* pointer
held in CCoeEnv property (why not?).
Version 0.01.002
================
(Made by DavidW, 2 July 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
GRID/064 CONE/081 ETEXT/040 TBOX/059 FONTS/027
EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
From Siamak:
------------
1) Started the conversion of list box modules to the new CONE
design; among many other changes
*) all references to scrollbars have had to be commented out for now
*) #includes of COEREQD.H and EIKREQD.H have all been removed
From DavidW:
------------
2) Based on ideas by Siamak, Simon, and (mainly) Bill, developed a
new class TEikPlinth, in the module EIKPLNTH.*, encapsulating the
following "border" styles:
*) sunken box, raised box, or none
*) single height, double height, triple height ...
*) external shadow or not
*) dense packing option
The functions provided by the new class are
*) a constructor (combining all the above info into a TInt)
*) setters and getters for all the attributes of the plinth
*) a Draw() function, passing a Gc and a TRect, which is the
"outer" TRect for the border
*) functions to give the widths of each of the four sides of the
border (as a TMargins instance), and utility functions to convert
between the inner and outer rects for the border
The test code Temp0 has been rewritten so that its main control
sports a plinth, whose attributes can be altered either by the
pop-out menu cascades you get from double clicking, or by hot keys
(try 1, 2, 3, Ctrl-S, Ctrl-R, Ctrl-N, and Shift-Ctrl-S)
The test code demonstrates that the plinth (plus its surrounds) draws
in a flicker free manner.
The class *omits*
*) support for a "sparkle" eating into the top left hand corner
of the inside TRect
*) support for the outside shadow leaving gaps at the top right
and bottom left (of unknown color)
*) the colors varying dynamically with the background the plinth
is sitting on.
The new implementations of controls such as menus, listboxes, choice
lists, buttons, editboxes, ... can all now use TEikPlinth.
Note: the dense packing attributes haven't been tested yet. Nor do I
have much of an idea of what a shadowed sunken box should look like.
Version 0.01.001
================
(Made by DavidW, 1 July 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
WSERV/038 PDRSTORE/008 PRINT/015 CLOCK/020
GRID/064 CONE/081 ETEXT/040 TBOX/059 FONTS/027
EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/305
This is the first of what will hopefully be only a short series of
"branch" builds of EIKON, with the source code moved into the \NOKIE
directory tree instead of the \EIKON directory tree; it will all be
moved back again on the completion of the conversion of the source
code to the new design
The build number has been reset to 001 (as befits an independent
source group)
Large parts of the build have been commented out for now; more
precisely there are only 7 modules linked into the DLL (as opposed to
around 90 for EIKON); this count should rise fairly rapidly over the
next few days
And there's only one live test module for now, TEMP0, in ..\tsrc,
which relies upon the Wserv shell to run it, so you'll need to delete
the file \e32data\wsini.ini, which tells the Window Server to look
for EIKSRV.EXE to run; also you'll need to provide yourself a file
\e32data\dll_list.txt containing the line "TEMP0" in it
The dependencies of EIKON upon TBOX and GRID have been suspended for
now (pending such time as these components re-release matching Wserv
038 or later)
Only the Ascii Debug variant is released for the time being
The changes in more detail (see also the recent CONE release notes):
1) The class CEikAppControl has transformed into CEikAppUi, and
EIKAPPC.* has transformed into EIKAPPUI.*
2) The file EIKREQD.H has been withdrawn; some of its former contents
can now be found in the new header file EIKDEF.H
3) Various functions that used to take pointers now take references
instead, and "const" has been used more widely
4) Some standardization has taken place of names for resources in the
system resource file
5) The old module EIKHKEYS.* has been renamed to EIKHKEYT.*, since
it contains the HotKeyTable class, and a new module EIKHKEYC.* has
been created, containing a HotKeyControl class; this won't normally
be seen by app writers, but it is used internally by the new function
CEikAppUi::CreateHotKeyControlL(), which can be used by applications
that want hot-key processing (eg defined by a table in the resource
file) without having to define a menu bar
6) The relationship between the observer classes MEikCommandObserver
and MEikMenuObserver has been cleaned up, with MEikCommandObserver
now being pure virtual, and MEikMenuObserver being moved into a
separate header file, EIKMOBS.H; some of the names of the functions
in these classes have been improved
7) Various functions with names like ConstructMsgWinL() have been
renamed simply to ConstructL()
8) Preliminary conversion of EIKMENUP.* (the largest module
converted so far); double click in the main window in TEMP0 and
you'll get a pop-up menu with four commands in it
9) Various drawing utilities that used to exist in CEikonEnv have
been shunted into CEikMenuPane temporarily, until a permanent home is
found for them (note that these utilities used to pass a "color
element", for run-time redirection, but this concept no longer
exists)
10) The flag EEikMenuItemHasEllipsis has been withdrawn (people
defining menus can just as easily add the ellipsis themselves).
Version 0.01.078
================
(Made by SimonC, 27 June 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
NCP 005 GDI/024 FNTSTORE/018 FBS/024 BITGDI/026
WSERV/037 PDRSTORE/008 PRINT/015 CLOCK/020
GRID/064 CONE/079 ETEXT/040 TBOX/059 FONTS/027
EALWL/022 E32TOOLS/028 EIKTOOLS/105 RCOMP/304
From Siamak:
--------------
1) Added support for zooming to listbox code. The main listbox test app, TLBOX, now uses GDI's
TZoomFactor class (in a similar way to the Grid control) to demonstrate zooming.
2) Various internal code changes (additional asserts, minor optimizations, etc.)
From SimonC:
--------------
3) Updated to GDI 024 et al.
4) Changed toolbars and dialogs to set their background colour rather than filling in their entire area
before drawing any controls (necessary since, with the new WSERV and CLOCKS it is again possible
to draw over clocks).
5) Fixed hierarchical listbox panic on the rack that ocurred when trying to expand or collapse an item.
6) Re-wrote CEikAppControl::CreateSecondToolBarL() to allow the second toolbar to have access to
the same controls as the ‘standard’ toolbar.
7) Started a new hierarchical list subclass in tlbox2 - nowhere near finished yet.
8) On Bill’s suggestion changed the font returned by SystemFont() to be 15 pixels high rather than 18.
Version 0.01.077
================
(Made by SimonC, 21 June 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/018 ESOCK/020
GDI/023 FNTSTORE/017 FBS/023 BITGDI/025 WSERV/036
PDRSTORE/007 PRINT/014 CLOCK/019 GRID/063
CONE/078 ETEXT/039 TBOX/058 FONTS/026 EALWL/022
E32TOOLS/027 EIKTOOLS/105 RCOMP/304
re-released at 3pm 24/06 without connection to comms server. Should now run on the rack.
Uses TBOX 058, C32 018,GRID 063 and EALWL 022 for the first time
From Siamak:
--------------
1) Removed some unnecessary functions from the listbox API
2) Various internal listbox changes.
From MartinT:
--------------
3) Replaced all mention of Protea on the system screen with EPOC32.
From Neil:
--------------
4) Improvements to the slider control:
CEikSlider is now usable, although it's appearence, functionality and API may vary as spec issues are
resolved. See new test code TSLID0 for examples of using sliders.
5) Required changing CEikTagBase and derived classes in the following ways after discussion with
Brendan.
- changed call to CreateWindowL(aParent) to be SetParentWindow(aParent) in ConstructL().
- Added a function ResetControlGc() which reverses the effect of ControlGc() and call this instead of
ResetGc() which used to reset the background color resulting in strange effects in dialogs
- Removed the TPoint aPoint parameter to ConstructL() and the subsequent call to SetPosition(aPoint)
Any "direct" users of Tags (i.e not in a dialog) should call SetPosition() themselves after construction.
- Removed call to SetReadyToDraw() from ConstructL(). Again, direct users should call this after
construction and setting the position.
6) Removed TPoint aPoint parameter and call to SetReadyToDraw for ConstructL() function of
CEikBitmap similarly to CEikTagBase above at Brendan's request.
7) Changed EIKALRM.CPP and TBMPTAG test code in accordance to the above changes
From SimonC:
--------------
8) Fixed most of the flicker in the hierarchical listbox drawing. The remaining flicker is unlikely to be
fixed.
9) Added exported c’tor and d’tor to CEikToolbar.
10) Tidied up dir contents listbox code.
11) Fixed long standing memory leak in tlbox2.
12) Made minor changes to tscrlb1 and tedwin0 to fix file selector panics on the rack.
Version 0.01.076
================
(Made by SimonC, 12 June 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/016 ESOCK/020
GDI/023 FNTSTORE/017 FBS/023 BITGDI/025 WSERV/036
PDRSTORE/007 PRINT/014 CLOCK/019 GRID/061
CONE/078 ETEXT/039 TBOX/057 FONTS/026 EALWL/021
E32TOOLS/027 EIKTOOLS/105 RCOMP/304
This release is not binary compatible with 075
From Julian:
-----------
1) Changed the XorDraw() function in CFrameOverlay to prevent a "ghost" frame appearing in Paint
under certain circumstances.
2) Changed EIKEDWIN and EIKEDCMP to test the ETEXT functions PasteParaFromClipboardL()
and ImportTextFileL().
3) ImportTextFileL() requires that a TTextOrganisation variable is supplied by the application.
Currently the edwin supplies a default value.
From Neil:
-----------
4) Following a suggestion from DavidW and in accordance to Charles' document entitiled "Designing
UI class libraries":
Removed all trace of the scrollbar visibility flags for CEikEdwin and CEikListBox (eg
EEikListBoxAutoVScrollBar)
Any app requiring scrollbars on these controls must now use the control's scrollbar frame using the
following public functions in CEikListBox and CEikEdwin
a) call CreateScrollBarFrameL() to create the controls scrollbar frame if it doesn't already exist
b) call ScrollBarFrame() to get a handle to the control's scrollbar frame
c) using the handle returned from b) call the scrollbar frame's SetScrollBarVisibility() function to ask
for the appropriate scrollbars.
This should be done before SetExtentL() is called. For edwins or listboxes in dialogs the best place to
do this is in the dialog's PreLayoutDynInitL()
Also the SetScrollBarVisibilityL() function to dynamically change scrollbar visibilities for these
controls has been removed. This should be replaced by the same as above followed by a call to
UpdateScrollBarsL() to take immediate effect
5) As an experiment, to get round the problems with calibrating scrollbars for an Edwin with a partially
formatted document, made the vertical scrollbar non-proportional. Unfortuanately this now means that
an auto visible vertical scrollbar in this case will in fact always be visible. However for a largish
document (when partial formatting is most useful and an auto-visible scrollbar will always be present)
it is much better than before.
6) Updated all affected test code
7) Skeleton of the CEikSliderControl provided. Not ready for use yet.
From Vamsi:
-----------
8) Changed BoldItalicUnderlineEvent() of EikEdwinCmp to take an argument showing which event
has just taken place.
9) Removed iFontFlags, SetFontFlags() as they were no longer needed.
10) Changed Write to support these changes.
11) Changed CEikPageMarginsDialog to take a TPageSpec in its constructor and refuse to accept
margins that are too large.
12) Added a "goto" dialog in the new files EIKGTDG.*. At present only the goto line option has been
implemented.
From SimonC:
-----------
13) Tidied up hierarchical listbox code.
14) Fixed memory leak in file selector that occured if there was an OOM during construction.
15) Added various clock flags to allow clocks to be created in formats other than those specified in
TLocale.
Version 0.01.075
================
(Made by SimonC, 5 June 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/016 ESOCK/020
GDI/023 FNTSTORE/017 FBS/023 BITGDI/025 WSERV/036
PDRSTORE/007 PRINT/014 CLOCK/019 GRID/061
CONE/078 ETEXT/039 TBOX/057 FONTS/026 EALWL/021
E32TOOLS/027 EIKTOOLS/105 RCOMP/304
This release is binary compatable with 074
From DavidW:
------------
1) Cut down the minimum heap size for each eikon app to 16k to reduce RAM usage on the rack.
2) Added support for debugging on the rack by adding eikrun.mak to eikon
3) eikrun produces EIKRUN.EXE which is a standalone .EXE that expects a parameter like
"tdialg1.prg".
It can be used as follows:
i) Get a new ROM
ii} PEIGER it, and start it up
iii) Run TWIN.EXE
iv) Type "CD \SYS"
v) Type "EIKRUN TDIALG1.PRG"
TDialg1 starts.
Note that EIKRUN runs the *.PRG file in the main thread of that process.
It's possible that if the current directory isn't \sys, you would need to type the full path.
From Siamak:
------------
4) Various internal changes to listbox code.
From Neil:
------------
5) Fixed j-Day defect HA-120.
From Vamsi:
------------
6) Fixed J-Day defect HA-24.
7) Fixed bug whereby edwins returned the wrong layout width if a line cursor was present.
From SimonC:
------------
8) Fixed J-Day defects HA-83.
9) Provided a temporary fix for defect HA-73. This may make digital clocks appear too far to the left
for now.
10) Fixed a drawing bug in progress bars that was shown up by the print dialog.
Version 0.01.074
================
(Made by DavidW, 31 May 1996)
Uses: E32/062 F32/026 STORE/016 BAFL/032 C32/016 ESOCK/019
GDI/023 FNTSTORE/017 FBS/023 BITGDI/025 WSERV/036
PDRSTORE/007 PRINT/014 CLOCK/019 GRID/061
CONE/078 ETEXT/039 TBOX/057 FONTS/026 EALWL/021
E32TOOLS/027 EIKTOOLS/105 RCOMP/304
Candidate J-Day Eikon ROM
*** Rebased on 4 June 1996 with the following changes ***
*) Took J-Day versions of all components
*) Removed all reference to EIKCSH, eg the \eikon\eikcsh directory
and the eikcsh release component, since this functionality is being
taken over by some other group (to be specified - currently versions
of these files are released by TCPIP)
*) Added two lines to the GETC32 verb of MNT.CMD, which is now
:getc32
set _par=%2
if "%_par%"=="" set _par=%_vc32%
cd \e32inc
call getrel c32 incc %_par%
cd \e32sys
call getrel c32 ewins %_par%
call getrel c32 edrvw %_par%
call getrel c32 ewinsdb %_par%
cd \work\emarm
call getrel c32 emarm %_par%
call getrel c32 edrvm %_par%
call cont %g% group
goto end
*) Added a GETNCP verb which is called from GETCOMPS, as follows
:getncp
set _par=%2
if "%_par%"=="" set _par=%_vncp%
cd \e32inc
call getrel ncp incc %_par%
cd \e32sys
call getrel ncp ewins %_par%
call getrel ncp ewinsdb %_par%
cd \work\emarm
call getrel ncp emarm %_par%
call cont %g% group
goto end
*) Added the following lines to PROTEA.OBY
file=\work\emarm\encp.prt sys\encp.prt
file=\work\emarm\elink.dll sys\elink.dll
file=\work\emarm\eremsv.dll sys\eremsv.dll
Note: all components downstream from Eikon will need to make
corresponding changes to their MNT.CMD and *.OBY files
*) Changed the line
romalign=0x1000
in EIKON.OBY to
romalign=0x10
resulting in a 16% reduction in the size of the *.IMG file produced
*** End of rebasing changes ***
A note on build numbers:
------------------------
Yes I know there are later builds of E32 F32 etc etc than I have used
to build this Eikon - but it doesn't matter, since they're all binary
compatible, aren't they? (The latest builds will be included in the
Protea ROM)
Similarly there's no need for any app that's already built with eg
Eikon 073 to rebuild with Eikon 074
A note on running in Release mode on the PC:
--------------------------------------------
Before starting, rename the file \e32sys\ecuartd.csy to ecuartd.ccc
(or some other extension, apart from *.csy)
Before running in Debug mode again, rename it back again.
Do *not* rename or delete the file \e32sys\ecuart.csy for either
build - it's required in both cases!!
All this will be sorted out in the post J-Day thaw
From Siamak/SimonC:
-------------------
*) Put back a few of the clipping regions which had been removed in
the last few releases, since it appears they're needed after all
From Julian:
------------
*) Fix to the DrawAsGlassDoor() function in TEdwin1 to ensure that
every pixel is drawn to
From DavidW:
------------
*) Couldn't get to the bottom of why the system crashes when I try
to start an app in response to a program button being pressed on the
rack; however I've found empirically that the crash doesn't occur if
there's an alert just beforehand, so I've left in one of my debugging
alerts, so that the program buttons aren't useless
(bonus J-Day points to anyone who can get to the bottom of this!)
*) Fixed a bug whereby something like Alt-C could deliver a 'C'
keycode to the main window, instead of to the menu bar, in the case
when no menu title had 'C' for its mnemonic
*) Fixed the bug whereby the Assign Buttons dialog had no effect on
the rack (a "C::\\" had crept in, instead of "C:\\")
Other fixes that were too late:
-------------------------------
My apologies to every else who tried to submit bug fixes for Eikon,
but which I have set aside, in order to manage to release Eikon
before J-Hour
Version 0.01.073
================
(Made by DavidW, 31 May 1996)
Uses: E32/061 F32/025 STORE/015 BAFL/032 C32/015 ESOCK/017
GDI/023 FNTSTORE/017 FBS/023 BITGDI/025 WSERV/036
PDRSTORE/007 PRINT/014 CLOCK/019 GRID/060
CONE/078 ETEXT/038 TBOX/056 FONTS/026 EALWL/021
E32TOOLS/027 EIKTOOLS/104 RCOMP/304
It's five minutes to J-Hour, yet no fewer than nine people still have
their sticky fingers in Eikon code!
Binary compatible with Eikon 072 (well, sort-of, again!)
Eikon now depends on C32:
-------------------------
The slippery slope continues - last time ESOCK, this time C32; see
the relevant sections in MNT.CMD and EIKON.OBY for some changes
Note that the *.INI file that gets renamed to ESOCK.INI is now
MINW.INI (on WINS) and MINM.INI (on GCC)
From Julian:
------------
1) Important: the effective protocol of the functions
CEikDoor::Draw() and CEikDocument::DrawAsGlassDoor() has changed;
Write and TEdwin1 have been changed to match, but Word, Paint and
Draw will need to be changed before J-Hour (the way these
applications treat doors in the Protea 011 ROM is wrong)
2) The change is that the CEikDoor::Draw() function now pays
attention to its MGraphicsDeviceMap parameter, and therefore supports
zooming
3) The change also simplifies what document classes have to provide
in their DrawAsGlassDoor() function, and in fact most of the
parameters passed in this function should now be ignored (these
trailing parameters will be removed in the post J-Day API thaw)
4) Another important change: the changes in 072 re automatically
using a file with the application's name if none is explicitly given,
were incomplete in the area of New File; this scheme has now been
developed further, with changes made in the TEdwin1 sample app
5) Associated with this, the form of the canonical CmdFileSaveL()
function, for write-once store file-based apps, changes *back* to
if (!iDocumentChanged)
iEikonEnv->InfoMsg(R_EIK_TBUF_NOTHING_TO_SAVE);
else
{
if (IsSubApp())
iDocument->SaveDataToContainerL();
else if (iFileLoaded)
DoFileSaveL();
else
CmdFileSaveAsL();
}
}
ie with a test on iFileLoaded reinstated
6) Internal changes, in synch with the above changes, to the
LoadStartDataL() and CmdFileRevertL() functions of CEikAppControl
From Adam:
----------
7) Whole new directory of code, \eikon\eikcsh\*.*, that builds to
produce a utility program EIKCSH.PRG of use to the Comms team (and
potentially to others); CSH stands for Console SHell since it can
launch up to six console screens serving applications
8) If you start EIKCSH by itself, from eg the Eikon System screen or
the real shell, you won't be particularly impressed, but bear in mind
that it starts doing something useful when other programs connect to
it
9) Changed the ScreenSize() function of CEikConsoleScreen to be
IMPORT_C and non apparently inline (in fact it was never actually
inline, since it is virtual)
From SimonC:
------------
10) Moved menu panes down slightly, to stop them overwriting the
descenders of the text in the menu titles; note that it's now clear
that 10 items in a menu is too many
11) Improved the coloring of the bitmaps used by the file browser
12) Changed the way digital clocks determine whether to show am/pm,
by consulting the TLocale; the showampm flag is now redundant
13) Tidied up file selector code some more
14) Removed some unnecesssary clipping regions
15) Temporary block in the SaveAs dialog to prevent a filename
exceeding 8.3 being typed in (since the rack filing system can't
handle any such filename yet)
From Neil:
----------
16) Considerably improved the appearance of the character map
control, as used in the "Insert symbol" dialog: the text was being
drawn too low in each box
17) As an experiment, changed the font used in the character map
control to be the system font, rather than the small system font
(which was too hard on the eyes on the rack, in this control); the
result is now much more legible than before, albeit at the cost of
leaving less background screen area to see the underlying window
18) Fixed a bug in the HandlePointerEventL function of the character
map control, in which it was impossible to click on an item in the
bottom row of the control
19) Tidied up some code in the Secret Editor control, replacing magic
numbers with KEikXxx values
20) Figured out why various displays (eg the Secret Editor) had
recently changed to gray from white - and traced this to a bug in
BITGDI (now fixed)
From Bill:
----------
21) Two functions in EIKDCLBM have been made virtual (without
compromising binary compatibility, as it turns out): Item() and
ItemIsParent()
From Siamak:
------------
22) Various changes to the listbox code to fix bugs to do with
scrolling (mainly in multi-column listboxes)
23) Reduced the usage of SetClippingRect()
From Brendan:
-------------
24) Fix to EIKALRM.CPP to fix a bug when snoozing an alarm that had
already been silenced
(Did you know: when an alarm is snoozed, you can press Tab to task
away from it; later this functionality will be taken over by any of
the task keys being pressed)
From Kevin:
-----------
25) Fix to EIKNUMED.CPP to allow the max and min of a numeric field
to be set equal to each other
From DavidW:
------------
26) Had to comment out the code that handles a click on a Program Bar
buttons, when no task matching that button is running yet, since this
causes an inexplicable crash on the rack; hopefully this will be
fixed before the J-Hour ROM
(E32 061 delivers pointer events to the offscreen windows for the
first time; those in the sidebar, such as launch the menu, cause no
problems, but those in the program bar have proved troublesome. Note
however that you can always do a Ctrl-System click, to get the Task
List, or a Shift-System click, to cycle round running tasks, or click
on the button of a task that is already running, to go to that task)
(One more warning: in WINS, think twice before launching a browser
seeded on the \e32sys directory; due to some infelicities in the
latest F32, this now takes Megaseconds to complete)
Version 0.01.072
================
(Made by DavidW, 30 May 1996)
Uses: E32/060 F32/024 STORE/015 BAFL/032 ESOCK/016
GDI/023 FNTSTORE/017 FBS/023 BITGDI/024 WSERV/034
PDRSTORE/007 PRINT/014 CLOCK/019 GRID/060
CONE/078 ETEXT/038 TBOX/054 FONTS/026 EALWL/021
E32TOOLS/027 EIKTOOLS/104 RCOMP/304
Binary compatible with Eikon 071 (well, sort-of)
Important change to LoadStartDataL() call:
------------------------------------------
You should change any call like
LoadStartDataL(&_L("y:\\main\\*.ed0"));
to
LoadStartDataL(&_L("y:\\Home\\.ed0"));
where there are *two* changes to make
(a) remove the star (asterisk)
(b) change from \main\ to \Home\
Some background to this:
------------------------
Basically, write-once file based apps should avoid the "no file"
state (which they used to enter, by default, if the app was started
without any filename being passed on the command line)
Eikon code (in CEikDocument) now creates the default filename out of
a combination of anything you specify in your LoadStartData() call
and your GetAppName() call
Thus Write ends up editing \Home\Write.wri by default
If the user starts up the app, makes changes, and exits, these
changes get saved to the default filename, without the user needing
to confirm this (or supply a filename)
The detailed UI of this will evolve after J-Day, but for now, users
can change the filename eg using the SaveAs function
(If you leave the star in, in the name you pass to LoadStartDataL(),
the various Parse functions used end up with a star in the final
filename, which is no good! I've even seen a file "*.WRI" created on
Y:, but I couldn't persuade F32 to open it again)
Change to your CmdFileSaveL() functions:
----------------------------------------
The sample code for the CmdFileSaveL() functions for write-once store
file-based apps has simplified, to
void CSimpleAppControl::CmdFileSaveL()
{
if (!iDocumentChanged)
iEikonEnv->InfoMsg(R_EIK_TBUF_NOTHING_TO_SAVE);
else
{
if (IsSubApp())
iDocument->SaveDataToContainerL();
else
DoFileSaveL();
}
}
the difference being that a test on the field iFileLoaded is no
longer made (otherwise the app will request a filename, from the
user, on exiting, in the case when no filename has been explicitly
provided by the user)
Eikon is now dependent on ESOCK:
--------------------------------
See the GETESOCK verb in MNT.CMD, which you may need to copy into
your own MNT.CMD
Note: since ESOCK expects to find various files in the \e32etc (I kid
you not) directory on the PC, you'd better change your MNT MAKEWORK
to check this directory is made (as well as \e32data etc)
(Some stage soon we might see a rationalization between \e32data and
\e32etc)
You'll also have to add four new lines to your *.OBY files:
file=\work\emarm\netsrv.dll sys\netsrv.dll
file=\work\emarm\esock.dll sys\esock.dll
file=\work\emarm\pdummy.prt sys\pdummy.prt
data=\e32etc\esockm.ini etc\esock.ini
From Neil:
----------
1) Set the ECoeWinAreaAutoValidate flag for CEikScrollBar, as
suggested by Siamak and Bill
2) Stopped scrollbar drag events from being reported when the thumb
position didn't actually change
3) Fixed an overflow bug in CEikScrollBar::AdjustOnlyThumbPosition,
found by Vamsi, by using TInt64 for the intermediate calculation
4) As an experiment, changed some code in scrollbars and scrollbar
buttons to use the shifting operators rather than explicit divides
and multiplies
5) Changed the file selector dialog in TScrlB1 to view all files,
rather than just *.CPP files, to make it easier to import Eikon's
RELEASE.TXT file (a troublesome large document that exposed the bug
above!)
(Good to see that RELEASE.TXT is of some use after all!)
6) On Bill's request, changed the listbox code to stop it centering
the view rect in the available area
From SimonC:
------------
7) Fixed the bug that caused TLBox1 to crash on the rack when
switching to Z:
8) Changed digital clocks so that, for now, whether they are in 12
or 24 hour mode will be determined from TLocale; this means that the
flag EEikDigitalClock12Hour is redundant (and will be removed post
J-Day)
9) Removed a couple of unnecessary calls to SetClippingRegion()
From Siamak:
------------
10) Various internal changes to listboxes, mainly to stop the current
item from ever disappearing when the listbox is resized
From Duncan:
------------
11) Fixed a bug in the Font Selector dialog which sometimes failed to
set the interminate state correctly in the check boxes
From DavidW:
------------
12) Based on work by SimonB, added a placeholder "Link settings"
dialog to Eikon, in the new module EIKLNKDG.*
13) This is invoked from any application that wishes to make it
available (eg any Shell programs) as follows
void CEikSysAppControl::SystemCmdLinkOptionsL()
{
CEikDialog* dialog=new(ELeave) CEikDialogLinkOptions;
dialog->ExecuteLD(R_EIK_DIALOG_LINK_OPTIONS);
}
The dialog encapsulates the logic of interacting with the NETSERV
system (part of the ESOCK release)
(The current implementation of NETSERV has the effect of not
preserving the settings between different invocations of the dialog -
will be amended shortly)
14) EXPORTed the ctor of CEikLabel
15) The Eikon System screen now seeds its Document dialog to \Home\*,
rather than to \Main\* as before; the real Shell will make the same
change shortly.
Version 0.01.071
================
(Made by DavidW, 29 May 1996)
Uses: E32/060 F32/024 STORE/015 BAFL/032
GDI/023 FNTSTORE/017 FBS/023 BITGDI/023 WSERV/034
PDRSTORE/006 PRINT/013 CLOCK/019 GRID/059
CONE/078 ETEXT/037 TBOX/054 FONTS/026 EALWL/021
E32TOOLS/026 EIKTOOLS/104 RCOMP/304
Binary compatible with Eikon 070
--------------------------------
Even though there are new EXPORTed functions!
This is possible by means of using FRZ technology:
*) Rename your *previous* *.DEF file to *.FRZ, and start archiving it
in PVCS (ie add it to the files listed in your LI.PRJ)
(the *.DEF file is created as a by-product of a Gcc build)
*) Change your call to MAKTRAN to put in a /z parameter
Eg my \eikon\group\arm.cmd is now
call doarm eikon /d
call doarm eiksrv
call doarm eikcns /d
call doarm eiksys /d
and the \eikon\group\doarm.cmd batch file is
set _frzpar=
if exist %1.frz set _frzpar=/z%1.frz
call maktran %1.mak %1.arm %_frzpar% %2
set _frzpar=
nmake -f %1.arm /x %1.aer
(EIKON, EIKCNS & EIKSYS all build DLLs, whereas EIKSRV builds an EXE)
*) FRZ stands for "frozen": take a look at the new *.DEF file, and
you'll see that it starts off by duplicating the *.FRZ listing; all
new functions get put on at the end, rather than being inserted in
alphabetical order
*) You'll get an error during the Gcc build phase if one of the
functions listed in the *.FRZ file cannot be found in the new DLL (eg
because you've changed the function signature)
*) Don't forget, when you're finished, to copy the final *.DEF file
to *.FRZ (and PVCS it again) for the sake of the *next* time you need
to add in EXPORTed functions
*) Also bear in mind that when the post J-Day API thaw hits, all
*.FRZ files will be deleted again (which will allow us to change a
few function signatures)
*) To recap one point: there's no need for any app to rebuild with
Eikon 071 (unless eg you want to call one of the new EXPORTed
functions)
From Simon:
-----------
1) Fixed the bug that was causing file sizes and dates to overlap in
the file selector
2) Fixed the bug that caused the button array in the file selector
to panic the layout engine (were not a temporary kludge in place last
time to stop this); for the first time, all button arrays should now
be drawn properly (we hope!)
3) Changed clock factories to initialize the offset and flags
variables to zero (necessary since clock factories are Ts not Cs)
4) Fixed an old bug concerning the positioning of text on buttons
that also have a bitmap
5) Fixed TLBox1 to run on the rack again without crashing (except
that it mysteriously crashes when positioned to Z:, for reasons that
are still being investigated)
From Brendan:
-------------
6) Modified the SetExtentL function of CEikClock to take cognisance
of whether it owns its window (this is actually just a workaround of
a limitation in the present implementation of the CLOCK DLL, which
will have to wait until after J-Day for a proper fix; in the
meantime, some clocks will have to go back into their own windows)
7) Changed a TInt to a TInt64 instead the SetTimeOffsetInSeconds()
function of CEikClock, so that large time offsets could be set in
microseconds
8) Added an EXPORTed ctor for CEikClock, to allow it to be used from
outside Eikon.DLL
9) Converted TBmp so that it runs under the new clock scheme, and,
for the first time, TBmp joins the set of Eikon test applications
that run on the rack
10) Added an EXPORTEd dtor for CEikBufTag, for the usual reasons
From Siamak:
------------
11) Modified the HandlePointerEventL() function in CEikListBox so
that clicking outside a popout listbox reports an
InteractionCancelled event to its observer (allowing the observer to
destroy the listbox) - functionality that got lost in the recent
rationalization of this function
12) Fixed a bug in CListBoxView::UpdateSelectionL()
From Vamsi:
-----------
13) Changed the HandlePointerEventL() function of CEikEdwin to call
ReportControlEventL(EEikCeItemClicked) in all non-trivial cases, so
that the observer (eg the Word Application control) can do things
like modify Bold Italic and Underline buttons in the toolbar (this is
a cleaner solution than the one currently employed in the Write
testcode)
Don't forget to test any Eikon changes by compiling in Gcc
----------------------------------------------------------
*) You may lose some J-Day points if you submit code that fails to
compile and link cleanly under Gcc!
Version 0.01.070
================
(Made by DavidW, 28 May 1996)
Uses: E32/060 F32/024 STORE/014 BAFL/032
GDI/023 FNTSTORE/017 FBS/023 BITGDI/023 WSERV/034
PDRSTORE/006 PRINT/013 CLOCK/019 GRID/059
CONE/078 ETEXT/037 TBOX/054 FONTS/026 EALWL/021
E32TOOLS/026 EIKTOOLS/104 RCOMP/304
Barring accidents, this release defines Eikon for J-Day; there will
be no header file changes, or changes in EIKON.DEF (the set of
exported functions), until the post J-Day API thaw
"Standard set" of variants: WINS Ascii/Release and GCC Release
Use CLOCK 019 for the first time (binary compatible with CLOCK 018)
A note about testing on the rack:
---------------------------------
By all means test your software on the PC, but don't neglect to test
it thoroughly on a rack as well.
Many bugs may show up only on the rack.
For example, there are some known (and possibly some unknown) Gcc
compiler bugs, that can cause software that works beautifully on the
PC to go wrong on the rack.
From DavidW:
------------
1) CEikDocument now has a CFileStore* pointer iFileStore, for the
handle of the open filestore of the "main document" (this pointer
will probably move to the CEikProcess class later); the important
change here is that the filestore is now kept open throughout the
duration of editing the file, with two advantages:
(a) Sibo-style, it prevents the user editing the same document
twice at the same time
(b) it supports deferred access to data in the store, without
requiring it all to be read in during the first "load" stage
2) Changed the Write test application so that it sets the
EEikEdwinPartialFormat flag, meaning (inter alia) that off-screen
pictures won't get read in during the first load stage; the fact that
the main file store is now kept open means that this behaviour no
longer causes a crash when the picture does eventually need to be
accessed (eg when the user pages down the document)
3) The above changes have a knock-on effect for the "Save" operation
of general write-once files, since the new file must now be written
out with a temporary name (without losing the contents of the
original file, which may not all be in memory yet), and with a rename
occurring at the end; this change has been made to the DoFileSave
function of CEikDocument
4) Changed the CreateStoreLC function of TEikDocHeader to take an
additional TFileName& parameter, to hold the filename of the
temporary file created
(there are still practical problems, though, if there is a "Save" or
"SaveAs" request, without the whole document first having been loaded
into memory; these will be addressed once STORE provides fuller
support for "stores within streams")
5) The Demo test app (\eikon\tsrc\demo.*) now stores its data in a
re-writable store, with the data in the store being kept up to date
as the user makes changes in the application
6) Demo now runs on the rack for the first time
(there is still some way to go, though, before the file-handling
routines in Demo are properly integrated with the system in
CEikDocument that currently handles write-once file stores; this will
be developed further shortly)
7) Changed the file selector default always to show extensions
8) Commented out the piece of file selector code that restricts the
files listed to those with an extension matching the seed file, since
in practice this is almost never what the user wants
9) Two new MNT verbs, to allow easy switching of whether the E32
console is installed (as required for running certain kinds of test
code, eg Store test code or AGM test code), or whether the Eikon
console is installed; just type either
MNT GETE32CONS
or
MNT GETEIKONCONS
with the result that the appropriate ECONS*.DLL files are placed into
\e32sys and \work\emarm; note that both these verbs (as usual for
Eikon MNT GETxxx verbs) take an optional additional parameter, for
the build number (defaulting to the appropriate build number set at
the top of the MNT file), so you could type eg
MNT GETE32CONS 061
if there is a build 061 of E32 whose console you wished to fetch,
without waiting for Eikon as a whole to make a release officially
compatible with that E32
10) Tracked down and resolved the cause of the previous version of
WRITE not being able to load any documents containing pictures; as a
result of changes in STORE, it's now important that the document
stream is closed before the application is sent notification that its
document has changed (since this will cause the application to format
the document, which means in turn that ETEXT will go back to the
document store to load the embedded picture; however, the latest
STORE gives a "File sequence" panic if there's an attempt to read
from one stream whilst a previous stream is still open)
11) Fixed another problem with WRITE, not being able to do more than
one File Open in any one session
12) On Vamsi's request, changed the LayoutWidth() function of
CEikEdwin from being protected to being public
13) Introduced a flag EEikListBoxKeepModel that prevents a
CEikListBox from deleting its iModel member in its destructor
14) As requested by Brendan, changed the definition of the
SaveProfileL() function in CEikDocument to be const
From Bill:
----------
15) Two new "op-codes" for the Eikon Server: EEsOpCodeBringToFront
and EEsOpCodeFindClientByName
16) Changed the Eikon Server FindClientByName function to do a case
independent match on the name
From Simon:
-----------
17) Rewrote EIKCLOCK.* completely, based on a new design (and taking
advantage of various features supported by recent changes in the
CLOCK DLL)
18) The definitions EEikCtAnalogClock and EEikCtDigitalClock have
been removed from EIKCTRLS.HRH, being replaced by a single definition
EEikCtClock; corresponding changes have been made to resource files
19) It should now be much easier for applications to define their own
additional types of clocks, by means of supplying their own
TEikClockFactory derived class
20) Clocks no longer need to have their own window at the Eikon level
21) Button arrays no longer need to know about clocks being above
them or below them - though this requires all button arrays to have
the id EEikButtonArrayId
22) For now, clocks have lost the ability to show dates; other
changes from the previous version are that analog clocks can't set
their background color, and digital clocks can set their background
and text colors; the test code in TDialg0 has been updated to show
this
(note that the default for clocks is now not to show seconds)
(TBmp will need some re-writing in the light of all these changes; it
fails to compile at the moment, and has been temporarily removed from
the set of live Eikon test applications, as listed in
..\tsrc\bld.cmd)
23) Altered the Directory Contents listbox viewer to calculate its
column widths in proportion to the available width
(however, TLBox1 often crashes in this build of Eikon)
24) As a temporary measure, attempted to deal with possible OOM
problems with the file selector by destroying it in all such cases (a
bit OTT; this approach will be refined later)
From Siamak:
------------
25) Added default ctor and dtor for CMultiColumnListBoxView
26) Added a new public function DrawScrollBarsNow() to
CEikScrollBarFrame; this allows controls (such as listboxes) that use
a scrollbar frame to be able to force their scrollbars to be drawn at
the same time as they call DrawNow() on themselves, rather than to
wait for a redraw event (though none of the controls in Eikon call
this function yet)
27) Modified the behaviour of the multi-column listbox control when
cursoring right or left and the next column has fewer items than the
current one; previously, the cursor would sometimes fail to move
right or left in this case, but now it always moves, adjusting its
"y-value" if needed in the process
28) Fixed a display bug in scrolling left/right in multi-column
listboxes (to do with not erasing the highlight from the "old"
current item before scrolling)
29) Simplified the implementation of the HandlePointerEventL()
function of CEikListBox
30) Removed the function CEikListBox::EventOccurredInViewRect()
31) Various other changes (minor bug fixes and enhancements) in other
parts of listbox code
From Brendan:
-------------
32) Fixed a small bug in which locking a country selector to one
country did not always transfer the keyboard focus to the associated
city selector
33) Removed some defunct const TInt's from EIKWLDSL.CPP.
Version 0.01.069
================
(Made by DavidW, 24 May 1996)
Uses: E32/060 F32/024 STORE/014 BAFL/032
GDI/023 FNTSTORE/017 FBS/023 BITGDI/023 WSERV/034
PDRSTORE/006 PRINT/013 CLOCK/018 GRID/059
CONE/078 ETEXT/037 TBOX/054 FONTS/026 EALWL/021
E32TOOLS/026 EIKTOOLS/104 RCOMP/304
"Standard set" of variants: WINS Ascii/Release and GCC Release
From DavidW:
------------
1) Converted to E32(060) and F32(024); actually this was trivial(!)
due to the binary compatibility - except that you have to move over
to a new set of E32TOOLS at the same time, and slightly change the
format of your *.OBY file; note too that you now invoke ROMBUILD
instead of E32ROM
2) Converted to STORE(014) GDI(023) ETEXT(037) etc - which required
rather more of a change - see the release notes of these other
components for more details
(for the first time ever, Eikon now builds in Gcc without any
warnings whatsoever)
3) Commented back in the code to allow Date and Time fields to be
entered, eg in TEdwin0
4) Deleted the file ..\inc\eikclipb.hrh as no longer required (the
TUid values for clipboard types are now defined in the header files
for the classes that understand these types, eg TXTRICH.H)
5) Made CEikGridWin::ConstructGridWinL an EXPORTed function
6) Changed the SetText() function of CEikButton to be SetTextL
instead, and made it accept a TDesC* instead of an HBufC; the button
now deletes any previous texts it had (fixing a bug noted by Adam);
note that the function now creates an HBufC internally, so there is
no need for callers to do the same
7) Provided public TextView() and TextLayout() accessor functions for
the iTextView and iLayout data members of CEikEdwin
From Vamsi:
-----------
8) New module EIKRHCMP.* containing the CEikEdwinRichCmp subclass of
CEikEdwinCmp, which has additional support for rich text editing
9) Eg CEikEdwinRichCmp contains support for Ctrl-B toggling the bold
state, etc (code moved here from Write)
10) Changed Write to use CEikEdwinRichCmp
11) Renamed the iGlobalText parameter of CEikEdwinCmp to iCmpText
12) Fix to LayoutWidth() function in CEikEdwin, to take account of
the width of any margin cursor
From Neil:
----------
13) Improved the grip drawing code for scrollbar thumbs so that the
grip is always centered as well as possible
14) Improved TScrlB0 to allow more flexible testing of larger
scrollbars
15) More changes to CEikEdwin to improve the scrollbars under partial
formatting
From Duncan:
------------
16) Converted the Eikon code for creating picture headers and doors
to have NewL functions in its API
17) Took advantage of changes in GDI to make greater use of native
chevron streaming operators eg for TMargins
From Doug:
----------
18) Took advantage of the CTextView::NotifyForwardChangedL() function
to simplify some code in CEikEdwinCmp::ApplyParaFormatL() (and to
improve its functionality)
(later changed by DavidW to call NotifyGlobalChangeL() instead)
From Brendan:
-------------
19) Added a virtual function RWindowGc& CEikTagBase::ControlGc()
const, which the Draw function uses to set its Gc before drawing its
text - this allows sneaky things to be done in derived classes, such
as setting a patterned brush, and will allow the font preview
specializations to be moved out of this base class in due course
(Note: larger changes to the API to the more basic function
CCoeWinArea::SystemGc() are planned for shortly after J-Day)
From Siamak:
------------
20) CEikListBox now sets the flag ECoeWinAreaAutoValidate, which will
cut down in flicker in cases when a DrawNow() is called when the list
box area is already marked as invalid (eg because a dialog has been
destroyed); this change should be completely safe since the Draw()
function of CEikListBox always draws to all pixels (and it shouldn't
introduce any extra flicker, because the background color of the
listbox window has been set to NULL)
21) On Bill's suggestion, changed the list box functions
SetItemFont(), SetItemHeight() and SetColumnWidth() so that they no
longer take an optional redraw flag as their second argument;
instead, it is now the programmer's responsibility to ensure that the
function HandleListUpdateL() is called after one or more such
operations on a listbox
22) Also on Bill's suggestion, modified CEikListBox::Draw() so that
clearing of the margins and drawing of the borders now takes place
before the drawing of the items
23) Added a new (temporary) flag EEikListBoxNoBorder to EIKCTRLS.HRH;
if this is set, CEikListBox::BorderWidth() returns 0 and the
DrawBorders() function does nothing
24) Modified the SelectionIndexes() functions of CEikListBoxView and
CEikListBox to return a CArrayFix<TInt>* instead of a
CArrayFixFlat<TInt>*
25) Modified CMultiColumnListBoxView::SetColumnWidth() so that it
sets the new top item index by calling SetTopItemIndex() rather than
setting this variable directly
26) Modified CEikDirContentsListBox::HandleListUpdateL() so that it
no longer asks the view to recalculate its bottom index (since this
task is now performed by the view when its top item index is set)
27) Fixed a bug in the MoveToItemRight() and MoveToItemLeft()
functions of CMultiColumnListBoxView (the "old" highlighted item
wasn't being redrawn)
28) Various other internal listbox code changes.
Version 0.01.068
================
(Made by DavidW, 23 May 1996)
Uses: E32/059 F32/023 STORE/013 BAFL/030
GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032
PDRSTORE/005 PRINT/012 CLOCK/017 GRID/058
CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/020
E32TOOLS/023 EIKTOOLS/104 RCOMP/304
"Standard set" of variants: WINS Ascii/Release and GCC Release
From Ian:
---------
1) New "Insert field" dialog, in the new module EIKFLDD.*, for the
user to specify a field type to insert into an editor; currently the
only choice offered is a "Dummy" field, but the dialog definition
also has "Date" and "Time" fields commented out for now (these are
supported by versions of EText from 035 onwards)
2) CEikEdwin now supports functions InsertFieldL(),
UpdateCurrentFieldL(), and UpdateAllFieldsL(), layering over editable
text functionality
(the Eikon update-all-fields code isn't very satisfactory at the
moment since it involves two redraws of the screen, and loses the
cursor position - this will be sorted out shortly)
3) New function RunFieldDialogL() in CEikEdwinCmp, launching the
Field Dialog, and placing the result into the edit window
4) New standard commands in EIKCMDS.HRH: EEikCmdEditUpdateAllFields
and EEikCmdEditUpdateCurrentField
5) New menu commands added to TEdwin0 to test the above features
(the Edit menu now has a Fields cascade submenu)
From Neil:
----------
6) New class TEikDrawUtils in the new module EIKDRAW.*, which is
intended to become the home of all Eikon drawing utility functions,
such as DrawHorizMarkerLine() and DrawSunkenBox()
7) Whereas the above-mentioned functions used to belong to
CEikonEnv, they are being moved to TEikDrawUtils, and with that move,
greater flexibility is allowed for the Gc used for the drawing; by
default, a TEikDrawUtils uses the system gc, but one can be created
using any other CBitmapContext - eg a context for drawing to an
off-screen bitmap
8) For now, the existing API to CEikonEnv drawing utility functions
has been preserved (with some of the implementation starting to be
moved to TEikDrawUtils), but after J-Day the floodgates will open
9) Changed CEikScrollBarThumb to draw its grip lines to an
off-screen bitmap, on a thumb-resize, and subsequent drawing blits
from that off-screen bitmap to the thumb; this eliminates the 'lag'
effect in drawing the grip on to a very long scrollbar thumb
(Note: the changeover hasn't been completed yet, with the result that
some thumb griplines get drawn in slightly wrong places)
10) A knock-on effect of the above changes is that SetModel() has to
become SetModelL() instead; changed test code as required by this
11) Fixed a bug in laying out scrollbar components
From Bret:
----------
12) Caught up with recent changes in the set of fonts available, so
that all the standard calendars (as visible eg in TCal) are drawn
with sensible fonts
From Vipul:
-----------
13) Made the HighlightToL() function of CEikMenuBar public instead of
private, for the sake of Opl
From Siamak:
------------
14) Speeded up horizontal scrolling in multi-column listboxes by
scrolling the window and redrawing only those columns that need to be
redrawn
From Vamsi:
-----------
15) Added a Paginate dialog to EIKPRTDG.* (no test code for in Eikon
yet though)
16) New standard menu command in EIKCMDS.HRH: EEikCmdPrintPaginate
From DavidW:
------------
17) "Quit" is dead, having been systematically replaced, throughout
the \eikon group, by "Exit", following the Protea Style Guide; note
that the hot-key for "Exit" is CTRL('e') not CTRL('q')
18) The "Quit, losing changes" command has been removed completely,
also as per Style Guide recommendations; applications that would
otherwise have had a "Quit, losing changes" command should just stick
with a "Revert to saved" command
19) Anyone requesting a CEikDateEditor in a dialog will now get a
CEikPopoutDateEditor, which is the same thing, but with a "tab"
popout button added, giving access to the 1/3/12 month calendar suite;
all being well, this calendar popout feature will shortly be moved
into the standard CEikDateEditor class, and CEikPopoutDateEditor will
be removed
20) CEikHotKeyTable now supports hot-keys like '(', which have the
Shift modifier held down when they are actioned; you define them in a
resource file just as a PLAIN_HK, eg (from the latest TMENUB0.RSS)
PLAIN_HK { command=EMenuCommandToolsSix; key='(';},
21) Made some of the hot-keys in TCal more sensible
22) Changed a few pieces of resource text from eg "Insert Field" to
"Insert field", and "Select Date" to "Select date", in line with Style
Guide recommendations for only capitalizing the first word in such
phrases
23) If someone tries to confirm a SaveAs dialog without providing a
(non-wild card) filename, the dialog now traps this case and gives an
error message
24) More internal changes in the Demo test app.
Version 0.01.067
================
(Made by DavidW, 22 May 1996)
Uses: E32/059 F32/023 STORE/013 BAFL/030
GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032
PDRSTORE/005 PRINT/012 CLOCK/017 GRID/058
CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/020
E32TOOLS/023 EIKTOOLS/104 RCOMP/304
"Standard set" of variants: WINS Ascii/Release and GCC Release
A note about the Protea M3 and J-day releases:
----------------------------------------------
I've been waiting for a consistent set of upstream software
components, compatible with Wserv 033 (or later) and EText 037 (or
later), before releasing a matching Eikon to serve as the basis for
the M3 Protea ROM release (originally scheduled for 4pm today).
However, this may take some time to materialize: a fairly significant
rewrite of PDRSTORE is still underway, and there's some more
perturbations pending from STORE 014 (newly released) and, possibly,
from an important pending change in EXE- and ROM-building tools
(which will allow software currently requiring an 8Mb ROM to fit
inside 4Mb after all).
I'll keep monitoring the situation closely. My present best guess is
that we may omit the M3 release altogether, and I'll just aim for the
J-Day frozen release of Eikon, to appear some time Friday evening
(where "evening" may need to be interpreted liberally!)
From Siamak:
------------
1) As suggested by Bill, the listbox control now uses the system gc
for any drawing work it has to do itself (eg drawing a border), and
it no longer creates a gc to pass to the listbox view class
2) Taking a leaf out of what happens in CTextView, the CListBoxView
class now creates a gc by itself, for its own drawing purposes; in
order to be able to do this, it needs to be passed a CGraphicsDevice*
in its ConstructL function; as well as being a conceptual
improvement, this change reduces the number of lines of code in
interfaces to setting up listbox systems
3) The above changes mean that the HandleRedrawEventL function in
CEikListBox is dispensed with (the version from CCoeWinArea is used
instead); the function CreateGraphicsContextL also disappears from
this class
4) Modified various list box scrolling functions to lessen the
amount of actual redrawing that occurs (relying on scrolling for the
other items)
5) Modified CEikListBox::SetItemFont() so that it doesn't panic if
it has no view or item viewer at the time of the call
6) On Simon's suggestion, made CListItemViewer::SetViewRect()
virtual
From SimonC:
------------
7) Took advantage of above listbox changes to improve the file
selector listbox code
From MartinB:
-------------
8) Fixed the height selection logic in the Font Dialog so that if an
exact match is not found, then the next smallest font is chosen
9) Stopped displaying fonts smaller than 4 points high in the font
dialog (these fonts exist for the sake of preview and zooming, not
for being selected in their own right); this also gets rid of the
embarrassment of having two 1-point fonts to choose from
10) Allowed the user of the font dialog to specify a graphics device
(there's an additional parameter in the ctors of CEikFontDialog), so
that the dialog can be used to select fonts from (say) a printer; the
default (when the graphics device pointer is passed as NULL) is, as
before, to use the screen device
11) Added some ...Ls to function names where needed in CEikFontDialog
12) Stopped EXPORTing some private functions from CEikFontDialog
13) Other internal changes to font dialog code
From Brendan:
-------------
14) Changed the SetState() function of CEikTagBase to SetStateL(), to
allow this to be polymorphic with the function in CCoeControl
From DavidW:
------------
15) Internal changes to the Demo test application (many more are
still pending)
16) The function CEikEdwinCmp::RunFontDialogL now takes an optional
additional CGraphicsDevice parameter, which is passed on in turn to
the ctor of CEikFontDialog.
Version 0.01.066
================
(Made by DavidW, 21 May 1996)
Uses: E32/059 F32/023 STORE/013 BAFL/030
GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032
PDRSTORE/005 PRINT/012 CLOCK/017 GRID/058
CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/020
E32TOOLS/023 EIKTOOLS/104 RCOMP/304
Uses EALWL 020 for the first time
From Julian:
------------
1) The Eikon print dialog now has the facility for setting the page
range to print
2) If the total number of document pages is just 1, the page range
control gets dimmed (though currently there's no visual indication of
this)
3) Temporary new function NewMinAndMax() for an Integer Editor,
which does much the same job as UpdateMinAndMax(), except that it
allows the maximum number of digits to change (eg from a 1-digit
editor to a 2-digit), which is alright provided the function is
called early enough in dialog initialization (eg from the
PreLayoutDynInitL); these two functions will probably be merged in
due course
4) Modifications to the Eikon print preview window to ensure that it
can deal with a multi-page preview
5) Modifications to TEdwin1 test code to allow multi-page printing
(by printing the same thing on several different pages)
6) Changed the button array in the print preview control to use the
"dense packing" flag, and had to make minor adjustments to the button
array code as a result (and to file selector code that uses the
button array code)
7) The print preview window now exits on receipt of Esc
8) Workaround in integer editor to avoid a panic when an integer
editor only has one digit and when a character is typed into it
(which could sometimes cause a "hide cursor" panic)
From Siamak:
------------
9) Fixed a bug in CListBoxView::Draw(), not calculating the empty
area at the bottom of the list properly in all cases
10) Changed CEikListBox::UpdateScrollBarsL() to call Invalidate(), as
it used to do (this had been changed to call DrawNow(), but that
caused more flicker)
From Vamsi:
-----------
11) Altered CEikEdwin code to take the width of any line margin
cursor into account in the SetWordWrapL() and SetScrollBarsL()
functions
12) The SetLineCursorFormatL() function of CEikEdwin can now be
called to change the line cursor format, as well as to initialize it;
CEikEdwinCmp now calls this function whenever the font of its main
text is changed, so that the line cursor font changes in synch
13) New private property iLineCursorWidth in CEikEdwin, to cache this
result
From Brendan:
-------------
14) Removed all virtual inline functions from EIKTAG.* and EIKWLDSL.*
(by either making them non-inline or making them non-virtual)
15) World selectors now wrap around from the first entry to the last
entry, and vice versa, rather than getting stuck at the ends
16) Removed all occurrences of "temporary error message" from world
selector code, eg when an unmatchable key was pressed
From DavidW:
------------
17) Worked through all mixin classes in Eikon, adding EXPORTed ctors
as required in a few cases
18) Removed the function MListBoxModel::LbmCBase() as an anachronism
19) Various changes to EIKMENUB.* and EIKMENUP.* to support menus
being defined in memory, ie from other than resource files
20) New test application TMenuP2 (based on an earlier version written
by Vipul) showing how to define menus in memory, and testing that
(eg) cascades can be supplied from a mixture of resource file and
in-memory definitions; TMenuP2 runs on the rack as well as in WINS
21) New classes CEikMenuItemArray and CEikMenuTitleArray, which are
essentially the "model" classes for menu panes and menu bars
respectively; these two classes are fairly simple subclasses of
variable arrays (more code from the menu control classes could
doubtless be transferred into these model classes)
22) On a suggestion from Brendan, the Eikon Server now initializes
the Window Server keyboard repeat settings, allowing much quicker key
repeats to be received (after an initial pause); this makes world
selectors seem much zippier than before, and doubtless will have an
effect on other "continuous moving" keyboard actions.
Version 0.01.065
================
(Made by DavidW, 20 May 1996)
Uses: E32/059 F32/023 STORE/013 BAFL/030
GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032
PDRSTORE/005 PRINT/012 CLOCK/017 GRID/058
CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/019
E32TOOLS/023 EIKTOOLS/104 RCOMP/304
*Not* binary compatible with Eikon 064 - so don't take this, if you
want your app to remain compatible with the set included in the M2
Protea ROM
"Standard set" of variants: WINS Ascii/Release and GCC Release
Uses GRID 058 for the first time
From Neil:
----------
1) Gave scrollbars a well-needed cosmetic facelift: the thumb is now
drawn differently, and looks more 3-D
2) The scrollbar thumb now sports a "grip" perpendicular to the
direction of travel, to indicate its "moveability"
3) The scrollbar shaft now has a dithered gray background
4) Changed the feedback given when a scrollbar thumb is being
dragged: the dotted rectangle is gone, being replaced by a quite
different effect (try it and see)
5) Also fixed a bug which reported all pointer events on the thumb
as drag events; now only drag events get reported
6) As an experiment, in test code TScrlB0 changed to using an idle
object to scroll the bitmap in reponse to scroll events from the
scrollbars; the effect under WINS is a lot more noticeable than on
the rack
7) New function DrawVertMarkerLine() in CEikonEnv, similar to the
existing horizontal version
From SimonC:
------------
8) Fixed some bugs regarding reading/writing the registry variable
determining whether, by default, file selectors show the extensions
of filenames
9) Added new error message "Cannot be read" to EIKON.RSS, to be used
eg instead of either "Directory cannot be read" or "Drive cannot be
read" in cases when the information returned by F32 does not allow
one of these two messages to be used unambiguously
10) Speeded up the time in which the file browser is drawn to the
screen, bu not population the listbox models or creating the
scrollbars until the rest of the control is drawn; this has halved
the time elapsed between pressing the Browse button and the browser
being drawn, in some cases, though it also means that the Draw()
function could now leave
11) Integrated the file browser into the standard File SaveAs dialog
12) Modification to CEikListBox::HandlePointerEventL to stop the
highlight from jumping when you click on an item other than the
current item, in a listbox that does not have the focus
From Vamsi:
-----------
13) New function SetZoomFactor(TZoomFactor* aZoomFactor) in CEikEdwin
supporting zooming Edwins (by default, no zoom factor is used)
14) See TEdwin0 for an example of using zoom in an Edwin
15) New function SetLineCursorFormat(TCharFormat& aFormat) in
CEikEdwin allowing the format of the line (or "margin") cursor to be
set; again, see TEdwin0 for an example (it's an acknowledged
limitation of Form that the line cursor area isn't always correctly
redrawn)
16) Set values for the maximum lengths of the edit combo boxes used
in the standard Text Find and Text Replace dialogs (previously, these
values defaulted to being zero, ie no maximum length)
From Julian:
------------
17) Removed the home-grown clipboard management functions in
CEikEdwin, in favour of using the ones provided by EText
(there are various known problems with these clipboard functions,
some of which have already been fixed by a release of EText that
cannot, however, presently be used by Eikon)
18) New IsHorizontal() function in CEikGray16Palette
From Siamak:
------------
19) Speeded up the clearing of the empty portion of the listbox
viewing area, by modifiying CListBoxView::Draw()
20) Added CMultiColumnListBoxView::Draw(), since MC listboxes have to
use a different mechanism for clearing the empty portion at the end
of their items
21) Added SetItemFont() function to CEikListBox
22) Fixed a bug in CEikListBox::SetItemHeight(), and redefined this
function in CEikMultiColumnListBox, since additional work is required
in this case to change the item height
23) Improvements to the way multi-column listboxes scroll in response
to keypresses
24) Fixed a bug that occurred when using character matching in
multi-column listboxes
25) Modified CListBoxView::SetTopItemIndex() to make it safer to use,
and redefined it in CMultiColumnListBoxView to make sure that the
horizontal scroll offset is updated
26) Modified the ListBoxView::Draw() functions so that they cope
better with listboxes whose models contain no data
27) Modified CListBoxView::SetItemHeight() and
CMultiColumnListBoxView::SetColumnWidth() so that they recalculate
the new top item index when the item height or column width change
28) Other internal changes to listbox code
From DavidW:
------------
29) Moved the code initializing the File Browser Format registry
entry from the Eikon System application (EikSys.PRG) to the Eikon
Server (so that it will still apply even when the Eikon System
application is replaced by the real System application, System.PRG)
30) Changed the character used for the line cursor ("margin cursor")
in Edwins from '+' to a right-pointing chevron
31) After some experimentation on the rack, changed the initial
double-click settings, to allow two clicks up to 10 pixels apart to
count as a potential double click
32) Temporary kludge to avoid the bug whereby the Base would crash if
the user clicked twice on the program bar, on icons with no matching
application, without clearing the alert in the meantime (this will
require changing to a proper alert service, in the Eikon Server,
before it can be fixed properly)
33) Started making changes to the menu code, to offer better support
for menus defined in memory, and not via resource files (based in
part on work by Vipul); this isn't complete yet, though some points
are clear enough:
34) Both the menu bar and the menu pane now respect the flag value
EMenuArrayOwnedExternally (set privately in iFlags) and if this is
set, don't do a delete on the menu array
35) New virtual function RestoreCommandWindowL() in MEikMenuObserver,
with the default implementation
EXPORT_C void MEikMenuObserver::RestoreCommandWindowL
(CCoeControl* aCommandWindow,TInt aWindowId)
{
TResourceReader reader;
CControlEnv::Static()->CreateResourceReaderLC(reader,aWindowId);
aCommandWindow->RestoreL(reader);
WarnCommandWindowDisplayL(aWindowId,aCommandWindow);
CleanupStack::PopAndDestroy();
}
which is suitable for all "standard" Eikon applications, but can be
overridden eg by OplR
36) New function SetItemArray(CMenuItemArray*) for CEikMenuPane, and
SetMenuTitleArray(CMenuTitleArray*) for CEikMenuBar, that should be
suitable candidates for calling inside a variant
RestoreCommandWindowL() function
37) Note that the parmeter to the RestoreL() functions of
CEikMenuPane and CEikMenuBar have changed from a TInt to (as is more
standard) a TResourceReader&
38) Changed the LargerBoldSystemFont() function of CEikonEnv to be
just BoldSystemFont(), since that font isn't actually any larger than
the standard system font (apart from the fact that it's bold).
Version 0.01.064
================
(Made by DavidW, 16 May 1996)
Uses: E32/059 F32/023 STORE/013 BAFL/030
GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032
PDRSTORE/005 PRINT/012 CLOCK/017 GRID/057
CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/019
E32TOOLS/023 EIKTOOLS/104 RCOMP/304
"Standard set" of variants: WINS Ascii/Release and GCC Release
This release is binary compatible with 063; other Eikon changes that
have been submitted to me will remain on my in-tray until after the
M2 release of the Protea ROM has been prepared
To reiterate, there's no need for any app that works with Eikon 063
to rebuild with Eikon 064
Uses EAlWl 019 for the first time
From DavidW:
------------
1) J-Day is here already! More precisely, the Eikon Server now
tests the date on startup, and if this is less than 1990, the date
gets set to J-Day (31st May 1996), and the time gets set to 4pm
(but for some reason the date actually ends up at 10:10 on the 2nd of
May 1996 - as evidenced eg by a printout of the date added to the
Eikon System screen on startup)
2) On a suggestion from Bill, changed the Small System Font (as used
for some dialog buttons and for auxiliary menu display text) back to
what it was before, ie Arial 154, since this still seems to exist in
EON4.GDR, and (being non-bold) looks better for this purpose
3) Eikon.OBY now contains support for 8 Mb ROMs (eg for debugging
purposes!); alter the "-dROMMEGS=4" in MNT BLDIMG to "-dROMMEGS=8"
(you'll need an UTC bootrom.bin for this to work, though - see
ROM_PROT release notes for more details)
4) Eikon.OBY now contains support for setting the ROM build number
automatically from the %_ver% in the MNT.CMD (but I guess that E32ROM
is seeing the "0" in eg "064" and setting the build number to 0
rather than to 064 as intended)
5) Fixed the Eikon implementation of ECONS.DLL to display a cursor
6) Changed the Eikon implementation of ECONS.DLL not to clear to the
end of the line on a <CR>, thereby bringing it into conformance with
the E32 Text Windows implementation, and solving the problem of the
commands typed into eg TWIN.EXE being overwritten
From Vamsi:
-----------
7) Fixed a bug in the font dialog whereby it wouldn't exit if the
user pressed Enter without making any changes in the dialog (the
responsibility for testing for changes in the character format passes
to the caller, eg CEikEdCmp)
From Bill:
----------
8) Tweak to CEikonEnv::DrawRaisedBox(), so that buttons (and other
users of this functions) get their top and left borders drawn with a
single line of white
From Jezar:
-----------
9) Made menu panes call DrawNow() at the end of their
StartDisplayingMenu() routine, and set the flag
ECoeWinAreaAutoValidate for them, with the joint result that they
appear more responsive than before (they don't have to wait for a
redraw before their contents get filled in)
Important: The death of \eikon\system:
--------------------------------------
10) Eikon no longer releases any files called SYSTEM.*; all these
files have been renamed to EIKSYS.*, to avoid a name-clash when the
(real) System application is present as well
11) The source directory \eikon\system has been replaced by a (fairly
similar) source directory \eikon\eiksys
12) There's a new verb in MNT, PROMOTE, with the following contents:
if exist \e32sys\eiksys.prd copy \e32sys\eiksys.prd \e32sys\system.prd > nul
if exist \e32sys\eiksys.prg copy \e32sys\eiksys.prg \e32sys\system.prg > nul
which you can use to "promote" the Eikon System to take the place of
the real System application, in the absence of a System application
compatible with your current build of Eikon
13) Eikon.OBY renames the GCC version EIKSYS.PRG to SYSTEM.PRG.
Version 0.01.063
================
(Made by DavidW, 15 May 1996)
Uses: E32/059 F32/023 STORE/013 BAFL/030
GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032
PDRSTORE/005 PRINT/012 CLOCK/017 GRID/057
CONE/076 ETEXT/034 TBOX/052 FONTS/023 EALWL/018
E32TOOLS/023 EIKTOOLS/104 RCOMP/304
"Standard set" of variants: WINS Ascii/Release and GCC Release
Uses PRINT 012 and TBOX 052 for the first time
You will need to add PREV.DLL to your *.OBY files
(but TBOX has removed the EXPORT_C status of one of its DrawBorders
functions again, so to avoid a link error I've had to comment out the
critical line in Eikon's Paragraph Borders Preview control)
(also this PRINT seems to have lost the ability eg to preview
Landscape pages and make them look like Landscape)
*** It will be this release of Eikon and other system components (or
releases that are binary compatible with these) which forms the basis
of the M2 release of the Protea ROM at around 4pm tomorrow ***
From Natascha:
--------------
1) Picture storing/restoring to and from file now works again in
Write, both for door pictures and for non-door pictures
(there's a known EText bug that crashes if there's a picture first
thing in a document)
2) Various minor improvements to code in the EIKEDCMP, EIKFONTD and
EIKPARAD modules
From Julian:
------------
3) New module EIKPRTPV.* containing Eikon support for the print
preview control and window
4) TEdwin1 now has a Print Preview menu command; this only shows one
page (because TEdwin1 only ever has five lines of data), but other
clients of the print preview system should be able to get more than
one page displayed
From Bill:
----------
5) Changed CEikButtonBase::DrawButtonShadow to be protected rather
than private
6) Removed the CEikButton::SetBmp function that was added recently,
since it is no longer required
From Neil:
----------
7) Modified CEikListBox::HandlePointerEventL so that response to
drag events in listboxes is much faster than before (possibly by as
much as 200%)
From Siamak:
------------
8) Fixed various bugs show up by further testing of listboxes (and
multi-column listboxes)
From SimonC:
------------
9) Added a menu option in the Eikon System screen for file selectors
to hide/show file extensions; this preference is stored in the
registry, and is effective in all applications
10) Changed the file selector to create a radio button group instead
of a choice list of drives, if there are only two drives; this
required some extra functions to be added in EIKRBUT.CPP, and
changing CalculateRequiredSizeL to be public
11) Removed CEikButtonArray::OfferMnemonicToControlsL as it wasn't
needed
12) Changed the GetClientRect() function of CEikAppControl to take
account of a second tool bar, if one exists
13) Horizontal toolbars can now be placed at the bottom of the screen
(before they were restricted to being at the top)
14) Slightly speeded up the drawing of items in a Directory Contents
listbox
15) Added first-letter matching to the Directory Contents listbox
16) Fixed bugs which caused the file selector to crash when Browse
was pressed with "(No files)" showing, and C: to be shown as the
initial drive selected regardless of what was really selected
17) Changed all calls to User::Panic to call Eikon's Panic instead
From Brendan:
-------------
18) Updated alarm alerts to understand snoozing, ie no longer faking
paused sounds (by setting quiet periods), and updated function names
to reflect current thinking (Snooze -> PauseSound and DeferSound ->
QuietPeriod)
(There's a known bug in the alarm/world server that can result in a
panic when the server is terminated and there are outstanding alarms;
there's also a known bug in the alarm server that panics when alarm
sounds have been switched off, and sound gets paused)
From DavidW:
------------
19) Added a function CEikonEnv::GetErrorText(TDes&, TInt), to provide
text corresponding to a given error value (eg -1, -2, ...); this
funciton expects the passed buffer to be large enough (no #define is
provided for a suitable length yet, though 40 would do for now); the
text is read from the Eikon resource file
20) Spent some more time trying to rename Eikon's version of ECONS.DLL
to EIKCNS.DLL (since this "overwriting" problem has caused grief and
wasted time to quite a few people), but got defeated by the crudeness
of the MAKTRAN and E32ROM tools, so gave up again (for now).
Version 0.01.062
================
(Made by DavidW, 14 May 1996)
Uses: E32/059 F32/023 STORE/013 BAFL/030
GDI/021 FNTSTORE/015 FBS/021 BITGDI/021 WSERV/032
PDRSTORE/005 PRINT/011 CLOCK/017 GRID/057
CONE/076 ETEXT/034 TBOX/051 FONTS/023 EALWL/018
E32TOOLS/023 EIKTOOLS/104 RCOMP/304
The first release with E32/059 et al
There's clearly a big speed up on the rack, but just as clearly
there are places where things still need to be speeded up further
See my u:\eik062b.img and u:\eik062c.img
WINS Ascii and GCC Release variants (the WINS Release built badly,
and I don't have time to rebuild it *yet* again just now)
The new set of Fonts (023) has most of the "Arial" set of fonts
excluded from it, so that we are running for the first time with
basically the EFF set of fonts (as doctored and extended by
Natascha); this has had a few unexpected consequences for some pieces
of code (eg 1-month and 3-month calendars), which will need their
font-specification code tweaked before normal service is resumed
Many other developments come "automatically" with this version, eg
you can now run the "Text Shell" by choosing TWIN.EXE from the Eikon
System screen's "Run EXE command"
Pointer events get delivered accurately for rack-Cs as well as
rack-Bs now, though all off-screen pointer events still fail to get
delivered in either case
Preparing for Protea M2 ROM:
----------------------------
Due to delays in preparing this Eikon release, I'm slightly altering
the proposed timetable for building the M2 (Milestone 2) ROM for
Protea; I now propose to do another (consolidation) release of Eikon
tomorrow morning (Wed 15th), which will provide the basis for the M2
release, to be made at 4pm on Thursday 16th (24 hours later than
previously planned)
Sizes (GCC)
-----------
eikon.dll 374,276
eiksrv.exe 4,100
system.prg 20,996
econs.dll 7,172
eikon.rsc 6,025
system.rsc 1,750
*.pbm 48,112
From Siamak:
------------
1) CEikListBox::HandleListUpdate() now only draws the view contents,
and doesn't bother with redrawing the borders/margins
2) A couple of unnecessary redraws have been eliminated from
CEikListBox::HandlePointerEventL()
From Vamsi:
-----------
3) Improved Font Dialog so that it remembers the font size, on
changing typeface, and selects the font size nearest to this, rather
than defaulting to the smallest font size
From Neil:
----------
4) Improved the behaviour of scrollbars under partial formatting in
Edwin; it's still not perfect, but it's better than the "half-way"
state they were left in previously.
Version 0.01.061
================
(Made by DavidW, 13 May 1996)
Uses: E32/057 F32/021 STORE/012 BAFL/029
GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031
PDRSTORE/004 PRINT/010 CLOCK/016 GRID/056
CONE/075 ETEXT/033 TBOX/050 FONTS/022 EALWL/017
E32TOOLS/022 EIKTOOLS/104 RCOMP/304
"Standard set" of variants: WINS Ascii/Release and GCC Release
From Bret:
----------
1) Date editors now have the option for a tab button that pops out a
calendar dialog suite; see the date editor in TCal for an example
2) This is presently implemented as a new class CEikPopoutDateEditor
in EIKNUMED.*, but may in time be merged with the original
CEikDateEditor
From Siamak:
------------
3) Fixed bug (reported by Bill) in multi-column listboxes, by
redefining the function SetTopItemIndex() in CEiKMultiColumnListBox
4) Removed some unnecessary #includes from EIKSLBX
5) Converted all the non-standard asserts used in EIKLB?.CPP
From Vamsi:
-----------
6) On the suggestion of MartinB, added another constructor to
CEikFontDialog, which doesn't take the undetermined mask or the TDes
for selected text
7) Streamlined some of the implementation of CEikFontDialog, by
making more use of functionality from TXTFRMAT.*
From Julian:
------------
8) New classes CEikRubberBand and CEikRubberLine in the new module
EIKRUBTL.*, making code originally developed for Paint available for
wider use, in particular for picture scaling and cropping inside rich
text editors (not implemented yet)
9) New class CFrameOverlay, intended to work to some extent in
conjunction with the rubber band tool classes, but also being
independently useful; this presently exists in a module FRAME.* in
the Eikon group, but ought to migrate further before long
From DavidW:
------------
10) Converted ..\tsrc\eikon.oby to be pre-processed before generating
a test ROM, to improve support for ROM variants (copying from
\rom_prot\group); also created MNT BLDIMG verb, with an optional
variant parameter (defaulting to RB, to create a rack-b test ROM)
11) Fixed the "ear stuck down" bug when a Leave occurred inside
CEikonEnv::OfferEarsEventL
12) Preliminary work on a new test application ..\tsrc\demo.*, very
loosely derived from the former (broken) test app ..\demo\demo.*,
which will before long demonstate Eikon support for apps with
rewritable stores.
Version 0.01.060
================
(Made by DavidW, 10 May 1996)
Uses: E32/057 F32/021 STORE/012 BAFL/029
GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031
PDRSTORE/004 PRINT/010 CLOCK/016 GRID/056
CONE/075 ETEXT/033 TBOX/050 FONTS/022 EALWL/017
E32TOOLS/022 EIKTOOLS/104 RCOMP/304
"Standard set" of variants: WINS Ascii/Release and GCC Release
Includes Grid for the first time; you may need to alter your MNT.CMDs
to reflect this
From SimonC:
------------
1) The Open File dialog now launches a file browser when the Browse
button (used to be "Directories" button) is pressed; this allows
users to change directory, or to select an individual file or
directory
(The relation between the standard listbox popped out from the
filename selector control by Tab, and this file browser activated by
Browse, has still to be resolved at the spec level: ideas welcome!)
2) Changed the constructor for the file selector dialog to take just
one TDes*; the initial path to be shown should be passed in, and the
path selected will be passed out
3) Fixed various bugs that were shown up by using the file browser
properly for the first time
4) Tidied up TLBox1 in the wake of the file selector code having
been moved out of it
5) Renamed CFileSelector to CEikFileSelector
6) Improved error handling is an invalid drive is selected
7) Added an OfferMnemonic function to CEikButtonArray, so that the
button array in the file selector is accessible via the keyboard
8) On Bill's suggestion, altered several functions to take a
reference rather than a pointer
9) Altered SetPathL for a DC listbox to do an update after setting
the path
10) Made CEikLabel::SetExtentL public rather than private, to allow
labels to be constructed dynamically (as in the File Selector dialog,
which now has a text label for its row of sort-order buttons)
11) Added a function SecondToolBar() to CEikAppControl, publicizing
the private handle iSecondToolBar
From Natascha:
--------------
12) Added a Preview line to the Font dialog, displaying specified
text in the font currently selected in the dialog (together with
styling, eg bold, strikethrough)
13) This has been implemented using a CEikTag, but it has been
necessary to add the following functionality (to CEikTagBase): the
ability to specify a minimum height, the ability to specify a maximum
width, and the ability to set strikethrough and underline styles
14) Due to a flux in ideas for the API to the font dialog, this has
been reverted to the previous version, in which the dialog operates
on format layers and format masks, instead of interaction directly
with an MFormatText; corresponding changes have been made to
CEikEdwinCmp
From Kevin:
-----------
15) Updated MFNEs to the new TDateTime code, which should mean that
date and time editors no longer trash the time and date bits
(respectively) of the TDateTime* they are passed
16) New control CEikDateAndTimeEditor, the combined date-time editor
(as required by the Agenda): it's a bit rough round the edges just
now, but it's functional
17) Updated TDialg1 so that its Number Editors dialog has an example
of this new MFNE variant
18) Added some new ASSERTs to MFNE code
19) Added Set() and SetAll() functions to SEikNumedField, producing a
(modest) reduction in codesize (with some more time, this could
probably be reduced further in this area)
20) Pressing Backspace (Shift+Del) with a field selected used to
cause a Panic - now fixed
From Neil:
----------
21) Split CEikScrollBarFrame::MoveThumbsTo() into two functions,
MoveVertThumbTo() and MoveHorizThumbTo(), to allow a control to alter
a single scrollbar without having to recalculate the scroll offset in
the other direction too
22) Converted Edwin to this new scheme, and put a quick fix into
Listbox (to be improved later to take advantage of the independence)
23) Added support in TEikScrollBarModel for "inexact" scrollbars, via
the new SetModelFromEndValues() function; also added
AdjustOnlyModelThumbPosition() to CEikScrollBar, and
AdjustModelThumbPosition() to CEikScrollBarFrame (better names may
emerge for these functions later)
24) Started to convert Edwin to use this new scheme as well, in the
case when CTextView only formats its document partially, though the
conversion isn't complete yet (and in some ways the implementation is
more broken than before)
From Siamak:
------------
25) Fixed some typos in ASSERT statements pointed out by Bill, which
were causing panics every time various functions were called
26) Some tidying up of the header files for CEikListBox and
CEikListBoxView, but applications using listboxes shouldn't be
affected; several non-essential functions have been removed from the
public and protected interfaces to these two classes
27) Fixed drawing bug that was occurring when the pointer was dragged
inside multi-selection listboxes
From DanH:
----------
28) New module EIKGRID.* providing a Grid Control over the
functionality in GRID.DLL
From DavidW:
------------
29) Changed the standard colors defined in EIKCOLOR.RH so that they
are all exact colors in 4 shades of gray, ie 0, 5, 10, or 15 (viewed
as Gray16 values); this shows up some interesting effects!
30) Rebuilt using BAFL/029 and CONE/075; this led to a reduction in
codesize of some 2.5% (around 10k)
31) Various renames as required by the changes in Bafl, eg
TIncrMatchXxx changes to RIncrMatchXxx, and calls to MaCBase() simply
disappear (they were vacuous)
32) Stopped some more functions from being both inline and virtual
(which was giving rise to code bloat)
33) Fixed a bug reported by Brendan whereby Eikon's version of
ECONS.DLL wasn't being released (this explains why console
applications failed to run on the M1 release of the Protea ROM)
34) Fixed a bug pointed out by MartinD in that a CEikMover couldn't
handle having NULL iText (as can happen when there is no title text
for a dialog)
Stop Press:
-----------
35) In order to E32ROM the contents of the latest Protea.OBY, you'll
need to use an under-the-counter version of E32ROM, which you can
fetch (eg into \eikon\tsrc) by typing "GETREL EIKON E32ROM 025"
Version 0.01.059
================
(Made by DavidW, 8 May 1996)
Uses: E32/057 F32/021 STORE/012 BAFL/028
GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031
PDRSTORE/004 PRINT/010 CLOCK/016
CONE/074 ETEXT/033 TBOX/050 FONTS/022 EALWL/017
E32TOOLS/022 EIKTOOLS/104 RCOMP/304
"Standard set" of variants: WINS Ascii/Release and GCC Release
From SimonC:
------------
1) Moved the file selector out of test code into its own new module
EIKFSEL.* in \eikon\src
2) The file selector's constructor now takes the path of the
directory to be viewed on creation; the file selector dialog also
takes a buffer to receive the file or directory selected
3) Various other changes to the directory contents and tree
listboxes as suggested by Siamak and Bill
From Siamak:
------------
4) Two new listbox classes, CEikStandardListBox and
CEikStandardMultiColumnListBox; many "standard" uses of listbox will
now transfer from using CEikListBox to CEikStandardListBox; the
rationale for this change is to keep the API to CEikListBox itself as
simple as possible
5) The ConstructL() function of CEikStandardListBox doesn't require
a pointer to a model or item-viewer, since this control will
automatically create for itself a CStandardListBoxModel and a
CBitmapAndTextListItemViewer; see the new files EIKSLB?.*
6) Fixed a multi-column listbox drawing bug, by changing one of the
functions in CListBoxView to be virtual
7) Improved left/right arrow key handling for multi-column
listboxes, by minimizing the number of item redraws
From Bill:
----------
8) Added SetBmp(RFbsBitmap*) function to CEikButton, to allow the
bitmap to be specified other than by filename
9) Added exported dtor for CEikButtonArray
10) Commented out some button array asserts which don't work inside
"if" statements
11) Changed CEikButtonArray::HandleControlEventL from private to
protected so that GCC MI fixes can work
From DavidW:
------------
12) The CEikDebugKeys object is now enabled on Release builds as well
as Debug builds, to allow its functionality to be available on the
rack; this is the object that allows you to do Ctrl-Sh-Alt-M to get a
"move-me" dialog to test redrawing, etc
13) Included a couple of playback scripts in the ROM, for TEdwin1 and
TDialg0, as an example of more to come shortly (for automated testing
and for performing timing and profiling tests); go to either of these
applications and press Ctrl-Sh-Alt-P to start playback.
Version 0.01.058
================
(Made by DavidW, 7 May 1996)
Uses: E32/057 F32/021 STORE/012 BAFL/028
GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031
PDRSTORE/004 PRINT/010 CLOCK/016
CONE/074 ETEXT/033 TBOX/050 FONTS/022 EALWL/017
E32TOOLS/022 EIKTOOLS/104 RCOMP/304
Binary compatible with Eikon 057: No app rebuilds necessary (so it
can slot into the M1 build of the Protea ROM without causing any
disturbance)
"Standard set" of variants: WINS Ascii/Release and GCC Release
From Julian:
------------
1) Added a "Delete file" function to the Eikon System screen, to
provide some stop-gap file-management facilities on the rack; this
dialog is seeded to y:\main\* on the PC and to c:\main\* on the rack,
but you can use the Directories sub-dialog to navigate to any other
path
From DavidW:
------------
2) Additional logging facilities in the Eikon System screen (to help
debug strange things happening on racks): logging of pointer events
and logging of key events are now controlled independently via menu
commands (the former is enabled by default, and the latter disabled).
Version 0.01.057
================
(Made by DavidW, 7 May 1996)
Uses: E32/057 F32/021 STORE/012 BAFL/028
GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031
PDRSTORE/004 PRINT/010 CLOCK/016
CONE/074 ETEXT/033 TBOX/050 FONTS/022 EALWL/017
E32TOOLS/022 EIKTOOLS/104 RCOMP/304
"Standard set" of variants: WINS Ascii/Release and GCC Release
Uses CONE 074 for the first time
Build 001 of Protea ROM:
------------------------
This release of Eikon (or a release that is binary compatible with
it) will be used as the basis of build 001 of the Protea ROM, to be
made at 4pm on Wednesday 8th May
Note that the Eikon System screen has the capability of running, not
only Eikon .PRG applications, but also *.EXE files, such as CONE test
programs, or even console-based *.EXE files (such as BAFL or E32 test
programs)
Please let me know which of your files you would like added to the
001 build of ROM: let me know the location of the (zipped) files
containing these files on the network, and give me a fragment of the
PROTEA.OBY file that shows where these files have to be put inside
the ROM (and showing whether they need to be renamed in the process)
From Julian:
------------
1) A print process dialog, CEikPrintProgressDialog in EIKPRTDG.*,
now exists to show the progress of printing, using a progress info
bar; CEikPrintProgressDialog multiply inherits from
MPrintProcessObserver; it should be suitable for use by any Eikon
application that prints; the full bar represents the total number of
copies and pages to be printed
2) TEdwin1 has been modified to display the print process dialog
after the printing dialog is confirmed
(but for the time being there seems to be a stray signal panic if the
user presses Esc on the print progress dialog)
3) Revisited the combo box code, so that it now supports a maximum
text length being set (which is passed on to the CEikEdwin component)
From Neil:
----------
4) The listbox borders drawing bug should now be solved both on the
rack and in WINS, by means of changing the CListBoxView::ViewRect()
function to return a const TRect& rather than a TRect by value
(thereby avoiding problems with lifetimes of temporaries)
5) Replaced a couple of "if (x<0) x=0" constructs in listbox
(AdjustTopItemIndex) and scrollbar (CheckModelBounds) code, to avoid
the GCC over-optimizing bug, and thereby cure various strange effects
on the rack
From Bret:
----------
6) Now use CEikScrollMoveButtons instead of CEikButtons to create
the left and right pointing push buttons in calendar dialogs
7) CEikCalDialog no longer returns ETrue in the OkayToExitL()
function when Enter is pressed, but rather reports an event
EEikCeInteractionConfirmed to its observer, leaving it to the
observer to sense the date selected, and to destroy the dialog
(This mechanism - rather unusual, so far, for Eikon dialogs - is
required because one calendar dialog can get replaced by another
part-way through, as the user switches between 1, 3, and 12 month
views, and therefore the "dialog with wait" approach cannot be used)
8) For this reason, the static CalendarL() function takes an
MCoeControlObserver as one of its parameters; see the code in TCal to
see the application control handling events from the calendar dialog
From Vamsi:
-----------
9) Changed interface to the font dialog, CEikFontDialog, whose
constructor now takes the arguments
MFormatText* aText,
TInt aLowerPos,
TInt aLength,
TInt aFontDialogFlags=0
where aLowerPos and aLength can be passed as zero for non-rich text
uses; note that CGlobalText derives from MFormatText, so a pointer to
a CGlobalText can be passed as the first parameter, if desired
10) The font dialog now applies the formats selected in the dialog,
inside its OkayToExitL() function
From DavidW:
------------
11) Based on work by Vamsi in TextEd, split the CEikEdwin class in
EIKEDWIN.* into two, with the residual part of CEikEdwin having less
knowledge about its text object and about the environment as a whole
(and thereby being more portable, on both counts), and with the new
class CEikEdwinCmp in EIKEDCMP.* providing a larger "component" for
re-use within applications
12) At the CEikEdwin level, the text object is known only via a
CPlainText* pointer (though for the time being there are still a few
parts of code where a cast to eg a CRichText* pointer takes place);
on the other hand, at the CEikEdwinCmp level, the text object is
known via a CGlobalText* pointer
13) CEikEdwinCmp is derived from CEikEdwin, meaning that there is
comparatively little difficulty in converting an app that uses a
CEikEdwin to one that uses the richer set of functionality in
CEikEdwinCmp
14) Converted the test applications TEdwin0, TScrlB1, and Write to
the new edwin system (TEdwin1 didn't need to change)
15) Among the CEikEdwin functions that disappear (for various
reasons) are SetFormatLayers, CreateOwnFormats, SetAttribute, and
CreateTextL; many other CEikEdwin functions have migrated to
CEikEdwinCmp - CEikEdwinCmp takes over lots of "Run dialog" code that
used to be in CEikEdwin, eg dialogs for importing text, for finding
and replacing, and for altering paragraph or character formatting
16) The "Set button assignments" dialog is now able to save its
settings on the rack (previously it failed due to trying to write to
ROM) - even though, for now, these settings have no value (since no
off-screen digitizer events get delivered)
17) Rearranged the calendar dialog code to avoid the double redraw
problem for the dimmed button on startup (by means of ensuring that
the dimming of this button happens in a DynInitL() function, ie
before the call to SetReadyToDraw() for the dialog)
18) Another exported ctor: CEikComboBox.
Version 0.01.056
================
(Made by DavidW, 3 May 1996)
Uses: E32/057 F32/021 STORE/012 BAFL/028
GDI/020 FNTSTORE/014 FBS/020 BITGDI/020 WSERV/031
PDRSTORE/004 PRINT/010 CLOCK/016
CONE/073 ETEXT/033 TBOX/050 FONTS/022 EALWL/017
E32TOOLS/022 EIKTOOLS/104 RCOMP/304
An interim release: WINS Debug and GCC Release only; other pending
Eikon changes will be included shortly
As usual, see eik056b.img or eik056c.img on my u:\
First release with GDI 020 et al: another step towards faster
programs; it's a definite improvement (but there's still definitely
room for more improvement)
Be sure to update your MNT.CMD batch files to fetch the new EWINS
component of FORM (rather than TBOX as before)
From Siamak:
------------
1) Speeded up cursor up/down in listboxes, by eliminating redundant
item redraws
2) Removed most listbox calls to SetClippingRegion(), in favour of
the new SetClippingRect()
3) On Neil's suggestion, modified CEikListBox::DrawMargins() so that
it sets the clipping rect to the whole of the listbox window, in a
way similar to DrawBorder()
4) Change to the mechanism for CListBoxView tracking when it has no
current item
5) Further improvements to TLBox
From Natascha:
--------------
6) Fix to stop the paragraph colors dialog from crashing
From DavidW:
------------
7) Added more "default: break" statements to switch statements, to
remove almost all GCC compiler warnings for Eikon
8) Yet another exported ctor (this time for CStandardListBoxModel)
9) Write now can save and restore files even on the rack (so long as
there are no pictures involved).
Version 0.01.055
================
(Made by DavidW, 3 May 1996)
Uses: E32/057 F32/021 STORE/012 BAFL/028
GDI/019 FNTSTORE/013 FBS/019 BITGDI/019 WSERV/030
PDRSTORE/003 PRINT/009 CLOCK/015
CONE/072 ETEXT/032 TBOX/049 FONTS/022 EALWL/017
E32TOOLS/022 EIKTOOLS/104 RCOMP/304
"Standard set" of variants: WINS Ascii/Release and GCC Release
Uses FONTS 022 for the first time
Isn't yet able to use the forthcoming turbo-charged versions of
BITGDI et al; please wait patiently until all intermediate system
components are ready
For rack images, see eik055b.img or eik055c.img on my u:\
Sizes (GCC)
-----------
eikon.dll 392,196
eiksrv.exe 4,612
system.prg 22,020
econs.dll 7,684
eikon.rsc 5,722
system.rsc 1,617
*.pbm 77,716
From Natascha:
--------------
1) Further developments to the paragraph borders and paragraph
colors dialogs; with the current release of Form, paragraph borders
are now displayed again, around paragraphs (though with some mighty
strange wiggling about!)
(and note that, on the rack, preview borders are *not* displayed in
dialogs yet, pending a new release of Form)
2) Improvements to the borders preview control, so that it no longer
bursts the side of its enclosing dialog
3) These dialogs are now accessible from TEdwin0, as well as from
Write
From Julian:
------------
4) Converted TEdwin1 so that it runs on the rack
5) Added access to the print setup dialogs from TEdwin1
6) Added a print command to TEdwin1, which prints the text of its
five edit boxes through the PrintBand() function of its new class
CSimplePrint; the printout is to a file (temp.pcl) put into the root
directory by PdrStore
From Neil:
----------
7) Rearranged some listbox display code, trying to solve some
display problems on the rack
8) These display problems haven't been solved (and it may be that
new display problems on WINS have been introduced), but the code is
in several aspects more efficient than before
From DavidW:
------------
9) FSELPRNT.PBM wasn't being properly copied into the RACK rom (bug
in the *.OBY file), with the result that the up-arrow ("cd..") icon
was displaying incorrectly in the directory contents listbox
10) Yet more exported ctors and dtors added
11) Converted Write so that it now runs on the rack; this is the
nearest thing so far to the Eikon Word Processor running on the rack;
you can even run up TEdwin1 style doors inside Write, and then use
"Format picture" to scale them or crop them
(File saving or loading with rich text crashes every time, somewhere
inside EText, for reasons I don't understand yet - on both WINS and
GCC, and regardless of whether any pictures are involved)
(Also be patient with some of the formatting and redrawing problems
for Write, which are probably due to a GCC compiler bug,
over-optimizing some IF expressions)
12) Application profile files are now created on c:\profiles on the
rack, and on y:\profiles on the PC, and the Eikon System application
has been altered to look for profiles in these places; you can delete
any c:\profiles (or d:\profiles, etc) directory on your hard disk
13) Fixed a potentially nasty stack-overwriting bug for dialogs
running without wait
14) The Eikon System application no longer uses a custom dialog for
its Run App DLL command, but simply uses the standard "Open file"
dialog from EIKCFDLG.*
15) Started to cut down on the number of warning messages when Eikon
is built under GCC, mainly (on Siamak's suggestion) adding
default:
break;
to many switch statements, and also by changing the definition of
various dtors from private to public.
Version 0.01.054
================
(Made by DavidW, 2 May 1996)
Uses: E32/057 F32/021 STORE/012 BAFL/028
GDI/019 FNTSTORE/013 FBS/019 BITGDI/019 WSERV/030
PDRSTORE/003 PRINT/009 CLOCK/015
CONE/072 ETEXT/032 TBOX/049 FONTS/021 EALWL/017
E32TOOLS/022 EIKTOOLS/104 RCOMP/304
Contains WINS Ascii/Release variants and GCC Release variant
Uses CLOCK 015 and E32TOOLS 022 for the first time
For built IMGs, see EIK054b.IMG and EIK054c.IMG on my U: (for B- and
C- racks respectively)
(The EIK054c.IMG is theoretical only; I only get a solid black screen
on the only rack-C I've been able to try it on; mind you I suspect
this rack-C is kaput, since every other attested rack-C IMG I've
tried on it has equally stuck on the black screen of death)
Again, there are more running test programs than ever before - so
much so that the popped out Applications list box, in the Eikon
Shell, now sports a scrollbar
The above IMGs are built with some UTC re-released BITGDI files,
available on r:\eikon\temp, that cause a significant speed increase
for *certain kinds* of graphics; other kinds of graphics speed
increase are pending, but the BITGDI (etc) changes for them are
binary incompatible with other system components at the moment, and
so will need to work their way through a proper release cycle
From DavidW:
------------
1) IMPORTANT: Eikon now releases a version of the file WSINI.INI,
placed into \e32data by Eikon's MNT GETREL, which will overwrite any
copy of that file you have there already - but it's not a long file,
so you won't lose much sleep over this, and in any case, if this file
was important to you, you had a copy of this in one of your source
directories already, didn't you? (Eikon's copy is in ..\srcdata)
2) The contents of Eikon's WSINI.INI file is presently
STARTUP EIKSRV
GRAY 4
which forces the Window Server into four shades of gray on the PC,
and which specifies the startup program for the Window Server to run
(overriding the default behaviour, which is to run a program called
SHELL.*); this WSINI.INI is also added into the *.OBY file
3) As you will deduce from above, the startup program that Eikon
releases is no longer called SHELL.DLL (or SHELL.DLL for the rack),
but EIKSRV.*
(The name of the program started in turn by EIKSRV remains as SYSTEM
for the time being)
4) On Bill's suggestion, the GETBLD for Eikon now automatically
includes a call to MNT TOOLS; thus (extract from MNT.CMD)
:getbld
call ..\group\mnt getsrc %2
call ..\group\mnt tools
call ..\group\mnt getcomps
goto end
5) The line invoking MAKTRAN in the batch file ..\tsrc\doarm.cmd is
now
call maktran %1.mak %1.arm /d /fEikMain__Fv
with the /f parameter (you'll need MAKTRAN 022 to support this)
ensuring that the correct function gets set as the first export in
the application DLL, even if you also have other EXPORT functions
6) Fixed WRITE so that it compiles links and runs again (but only
under WINS - not on the rack)
From SimonC:
------------
7) Changed EIKDCLB*.* and EIKDTLB*.* in the light of a header file
review by Siamak
8) Many of these changes can be considered cosmetic, but the most
important are that CDirContentsListBoxModel no longer inherits from
MBitmapAndTextListBox, and that the UpdateL() functions in the DC
list are now called CreateContentsListForCurrentDirL()
9) Removed some unnecessary functions and improved the handling of
various error conditions encountered within the file selector
From Siamak:
------------
10) More work on TLBox, list box test code
11) Fixed bug in the SetTopItemIndex() function of CEikListBox, which
wasn't updating any scrollbars
12) Fixed bug in the SetCurrentItemIndex() function of CEikListBox,
which wasn't changing the selection state in the case of
single-selection listboxes
13) Renamed CEikListBox::GetSelectionIndexes() to SelectionIndexes();
it now simply returns a pointer to the "selection indexes" array held
by the listbox view
From Neil:
----------
14) Converted TScrlB1 and TScrlB2 to run on the rack
From Bret:
----------
15) Added left- and right-pointing triangle push buttons to move the
calendar view backwards and forwards
(These are presently implemented by non-scaling bitmaps stolen from
Hcil, which are a bit too big for the button size - hence the funny
effects, especially in the 12 month version).
Version 0.01.053
================
(Made by DavidW, 1 May 1996)
Uses: E32/057 F32/021 STORE/012 BAFL/028
GDI/019 FNTSTORE/013 FBS/019 BITGDI/019 WSERV/030
PDRSTORE/003 PRINT/009 CLOCK/014
CONE/072 ETEXT/032 TBOX/049 FONTS/021 EALWL/017
E32TOOLS/021 EIKTOOLS/104 RCOMP/304
Uses BAFL 028, CONE 072, WSERV 030, and PRINT 009 for the first time
Runs even more test applications on the rack - see my u:\eikon053.img
Contains WINS Ascii/Release variants and GCC Release variant
From Neil:
----------
1) EIKSBMAN.* has been deleted, since all known clients of it have
converted to scrollbar frame technology instead
2) On request from DanH, added (inline) CEikScrollBarFrame functions
to return the scrollbar visibilities
3) Fixed a console bug which left the screen corrupted when
scrollbars were removed
4) Added functionality for listboxes to pass on their scrollbar
flags to the scrollbar frame when it is created
5) Added an exported ctor for CEikScrollBar
6) Converted TScrlB0 to run on the rack
7) Major re-write of TScrlB0 to allow much more testing of some of
the more obscure scrollbar layouts: button presence/ size/
auto-dimming can all now be changed independently for both scrollbars
From SimonC:
------------
8) Added some support for keyboard navigation to the drive selector
in the file selector: Up from the top of the directory browser goes
there
9) Recompiled all bitmaps used in TLBox1 to 2 bits per pixel rather
than 4
10) Changed the names of some enums in eiklbx.h and eikdclbm.h that
were overlooked last time
11) Added the function CurrentItemIsParentOfDir(TInt aItemIndex) to
eikdclbm to simplify some pieces of drawing code
12) Made various changes to TLBox1 so that the file selector is
displayed in a more consistent state on creation
13) Fixed a bug that was preventing Directory Contents list boxes
getting single-click pointer events
14) Improved the way a hierarchical listbox removes all items from
its model
From Siamak:
------------
15) More work on the test code for listboxes - this has highlighted a
few bugs
16) CListItemViewer::DrawActualItem() is no longer pure virtual, but
has an empty body, imposing fewer requirements on subclassers
17) CListBoxView::DrawItem() no longer asserts that the specified
item is visible
From Bret:
----------
18) Moved the definitions of the "standard" 1, 3, & 12 month calendar
dialogs from TCAL.RSS to EIKON.RSS
19) Likewise moved CCalDialog from test code into EIKCAL.*, making
changes to it en route to ensure it no longer requires any special
cooperation from the application control
20) Created a wrapper function CCalDialog::NewCalDialog() to trap
CalendarL() in case it leaves; this function sets the exit status to
reflect whether this occurs
21) Had a go at changing some of the calendar drawing mechanism to
use MapColors(), but had to leave this commented out for now (since
the Window Server currently fails to allow access to this Gdi
functionality)
From Brendan:
-------------
22) Re-ordered some of the inlines in EIKTAG.INL and EIKWLDL.INL to
ensure that functions aren't called before their body has been seen
(otherwise the GCC compiler gets confused)
From DavidW:
------------
23) Yet more Eikon test apps now run on the rack: TWldSl (allows
alarms to be set) and TEdwin0 (exercises CTextView et al)
24) Added PCL5.PDL and HP3.PDR to the EIKON.OBY file (both these
files are released by PDRSTORE and are required for the print setup
dialog to operate properly - not to mention to support printing and
print preview).
Version 0.01.052
================
(Made by DavidW, 30 Apr 1996)
Uses: E32/057 F32/021 STORE/012 BAFL/027
GDI/019 FNTSTORE/013 FBS/019 BITGDI/019 WSERV/029
PDRSTORE/003 PRINT/008 CLOCK/014
CONE/071 ETEXT/032 TBOX/049 FONTS/021 EALWL/017
E32TOOLS/021 EIKTOOLS/104 RCOMP/304
Ascii Debug and GCC Release variants only
More Eikon test programs are now running on the rack, better than
ever before (with additional significant improvements expected very
soon, via imminent new releases of other system components)
If you haven't done so already, type "MNT TOOLS" to upgrade to RCOMP
304 and EIKTOOLS 104, and you should see the last of these strange
"cannot delete file" messages
From SimonC:
------------
1) Undertook a major reorganization of the list box modules, with
EIKLBXM.* and EIKLBXV.* disappearing, and with many new modules being
created in their place (and also taking some of the functionality
away from eg EIKLBX.* and EIKHLBX.*)
2) See the LI.PRJ files for a complete listing of these modules;
basically the modules ending in 'x' contain the controls (the
"boxes") themselves, modules ending in 'v' contain views, those
ending in 'm' contain models, and those ending in 'i' contain item
viewers
3) Altered many of the enums, giving them a distinctive three-letter
prefix indicating whether they are defined in a view, model, etc
4) Converted all live test Eikon applications to the new list box
modularisation (eg changing which header files are #included)
5) Started a new test module TLBox2, to test the directory contents
list box and the hierarchical list box, separately (not fully
functional yet)
From Vamsi:
-----------
6) Access to Find and Replace CEikEdwin functionality from TEdwin0
test code
7) As an experiment, Ctrl+F in CEikEdwin automatically searches to
the next occurrence of the current word
8) Minor bug fix in Find code in CEikEdwin
From Julian:
------------
9) Modified TDialg0 so that it runs on the rack
From DavidW:
------------
10) Converted to all listed new components above, ie E32(057) etc
(Note that the Window Server now runs all graphics, by default, in
four shades of gray, using dithering for other shades; this leads to
various unexpected effects in several of the test applications!)
(Due to minor complications, I have temporarily withdrawn Write from
the set of live Eikon test applications, as listed in
..\tsrc\bld.cmd; also door code in general is not to be relied on
just now; to be reinstated shortly)
11) Since CTextView no longer needs to be passed a Gc, but rather
creates one for itself when needed, the CreateGcL() function of
CEikEdwin disappears, and with it the iGc data member
12) New support in dialogs for action buttons which *don't* cause the
current focus item to be validated, before their action is carried
out; this is required for eg the "Directory" button in the standard
Open File dialog (in the case when there are no files in the selected
directory, so the filename selector control is in an invalid state)
13) Filename selector controls now handle the case when they are
seeded with a non-existent path: they call TParse::PopDir()
repeatedly until they find a path that *does* exist
14) Fixed various bugs in the filename controls and dialogs, that
were shown up by the fact that the internal filing system (rightly)
rejects filenames with double backslashes in them, eg "\main\\*.dlg"
15) The Eikon System screen now seeds its Document dialog with the
internal drive (Y: on the PC and C: on the rack) rather than leaving
this to the pre-existing default (typically C: or D: on the PC and Z:
on the rack); ditto for the Profile dialog
16) The Eikon System screen now only formats the internal drive, on
start-up, when that drive is found to be corrupt; this means that
data stored in one editing session can be re-loaded in the next one
17) TDialg1 now demonstrates file save and re-load on the rack, by
means (for now) of explicitly specifying y:\ (or c:\) in its call to
LoadStartDataL; made similar changes to TEdwin0 and TEdwin1
18) Eikon no longer bothers PUTRELing any main.<ver> release
component of "sample document files", since these document files now
exist inside the internal drive, rather than on c: (or d: etc) on
the PC; made corresponding changes to MNT GETREL etc; you may wish to
"rd /s" any \main on your c: or d:
19) EXPORTed yet more ctors and dtors, for the sake of GCC linking,
and for the same reason put in a few EXPORT_C's to match the
IMPORT_C's in header files.
Version 0.01.051
================
(Made by DavidW, 29 Apr 1996)
Uses: E32/056 F32/020 STORE/011 BAFL/026
GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028
PDRSTORE/002 PRINT/007 CLOCK/013
CONE/070 ETEXT/031 TBOX/048 FONTS/020 EALWL/016
E32TOOLS/021 EIKTOOLS/103 RCOMP/303
Contains GCC Release, and WINS Debug and Release variants
Sizes (GCC)
-----------
eikon.dll 401,412
shell.exe 4,612
system.prg 22,020
econs.dll 7,684
eikon.rsc 5,303
system.rsc 1,644
*.pbm 48,456
From Bret:
----------
1) The sample calendar dialogs in TCal test code all now have buttons
to allow the user to switch between 1, 3, and 12 month views
2) Other improvements to TCal
From DavidW:
------------
3) The Eikon System application now has the ability to run "*.EXE"
programs, ie *.EXEs on the rack, and *.DLLs under WINS, prepared such
that their first exported function is their entry point; this means
that the Eikon System application is now able to run CONE test
programs
(Note however that, for the time being, these non-Eikon programs
won't show up in the Task List dialog, and won't be included in the
set of programs tasked around by eg Ctrl-Alt-Esc)
4) New function StartExeL(const TDesC* aExeName) in the static class
EikDll, implementing the "RunExe" feature of the Eikon System app
5) Eikon now supports "console applications", such as applications
using RTest; Eikon provides its own version of ECONS.DLL, overwriting
the version released by E32 (which only works with the Text Window
Server, likewise released by the base team)
6) The source code for Eikon's version of ECONS.DLL is in the new
directory \eikon\eikcns (so named because eikcon was a bit too
similar to eikon)
7) See \eikon\tsrc\t_bnda.* for how to prepare an RTest application
that can under in the Eikon rom, for either WINS or GCC32
(Note: Eikon's ECONS.DLL doesn't yet properly support console
applications that do asynchronous reads)
8) The following six Eikon test apps are all now part of the Eikon
test rom image: TCal, TMenuB0, TLBox, TLBox1, TCons0, TDialg1; they
run with varying degrees of success (mainly, the more windows they
have, the less likely they are to run)
9) Some changes to the short-cut keys in the Eikon System, eg the
launch application dialog is now on Ctrl-A, not Shift-Ctrl-A.
Version 0.01.050
================
(Made by DavidW, 26 Apr 1996)
Uses: E32/056 F32/020 STORE/011 BAFL/026
GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028
PDRSTORE/002 PRINT/007 CLOCK/013
CONE/070 ETEXT/031 TBOX/048 FONTS/020 EALWL/016
E32TOOLS/021 EIKTOOLS/103 RCOMP/303
Uses FONTS 020 for the first time
For a change, this release contains WINS Debug and Release, as well
as GCC Release
Five Eikon programs now run on the rack: the new ones this time are
TMenuB0 and TLBox1
Well, when I say that TMenuB0 runs, it runs provided you don't go
more than three levels of cascade menu deep ...
... and TLBox1 only runs provided you put in some delaying calls to
CEikonEnv::Alert during its start-up ...
... as you can see from the rom in my u:\eikon050.img
Eight separate contributors to this build of Eikon:
From Natascha:
--------------
1) New paragraph borders and paragraph colors dialog in EIKPARAD.*,
accessible from functions in CEikEdwin; see Write.CPP for examples
2) The paragraph borders dialog uses a new "borders preview"
control, from the new module EIKBPREV.* (based on classes provided by
Form)
(The separation of the Borders and Colors dialogs is due to the
present lack of multi-page dialogs; the fact that the borders preview
control is drawn so small is due to present lack of multi-column
dialog layout; both these deficiencies should be resolved shortly)
(Another point to note is that the present release of Form doesn't
display paragraph borders, though it does display background colors
for paragraphs, and paragraph positioning does get altered to reflect
the space the borders will take up)
3) Improved the handling of indeterminate state for the paragraph
alignment dialog (more work remains for this state in others of the
paragraph format dialogs)
From Vamsi:
-----------
4) New Replace functionality for CEikEdwin, together with a Replace
dialog defined in the Eikon resource file
5) Additional Find functionality for CEikEdwin, for example a
function to find the next instance of the current word
6) Both the Find and Replace dialogs for CEikEdwin now use combo
boxes
(There's no test code for the CEikEdwin Find and Replace in ..\tsrc
yet - you'll have to use TextEd to see this)
7) Improvements in the display of the line cursor in CEikEdwin
From Kevin:
-----------
8) Fixed a MFNE bug in which 4-digit year date editors were setting
the year one too high
9) Made the enum TEikDateEditorFieldPosition public, as is needed
for a dialog wishing to restrict a date control's range dynamically
10) Post-fixes in MFNEs can now be focussed nuch like the number
fields (making their behaviour more SIBO-like); when focussed, the
post-fix can be changed as before, using either pen or keyboard, but
with the additional method of pressing SPACE to toggle now available
11) Cut down on flicker when a single-digit field editor was "bumped"
by using the ears
12) Other internal changes to MFNE code, eg separating out an INL
file
From Siamak:
------------
13) Several more listbox functions have been renamed so that they
have a trailing ...L
14) Added four new functions to CEikListBox so that getting/setting
the selected item indexes can be done without resorting to GetState/
SetStateL; two of these functions, SelectionIndex() and
SetSelectionIndex(), are designed for use with single-selection
listboxes, while the other two, GetSelectionIndexes() and
SetSelectionIndexes(), are for multi-selection listboxes
15) Made changes to TLBox in preparation for turning it into a much
more comprehensive and useful tool for testing of standard and
multi-column listboxes (these changes are not finished yet)
From Neil:
----------
16) After discussion with Charles, implemented a new "helper" class
TEikScrollBarFrameLayout, to solve the problem of a scrollbar frame
mis-adjusting scrollbar models in some inclusive-size constant cases
17) This class contains fields for inclusive margins (or borders)
that go outside everything in the window, for the client margin, and
for the tiling mode and the "client area granularity"; this class
allows for fine control over the way the scrollbar frame works,
whilst the design has kept in mind the requirement that "simple"
users of scrollbars shouldn't need to bother with any of this
18) Changed list-boxes, edit windows, and (especially) the console
window, as required by the existence of TEikScrollBarFrameLayout
19) Fixed a bug found by DanH in CreateOrRemoveRequiredScrollBarsL
where the wrong set of flags was being altered
From SimonC:
------------
20) Some modifications to TLBox1 and to hierarchical list box
classes, to allow TLBox1 to compile and link for the rack
21) Changed the directory contents listbox to handle reading a
corrupt drive, although TLBox1 will still give an alert if any
attempt is made to expand a corrupt drive
From Bret:
----------
22) Some modifications to TMenuB0 so that it now runs on the rack
From DavidW:
------------
23) Whenever the Eikon Shell starts up, it now attempts to format the
internal drive (C: on the rack, Y: on WINS)
24) On a suggestion from MartinB, made
MEikScrollBarObserver::HandleScrollEventL() pure virtual, removing
the need for this class to have its own v-table
25) Added a few more exported ctors and dtors.
Version 0.01.049
================
(Made by DavidW, 25 Apr 1996)
Uses: E32/056 F32/020 STORE/011 BAFL/026
GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028
PDRSTORE/002 PRINT/007 CLOCK/013
CONE/070 ETEXT/031 TBOX/048 FONTS/019 EALWL/016
E32TOOLS/021 EIKTOOLS/103 RCOMP/303
Uses CLOCK 013 for the first time
Three Eikon programs now run on the rack: System, TCal, and TDialg1
(though not all at the same time! - goodness knows why)
In principle all non file-handling aspects of Eikon programs should
be able to run on the rack; however you'll probably find you need to
adjust Eikon header files to allow you to link fully (and then
rebuild Eikon); if so, please send me these changes, and I'll include
them in the next merge
Note that the rom image u:\eikon049.img starts by switching the rack
off. Don't be alarmed at this; switch it back on again and continue;
Steve Townsend and I have each found, empirically, that the system
software has more chance of starting up successfully when there's a
call to UserHal::TurnOff() at a suitably early place (goodness knows
why)
Only the ASCII Debug and GCC Release variants are released
Pending Eikon contributions from other authors remain on my in-tray
From DavidW:
------------
1) Changed the main window of the Eikon System application to
display console-style output (using CEikConsoleScreen), as is useful
when debugging on the rack (eg it presently logs the coordinates of
all pointer events received by the System application)
2) For the time being (because the System button doesn't work on the
rack), the keypress Ctrl-Alt-Esc will task switch
3) Various changes to Eikon to allow more test applications to run
on the rack
4) Stopped MNT GETREL from trying to download the EMARM release
component in any case when it does not exist (ie because that release
did not include EMARM)
From SimonC:
------------
5) The directory contents list box in TLBox1 now displays all file
details (with size and date in a smaller font)
6) There's a new bitmap to represent the parent directory, FSELPRNT
7) It is now possible to navigate the file selector by using the
pointer in the right-hand box (as well as the left-hand box)
8) All file selector bitmaps are now drawn using BitBlt() rather
than DrawBitmap(), for increased speed (though at the cost of some
additional work client side, setting up clipping regions)
9) Renamed EEikCeHierItemStateChanged to
EEikCeListBoxItemStateChanged so it can be used for other kinds of
list boxes as well
10) Other internal changes to listboxes and file selector code
From Bret:
----------
11) Introduced range checking prior to changing the calendar view to
ensure that dates outside the range specified in the resource file do
not come into view
12) Tidied up TCal, as preparation for it running on the rack.
Version 0.01.048
================
(Made by DavidW, 24 Apr 1996)
Uses: E32/056 F32/020 STORE/011 BAFL/026
GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028
PDRSTORE/002 PRINT/007 CLOCK/012
CONE/070 ETEXT/031 TBOX/048 FONTS/019 EALWL/016
E32TOOLS/021 EIKTOOLS/103 RCOMP/303
Uses CLOCK 012 and E32TOOLS 021 for the first time
This is an interim release, of only the ASCII Debug variant; it
includes some (but not all) of the work sent to me by the Eikon team
over the last few days
Known limitation: the various changes have had the side-effect that
the Window Server now crashes on exit, with a memory leak having been
detected
From Neil:
----------
1) With Pieter, converted the console window to use the scrollbar
frame instead of the (obsolescent) scrollbar manager
2) The above changes have shown up an limitations with the scrollbar
frame; a workaround is in place for the moment, which is an extra
optional parameter TSize* passed to TileL(); watch this space for
details of a more comprehensive solution
3) Added (and propagated) trailing ...L's on function names that
could leave, such as the HandleListUpdateL and UpdateScrollBarsL
functions of CEikListBox (note: this has a knock-on effect in quite a
few pieces of test code)
4) Removed TScrlB0's dependence on CEikScrollBarManager, so once
Julian and DanH likewise convert to using CEikScrollBarFrame, the
module EIKSBMAN.* can be deleted
From Bret:
----------
5) Removed IMPORT/EXPORT declarations from non-virtual private
functions in CEikCalendar
6) Various other internal changes in CEikCalendar code, eg improved
struct naming
7) Added scrolling when the cursor attempts to move off the edges of
a calendar view; the amount scrolled depends on settings in the
resource file
8) Added some more options to the test code TCal, in particular some
identical calendar layouts with differing scroll values - eg a 2x6
month view with 6-month scrolling, a la 3a, and with 12 month
scrolling, as planned for Protea
From Julian:
------------
9) The code for the print dialogs has been changed to use
MPdrModelNameArray for getting a list of printer devices, rather than
CDesCArray
10) A new class CEikPrinterModelNameArray derived from MArray can
convert the MPdrModelNameArray contents into the format required for
CEikChoiceList
From DavidW:
------------
11) If the Eikon Server is unexpectedly tasked to foreground (as
sometimes presently happens when another application exits), it now
immediately puts itself to background again, avoiding the impression
that all keys are getting lost
12) Apps were previously being launched with a required minimum heap
size of 0x200000, which meant that trying to launch a second app on
the rack gave out-of-memory; now fixed to require only a minimum heap
of 0x10000, allowing more than one app to be run at a time
13) Various internal changes in preparation for running more Eikon
code on the rack
14) As a temporary measure, modified Eikon's GETCOMPS to delete any
T*.GDR found in \e32data (to avoid people running into a FNTSTORE
bug); watch out for this if there's any file of that name in your
\e32data that you want to keep.
Version 0.01.047
================
(Made by DavidW, 23 Apr 1996)
Uses: E32/056 F32/020 STORE/011 BAFL/026
GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028
PDRSTORE/002 PRINT/007 CLOCK/011
CONE/070 ETEXT/031 TBOX/048 FONTS/019 EALWL/016
E32TOOLS/020 EIKTOOLS/103 RCOMP/303
Uses CLOCK 011, ETEXT 031 and TBOX 048 for the first time
This is the first release for which (some) Eikon code can run on
racks; try programming my u:\eikonrom.img onto a rack and playing
with that
Apologies to all those in the Eikon team who gave me code to merge,
but which I have ignored this time round, due to concentrating on the
GCC build
Sizes (GCC)
-----------
eikon.dll 379,908
shell.exe 4,612
system.prg 20,966
eikon.rsc 4,690
system.rsc 1,593
*.pbm 48,268
The figure for eikon.dll in particular is significantly larger than
expected; research is underway to apportion blame between compiler
inefficiencies (due to less than optimal v-function lookup), and code
bloat of all varieties
(never mind the size; of equal concern is the very slow speed at
which the code runs on the rack, with the appearance of windows being
"telegraphed" long in advance by the onset of their "shadow", etc)
From DavidW:
------------
1) With help from Geert, finally managed to order all the template
instantiation requests in a way that caused Eikon.DLL to link under
GCC with no errors
2) Also managed to get Eikon's Shell.EXE (the Eikon Server) and
System.PRG (the System Screen app) to link under GCC, but at what
cost! Because of GCC's stupidity when confronted with MI across the
DLL boundaries, *all* CEikDialog derived classes need to have the
line
void HandleControlEventL(CCoeControl* aControl,TInt aEvent)\
{ CEikDialog::HandleControlEventL(aControl,aEvent); }
(or equivalent) added to them, *all* CEikDocument derived classes
need to have
CPictureHeader* NewPictureHeaderL() const\
{ return(CEikDocument::NewPictureHeaderL()); }
(or equivalent) added to them, and *all* CEikAppControl derived
classes need something like
void ProcessCommand(TInt aCommand)\
{ CEikAppControl::HandleCommandL(aCommand); }
void HandleAttemptDimmedSelectionL(TInt) {}
If this nonsense turns out to be a non-fixable aspect of GCC then
I'll seriously consider backtracking my support for MI within Era
software
3) Removed all features that caused Eikon.DLL to have non-const
static data; this included constructions like
const TPtrC KSomeConstPtr=...
const TRgb KSomeConstCol=...
and
const TChar KSomeConstChar=...
all of which defeat the compiler and cause it to generate some BSS
(illegal for DLLs under GCC - as E32ROM will eventually tell you);
the above constructions have been replaced by less wonderful but more
practical code
4) Commented out various pieces of code which caused problems on the
RACK; probably I have left too many parts commented out
5) New Eikon release component EMARM containing, for now, the files
eikon.dll
eikon.lib
shell.exe
system.prg
from \work\emarm
6) The release of the GCC version of EIKON.LIB means that
applications can in principle try to link their own *.PRG files under
GCC; in practice, however, you will no doubt find that many Eikon
classes are still waiting to have EXPORTed ctors and dtors added
7) New file ..\tsrc\eikon.oby (and associated batch file bldimg.cmd)
which presently doesn't include any Eikon "test application" beyond
the System screen itself
8) New MNT verb ARMREL to build Eikon components in GCC
9) As suggested by Bill, all the MNT GETSRCxxx verbs have been
changed so as to test (eg) "if exist \e32\nul" before doing their
"del /s" on the directory prior to fetching the new source code; this
avoids a worrying error message appearing on the screen
10) The Eikon Server now captures the key combinations Alt-Ctrl-comma
and Alt-Ctrl-dot, to respectively decrease/increase the LCD contrast.
Version 0.01.046
================
(Made by DavidW, 22 Apr 1996)
Uses: E32/056 F32/020 STORE/011 BAFL/026
GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028
PDRSTORE/002 PRINT/007 CLOCK/010
CONE/070 ETEXT/030 TBOX/047 FONTS/019 EALWL/016
E32TOOLS/020 EIKTOOLS/103 RCOMP/303
Debug WINS variant only released
Uses FONTS 019, EALWL 016 and CONE 070 for the first time
All Eikon code now compiles under GCC (though with over 300 lines of
warnings that I have no intention of fixing)
This code *almost* links to produce a GCC version of Eikon.LIB, but
this is only through using UTC releases of various components, and
even then, more changes will be required in these other components
before Eikon.LIB and Eikon.DLL finally exist
Known limitation of this release: when an app exits, the keyboard
focus sometimes appears to "get lost", but you can put it back to the
System application by clicking on the System button
From DavidW:
------------
1) The Shell is dead; more precisely, \eikon\shell has been deleted,
with its files being transferred (and altered en route) to
\eikon\system, where they now build to create SYSTEM.PRG, an
Eikon application just like any other one
2) Whereas it used to be "the shell" that got started by the Window
Server, it is now "the Eikon Server" that fills this role instead;
some of the code from \eikon\src\eikservp.cpp has been moved to a new
file ESMAIN.CPP in a new directory \eikon\eiksvr, where it builds
into SHELL.DLL (or, for GCC builds, to SHELL.EXE); as part of its
initialization, the Eikon Server starts an instance of System
3) As well as being "the right thing to do", this change around
should solve all synchronization problems on both system startup and
system shutdown (problems bedevilling the previous Eikon release);
indeed, for the first time, the Eikon Server runs through all its
shutdown code (formerly it got left high and dry when the system as a
whole terminated), which has brought to light various problems in
destructor code (problems now fixed)
4) For the time being, the System application (which used to be
called "The Shell") even displays itself inside its "Run application"
dialog, allowing multiple copies of itself to be run (without any
ill effects ensuing)
5) Another novelty is that shutting down the System application no
longer terminates all other running Eikon apps; instead, these other
apps keep running, until such time as there is none left - that is
when the Eikon Server exits; in the meanwhile, you can press on the
System button to cause the System application to be restarted
6) The change around in the way the Eikon Server is started requires
a corresponding change around in the way the EAlWl Alarm Server is
started; this was implemented in EALWL 016
7) Altered code where required to remove all C4701 warnings in
Release mode (variables possibly used before initialized) - sometimes
this was a pain, sometimes it led to a definite improvement in the
code, and in one occasion there did seem to a route through the code
that would lead to the use of an unitialized variable!
8) Many modifications to get Eikon to compile in GCC: eg disallowing
functions to be declared as inline *in CPP files*; moving enum
declarations higher up in header files, to avoid the need for forward
references to enums (not supported by GCC); removing variables that
were declared and not used (or initialized and not used - I have left
a few lines of this sort commented out, with an "unused !!" comment
there so I can hunt them down later and remove any that still
remain); moved some declarations of variables (such as "TInt ii")
before the beginning of the FOR loop they govern, to allow them to be
re-used in later FOR loops without the GCC compiler throwing a
wobbly; provided explicit casts for some of the variables in an
expression of the sort "x? a: b" to make it clear that a and b share
a common type (something GCC is zealous about) ...
(on the other hand I have *not* attempted to get a zero-warning
compile under GCC, since some of the warnings are particularly
brain-dead, and we ought to find out how to disable them - either by
.ARM file surgery, or by obtaining a new version of GCC)
9) Added template instantiation requests where required to allow
Eikon to link in GCC; some of the more generic of these requests have
been gathered together at the top of EIKENV.CPP, and the more
specific ones have been supplied nearer the point of use
(it's probably not worth other people trying to build a GCC version
of Eikon yet, because you need the above-mentioned UTC versions of
other components, and it also takes no less than 40 minutes!)
10) Changed CEikOffScreenWindow to derive from CCoeWinArea instead of
CCoeControl; its custom observer, MEikOfWinObserver, no longer
derives from MCoeControlObserver, and its HandleOfWinEventL function
is now pure virtual
11) Some test applications were multiply deriving their app control
classes from MCoeControlObserver unnecessarily (and were caught out
when the HandleControlEventL() function became pure virtual) - these
derivations have now been removed
From Neil:
----------
12) Fixed a bug whereby a whole listbox could disappear - by defining
and calling a CListItemViewer::ResetGc() function, to avoid the Gc
being left in a state with eg ENullBrush set
13) It's no longer possible for a listbox to be left in a state with
unnecessary empty space at the bottom (usually as a result of
expanding the listbox, or reducing the number of items in it) - a
state that caused problems for a vertical scrollbar, since that
scrollbar was set to an "illegal" (greater than max) value; fixed by
the addition of a function CEikListBox::AdjustTopItemIndex(), which
ensures that the view is always filled when there are enough items
14) Fixed an occasional redrawing bug in listboxes, caused by not
resetting a Gc clipping region when the viewRect was changed.
Version 0.01.045
================
(Made by DavidW, 19 Apr 1996)
Uses: E32/056 F32/020 STORE/011 BAFL/026
GDI/018 FNTSTORE/012 FBS/018 BITGDI/018 WSERV/028
PDRSTORE/002 PRINT/007 CLOCK/010
CONE/069 ETEXT/030 TBOX/047 FONTS/018 ALWL/014
E32TOOLS/020 EIKTOOLS/103 RCOMP/303
Debug WINS variant only released
From DavidW:
------------
1) Converted to new releases E32/056 etc as listed above; converted
all live Eikon test code so that it runs more-or-less as before; note
that there are very many new facilities available in upstream
software components, that Eikon hasn't exploited yet
2) Some acknowledged limitations (beyond those mentioned in other
release notes): you will usually get a crash on closedown (but after
your own app has disappeared - this also causes the Window Server to
shut down, leaving the Eikon Server in an unhappy state - some kind
of fix will be put in place in the next release of CONE); bold text
gets drawn in italics (and vice versa); applying character formatting
(such as a font change) to Global Text has no effect; if you press
keys too quickly while the system is booting they somehow get
captured to the Eikon Server and never get seen again; picture save
and load is broken
3) For WINS, note that you no longer run SHELLD.EXE, but instead the
Window Server released file WSEXED.EXE (or WSEXE.EXE in Release
mode); in turn this looks for a file SHELLD.DLL (or SHELL.DLL); so
the Eikon Shell no longer builds and releases a SHELLD.EXE; instead
it builds and releases a SHELLD.DLL
(Note that the Window Server *also* releases a file called
SHELLD.DLL; be sure not to confuse this with the one created by
Eikon; shortly, a new naming convention will be worked out to allow
these two Shells to coexist - togther with "Bill's Shell" later)
4) Changes to MNT.CMD (which you may need to mirror in your own
MNT.CMDs): PDRSTORE is now a required subcomponent (since it is used
by the latest PRINT); the names of most release components have
changed, from (eg) BITGDI to EWINS; Eikon itself now releases EWINS
and EWINSDB components instead of EIKON and EIKONPDB as before; the
"AlWl" release is now fetched from the R:\EALWL directory rather than
the R:\TIMEW directory; "MNT TOOLS" now fetches E32TOOLS as well as
EIKTOOLS and RCOMP; note that the version of RCOMP now fetched is
303; added to the set of extensions excluded from "MNT BACKUP"
5) Changed #include statements where required by recent filename
changes, eg BNDARRAY.H -> BABNDA.H, COEDESCA.H -> BADESCA.H,
COEMATCH.H -> BAMATCH.H, COERSBUF.H -> BARSREAD.H, BLOMAIN.* ->
BABLO.H
6) Lots and lots and lots of global renames required by changes in
other system components, eg:
7) Changed all TCoeResourceReader to TResourceReader
8) Changed ->modifier and ->code to ->iModifier and ->iCode
9) Changed ->type to ->iType and ->position to ->iPosition
10) Changed TPointerEvent::ELeftXxx to TPointerEvent::EButton1Xxx
11) ... and so on; I even got into the act myself in a moment of
weakness, by renaming every XxxTickBoxYyy to XxxCheckBoxYyy, as
recommended by the international naming committee (and EIKTKBX.* has
been deleted, in favour of the new module EIKCHKBX.*)
12) Note that various test programs will now have to link to
BAFLD.LIB (and BAFL.LIB) for the first time (whereas before that
functionality was delivered from CONED.LIB)
13) Spotted by DavidA: the flags field of the EDWIN struct has had to
change from WORD to LONG, since the set of possible flags (as defined
in EIKCTRLS.HRH) exceeds 16 bits (there has been a corresponding
change in the function CEikEdwin::RestoreL)
14) Modified the Eikon Server to understand that there are now nine
program buttons, and that they have a different order from before
15) Old PROGBUTS.REG files in \e32data will fail to be loaded (since
there's no merit in mapping the data for the eight old buttons into
assignments for the nine new ones)
16) Important! You must ensure that your E32Dll() function returns,
not ETrue, but KErrNone - or else your app will fail to be loaded by
the O/S
17) The O/S now tracks "cleanup stack heaven", and you may now get a
Panic(EClnLevelNotEmpty) if you have been lax here; various flaws in
cleanup stack handling in the test code and DLL code have been fixed
- usually by putting in a call to CleanupStack::PopAndDestroy() to
match an earlier call to CreateResourceReaderLC()
From Julian:
------------
18) New virtual function ChangeFormatL() defined at the CEikPicture
level, with a concrete implementation at the CEikDoor subclass
19) This concrete implementation launches the new "Picture format"
dialog (from the new module EIKPICDG.*) allowing the scale factor and
the crop margins to be specified for the picture (this dialog is
currently a "home-brewed" version of what will become in due course a
multi-page dialog)
20) The API to DrawGlassDoor has changed, to pass additional
parameters specifying the cropping and scaling
21) See the document class in TEdwin1 for an example of dealing with
these extra parameters (note that this API is undergoing evolution
and is subject to further change)
22) The non-door pictures in TEdwin1 (ie "Simple" picture and "File
bitmap" picture) also support scaling and cropping
23) The persistence for CEikDoor has been altered to record the scale
factor and cropping margins as well
24) New utility function GetCropInPixels() in CEikPicture, which is a
candidate for migration to CEikDoor
From Siamak:
------------
25) Modified CListBoxView::DeselectItem() so that it no longer panics
if asked to deselect an item that no longer exists (under the
rationale that it has just been removed and that it is convenient to
allow this lassitude to the caller); the item index will be removed
from the array of selected items, but no attempt will be made to
redraw the item
26) Defined a new enumerated type called TListItemViewerColors in
order to avoid global constants for the color values used by the list
item viewers
27) Modified CListBoxView::VScroll() so that it now hides the
incremental matcher cursor (if any) before scrolling, and shows it
after scrolling (but only if it still visible)
28) Modified CEikChoiceList::DoCreatePopoutL() so that it now calls
the recently added function UpdateScrollBarThumbs() of the popout
listbox (to avoid the thumbs being wrongly located, in the case when
the initial current item index is non-zero).
Version 0.01.044
================
(Made by DavidW, 18 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/015 ALWL/012
Enough is enough! This is the 26th Eikon release based on E32/054.
It will also be the *last* Eikon release based on E32/054. The next
one (whenever it arrives) will be based on E32/056 (or later!).
Debug variant only released
From Bret:
----------
1) The Eikon calendar control now exists, in the new module EIKCAL.*
(There are now 65 different *.CPP source files in \eikon\src)
2) CEikCalendar is a very flexible control, imposing little policy
decisions in its own right; in general, its behaviour is customized
by filling in the CALENDAR struct in a resource file definition
3) For several examples of what's possible, see the new test code
TCal (don't be surprised by the fact that nothing apparently happens
when you start it up - it's just lacking a "client window" display
for now - but press F9 and choose an item from its menu)
From Simon:
-----------
4) TLBox1 has been converted to use a Directory Contents list box
(for its "right hand side" displays) rather than a vanilla one; at
present, this listbox only show filenames and a bitmap
5) For now, a directory that has a parent is indicated by the first
item in the list being ".."; selecting this will navigate to the
parent directory
6) It is now possible to select sub-directories in the DC listbox,
which will navigate to them (previously this was only possible from
the left-hand side: the hierarchical directory browser)
7) CListBox::ItemSize() now takes a TInt as a parameter - this was
needed for hierarchical lists to calculate their sizes accurately
8) Made the bitmap FSELFILE.PBM slightly wider, so it wouldn't be
stretched in the DC listbox
9) Removed the events EEikCeItemCollapsed and ...ItemExpanded from
EIKEVENT.H, introducing EEikCeHierItemStateChanged instead
From Neil:
----------
10) Fixed a bug in CEikEdwin whereby sizing could go wrong after
removing both scrollbars because the scrollbar frame was being
destroyed too early; fixed the corresponding bug in CEikListBox
11) Fixed bug in CEikMultiColumnListBox::CalcDataWidth() which gave
one less than the true value in most cases (remainder was being
ignored) which resulted in a misleading horizontal scrollbar
12) Fixed CEikListBox::HandlePointerEventL() no longer to ignore most
repeat down events
13) Improved position and sizing of popout listbox from choicelists
(to cope with the presence of a vertical scrollbar in this listbox)
14) Added front-end query dialogs to both TScrlB1 and TScrlB2 to
determine scrollbar tiling mode (inclusive or exclusive) - to avoid
having to exit/change/recompile every time
15) Other minor fixes and improvements to scrollbar logic here and
there
From Siamak:
------------
16) Moved the "popout listbox" flag out of EIKCTRLS.HRH to a more
appropriate place, ie EIKLBX.H
17) Made the initial value of the "current item index" be 0 if the
listbox has one or more items, and -1 if it is empty; this simplifies
various parts of listbox code
18) Modified various routines in the listbox control/view so that
there are no panics if the listbox model is empty
19) Put the color constants used by the listbox item viewer into its
own header file so that they can more easily be used by all item
viewers
From Arwel:
-----------
20) New public Construct() function in CEikProgressInfo to allow
creation of a tailored progress control without using a resource
21) New struct SEikProgInfo used in the Construct() function
22) Created a private BaseConstruct() function to separate out teh
processing which is common to both Construct() and RestoreL().
Version 0.01.043
================
(Made by DavidW, 17 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/015 ALWL/012
For a change (and as a sanity check), both Release and Debug variants
are released this time
From Neil:
----------
1) Converted listboxes to use CEikScrollBarFrame, and as such
support auto-scrollbar visibility
(this allows pop-out listboxes to display a vertical scrollbar on an
auto basis, ie it is shown precisely when it is needed)
2) The former flag EEikListBoxHScrollBar has split in two, ie
EEikListBoxFixedHScrollBar and EEikListBoxAutoHScrollBar, and
similarly for the vertical direction
3) Upgraded TScrlB2 to test this new implementation of listbox
scrollbars
From Siamak:
------------
4) Modified CEikListBox::HandleListUpdate() so that now upon
encountering an invalid top/current item index, it clears the
selection and sets the current and top item indexes to zero
5) On a request from Bill, added two listbox events: "enter key
pressed" and "item clicked"
6) Fixed bug in CEikListBox::SetListBoxFlags(), which now only
creates an incremental match buffer if the incremental match flag has
been specified and the match buffer hasn't already been created
7) Added a new (internal) listbox flag, EEikListBoxPopout, which
should get set for any listbox that is popped out (this alters the
events that it reports to its observer), eg a choice list sets this
flag for the listbox it pops out
8) Changed the OfferKeyL() and HandlePointerEventL() functions of
CEikListBox so that Interaction Confirmed/ Cancelled events now only
get generated for popout listboxes (not embedded listboxes)
From Kevin:
-----------
9) Various changes to MFNEs, prior to the introduction of the
forthcoming combined Date/Time editor (all on one line option, as
required in the Agenda):
10) New panics added, and more __ASSERT_DEBUGs
11) Some functions which could Leave have had ...L added
12) Integer editors with only single fields can now be 'bumped' up
and down with the left/right arrow keys, and display ears when
emphasized
13) When typing into a field, the cursor can no longer be moved;
attempting to do so moves to the next/previous field
From MartinD:
-------------
14) Upgraded test code TComBox to the CEikDocument architecture, and
to the new implementation of combo boxes.
Version 0.01.042
================
(Made by DavidW, 13 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/015 ALWL/012
Debug variant only released
"MNT TOOLS" has been upgraded to fetch build 103 of EIKTOOLS
The demise of ..\incg:
----------------------
1) You should rd /s your ..\incg directories, and be sure you type
"MNT TOOLS" (or, more selectively, "MNT EIKTOOLS") to fetch build 103
of EIKTOOLS; on careful reflection, ..\incg is a menace, since people
can too easily be caught out by having one version of (eg) EIKON.RSG
in one of these places, and another version in the other
2) EIKRS.BAT and related batch files now create the generated *.RSG
file directly in \e32inc, just as the generated *.RSC is always put
direcly in \e32data; this is a much simpler scheme
3) You can edit your System Setup on your PC to remove all reference
to "..\incg" from the INCLUDE environment variable (and, if you like,
you can remove it from the search path for the preprocessor inside
Project Settings for programs - this has been done for all live Eikon
test code)
4) While on the subject of MNT.CMD, I modified its GETSRC verb, to
make sure that EIKPRG.DEF is always copied from ..\inc to \e32inc
5) Removed all mention of the "old" RCOMP (and the associated "HCIL
TOOLS") from MNT.CMD
From Julian:
------------
6) The code in CEikChoiceList has been moved in part to a new base
class, CEikChoiceListBase, from which CEikChoiceList now derives;
other subclasses can supply a different kind of "popout"
7) New class CEikGray16Selector demonstrates the use of the new
CEikGray16Palette control as its popout, rather than the standard
listbox (both these CEikGray16Xxx classes will be used in Paint, and
will also be available for use by other applications; their code is
in the new module EIKGYSEL)
8) CEikGray16Selector also replaces the DrawContent() function of
CEikChoiceList, to pleasing effect (showing a rectangle in the shade
of gray to be selected)
9) Changed the Color dialog in TDialg1 to use a Gray16 selector
rather than a number editor as before
10) Restructured the combo box control CEikComboBox so that it can be
used in a dialog (previously it was restricted to custom use by
applications in their own views); eg Find dialogs (such as in TextEd)
should be able to use it
11) CEikComboBox no longer automatically adds new text entries typed
by the user, into its associated array, but provides a function
InsertTextIntoArrayL() for this purpose; in a dialog, this would
normally be called from the OkayToExitL() function; other windows
owning a combo box control will have to make their own decisions
12) Shoe-horned an example of a combo box in a dialog into the
Floating Point editor in TDialg1
From Siamak:
------------
13) Modified hierarchical listboxes to the new listbox model design;
TLBox1 is reinstated as live Eikon test code
14) Added basic support for bitmap drawing to
CBitmapAndTextListItemViewer (not finished yet)
15) Fixed HandleListUpdate() in CEikListBox so that it now checks to
ensure the current and top items are still valid; if the top item
index is invalid, it gets reset to 0; if the current item index is
invalid, it gets reset to the top item index
From SimonC:
------------
16) Further internal changes to hierarchical listboxes (however they
are a bit fragile at the moment, in the wake of the recent
reorganization)
17) Started a new module EIKDCLBX.* for the Directory Contents
listbox to be used in file selectors (at the moment TLBox1 still uses
a standard listbox, pending the removal of bugs in the DC listbox)
18) Shrunk the bitmaps used by the sort order buttons in the file
selector dialog, and set the dense packing flag for them
19) New bitmap FSELFILE.PBM for use in the DC listbox
20) Adjusted the drawing code for buttons to reset the font to the
system font if necessary on completion.
Version 0.01.041
================
(Made by DavidW, 12 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/015 ALWL/012
Debug variant only released
"MNT TOOLS" has been upgraded to fetch build 302 of RC3 and build 102
of EIKTOOLS
From Siamak:
------------
1) The first phase of a set of design changes to listbox model
classes:
2) CEikItemList has been split into two mixin classes:
MListBoxModel, and MBitmapAndTextListBoxModel (this is only really of
interest to people who want to create their own listbox model
classes) with consequent changes in API
3) CEikSimpleItemList has been renamed to CStandardListBoxModel;
this inherits from CBase and from the above-mentioned two mixins
4) The function List() in CEikListBox, which was used for getting a
pointer to a listbox control's model, has been renamed to Model()
5) The ConstructL() functions of all types of listboxes now take two
additional parameters: a pointer to a listbox model and a pointer to
a list item viewer; you can however simply pass NULL for these
parameters and instances of the standard list box model and item
viewer will be created for you automatically
6) As can be seen, the prefix "Eik" has been removed from various
classes which are actually independent of the core of Eikon (and
which could easily be relocated in a separate DLL if required)
(Note that these changes haven't been finished yet, particularly in
the area of hierarchical listboxes, which has been commented out for
the time being - and TLBox1 has been temporarily REMed out of the list
of live Eikon test applications in \eikon\tsrc\bld.cmd; various other
cosmetic problems are known about and are receiving attention)
From Neil:
----------
7) Implemented CEikScrollBar::SetLengthAndModel()
8) Added an argument to CEikScrollBar::MoveResizeThumb() which
enables the caller to force the shaft and thumb to be completely
redrawn (this fixes bugs like the one seen in TScrlB1 when increasing
the length of the scrollbar has no effect on the size and position
of the thumb and so the shaft wasn't being redrawn - leaving images
of the buttons there)
9) Made CEikScrollBar::MinVisibleLength() static, by requiring the
flags to be passed in; this is very useful for the scrollbar frame
10) Various changes in CEikScrollBarManager to keep things consistent
for now (before the eventual demise of this class)
11) Rewrote some of the CEikScrollBarFrame code determining scrollbar
visibility; storing the scrollbar widths as part of the scrollbar
frame, along with CEikScrollBar::MinVisibleLength() being static,
means that scrollbar creation/destruction can now be deferred until
ALL size/model considerations are taken into account
12) Two new flags to prevent the models of the horizontal/vertical
scrollbars being modified - useful for wrapping cases in edwins; this
code handles "vertical wrapping" (as in snaking column list boxes) as
well as "horizontal wrapping" (as in edwins)
13) Changed CEikScrollBarFrame to use SetLengthAndModelL() function
of CEikScrollBar, for less flickery tiling
14) Fixed the edwin code to enable/disable wrapping (which had
previously been temporarily commented out)
15) CEikEdwin now sets its scrollbar models ignoring scrollbar
presence (with its subsequent impact on window size), leaving it up
to the scrollbar frame to deal with this epicycle
From Natascha:
--------------
16) Added "preview" controls (using CEikTag) to the Number Format,
Time/Date Format, and Currency Format dialogs in the Shell - this
takes Eikon dialog technology to a new level of user feedback
From Brendan:
-------------
17) Changed CEikClock family back to the "original" control design,
instead of trying to offset Rect() by Position(); changed the way
that "dynamic clocks" (currently in TBmp test code) are implemented
as a result - now using a container control
18) Changed iOffset field in clocks to be a TInt64, so it can hold
microseconds
19) Changed source to take a TInt32 so that a clock can be offset by
the number of seconds in a day
From DavidW:
------------
20) Improved cleanup code after an EditL failed for a sub-document.
Version 0.01.040
================
(Made by DavidW, 11 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/015 ALWL/012
Debug variant only released
Uses FONTS 015 for the first time
"MNT TOOLS" has been upgraded to fetch build 301 of RC3 and build 101
of EIKTOOLS
From DavidW:
------------
1) Eikon now supports pictures and doors "properly", with the
classes CEikPicture, CEikPictureHeader and CEikDoor in the new module
EIKDOOR.*
2) The test application Write is currently the only "door
container"; use its Insert Picture command, and choose "Object.." to
insert (and edit) a glass door of the TEdwin1 type (you'll need to
have built TEdwin1 first); inside TEdwin1, you get five one-line
editors; when you "close the door" (by Quit-ing TEdwin1) you see the
contents of these editors drawn in miniature, in Tiny font, inside a
glass door
3) TEdwin1 is currently the only application that *actively*
supports drawing a glass door, but all applications inherit a
"default" glass door, which is a grey rectangular blob
4) Use the "Change object type" command in the Edit menu of Write
(or press Ctrl-Shift-O) to alter the default object type in Write
from TEdwin1 to anything else that takes your fancy - eg Paint (if
you have built Paint - start from its code from the 004 build) or
TEdwin0; each of these applications will allow you to run them up as
a sub-application, and will edit the data Write stores on their
behalf; it's just that, for now, they won't show any of this data in
their glass door
5) New functions in CEikDocument to support doors: DrawAsGlassDoor()
and GlassDoorSizeL(); if your application supports these functions,
it should draw glass doors properly too; see TEdwin1 as an example
6) Other things your application need to do for this to work: save
changes on Exit automatically, and respect any need to draw up a
"Title window" (which might have text in it like "Picture in Write")
(The "Change object type" dialog in Write is a temporary kludge; a
version coming soon will present a list taken from some kind of
registry of glass door-supporting applications)
7) Eikon supports both door-pictures and non-door pictures, as can
be seen in Write: the "Insert picture" dialog here offers a choice of
a "simple" picture, and "bitmap from file" picture, and an "object";
the first two involve a dialog to specify them and edit them, whereas
the third involves a whole application
8) CEikDocument now inherits from MPictureHeaderFactory (as well as
CBase), supplying the function NewPictureHeaderL which creates an
instance of CEikPictureHeader; CEikPictureHeader only knows about
door-pictures, and applications with non-door pictures have to
override the NewPictureHeaderL function to create an instance of an
application-specific subclass of CEikPictureHeader (see Write for the
details)
9) Once you've inserted a picture, of any type, its type gets
remembered automatically, and next time you Edit it (in Write, use
Ctrl-E) it will automatically do the right thing - running up a
dialog as required, or the applicable application
10) The protocol for an application being told about a change in a
sub-document has changed: the callback function is now located in
CEikAppControl and is called HandleSubDocumentChangeL(); a pointer to
the sub-document CEikDocument object is passed as a parameter
11) Removed the iProfileChanged TBool field in CEikAppControl, to
encourage applications to write out profile changes immediately, as
is the new philosophy, rather than hanging on to them until the next
Exit command
12) Fixed a few old StoreL() and RestoreL() functions that ought to
have had their names changed to InternalizeL() and ExternalizeL()
ages ago
13) Made some more of the functions of TEikDocHeader public, to allow
other data to be streamed into the same stream with the
TEikDocHeader; for example, this happens with CEikDoor, which stores
its own private data in advance of the document header data
14) Miscellaneous rationalization of the code in Write
From Pieter:
------------
15) Significant re-write of parts of the console subsystem and its
test module TCons0:
16) Added Font() method which returns the fontspec of the current
console font
17) Extended SetScrollBarVisibilityL(TInt aHBarWanted,TInt
aVBarWanted,TInt aHBarFlags=0,TInt aVBarFlags=0);
Note the L at the end. It should have been there in the first
place)
18) Cleaned up the code, made some useful comments, removed two
never-used variables, renamed some others to clearer terms
19) CEikConsoleWindow (the platformdependent part of the console) now
does not subclass HandleRedrawEvent any more, but rather the Draw()
methods. It now behaves much more like a window should (i.e. you can
use DrawNow, SetExtentL etc.). It will also NEVER invalidate anything
(but rather immediately update what it used to invalidate) so that you
can now use it with a backed-up window
20) Centralized some low-level stuff into UpdateArea, which will
adjust the console to the currently visible area, and is called by
SetExtentL, SetFont and SetScrollBarVisibilityL
21) Cleaned out stuff from TCons0 that had nothing to do with the
console. All menu options now have something to do with the console
and (mostly) actually do something
22) TCons0 now shows:
- claiming a console
- selecting scrollbars
- styles (normal,bold,italic,inverse,underlined
and combinations, or color)
- changing the cursor size
- zoom in, zoom out, switching fonts
- show/hide cursor, track/ignore cursor,
- scroll lock on/off
- print all/print printable
- moving the cursor around (with arrows)
- selecting pieces of text (with SHIFT-arrows), copy, paste
- changing the screen size
- all of the above with or without using a backed-up window
From Natascha:
--------------
23) Improvements to the Number Formats and Currency Formats dialogs
in the Shell:
24) To constrain and inform the user in choosing decimal and
thousands separators, there's now a choice list rather than an
editor; if the current value doesn't belong to the set in the
original choice list, it gets added on dynamically
25) The Currency Format dialog now supports changing the currency
symbol (however the E32 routine it calls to effect the change doesn't
work).
Version 0.01.039
================
(Made by DavidW, 9 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/013 ALWL/012
Debug variant only released
From Brendan:
-------------
1) Changed the alarm alert to keep track of its current state, so
that drawing is improved; this results in significantly quicker
button response time
2) Changed TBmp, TBmpTag and TWldSl to use a container window as
their main view, to hold their various controls, rather than
subverting the control stack features of the CEikAppControl for this
purpose (and getting into trouble as a result)
3) Tidied some aspects of the alarm header files
From DavidW:
------------
4) Rearranged some of the code in TEdwin0 to bring it more into line
with the standard form of an application, ie with the CGlobalText
object now being owned by the CEikDocument class, rather than by the
CEikEdwin (since in general for this kind of app, the CGlobalText must
survive the demise of the CEikEdwin)
5) Added a menubar to TEdwin1, adding (working) commands for
FileNew, FileRevert, FileQuitNoSave, EditCut, EditCopy, EditPaste,
ProfileOpen, and ProfileSaveAs
6) New utility functions CmdFileRevertL and CmdFileQuitNoSaveL in
CEikAppControl, which should be suitable to be called directly by all
applications that support these commands (see TEdwin1 for an example)
7) New functions OpenByFileL() and SaveByFileL() in CEikAppProfile,
providing the functionality of the ProfileOpen and ProfileSaveAs menu
commands in eg TEdwin1, allowing the user to make a new profile file
from the current settings, or to switch to using a different file
8) New functions CmdProfileOpenL and CmdProfileSaveAsL in
CEikAppControl, which should be suitable to be called directly by all
applications that (for test purposes at least) support these commands
(see TEdwin1 or TBut0 for examples)
(the "Open profile" dialog used here is currently a bit rudimentary,
allowing the user to select a profile belonging to an inappropriate
application - though no harm comes from this)
9) The "application name" field in the document header now refers by
default to a Profile *.APF file, rather than (as before) to a Program
*.PRG file - though if no profile with the given name is found, the
name is next interpreted as being a *.PRG file after all (this means
that the changeover doesn't require existing document files to be
trashed)
10) For example, you can create more than one different profile for
TEdwin1 - eg one with a "gray" background and one with a "white"
background - and then assign documents to these two profiles; the
dialogs in the Shell will report which profile each document belongs
to (and also which program each profile belongs to) and will run the
write program (using the right profile) in each case
11) Added support for changing profiles to TBut0, via a pop-up menu
activated by holding the pointer down and still on the main window
for one second; seeing that the contents of the TBut0 profile is the
layout of its toolbar, this allows a whole family of different
toolbar layouts to be prepared in advance, and then quickly selected
(not intended as a realistic application scenario, but rather to
exercise the profile technology)
12) Split up the EikDll::StartPrgDllL() function, which used to take
four parameters, into three different single-parameter functions:
StartPrgFromApfNameL(const TDesC* aApfName);
StartPrgFromDocNameL(const TDesC* aDocName);
StartPrgFromPrgNameL(const TDesC* aPrgName);
with the result that there is less code in the Shell dialogs
associated with these various "program start" options, and more code
in the EikDll class; in all cases, the thread-name is now calculated
from the other parameters (by default from the profile name)
13) Reinstated some support for sub-applications, ie applications
running within each other: Write still can't run Paint
sub-applications, but can now run TEdwin1 sub-applications, and the
(presently hard-wired) list box of picture types Write supports has
been extended to include "TEdwin1"
14) TEdwin1 objects don't (yet) show as *glass* doors inside Write,
but instead as a shaded rectangle, which you need to "Edit picture"
on (or Ctrl-E) in order to see the contents; one *big* change from
before, however, is that these pictures handle the document
architecture correctly, ie there is a CEikDocument instance for each
picture; also there is no longer any memory leak just by virtue of
running up the sub-application
15) The above has required some clarification in the former CEikDll
function "StartLocalPrgDllL", which has itself vanished, being
replaced (most nearly) simply by the existing EditL function of
CEikDocument; part of its functionality has been taken over by a new
EikDll function CreateDocumentL taking a const TDesC* aApfName
parameter
16) Supporting CEikDocuments created without a corresponding
CEikAppControl has shown up one flaw in the overall start-up scheme,
which has meant that the VirtualConstructL function of CEikDocument
now needs to be called slightly earlier than before; this is now
called (as is obvious in retrospect) in all cases when a CEikDocument
instance is created, regardless of whether or not it is about to be
EditL()ed; at the time when VirtualConstructL was called before,
there's now a new virtual call to CEikDocument, called (it turns out)
NotifyProfileLoadedL (because that's what it is); most applications
won't need to supply a NotifyProfileLoadedL function.
Version 0.01.038
================
(Made by DavidW, 6 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/068 ETEXT/029 TBOX/046 PRINT/006 FONTS/013 ALWL/012
Debug variant only released
From DavidW:
------------
1) Many changes to application startup and closedown code, in line
with the developments in CONE 068
2) The old module EIKAPF.* has been renamed to EIKAPFHD.*, for the
Application Profile File Header class TEikApfHeader, and there is now
a new module EIKAPF.* containing CEikAppProfile, the application
profile class
3) Note that the format of the header of APF files has changed, so
you should delete all \PROFILES\*.APF files (though if you do not,
the new profile header loading code ought to give you a reasonably
helpful error message as to why an app has failed to start)
4) As the name implies, CEikAppProfile takes over the "profile"
parts of the functionality of CEikDocument; note that, in general,
the cardinality of CEikAppProfile instances will differ from that of
CEikDocument instances, since there can be two (or more) documents in
an environment, sharing the same profile (eg an EMail application
modelessly editing two different messages at the same time)
5) CEikDocument now defines a new virtual function,
CreateAppProfileL(), which by default returns NULL, meaning that the
application is too simple to require a profile; replace this function
(as in TEdwin1) to cause the system to create a profile object for
you when required
6) There's a bit of an asymmetry between the two virtual functions
CreateAppProfileL and CreateAppControl in CEikDocument: the former is
optional, and Leaves on failure (to allow system code to distinguish
an intentional NULL return from an OOM failure), whereas the latter
is presently compulsory, and is therefore declared *pure* virtual
7) Note that your application profile can now have a different
file format version number from your document files; just supply a
GetProfileVersion() function, to override the default behaviour
(which uses the same version number for both)
8) Instead of providing an EikonEnvironmentReadyL() function, in
your CEikAppControl-derived subclass, you now provide a function
named VirtualConstructL(); part of the reason for the name change is
that the EikonEnvironmentReadyL callback from CEikAppControl and the
ControlEnvironmentReadyL callback from CCoeAppControl have been
merged, as a result of general streamlining of the startup system
9) New function CEikonEnv::CustomLeave(TInt), taking a resource ID
as a parameter, which is similar to User::Leave(TInt aError), except
that in the latter case, the resulting alert dialog shows the system
error text for the given error number, whereas in the former case,
the alert dialog shows the text of the specified resource TBUF
10) As an example of the use of CustomLeave, you should now get a
more friendly error message if you try to run a PRG (or PRD) file
that hasn't been linked with the latest Eikon, or which doesn't
provide the required EXPORT function
11) Another consequence of the rearrangement of the startup code is
that non-existent applications get reported to the user, eg try
clicking on the Data button (assuming you don't have a DATA.PRG file
handy, and also assuming you haven't redefined what the Data button
means) and there will now be a "File does not exist" alert
12) Removed the CPrintSetup* field from CEikDocument, since it is up
to applications whether this belongs inside their document class,
their profile class, or neither
13) Removed CEikDocument::Destruct(); just use the C++ destructor
instead
14) The beginnings of a CEikProcess class are in place, in the new
module EIKPROC.*; CEikProcess contains a pointer to the "main
document" of the environment, which it is regarded as owning (whereas
other documents in the environment will tend to be owned by objects,
such as pictures, inside the first document
15) Documents ask the CEikProcess object for the handle to their
Profile object, if they are going to need it; eg see the line of code
CEikProcess::GetProfileHandleL(document,&startData->ApfName());
from CEikonEnv::ConstructEikonEnvL, where the first parameter is the
CEikDocument class in question, and the second is the name of the
profile APF file; the CEikProcess class will spot if a CEikProfile
with that name is already loaded, in which case that will be used for
the new document as well; otherwise the CreateAppProfileL() function
of the document will be invoked; in either case, the "access count"
of the CEikAppProfile gets incremented
16) CEikDocument now contains a CEikAppProfile* pointer; upon
destruction of the document, the following code is executed
if (iAppProfile)
iAppProfile->RemoveDoc(this);
so that the access count in the CEikAppProfile gets decremented; the
CEikAppProfile will auto-destruct on reaching a zero access count:
EXPORT_C void CEikAppProfile::RemoveDoc(CEikDocument* aDocument)
{
TInt pos=FindPos(aDocument);
Delete(pos);
if (!Count())
delete(this);
}
17) Removed all PNT*.PBM files from \eikon\srcdata, with ownership of
these files being transferred to the Paint application (which is
renaming them). You should do a "del \e32data\pnt*.pbm"
18) Fixed a bug in CEikEdwin::HandlePointerEventL, which meant that
clicking on a Edwin sometimes failed to give it the focus
19) Renamed all TXxxData classes in TDialg1 to TXxxModel classes
instead, in line with prevailing naming conventions; there's no
*single* document model in TDialg1 (though it wouldn't be hard to
create one), but many
20) Rewrote TEdwin1 substantially, making it fully profile- and
document- store-aware; it also has separate "DocumentModel" and
"ProfileModel" classes
21) Note that system startup involves the creation and initialization
of (up to) four key interconnected objects: instances of (subclasses
of) CEikonEnv, CEikDocument, CEikAppProfile, and CEikAppControl;
there are many "chicken and egg" situations here, with the object
creation being separated from the initialization ("construction"),
and with the "construction" taking several stages; the four objects
get created in the order listed above
22) In all four cases, there's a function called VirtualConstructL
which is intended for applications to replace, and which gets called
at a suitable stage, once that object has already been partially
constructed; ignoring the CEikonEnv case (which is primarily for
system code), the order in which these callbacks occur is
CEikAppProfile first, then CEikDocument, then CEikAppControl; the
profile gets loaded from file (if the file exists) in between the
VirtualConstructLs of CEikAppProfile and CEikDocument
23) System closedown has lots of "chicken and egg" problems in
reverse; a particularly thorny problem has been the timing of the
destruction of the CEikProcess object (and with it the main
document); for now, this is done in the new DestroyScreen() callback
from CControlEnv, just prior to the screen device being deleted (but
after the AppControl for the document has been destroyed)
24) There's no longer a reserved slot in the APF header for a stream
ID of toolbar customization data; instead, applications are free to
put this data somewhere in their document instead, if they wish (or
not to put it anywhere); TBut0 has been revised to show how to put
the toolbar customization data in its APF file
25) Both TBut0 and TEdwin1 show the mechanism for getting changes in
profile data reflected back to the application; after changing the
data, they simply call the SaveProfileL function in CEikAppControl
(which in turn layers upon a similar function in CEikDocument); in
due course the document class receives a NotifyProfileChangedL()
message, which by default (as in TBut0 and TEdwin1) just sends on a
HandleProfileChangedL() message to the CEikAppControl
26) Note that the HandleProfileChangedL() function in CEikAppControl
is partnered by a HandleDocChangedL() function, with similar meaning,
which can get triggered by the CEikDocument object sending itself a
NotifyAppControlNewDocL() message (as in TEdwin1)
27) Converted all live test code to the latest software ("live" means
its entry hasn't been REMed out of the BLD.CMD batch file for that
\eikon\xxx directory), with the exception that there's presently a
blocker preventing any attempt to run Paint from within Write (partly
because I haven't updated Paint, and partly because the system for
running sub-applications is almost certainly broken at the moment)
From Siamak:
------------
28) Simplified and improved horizontal scrolling in MC (multi-column)
listboxes; the horizontal scrollbar is now set in terms of columns
rather than pixels
29) Modified the PgUp/Dn handling code for MC listboxes, to prevent
the highlight from disappearing from view
30) Modified CEikListBox::SetEmphasis so that it now calls a function
RedrawItemsAffectedByChangeInEmphasis() rather than having the effect
of drawing all visible items.
Version 0.01.037
================
(Made by DavidW, 4 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/067 ETEXT/029 TBOX/046 PRINT/006 FONTS/013 ALWL/012
Uses TBOX 046 and CONE 067 for the first time
(It's no longer necessary to copy any file r:\eikon\temp\tboxd.dll
into your \e32sys directory)
Debug variant only released
From Neil:
----------
1) CEikScrollBarFrame::Tile() now returns a TBool to tell whether or
not the "output rect" was changed
2) Improvements to CEikEdwin::SetScrollBars() to stop the view being
reset or the window resized after any key that changes the scrollbar
model(s); it now only gets redrawn if necessary
3) Added a CEikEdwin::SetScrollBarVisibilityL() routine to
dynamically change scrollbar visibilities
4) Change to CEikEdwin::ResetViewL() to try to workaround various
limitations in CTextView - not yet fully satisfactory, though, and
new functionality in CTextView is awaited with interest
5) Upgraded TScrlB1 test code Properties dialog to allow
manipulation of most of the scrollbar settings
6) Various internal optimizations to scrollbar code
From SimonC:
------------
7) Added ExpandAllL() and CollapseAll() functions to the
hierarchical list box model
8) For consistency with CEikListBox, added ConstructL functions to
the directory tree list box
9) Removed the option of specifying only a single drive in
CFileSelectorContainer, as there is as yet no suitable way to
navigate to the drives choice list via the keyboard; for now, all
drives are always displayed
10) Improved the handling of errors reported by the file server
From DavidW:
------------
11) Various changes in line with the changes in CONE 067:
12) Changed many calls to Exit(0) (eg in test code) to just be Exit()
instead
13) Parts of the construction of CEikonEnv that presuppose the
existence of a root control (as a control stack) have been removed
from the ConstructDetailedEnvironmentL() call, and are now deferred
until the root control calls SetRootControlL(); in particular,
creating the alert window and the "debug keys control", both of which
presuppose a control stack
14) CControlEnv::AlertWin() has been changed to test for the
existence of iAlertWin before proceeding; if it does not exist (as
can be the case during environment startup) it now sends an IPC
message to the Eikon Server, to display the alert message on its
behalf
15) Rationalized some of the IPC routing calls between the Eikon DLL
and the Eikon Server; also rationalized some of the (rather ancient)
code inside parts of the Eikon Server
16) Changed the means by which Eikon DLL code knows when it is
running on behalf of the Eikon Server (which it sometimes needs to
know); there is no longer a flag CEikAppControlIsEikServer - since
the root control is now inaccessible to the environment during the
early phases of system startup - but instead the Eikon Server
provides its own subclass of CEikonEnv (normally applications *can't*
subclass CEikonEnv, since they don't control the environment into
which they may be launched, but the Eikon Server application is an
exception)
Version 0.01.036
================
(Made by DavidW, 3 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/066 ETEXT/029 TBOX/045 PRINT/006 FONTS/013 ALWL/012
Uses FONTS 013 for the first time (so degree symbols get displayed in
LatLong editors)
Debug variant only released
From Delma:
-----------
1) Supplied simple test code for LatLong editor, in Numbers dialog
in TDialg1 (largely by removing comments formerly commenting out code
originally written by Kevin)
From Julian:
------------
2) Buttons now support being dimmed (displaying themselves
differently, and refusing pointer events)
3) An example of a dimmed button has been shoe-horned into the
Numbers dialog in TDialg1: toggling the "Change Max / Min" tick box
has the side-effect of dimming/undimming the "Dummy" button in this
dialog
4) Improved the drawing code for the Mover region in dialogs, so as
to reduce flicker when the title is dynamically changed (as can be
tested using the Buttons dialog in TDialg1)
From Brendan:
-------------
5) Changed the Alarm Alert to be a container window, rather than a
simple control
6) Drag events are now enabled in the Alarm Alert (so that users can
"roll off" buttons and see them come up again immediately)
7) The Alarm Alert now interacts more correctly with any other
visible dialogs (such as the Task List dialog) displayed by the Eikon
Server (change effected by keeping the Control Stack informed as to
the state of the Alarm Alert)
8) Added an inline templated function DeleteAndNullPointer<T> to
EIKREQD.H, with the contents { delete(aPtr); aPtr=NULL; }
9) Other internal improvements to the Alarm Alert code
(As an overall result of these changes, the clock in the Alarm Alert
now animates straightaway, and the Silence button visibly dims when
required)
From SimonC:
------------
10) Internal changes to the THierListItem struct, for improved speed
and reduced storage requirements
11) Fixed various bugs in the Add and Remove item functions in the
directory browser
12) Added a choice list containing available drives to the
CFileSelectorContainer (currently living in TLBox1); this doesn't yet
have any effect on other controls
13) Had to change CalculateRequiredSizeL in eikchlst.h from protected
to public
From Neil:
----------
14) Further progress with CEikScrollBarFrame, which now lives in its
own new module EIKSBFRM.*
15) Converted CEikEdwin to use CEikScrollBarFrame (though there are
still some strange effects that will need further attention, and some
elements of CEikEdwin function may not fully work for the time being)
16) Each former edwin scrollbar flag has now split in two, eg there
is now EEikEdwinFixedHScrollBar and EEikEdwinAutoHScrollBar, ie there
are both "fixed" and "auto" variants
17) Finally renamed the "m" field in CEikScrollBar to "iModel" as per
usual naming conventions
From DavidW:
------------
18) Various internal changes, in line with the conversion to CONE 066
Version 0.01.035
================
(Made by DavidW, 2 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/065 ETEXT/029 TBOX/045 PRINT/006 FONTS/012 ALWL/012
This is an interim build, with a series of further changes imminent.
Only the Debug version EIKOND.DLL is being released; you can easily
build a Release version yourself if need be
From Brendan:
-------------
1) Put in place an alert dialog system, that can easily be made
extensible
2) Alert dialogs are derived from the mixin class MEikAlertControl;
the alarm alert controller is in a new set of files EIKALMC.*
3) Added the start of the alarm alert, including a plethora of
supporting classes
4) TWldSl has two new toolbar buttons that allow you to set clock
alarms - either for "Now" or for in the near future
5) Some internal reorganization and renaming of Eikon Server code
6) Made "reset width and pos" public in CEikTagBase
The alert dialog system has highlighted a range of problems in
various parts of system code:
*) The clocks in the Alarm alert do not start animating until
Ctrl-Shift-Alt-R is pressed
*) Buttons cannot be dimmed yet
*) Setting session alarms sometimes panics when the name of the
session is fetched
*) Snoozing cannot be properly accomplished at the moment, pending
changes in the alarm server
Version 0.01.034
================
(Made by DavidW, 2 Apr 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/065 ETEXT/029 TBOX/045 PRINT/006 FONTS/012 ALWL/012
This is an interim build, with a series of further changes imminent.
Only the Debug version EIKOND.DLL is being released; you can easily
build a Release version yourself if need be.
From SimonC:
------------
1) The hierarchical listbox now draws lines connecting parent and
child/sibling entries
2) Added two new members to THierListItem to facilitate the above:
iParentIndex and iItemFlags
3) Improved the file selector container's error handling: it's now
much harder to get an alert when attempting to read an empty drive
4) Reduced the public interface of the hierarchical listbox model
5) Several other internal changes to fit in with the new design, eg
models are now called Models rather than ItemLists
From Natascha:
--------------
6) Added various "locale" dialogs to the Eikon Shell, allowing the
editing of currency formats, date and time formats, and number
formats; altering the settings in these dialogs has an effect on
controls such as twips editors or date editors in other applications
7) Made the titles for the Spacing and Indents dialogs dependent on
the locale settings for units (imperial vs metric), ie in English
either "(in)" or "(cm)" gets appended as required
8) Made a start on indeterminate states being allowed in various
other controls, eg choice lists and twips editors display blanks, and
if ok'd in this blank state will actually leave the alignment
settings as they were for each paragraph
9) Altered the validation routine for twips editors, which normally
disallows blank data, to accept it in the case when the twips editor
was initially in the indeterminate state
From Delma:
-----------
10) Uncommented the latitude/longitude editor code in EIKNUMED.*,
and made various changes to it so that it worked
(Test code will be available to demonstrate this shortly)
From DavidW:
------------
11) Converted CEikEdwin to use TBox 045; as a result, among other
things edit boxes support underlining again
(However for the time being CTextView fails to turn off flashing
cursors when required, or displays flashing cursors in the wrong edit
box; also CTextView will crash when asked to de-highlight emphasised
text - which you can avoid as a temporary measure by copying
r:\eikon\temp\tboxd.dll into your \e32sys)
12) As a potentially interim measure, made CEikListBox::SetStateL
call CreateViewL() before it does anything else, to workaround a
problem found by MartinD concerning in-place listboxes in dialogs
13) Changed what MNT BLDALL does, by commenting out the lines calling
MNT BLDUDEB and MNT BLDUREL, to avoid lots of wasted time (since
these variants aren't supported presently) should someone actually
invoke the BLDALL verb.
Version 0.01.033
================
(Made by DavidW, 27 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/065 ETEXT/029 TBOX/044 PRINT/006 FONTS/012 ALWL/012
Uses CONE 065 for the first time
From Natasha:
-------------
1) Added the Paragraph format dialogs to Write: Set Spacing, Set
Indents, and Set Alignment
2) As would be expected, in Write these dialogs produce paragraphs
with varying formats, whereas in TEdwin0 they alter the global
formatting
From Vipul:
-----------
3) TCons0 now optionally runs either with a backed up window or a
"normal" window (there's a startup query dialog to specify this at
runtime)
4) Altered a few parts of TCons0 code to prevent crashes if an
inappropriate function is called on a backed up window
(but more work remains to be done, to go beyond avoiding the panic,
to achieving the correct screen appearance, eg on pressing Ctrl-F to
change the font in the backed up window case)
From DavidW:
------------
5) Removed all mention of PAINT and TEXTED from Eikon's MNT.CMD; you
should rd /s any \eikon\paint and \eikon\texted directories
6) Finally fixed the "non-latching latching buttons" problem in the
Write toolbar, by defining separate command IDs numbers for eg the
Bold toolbar button and the "Set Bold" menu command itself
7) Fixed the memory leak in Write due to the presence of pictures;
the other leak, arising whenever Paint is run up inside Write, will
require the *proper* ("no cheating") application architecture, to
sort it out.
Version 0.01.032
================
(Made by DavidW, 26 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/064 ETEXT/029 TBOX/044 PRINT/006 FONTS/012 ALWL/012
Change in version of resource compiler:
---------------------------------------
1) The BLD batch files for Eikon now all presuppose that you have
installed RC3.EXE, the "32-bit" version of the resource compiler
developed by Martin Willitts
2) Invoke "MNT TOOLS" from Eikon, to cause RC3.EXE plus some
supporting files to be placed in your %drv%\tools, and various batch
files (EIKRS.BAT etc) in the same place; see the release notes for
EIKTOOLS 100 and RCOMP 300 for more details
3) The older MNT verbs TOOLRCOMP and TOOLHCIL are being retained for
the moment, but will soon be removed
From Vamsi:
-----------
4) New CEikEdwin function SetWordWrapL(TBool), to toggle whether
word-wrap is on or off: see TextEd for an example of changing this
dynamically (see the Preferences dialog)
5) New flag EEikEdwinPartialFormat to cause CTextView to only format
the visible portion of the document (as opposed to the entire
document); this gets set in TextEd - see how quickly it can now load
in a large file such as release.txt!
6) Improvements to the function CEikEdwin::GuessVThumbPos(), used to
estimate the position of the vertical scrollbar in the case when the
document is only partially formatted (however this area looks like it
may need a lot more work done on it)
From Neil:
----------
7) New header file EIKSBOBS.H containing the scrollbar observer
class and the definition of TEikScrollEvent
8) Modified EIKLBX.H, EIKCONSO.H etc to reflect this fact - they now
depend just on EIKSBOBS.H and not on EIKSCRLB.H
9) Further progress on the CEikScrollBarFrame class
10) Added constructor to TEikScrollBarModel, with some default
parameters
From Siamak:
------------
11) Scrolling upwards in listboxes wasn't correctly validating the
new text drawn, resulting in a double draw in due course; now fixed
12) Fixed some similar validation and drawing problems when scrolling
horizontally in some listboxes
13) The GetState() function for single-selection listboxes now always
returns simply the index of the current item, if any, avoiding
complications if the current item isn't selected (according to the
strict definition of the term "selected")
14) Redefined DrawItem() in the hierarchical view class so that the
area preceding the rect for a given item is cleared
15) Modified CEikListBox::HandleRedrawEventL() not to re-initialize
the brush color in the Gc before proceeding (otherwise occasional
black flashes could occur)
16) Improved CEikListBox::VScroll() by avoiding calling the Draw()
function when you have only scrolled up/down by one item; in such
cases, now only the top/bottom item is drawn
17) When pressing the arrow or the page up/down keys, only the thumb
portion of the relevant scrollbar is now updated, thereby eliminating
unnecessary (and potentially expensive) calculations; result - faster
scrolling through longer lists
From SimonC:
------------
18) Changed hierarchical listboxes so that nodes can be expanded/
collapsed via Tab (+ and - can still be used)
19) Fixed bug that was preventing the list item in a hierarchical
listbox from being collapsed
20) Fixed bug in HandlePointerEventL shown up by clicking below the
last item but still inside the listbox
21) Other internal file selector changes
From Brendan:
-------------
22) Converted test code TWldSl to the CEikDocument system
23) Modified world selectors to optionally set their background color
to white and to optionally have a flashing cursor
24) New flags are defined in EIKCTRLS.HRH to allow these options to
be set for dialog controls
25) World selectors are now drawn slightly smaller, by default, than
before, with extra space above and to the right of the text so that
the text does not touch the borders
26) Made a start on the Eikon implementation of the Alert Server, in
modules EIKSALRT.* and EIKALRM.*
From Julian:
------------
27) Added Undo and Redo facilities to Paint
28) Multi-level Undo turned out to be virtually as easy as
single-level Undo; so Paint presently has a ten-level Undo stack
From DavidW:
------------
29) Fixed a bug in TEdwin2 involving ownership of the paragraph and
character format layers, that was causing a crash on exit
30) Fixed another bug in TEdwin2 causing eg Ctrl-B to set Bold Italic
and Underline all at the same time (amongst other problems); this was
due to a test for (buttonState&EEikButtonClear) which is, however,
guaranteed always to be zero, since EEikButtonClear is zero; better
to test against EEikButtonSet instead
31) Supplied working Open, Save, SaveAs, and Import functions for
TEdwin2, with automatic save of changes on Quit, etc
32) Not only is this store and restore of rich text for the first
time at the Eikon level, it is also store and restore of pictures for
the first time at the Eikon level: all three kinds of pictures
("Simple", "Bitmap from file", and "Paint") get stored to file and
then successfully restored later
(but not without a few hiccups along the way, eg Write will now
usually crash on exit with a memory leak - one for each picture, and
another one for each time Paint has been visited - but not before
saving the document to file; also the picture restoration currently
doesn't do quite the right thing as regards scaling)
33) Changed the name of TEdwin2.* to Write.*
34) On a suggestion from MartinB, slightly altered the meanings of
the CEikDocument functions RestoreComponentsL and StoreComponentsL;
as it turned out these changes were independently required in order
to get picture save and load working inside rich text
35) For short-term convenience in CEikEdwin, changed the iSBManager*
property in MEikScrollFrameOwner from private to protected
36) In line with architecture team recommendations, renamed
iOrphanWindow to iCornerWindow in scrollbar frame code
37) Added a Wrap on/off setting to the Properties dialog in TScrlB1;
TScrlB1 now defaults to wrap off, allowing the horizontal scrolling
of edwins to be tested
38) TScrlB1 now has an Import Text option, seeded with the *.CPP
files from \eikon\src; TScrlB1 now launches this dialog automatically
on start up
39) On a suggestion from Bill, renamed all Eikon resources from
R_EIKON_XXX to R_EIK_XXX
Removal of PAINT and TEXTED from the Eikon group
------------------------------------------------
Please note that this is the last build of Eikon which will include
Paint and TextEd as part of the Eikon group. The source code for
these applications will now be moved to their own groups, and they
will have their own separate MNT.CMD files, etc.
Version 0.01.031
================
(Made by DavidW, 25 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/064 ETEXT/029 TBOX/044 PRINT/006 FONTS/012 ALWL/012
From DavidW:
------------
1) Converted TEdwin2 so that it now runs under the CEikDocument
scheme; TEdwin2 is a rich-text editor, that supports pictures
(However, TEdwin2 is currently a bit fragile, prone to panics on
exit, or when a piece of text is highlighted; setting text to be Bold
often has the unexpected side-effect of making it italic and
underlined as well; etc)
2) Upgraded the piece of code in TEdwin2 that can launch Paint to
edit Paint objects embedded in TEdwin2
3) Started changing the name of TEdwin2 to Write (since the intended
functionality of TEdwin2 is a reasonable match to that of Windows
Write)
(There's no Save/Open functionality working in TEdwin2 yet)
4) Up till now, it was impossible to declare a listbox in a resource
file with features such as multiple selection or a scrollbar; this
was because the list box view was created in the SetParentWindowL
function, before the RestoreL function had had a chance to set any
internal flags from resource file data; this has been fixed to
delaying the creation the listbox view until the first call to
SetExtentL(), thereby following the CEikEdwin pattern more closely
5) See the "List" dialog in TDialg0 for a listbox supporting
multiple selection and a vertical scrollbar, in a dialog
6) Changed code as required by various name changes in CONE 064.
Version 0.01.030
================
(Made by DavidW, 23 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/063 ETEXT/029 TBOX/044 PRINT/006 FONTS/012 ALWL/012
INCLUDES FONTS 012 for the first time
Please note this release only contains a Debug variant
From Julian:
------------
1) Transfered the print setup dialogs out of Paint into the new
module EIKPRTDG.* (this now requires EIKON.DLL itself to link to
PRINT.LIB for the first time)
2) Modularized Paint by splitting it up into four separate modules:
BITMED for the bitmap editor, GRAYSL for the gray color selector,
PNTDLG for the dialogs used by the application, and PAINT for the
main application
3) Paint now demonstrates saving and loading preference data to its
profile file, including the settings of its gray color selector and
the print setup
4) The bitmap editor will now only export a bitmap drawing to a file
when a region is selected (this feature is the same as in Paintbrush
and the MSVC bitmap editor)
From SimonC:
------------
5) Started work on CFileSelectorDialog, which can be invoked from
a toolbar button in TLBox1
6) Fixed a bug that was preventing listboxes with no horizontal
scrollbar from scrolling horizontally (ie when Left/Right is pressed)
7) Changed the CalcDataWidth() routine in the hierarchical item
list, to try to get a more accurate value (though this now seems to
result in the lists scrolling too far!)
8) Renamed CSimpleContainerControl and CFileSelectorContainerControl
in TLBox1 to CFileSelectorContainerBase and CFileSelectorContainer
respectively, and moved as much code as possible into the Base class
9) Improved emphasis handling in TLBox1 (eg when a dialog is
launched or exited)
From Natascha:
--------------
10) Modifications to TEdwin0, giving access to the Paragraph
Alignment, Spacing, and Indents dialogs from the menu bar
From Neil:
----------
11) CEikScrollBar now derives from CCoeWinArea instead of CCoeControl
12) Scrollbars now use their own observer MEikScrollBarObserver
instead of CCoeControlObserver; the callback function is now
HandleScrollEventL()
13) Renamed SEikScrollBarModel to TEikScrollBarModel
14) Started work on the new CEikScrollBarFrame class, in line with
recent discussions with Charles
15) Interim changes to CEikScrollBarManager and MEikScrollFrameOwner
before these finally disappear, to keep the code afloat for now
16) Updated CEikEdwin, CEikListBox, CEikConsoleWindow, Paint, and
TScrlB0 to use the latest scrollbar code
17) Fixed the problem of the non-appearance of anything interesting
in TScrlB0 (due to an orphan window being created the size of the
whole screen!)
From Vipul:
-----------
18) Enhanced TCons0 test program: Ctrl-F now changes the font.
Version 0.01.029
================
(Made by DavidW, 22 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/063 ETEXT/029 TBOX/044 PRINT/006 FONTS/011 ALWL/012
Includes PRINT 006 for the first time
From Julian:
------------
1) Several dialogs in the Print Setup suite have been created for
Paint (and will shortly migrate to Eikon, for use by other
applications)
2) The present version of the Print Setup dialogs uses an interim
alternative to multi-page dialogs, and will change over to that
scheme instead when it becomes available
3) The Print Setup dialogs edit the contents of the CPrintSetup
object owned by CEikDocument
4) Added an accessor function CEikDocument::PrintSetup()
5) Paint currently has its own dummy list of printer models; this
will be replaced in due course by a list obtained from PDRSTORE
6) Moved some code from CEikButton to CEikButtonBase, to solve a
drawing problem for densely packed buttons in some button arrays
7) Changed the call to OkayToExitL in CEikDialog to call the
HandleControlFocusLossL function beforehand, for the current item, if
the flag is set (see below), before calling the dialog-specific
OkayToExitL()
From Vamsi:
-----------
8) Rewrote the tabs dialog in TextEd, based around storing the
tabwidth in character widths, and calculating the value in twips when
needed
9) The tabs setting now automatically updates correctly whenever the
font is changed
From MartinD:
-------------
10) CEikComboBox now has an iMaxArraySize variable which is set by
default to 5 but can be set to any value by the caller; this
determines the number of historical items that are stored in the
array
11) Changed the DesCArray() function in CEikChoiceList from protected
to public
From SimonC:
------------
12) Changed the appearance of the "sort order" buttons in TLBox1 to
look more like in the Shell spec (ie with bitmaps and text)
(This requires the new FSEL*.PBM files which are put into your
\e32data directory by Eikon's MNT GETREL)
13) These "sort order" buttons now function, to control the order of
the displayed files
From Siamak:
------------
14) Speed optimizations in listboxes, eg caching the bottom item
index rather than recalculating it each time, to speed up scrolling
15) Reducing the amount of item redraws, eg when scrolling
16) Added basic support for the PgUp and PgDn keys in listboxes
17) First letter matching logic in listboxes now ensures the item
found (if any) is made visible
18) In order to further improve the flicker-free quality of listbox
displays, the flag ECoeWinAreaAutoClearOnRedraw() is now set, and the
listbox constructor calls SetBackgroundColor()
19) Dragging in a listbox now works again (had got broken recently)
20) Eliminated some code duplication in listbox code
21) Defined some new generic event types: EEikCeItemDoubleClicked,
EEikCeItemExpanded, and EEikCeItemCollapsed; a hierarchical listboxes
now report the latter two events to their observers
22) TLBox1 no longer creates and destroys a file server session each
time it wants to update the file details listbox; instead, it uses
the session pointer created by Cone
23) As you navigate up/down the directory tree listbox in TLBox1, the
file details listbox no longer tries to keep up straightaway, but
rather updates itself on the completion of an idle object
From DavidW:
------------
24) Various changes in TextEd, bringing it closer to the design in
\design\eon\eon.mdl (eg different data is stored in its profile)
25) Added GETPRINT and GETSRCPRINT verbs to MNT.CMD
26) The definition of the DLG_LINE resource struct now includes a
flags field, with value defaulting to zero; for now, the only bit
that can be set in it is EEikDlgLineReportFocusLoss (as is set in
some resources for the Print Setup dialogs); more flags will be added
shortly
27) On account of the above change, I have changed the internal
signature number for Eikon resource files, to force all resource
files to be recompiled before Eikon will load them.
Version 0.01.028
================
(Made by DavidW, 21 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/063 ETEXT/029 TBOX/044 FONTS/011 ALWL/012
Includes CONE 063 for the first time
From DavidA:
------------
1) Minor change to the ways CEikEdwin's get constructed, to provide
more flexibility (and to fix a problem whereby some functions were
consulting flags parameters that hadn't been restored yet)
2) There's now a separate function BaseConstructL() which all
CEikEdwin construction routes have to pass through; some test code has
needed to be modified
3) New flag EEikEdwinNoHorizScrolling, which currently only has an
effect for single line editors; by default, these editors get the
EEikEdwinNoWrap flag set for them automatically, and the purpose of
this new flag is to prevent that behaviour; in turn this can be
desirable for a single line editor that happens to be right-aligned
(as in the Calculator app), since otherwise TBox calculates the
position of the text as being at positive infinity!
From Vipul:
-----------
4) The various ConstructL functions of CEikConsoleScreen and
CEikConsoleWindow now all take one more (optional) parameter, TInt
aFlags, defaulting to zero, which gets set into the iFlags field of
the console window before the call to its CreateWindowL() is made; as
a result, it is now possible to have a console with a backed up
window (as required for some uses in Opl)
5) There's also a new CEikConsoleScreen function, ConsoleWin(),
returning the handle of the CEikConsoleWindow component
From SimonC:
------------
6) An array of buttons have been added to the two-list file manager
control, to specify sort order (not implemented yet)
7) The file manager no longer occasionally crashes on changing from
a longer list to a shorter list
8) Various improvements to the display of entries in the file
manager
9) Moved bitmap creation out of the model level into the control
level of the directory browser, to remove Cone dependency from the
model
10) Changed the model to use a file server connection passed in,
rather than repeatedly creating and destroying its own connection
11) Cut down on the number of functions that are EXPORT_Ced
From DavidW:
------------
12) Changed numerous "iWin." instances to "iWin->", and some to
"Window()." instead (where the function called is not defined by
RDrawableWindow) - this change is required by the upgrade to CONE 063
13) Note that tests for whether a window has already been created
change from
if (iWin.Handle())
to the simpler
if (iWin)
14) Changed CEikChoiceList to have a pointer to an MDesCList, rather
than a pointer to a CDesCArray; this makes it presuppose less about
the actual array used
15) There's also a utility function DesCArray() in CEikChoiceList, to
return the CDesCArray* pointer corresponding to the MDesCList*
pointer, though needless to say this function should only be called
if you are confident this cast can be made; see EIKFNSLWN.CPP for
examples
16) Similar changes in EIKLBXM.H.
Version 0.01.027
================
(Made by DavidW, 20 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/062 ETEXT/029 TBOX/044 FONTS/011 ALWL/012
From SimonC:
------------
1) For the first time, TLBox1 now looks seriously like a File
Manager, with two list boxes working in tandem: the left list box
lists the directory hierarchy, and the right list box shows the files
for the current directory; the data displayed is real, ie the
contents of the directories on your hard disk and the network drives
2) For now, use the + and - keys to expand or collapse a branch, or
double click it
3) Moved THLBX.* into Eikon, as the new module EIKHLBX.* containing
the hierarchical list box classes
4) The directory item list now displays bitmaps indicating whether
the folders are open or closed, and indents each item a set amount
further than its parent (there are still some minor display problems
to be sorted out soon)
5) Minor change in EIKCLOCK.CPP so that SetOffset(TInt aOffset) sets
an offset in terms of seconds rather than micro-seconds
From Siamak:
------------
6) More scrolling/ navigation/ display bugs fixed in listboxes
7) Some speed improvements when dealing with long lists
8) Note that the HandleListUpdate() function now does more than
before, so list box clients should be sure to call this, rather than
just calling eg UpdateScrollBars() by themselves (typically, a call
to UpdateScrollBars will be replaced by a call to HandleListUpdate)
From Neil:
----------
9) Created new mixin class MEikScrollFrameOwner to take much of the
common code in setting up scrollbars, managers, visibility etc, away
from individual controls
10) To use it, controls *must* supply UpdateScrollBars() and
SetClientRect() functions, since these are declared as pure virtual
at the MEikScrollFrameOwner level. Also if the scrollbars are to be
positioned inside any kind of border (or margin) they should override
BorderWidth() declared as virtual at the CCoeControl level
11) Any private flags indicating scrollbar/manager presence in such
controls should not be used (in eg UpdateScrollBars()) after
initializing the scroll frame owner; instead, use the flags from the
scroll frame owner, which are kept up to date when scrollbars are
destroyed or made invisible etc; see EIKEDWIN.CPP SetScrollBars() for
an example
12) Converted CEikEdwin to derive from MEikScrollFrameOwner
13) Updated TScrlB1 to test the scroll frame owner features:
scrollbars in it can now be turned off/on as in TScrlB2; the "visible
lines" editor in the properties dialog has been replaced by a height
one (in pixels) for greater flexibility
14) Internal improvements to TScrlB2
15) Removed a few redundant lines from EIKLBX.CPP
From Vamsi:
-----------
16) Supplied code for the "Indentation" (tabs) dialog in TextEd,
allowing regular tabstops to be set, in units of character width
17) This exposed a bug in CEikEdwin::OfferKeyEventL(), which was not
setting the correct character code when trying to insert a tab
character into the editable text; now fixed
(In turn this has exposed a bug in TBox in which, for mono-spaced
fonts, a plus/minus symbol is displayed for the tab character)
From Julian:
------------
18) Another rationalization of button code, visible in the API (and
requiring all resource files to be recompiled again!): a button
*state* can no longer be initialized via a resource file, which only
allows button *flags* to be specified; this results in a reduction in
the size of all button structs in resource files
19) To set a button state, you need to supply code, either in the
application itself, or in a dialog; this brings buttons more in line
with other controls
20) Variables such as EEikButtonLatchedUp/Down for setting button
state have been removed from EIKCTRLS.HRH to EIKBUT.H, and have had
their names changed, for safety, to EEikButtonClear/Set, in
conformance with tick box and radio buttons; this affects lots of
test code, which has all been updated
21) The typedef TButtonState has been withdrawn: just use TInt
instead
22) Fix in Paint for the case when descenders of text could get
chopped off when text was input to a bitmap
23) Various cases in Paint where the "document changed" flag was
failing to be set, have now been fixed (to avoid a loss of these
changes when the application quits)
24) Changed the implementation of "Import bitmap" to place the new
bitmap on a moveable region (as for Paste, etc) to allow it to be
positioned appropriately on top of the existing bitmap
25) Improved the handling of the case when a Pasted or Imported
bitmap exceeded the size of the current bitmap
From DavidW:
------------
26) Changed the HandlePointerEventL function in CEikListBox so that
an EEikCeStateChanged event was reported as appropriate.
Version 0.01.026
================
(Made by DavidW, 19 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/062 ETEXT/029 TBOX/044 FONTS/011 ALWL/012
From Julian:
------------
1) Paint now has the facility to insert text; there is an "Insert
text" dialog which has a multi-line editor, as well as a "Font"
button allowing the font to be specified
2) After the input text is specified, the bitmap editor
automatically goes into "select region" mode, to allow the text to be
positioned as the user wishes
From Brendan:
-------------
3) Removed the test application TDynClk since it has been merged
into TBmp
4) Converted TBmp and TBmpTag to the current CEikDocument scheme
(both these test programs run, like all the others, equally well in
Release mode as in Debug mode)
5) Changes to CEikClock to cope with some of the requirements of the
"dynamic clock" uses (as in TBmp and in the TimeW application)
6) New bitmap SMILE.PBM which gives a prettier picture in TBmp
(click on the face to make it smile/frown)
7) Internal changes to CEikTag code
8) Changed the EXPORT verb of MNT.CMD to export *.inl files as well
From Siamak:
------------
9) Fixed various horizontal scrolling problems for both standard and
multi-column listboxes; note that the "data size" is now calculated
correctly (from, by default, the widest item in the list) rather than
being hard-wired to 640 as before; that means the scrollbar thumb is
now the correct size
10) Fixed bug in hierarchical listbox whereby the control was asking
its base class to process left/right arrow events after it had
already processed them itself
11) Various other internal changes to listbox code (listbox code is
still in a state of flux however, with several known problems - both
old and new - awaiting attention)
From Neil:
----------
12) Fixed a couple of bugs in scrollbars and the scrollbar manager.
Version 0.01.025
================
(Made by DavidW, 18 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/062 ETEXT/029 TBOX/044 FONTS/011 ALWL/012
This build uses FONTS 011 for the first time; there is a richer set
of fonts available in the Fonts Dialog (eg in TEdwin0 or TextEd) than
ever before, including the "Tiny" fonts intended eg for Print Preview
purposes.
From SimonC:
------------
1) Improved directory browser so that, in TLBox1, it now starts off
with all drives listed, rather than from the root directory of any
one drive (the test code still provides the option of displaying a
list of this latter sort)
2) Removed all known memory leaks from the directory browser
3) Changed the method of storage in THierListItem to use an HBufC*
to provide variable length storage, rather thatn a TBuf<256>
4) Removed all knowledge of the method of list storage (ie array,
linked list etc) from CDirectoryItemList
From Neil:
----------
5) The scrollbar manager now takes care of the "orphan rectangle" at
the "intersection" of the two scrollbars, so that controls with two
scrollbars no longer need to redraw this area themselves (nor will
they receive pointer events if the user clicks in this area)
6) Removed the restriction in the scrollbar manager that the
"client", had to be non-NULL, and changed the name of this data from
iClient to iParentWindow
7) In CEikEdwin, re-introduced the line iWin->SetBackgroundColor(),
at MartinB's request, so that a DrawNow() will no longer cause any
flicker (this change was possible in the wake of the scrollbar
manager now handling the "orphan rectangle")
8) Improved horizontal scrolling in CEikEdwin (but still far from
perfect, pending additional assistance from Form)
9) In test code TScrlB2, now keep the number of items in the
properties dialog up-to-date, when the scrollbar visibility is
changed
From Vamsi:
-----------
10) Fixed the memory leak in a CEikEdwin with line cursor, by creating
the line cursor in a different part of code
11) Developed the implementation of "Find" in TextEd
From Julian:
------------
12) Further development of the Color Selector control, as seen in the
Paint sample app; the keyboard focus can now be moved into this
control (in Paint, by using Tab) and the selected color is indicated
by an emphasized border
13) In Paint, the Color Selector can be placed at various edges of
the screen (left, right, bottom) or hidden altogether; when at the
bottom of the screen, it has horizontal layout, instead of vertical
14) Changed the implementation of buttons, separating the "flags" and
"state" variable, to solve the problem that applications calling eg
SetControlStateL for buttons can unintentionally remove subsidiary
information like the position of a bitmap relative to the text
15) Added a new button flag, EEikButtonBehaveLikeRadioButton, which
can be used for a set of mutually exclusive latchings buttons, as
used in the Paint toolbar, simplifying application code
16) Modified various other pieces of code, eg in test applications,
and in CEikButtonArray, as required by the separation of button state
and button flags; note that all resource files ought to be recompiled
From DavidW:
------------
17) New treatment of paragraph and character format layers in
CEikEdwin, with the withdrawal of GetTextFormatLayersL() and the
introduction of SetFormatLayers() instead; see the various Edwin test
programs for some examples
18) Edwin now panics if an request is made to change its char format
layer (eg by running the Font Dialog) but that edwin is still using
the shared char format for the environment (ie no call to
SetFormatLayers, specifying a non-NULL char format pointer, has been
made); similarly for a request to change its para format layer
19) Shared some code between the RunAlignDialogL, RunIndentDialogL
and RunSpaceDialogL functions of CEikEdwin, creating the new utility
function ApplyParaFormatL in CEikEdwin
20) Moved the Edwin Find dialog into Eikon, in its own module
EIKFINDD.*, and created CEikEdwin::Find() from code formerly in
TextEd
21) New public utility function CEikEdwin::SelectAllL()
22) The above developments in CEikEdwin mean that TextEd and other
applications with edwins no longer need to subclass CEikEdwin
23) Created the new control event, EEikCeFormatChanged, and changed
edwin code to report this instead of EEikCeStateChanged whenever the
change could require the application *profile* to be saved, rather
than the application document
24) Changed TextEd so that it now stores its font data, tab settings,
etc, in its Profile, rather than in each document file
25) Defined a virtual function ConstructL() for CEikDocument, which
is called prior to the EnvironmentReadyL() callback to the
CEikAppControl subclass; by default this function does nothing
26) Upgraded TEdwin0 to work with the latest set of Eikon classes
27) A slightly better choice for build settings now means that
Eikon.DLL is no longer larger than EikonD.DLL (!)
Version 0.01.024
================
(Made by DavidW, 15 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/062 ETEXT/029 TBOX/044 FONTS/010 ALWL/012
*.PRG files and ... *.PRD files
-------------------------------
1) The release of Eikon now fetches EIKOND.DLL and EIKON.DLL, the
Debug and Release versions respectively; likewise it fetches
SHELLD.EXE and SHELL.EXE, Debug and Release versions of the Shell;
note in particular that typing "Shell" will run the Release version
2) SHELL.EXE will try to run *.PRG files as PRoGram DLLs; not so
SHELLD.EXE, which will try instead to run *.PRD files; so for example
the project settings for the TextEd application have been altered, to
build TextEd.PRG in Release build and TextEd.PRD in Debug build
3) Various code flagged as "Unreachable" by the Release build
compiler has been commented out
4) Note that the settings in the "Release" section of the Project
Settings dialog, for many test programs, were very badly wrong, and
have been altered; eg they should Optimize for "Minimum Size" rather
than for "Maximum Speed"
(The Release build tends to run much faster, anyway, by virtue of
missing out floods of __ASSERTs; eg an operation that took 90 seconds
for TextEd.PRD took only 25 seconds for TextEd.PRG - this was
Importing the file "\eikon\group\release.txt"; too bad that it's
still about 24« seconds slower than eg Brief)
How to know which test programs have been updated:
--------------------------------------------------
5) A much larger number of Eikon test programs have been converted
to the new CEikDocument scheme - about 14 in all, including TDialg0
and TDialg1; the way you can tell is by looking at the various
BLD.CMD batch files, eg in ..\TSRC; the programs that have still to
be converted have been REMed out of the build instructions; test code
that runs as a .PRD file will also run (rebuilt) as a .PRG file
6) Note that the former program TBitEd0 has been moved out of
..\TSRC and into its own new directory \EIKON\PAINT, being
rechristened as "Paint" in the process (one consequence of this is
that *.PNT files saved earlier will refuse to load inside the new
application, since its internal name has changed)
From Julian:
------------
7) Paint now displays scrollbars, which can be toggled off or on as
required
8) Paint now displays its own 16-gray scales color selector (this
will display dithered shadings in 4-gray scale mode) down the side of
the screen
9) The mechanism for displaying the cursor has changed, so that it
no longer disappears when over dark gray (it now gets XORed with
"gray level 14", with the result that it always changes color)
10) Added a "Quit, lose changes" menu command
11) When drawing a line, the end pixel is now included (friendlier
for end users)
From SimonC:
------------
12) Converted TBut0 and TLBox1 to the new CEikDocument scheme
13) Changed to a new design for the hierarchical list box classes, in
which eg the model (array) class no longer knows anything about the
control classes
14) Created a new module, temporarily named THLBX.* in ..\tsrc,
separating out the general hierarchical list box classes, from their
original home in test code TLBox1
15) Created two more *.PBM files, placed into \e32data by Eikon's MNT
GETREL, which will be used shortly to display the open/closed status
of branches in a hierarchical listbox (but they are not in use yet,
pending further changes in the main list box classes)
From Siamak:
------------
16) Preliminary implementation of horizontal scrolling for both
standard and multi-column listboxes
(currently the "full width" of any listbox, for scrolling purposes, is
hard-wired to 640 pixels; a more flexible scheme will be in place
RSN)
From Neil:
----------
17) Converted TScrlB0, TScrlB1, and TScrlB2 to the CEikDocument
scheme
18) TScrlB2 now has two tick boxes in its Properties dialog, to turn
each scrollbar on/off separately
19) CEikListBox has a new function SetScrollBarVisibility(), and
CEikScrollBarManager has a RemoveScrollBar()
From Bret:
----------
20) Converted TMenuB0 and TMenuP0 to the CEikDocument scheme
From DavidW:
------------
21) Minor alteration to TextEd to provide a setting for whether to
restrict the display to a mono-spaced font; this is inside the Set
Preferences dialog (but this line of that dialog is the only one that
works for now)
22) Using the above feature of TextEd, you can see, for the first
time, the proposed "EFF Roman" font, as delivered to us by EFF, the
Electronic Font Foundry, and included in build 010 of FONTS (used for
the first time by this build of Eikon); alternatively you can use
TScrlB1 (none of the other "edwin-like" test programs have been
converted to the CEikDocument scheme yet); comments about this EFF
font to Natascha please
23) Changed the names of some CEikDocument functions to exclude
"Doc", eg InternalizeDocL() has become InternalizeL()
24) Added a CPrintSetup* to CEikDocument
25) There is now a default value for the fourth ("flags") parameter
to the constructor of the fonts dialog, allowing access, by default,
to all fonts.
Version 0.01.023
================
(Made by DavidW, 14 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/062 ETEXT/029 TBOX/044 FONTS/009 ALWL/012
Warning:
--------
This is very much an interim release, with only four test programs
having been converted to the emerging new document architecture
contained in Eikon for the first time today.
These test applications are:
TCalcUi
TCons0
TLBox
TextEd
It's not hard to convert other test applications, so long as they're
not "store aware". (See below for the details.)
But if your application supports eg Open, SaveAs commands, the
conversion will take longer, and you may wish to keep working with
a previous build of Eikon, for the time being
Document architecture!
----------------------
1) There's now a class CEikDocument, taking over the "document"
parts of the functionality from CEikAppControl from before; just as
every PRG has to provide a subclass of CEikAppControl, so too must
every PRG from now on provide a subclass of CEikDocument
2) A key difference between CEikDocument and CEikAppControl is that
an instance of the former can exist without an instance of the latter
existing; for example, if one of your documents is being printed from
the Shell, searched from the Shell, previewed from the Shell, or
displayed as a glass door from inside an enclosing application, the
chances are an instance of your CEikDocument will exist, but not an
instance of your CEikAppControl; the CEikAppControl subclass only
gets created when the user wants to *edit* the document (or, more
generally - for read-only documents etc - to *view* the document in
a process all of its own)
3) Your EikMain() function, which used to look something like
EXPORT_C CEikAppControl* EikMain()
{
return new CTextEdAppControl;
}
should now instead look something like
EXPORT_C CEikDocument* EikMain()
{
return new CTextEdDocument;
}
Even if it looked like
EXPORT_C CEikAppControl* EikMain()
{
CEikAppControl* appControl=new CSimpleAppControl;
appControl->SetAppControlFlags(EEikAppControlNoAppResourceFile);
return(appControl);
}
it will just just look like
EXPORT_C CEikDocument* EikMain()
{
return new CSimpleDocument;
}
and the place where you set the "app control flags" is in the
callback CreateAppControl() (see below)
4) Because the signature of EikMain() has changed, the contents of
EIKPRG.DEF has changed too (if you look closely, you'll see that,
underneath all the hieroglyphics, all that's changed is that
"AppControl" has been directly replaced by "Document")
5) CEikDocument declares a function CreateAppControl() as pure
virtual, meaning that you are obliged to provide one; at the very
minimum, you will end up with a few lines near the end of your *.CPP
file, looking something like
class CTestDocument : public CEikDocument
{
private:
CEikAppControl* CreateAppControl();
};
CEikAppControl* CTestDocument::CreateAppControl()
{
return new CTestAppControl;
}
An alternative version of CreateAppControl would look like
CEikAppControl* CSimpleDocument::CreateAppControl()
{
CEikAppControl* appControl=new CSimpleAppControl;
appControl->SetAppControlFlags(EEikAppControlNoAppResourceFile);
return(appControl);
}
so that, as you can see, what used to be in your EikMain() is
essentially now in your CreateAppControl() instead
6) The following functions have moved (sometimes changing their names
a bit in the process) from CEikAppControl to CEikDocument:
SetDocNameL();
LoadProfileL();
SaveProfileL();
ParseWithAppName();
GetAppName();
GetAppVersion();
StoreDocComponentsL();
RestoreDocComponentsL();
ExternalizeDocL();
InternalizeDocL();
Eg if you used to provide an ExternalizeDocL() function in your
subclass of CEikAppControl, you should now provide it in your
subclass of CEikDocument
7) The former EIKDOC.*, which contains the document header class,
TEikDocHeader, has been renamed to EIKDOCHD.*, and the name EIKDOC.*
is now used for the module for CEikDocument
8) CEikAppControl and CEikDocument contain several new utility
functions, intended to simplify and unify store-related code in
applications (and to cut down on duplication); more details will be
publicized shortly, once things have settled down a bit
Eikon now runs in release mode(?)
---------------------------------
9) Eikon now uses TBOX 044 (and ETEXT 029) for the first time, and
as a result can now in principle run in Release mode as well as Debug
mode (but not tested yet)
(the UTC version of ETEXTD.DLL in R:\EIKON\TEMP is no longer needed,
and has been deleted)
10) Because ETEXT 029 has its own copy of clipboard functionality,
the modules EIKCLIPB.* are withdrawn; instead of #include-ing
EIKCLIPB.H, you now #include TXTCLIPB.H; note that the file
EIKCLIBH.HRH remains, though, since it defines some Eikon-level
clipboard format type numbers (but if you used EClipboardRichTextType
before, switch to using EXxxClipboardRichTextType for now)
From Neil and Pieter:
---------------------
11) Added scrollbar facilities to the console window
12) Improved various aspects of the console test program, TCons0, eg
adding tests for changing the visibility of the scrollbars, and for
changing the visibility of the cursor
13) Fixed a regression in yesterday's release, in which a listbox or
edwin with only one scrollbar could crash
From Vamsi:
-----------
14) Added a new flag EEikEdwinLineCursor to EIKCTRLS.HRH, with the
effect that any Edwin can now get a "line cursor" displayed for it,
in a left margin region at the side of the editing area; on the S3,
this "cursor" is a pointing triangle shape; for the time being, in
Eikon you just get a '+' character
(unfortunately, in the present implementation, there are memory leaks
associated with line cursors, and any application using them will
crash during exit)
15) Set the EEikEdwinLineCursor flag for TextEd
16) Fixed a problem with the Font Selector dialog that was introduced
during the merge phase of the previous build, in which the set of
font heights shown, on the first display of the dialog, did not
always match the set provided for the first font shown
From Siamak:
------------
17) Changed the visuals of the way list boxes highlight the current
item and any selected items: they now use inverse video instead of a
dotted rectangular outline for the current item, and tick marks to
show selected items (somewhat similar to menus)
18) The CEikListItemViewer and CEikTextListItemViewer classes have
been merged, with the result that CEikListItemViewer is no longer
abstract; it can now cope with items that are just text, just a
bitmap, or a combination of bitmap plus text
19) This new design also makes it easier to create new kinds of list
item viewers, and to customize the behaviour of CEikListItemViewer
itself (eg via flags).
Version 0.01.022
================
(Made by DavidW, 13 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/062 ETEXT/028 TBOX/043 FONTS/009 ALWL/012
From Julian:
------------
1) The toolbar in the bitmap editor now has buttons with icons on
them, rather than text (all the icons being, of course, designed
using the bitmap editor!); this requires all the PNT*.PBM files which
are now placed in your \e32data by Eikon's MNT GETREL
2) The size of a bitmap drawing can now be changed ("cropped") to
that of a selected region, by a new menu command
3) The bitmap editor now has a "Show cursor position" option, to
provide the user with feedback about the current cursor position, via
a series of infomsgs
4) The menu bar now contains all the commands that can be actioned
from the toolbar, and uses radio button displays to show which of
various grouped items is now current (which drawing mode, and which
color); a tick display shows whether "Show cursor" is active; items
are displayed dimmed when appropriate (eg for Cut/Copy, and Zoom when
already zoomed to extremities)
5) There is now a New File menu command, so that a new blank file
can be created at any time
From Neil:
----------
6) Further improvements to the tiling logic in the scrollbar
manager, to cope better with interdependencies between scrollbars
when deciding scrollbar visibility; the vertical scrollbar is now
explicitly given priority in any case of conflict
7) Improved the MinVisibleLength() function of CEikScrollBar to give
a more realistic return value
8) Added a new (private) function AddShaftIfPossible(), called at
the end of CalcDisplayFlags() which will recreate the shaft, if
necessary, into any excess space obtained by removing pairs of
scrollbar buttons in some particularly tight situations
9) Fixed a bug in listboxes whereby paging up or down would have no
effect if only one (or less) items was visible
10) Improved test code TScrlB1 and TScrlB2 so that if a Properties
dialog would result in two separate resize calls to the respective
main windows in the application, these are now bundled into one call,
lessening the number of visual updates, and demonstrating better
coding practice
From Vamsi:
-----------
11) The Fonts dialog now obeys a flag (passed in on construction)
saying whether only monospaced fonts should be shown
12) The TextEd application calls the Fonts dialog with the "mono
only" flag set
13) TextEd now initializes its font to be monospaced
14) Created some dummy dialogs, for Set Tabs and Set Preferences.
Version 0.01.021
================
(Made by DavidW, 12 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/009
CONE/062 ETEXT/028 TBOX/043 FONTS/009 ALWL/012
The solution to LNK 4049 warning messages
-----------------------------------------
1) (As suggested by Geert) After downloading the build components,
edit line 10 of \e32inc\e32def.h, changing it from
#define IMPORT_C __declspec(dllimport)
to
#define IMPORT_C __declspec(dllexport)
(so that, under MSVC builds, IMPORT_C and EXPORT_C mean exactly the
same thing; note that this change has no effect at all on GCC
builds). All linker warning messages should cease
2) However, this change precipitates the need for all PRG files to
be linked with an option such as
/DEF:\e32inc\eikprg.def
added to the "Project options" box of the Link page of the Project
Settings dialog (you simply have to add this in by hand, eg after all
the other settings)
3) A copy of EIKPRG.DEF (a plain text file) is zipped up with all
the other EIKON "include" releaseables in the INCC zip component;
alternatively, just copy it over to \e32inc from \eikon\inc
(If you already have another .DEF file of your own, you can keep on
using that instead; EIKPRG.DEF presumes that the entry point to your
PRG has the function signature "CEikAppControl* EikMain()")
(The reason you now need a .DEF file is that defining IMPORT_C as
EXPORT_C means that you end up with at least one additional export
function, namely a hidden generated function which is a default
constructor for TFontStyle, of all things; MSVC generates this
function, in Debug builds at least, because the only constructor for
TFontStyle - in GDI.H - takes no fewer than three default parameters
- violating Code Review Principle HA-44 as it happens!)
From Brendan:
-------------
4) The control factory now recognizes CEikTag, CTikBufTag,
CEikBitmap, and CWorldSelector
5) Added resource reading for tags, bitmaps, and world selectors
6) Changed CEikTagBase so that a minimum width can be set - this was
the easiest way to demonstrate centered and right aligned text in
dialogs
7) Fixed a bug in world selectors where cities weren't always being
found when the selector was locked to a particular country
8) Minor name changes and other improvements to TBMP, TBMPTAG and
TWLDSL test code (eg the "Test" buttons now say what they're going to
do, instead of just "Test1" etc)
9) New test program TDynClk in which a clock factory and a dynamic
clock class are defined, eg the clocks can be seamlessly changed from
analog to digital
From MartinT:
-------------
10) Many of the control header files (eg EIKCHLST.H, EIKNUMED.H, ...)
have been commented to distinguish functions in controls that get and
set the state, from other functions (construct/ destruct, processing
required by CONE, internal support functions). This enables a clear
distinction to be made when documenting controls. When coding new
controls, you should try to follow this model
11) Note that GetState() and SetStateL() remain non-public functions,
and should always be coded in terms of the most common get/set
functions in the group above. This may not be the case for all
controls at present. Future Eikon releases will correct this where
necessary
12) Internationalized the spelling of the Initialise() function in
CEikVerticalRadioButtonsManager, to Initialize()
From Julian:
------------
13) The bitmap editor now supports Cut Copy and Paste; try it and
see! Note in particular that after a Paste, you get put into "Region
moving mode" automatically, to allow you to position the new bitmap
region where you want
14) Several bugs have been fixed in the bitmap editor, eg the cursor
and the selected region should now get redrawn properly after a
popout menu is removed
15) Other bitmap editor code improvements, to make it run more
smoothly
From Neil:
----------
16) Improved scrollbar manager's behaviour when resizing windows so
that it no longer sometimes obliterates the border of the listbox/
edwin (but there still seem to be a couple of problems with very
small edwins)
17) Extra scrolling functionality is now in place in Edwin, though it
waits for new Form functionality to be supplied before it all works
as fully intended
18) Changed the ResetViewL() function in Edwin to use the Form flag
EFViewFillBottomOfScreen which when functional should fix the problem
of leaving empty space at the bottom (eg after changing font)
From SimonC:
------------
19) In preparation for making the classes in the hierarchical listbox
system more portable (more useable in a wider set of circumstances),
moved various code from eg the application control class in TLBox1
into the new classes CDesCDirectoryArray and CTreeItemList
20) The recent change to info messages had meant that they were no
longer being displayed on the first request; now fixed
From Siamak:
------------
21) Implemented basic support for use of all four arrow keys in
multi-column listboxes
From DavidW:
------------
22) Converted to the latest build of CLOCK (009), taking advantage of
an easier mechanism for defining digital clocks
23) Now implement "no wrapping" edwins (such as in TextEd) by calling
the CTextLayout function SetToNoWrapping(), rather than specifying an
arbitrarily huge width
24) All Edwins with just one line now get the "no wrapping" flag set
automatically.
Version 0.01.020
================
(Made by DavidW, 11 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/008
CONE/061 ETEXT/028 TBOX/043 FONTS/009 ALWL/012
From DavidW:
------------
1) Renamed CEikAppControl::HandleNonStandardCmdL to HandleCommandL;
note that your applications will fail to receive any commands unless
you rename your version of this function
2) CEikAppControl no longer defines CmdFileOpenL() or
CmdFileSaveAsL(), and no longer treats the corresponding Cmd numbers
as different from any of the others (intercepting them and invoking
the above functions automatically); you have to add case statements
for these into your HandleCommandL()
3) On the other hand, the set of pre-defined Cmd numbers in
EIKCMDS.HRH has been significantly increased; use these numbers
(rather than corresponding ones of your own) if in due course you
want your toolbar buttons for these commands to automatically pick up
the right icon (and there is likely to be other benefits of keeping
the same numbers constant across applications)
(The set of numbers in EIKCMDS.HRH is of course subject to
considerable further evolution)
4) Converted many of the test apps to use the new EEikCmdXxx values,
where applicable, instead of their own values; one automatic benefit
of this is that commands selected via the sidebar popup menus now
often end up doing something meaningful, rather than being ignored
5) Withdrew the special pseudo-Cmd number EEikCmdDisplayMenu (it's
no longer needed, now that the sidebar works)
6) Numerous changes inside TextEd application
7) Added a function InsertFromTextFileL() to CEikEdwin, allowing any
edwin to import data from a plain text file (however, this can be
astonishingly slow for even moderately-sized *.TXT files)
8) Added a new flag EEikEdwinNoWrap to disable word-wrap in an
edwin, as is appropriate eg for a program editor
9) As a temporary workaround, added a "Directory" button to the
standard File Open dialog, allowing the user to navigate to a
directory other than the one initially seeding the dialog (and it is
also possible to specify a different wildcard match)
10) Removed the aResourceId parameter from all CEikEdwin functions
like RunFontDialogL() and RunCharMapDialogL(), with the function
supplying the id number internally (so there's no longer any
requirement for the caller to know this value).
Version 0.01.019
================
(Made by DavidW, 9 Mar 1996)
Uses: E32/054 F32/018 STORE/009 BAFL/021
GDI/014 FNTSTORE/008 FBS/014 BITGDI/014 WSERV/027 CLOCK/008
CONE/061 ETEXT/028 TBOX/043 FONTS/009 ALWL/012
From DavidW:
------------
1) Converted to E32(054) etc; here, the "etc" was about 90% of the
work involved in the conversion; there has been a great deal of new
code developed at all levels of EON system software; see the release
notes of all these system components for more details
2) Note in particular that you now link with WS32D.LIB instead of
with W32D.LIB, that TStream has changed to TStreamId, that E32ADT.H
has changed its name to E32BASE.H, that the interface to clocks has
been changed, that all TBuf_nn typedefs have been withdrawn, that
several StoreL/ RestoreL functions have become ExternalizeL/
InternalizeL functions, that various EText enums that used to be
global are now scoped, that ServiceL() functions have to move from
CServer subclasses to CSession subclasses (sometimes for better,
sometimes for worse), and that various sets of header files have been
rationalized, so you may find you need to #include different files
from before
3) Possibly the best single improvement, arising from the conversion,
is that you can now run Eikon programs outside the debugger, eg by
just typing "shell" from the CMD line; you can go one stage further,
and type eg "shell tbmptag" to start up the Eikon Shell and have it
start up, in turn, the *.PRG file you've specified (in this case,
TBmpTag.PRG)
4) In case you have any trouble with crashes in the Window Server,
Store, or EText, you may find it useful, after installing EIKON 019,
to copy the UTC (under-the-counter) files from R:\EIKON\TEMP into
your \E32SYS
(You should also delete old document files - especially those with
global text in them - and start your collection of saved files
afresh)
5) All Eikon test code has been converted to the new software, with
the exceptions that: THKeys0 and THKeys1 have been deleted (being
regarded as superseded by other test code - the only pieces of unique
code in them have been moved into a rejuvenated TMenuB1); TCalcBut
and TRecLd have been superseded by the new test program TCalcUi (see
below); and TEdwin2 will be converted later (it contains instances of
CPicture, and its conversion will require more care) - whilst TEdwin2
runs and you can do many things with it, you can't insert any
pictures
6) Altered the BACKUP verb of MNT.CMD to -x*.NCB files, ie to exclude
*.NCB files from the backup zip - which makes a huge difference!
7) Altered the status of *.MAK files in LI.PRJ listings from text to
binary, because it seems that they change more often under MSVC4 than
under MSVC2, and I'm fed up with vdiff.lis listings being swamped by
lists of changes in *.MAK files
8) Altered MNT DELWORK to delete any EIKON*.* files in \E32SYS
9) There's a new system in place for switching to an underlined
font: there's no longer any dedicated underlined system fonts;
instead, you just call eg SystemGc().SetUnderlineStyle(...)
10) As an experiment, hooked the Zoom In and Zoom Out commands
selected from the Zoom pop-up menu into the relevant functions in the
bitmap editor
11) Simplified and tidied a lot of code, all over the place, in the
course of making the conversion to the new software componentes
12) The SaveAs code for Demo wasn't setting the flag to say that a
document was loaded, with the result that the user got queried for a
filename again on exit; this bug had been replicated to lots of other
test code; all fixed now
13) If the text of the info message is changed while the previous
info message is still showing, the changeover now happens more
prettily (fixes bug HA-78); added test code for this case to TMenuB1
From Vamsi:
-----------
14) The text editor application is now released as part of Eikon, for
the time being, in its own new source directory \eikon\texted
15) The main view is a standard global text editor; you can type in
text, save it (to the native *.TED format), load it in again, or
"import" a plain text file, such as a RELEASE.TXT or even a
TEXTED.CPP file
16) TextEd has a reasonably full menu bar, with most of the items
leading for the moment to a "Not implemented yet" info print; dummy
dialogs exist for Find, Replace, and Goto
17) The Word Count menu item reports the number of words in the
document
18) Provided a new STRUCT definition in EIKDEF.RH, called
TOOLBAR_LABEL, to allow applications to put text labels eg at the top
of their toolbars (TextEd is considering putting the name of the
current document at the top of its toolbar)
From DavidA:
------------
19) New test code TCalcUi (superseding TCalcBut and TRecLd, which are
withdrawn) features a prototype of the top-level calculator view
20) This features recursive loading of controls within borders, using
classes that will shortly migrate, in part, into system code, where
they will facilitate improved dialog geometries
21) This also features improved "multi-label" buttons, eg with better
text positioning when there is only one line of text
From Julian:
------------
22) The bitmap editor now allows the user to draw filled or hollow
rectangles and circles - in any of the "standard" colors
23) The bitmap editor is now easier to use from the keyboard; eg when
drawing a line, rectangle or circle (or even when selecting a
region), pressing Space once will establish the first pointer down
position (ie the "anchor") and pressing Space again (with the cursor
moved elsewhere) finishes the operation
24) Keyboard users can move a selected region by putting the cursor
inside the selected region, and then using Shift-cursor keys (or
PgUp/ Dn etc)
25) Many internal improvements in the bitmap editor code
26) Titles of dialogs are now drawn in a larger, bolder font
(actually this change was made ages ago, but has been kept commented
out of the code, because at the time there were problems with
algorithmic bolding); this does, however, mean that a few dialogs
which used to fit on the screen are now several pixels too tall
From Neil:
----------
27) Changed both edwin and listbox code to use the new
GetClientRect() function in CCoeWinArea (in CONE 061), simplifying
various layout calculations; this required providing edwin with its
own version of BorderWidth()
28) Fixed a listbox bug (similar to an edwin one fixed a few days
ago) whereby dragging into the listbox from outside changed the
selection
29) Extra functionality in the AdjustClientRect() function of the
scrollbar manager class, allowing scrollable controls to draw in the
area a scrollbar would normally be in, if it wasn't too small to
display (some of the interactions here need a bit more debugging)
From Siamak:
------------
30) Modified CEikListBox::HandleListUpdate() to make it simpler and
more reusable; the idea now is that when clients of a listbox modify
its model (by, say, deleting some items), they should in general take
the following steps:
(a) call CEikListBox::ClearSelection()
(b) modify the model
(c) call CEikListBox::SetTopItemIndex()
(d) call CEikListBox::SetStateL() and/or SetCurrentItemIndex()
(e) call CEikListBox::HandleListUpdate()
31) Fixed bug in CEikListBox::MatchTypedChar()
32) Various internal listbox changes in preparation for horizontal
scrolling and left/right navigation in multi-column listboxes
From SimonC:
------------
33) Improved the storage mechanism used by the directory browser for
the set of current drive names (replacing a CDesCArray with a TInt32)
34) Other internal improvements to directory browser, eg improving
the behaviour of the list after directory changes.
Version 0.01.018
================
(Made by DavidW, 8 Mar 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/020
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/059 ETEXT/026 TBOX/042 FONTS/008 ALWL/011
From SimonC:
------------
1) Improved TLBox1 to stop the crashes that used to be possible
after changing from a longer list to a shorter list
2) Trying to read the directory from eg A: when that drive is empty
now produces an infomsg and an empty directory list, rather than an
error alert
3) Changed the buttonarray code to allow a spacer to be added to a
horizontal array
*) Made some changes to EIKCLOCK.* that Brendan wanted for
Time/World, ie added a virtual CEikClock::SetBackgroundColor, and
altered the definition of a flag to avoid a clash of values
From Siamak:
------------
4) Added a new public function to CEikListBox called
HandleListUpdate(), which should be called when alterations have been
made to the model of the listbox (such as additions or deletions); at
present this function will reset the current and top item indices to
0 (since the old values may no longer be valid), update the listbox's
scrollbars (if any), and redraws the listboxes (by default)
5) Fixed bug in CEikListBox::CalcHeightBasedOnNumOfItems(), which
was assuming that the listbox always had a "standard" border; there
is now a new listbox function BorderWidth() that returns either
EikStandardBorderWidth (whose definition has been added to EIKENV.H,
namely 1) or KEikSunkenBorderWidth
6) Fixed the bug in CEikListBoxView::Draw() that was causing
multi-column listboxes to draw incorrectly
7) Added CurrentItemIndex() and SetCurrentItemIndex() functions to
CEikListBox
From Bret:
----------
8) The sidebar pop-up menus (eg for Help or Clipboard) are now
positioned more appropriately, ie alongside the corresponding sidebar
button
9) Altered TMenuB0 to show how, in principle, additional items can
be dynamically into a sidebar pop-up menu (such as the Zoom menu);
this also tests how the pop-up menu positioning code takes account of
the length of the menu
From DavidA:
------------
10) Made some improvements to the multi-label buttons in TCalcBut:
11) Eg they are now more robust to some of the text being empty
12) They now cope with four separate pieces of text, rather than
three.
Version 0.01.017
================
(Made by DavidW, 7 Mar 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/020
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/059 ETEXT/026 TBOX/042 FONTS/008 ALWL/011
NB carefully: the *.MAK files, *.MDP files, and *.CMD files for this
release of EIKON all presuppose MSVC 4.0.
(Thanks to Brendan for pointing out that you can use MSVC 4.0, even
with versions of E32 prior to the watershed 054)
From Siamak:
------------
1) Fixed bug in the first letter matching logic, which could end up
in an infinite loop
2) Simplified the OfferKeyEventL() function in CEikListBox, making
it smaller and more reuseable for subclasses; as a result, the
corresponding method in CEikMultiColumnListBox is no longer needed
3) As an experiment, defined a flag for list boxes to make them
"show list box tips" whenever the current item is changed, which
defaults to displaying an info message with the full text of that
item; this feature lessens the requirement for a horizontal scrollbar
on a narrow listbox
4) Modified CEikListBoxView so that: (a) it now uses its "iViewRect"
as its clipping region; and (b) it fills any unused space in the
display area with the background color
5) Removed all MFI (multi-field item) stuff from Eikon (since MFI
listboxes will not be part of Eikon; a different implementation will
be used for eg the "file details" list box)
6) Various other internal changes to CEikListBox
7) Another change to listbox drawing code (made on Simon's PC) for a
case when the number of items in the listbox has reduced from what it
was previously (however, this change seems to have broken the display
of multi-column listboxes)
From SimonC:
------------
8) Altered TLBox1 to include a drive selector dialog, making the
resulting application more closely like the intended directory
browser system component (not yet fully functional)
9) Minor changes to EIKBUTAR.* as suggested by Brendan, mainly to
improve efficiency
From Bret:
----------
10) Clicking on any of the five sidebar buttons is now effective in
launching an appropriate menu or menubar (bear in mind the details of
the picture in the emulator aren't quite right)
11) The system resource file now has default menus for the clipboard
commands, the IR commands, the zoom commands, and the help commands
12) EIKCMDS.HRH now contains standard Cid numbers for commands from
the above menus
13) See TMenuB0 for an example of how an application can use the
"Warn" mechanism to alter the contents of, eg, the Help menu
From Julian:
------------
14) Added line-drawing facility to the bitmap editor
15) Another enhancement to the bitmap editor, for the case of pointer
events dragged outside the bitmap editor's window
16) General internal improvements to bitmap editor code
From Neil:
----------
17) Fixed an ancient edwin bug, in which clicking outside the edwin
and then dragging onto it could have unexpected results
18) Changed the list box draw code in the case of the list box being
resized (to prevent unnecessary work being done *every* time the list
box is drawn)
From MartinD:
-------------
19) Internal changes to the edit combo box, to prevent it from
crashing on destruction (mainly by removing code, and leaving it up
to the superclass to do more!)
From Brendan:
-------------
20) Tidied up the CEikBitmap class, making it more extensible (and
also fixing a potential memory leak)
21) Added another new test program, TBmp, to exercise these extra
features in CEikBmp
From DavidW:
------------
22 Converted all system code and test code to run under MSVC 4.0.
Version 0.01.016
================
(Made by DavidW, 6 Mar 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/020
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/059 ETEXT/026 TBOX/042 FONTS/008 ALWL/011
From Siamak:
------------
1) Added a ConstructL() function to CEikChoiceList, to make it
easier to construct choice lists dynamically (eg outside the context
of a dialog)
2) Modified the choice list's key event handling so that it now
treats Down as the same as Tab; this makes some sense in container
controls other than dialogs, where Tab may be appropriated for other
uses; normally it won't make any difference in dialogs, since the
Down key won't get passed on to an individual control (but there is
an interesting exception when there is only one focussable control in
a dialog)
3) Modified CEikListBox::SetExtentL() so that it now "rounds down"
(if necessary) the height of the display area of a listbox, to ensure
that a whole number of lines is displayed
4) Both standard and multi-column listboxes now have two
ConstructL() functions: one to specify sizes in pixels, and the other
to specify sizes in terms of items and numbers of characters
5) Provided pointer handling for multi-column listboxes (see TLBox
for an example)
6) Started a major extension to TLBox, to make it provide a
framework in which more realistic testing of listboxes can take
place; currently TLBox subclasses CCoeContainerControl to have a
control which will be used for displaying various kinds of listboxes;
you can navigate between these controls using the TAB key
(The toolbar displayed on the right isn't operational yet)
From SimonC:
------------
7) Modified the hierarchical list box code in TLBox1 so that it now
displays the contents of the current root directory
8) You can press Right (or Enter) on any expandible branch, to cause
it to expand one level, and display its contents indented one level
9) You can also press Left, when on the head item of a branch, to
collapse that branch again
From Neil:
----------
10) Change to listbox drawing code to avoid junk being left in the
margin regions after a listbox has been resized (there's a new
function DrawMargins())
11) Provided two independent fixes(!) for the problem of the bottom
right-hand corner of an edwin not being redrawn, in the case when it
has both a horiz and a vert scrollbar; the preferred fix is simply no
longer to call iWin.SetBackgroundColor())
12) Changing the font or extent of an edwin should now retain any
selection region, as well as its position
13) TScrlB1 now gets around the problem of requiring the user to type
a whole lot of data into its edwin, before it can be meaningfully
tested, by dumping a directory reading of the root directory into
the edwin on start-up! (this may cause a slight delay)
14) Added a horizontal scrollbar to TScrlB2, to test out redraws of
resized listboxes
From Julian:
------------
15) Reorganized bitmap editing code to cut down on storage
requirements
16) Also the code handles interim failures better, by means of a new
function HandleUnfinishedOperation()
17) A better scheme is in place for when the pointer is dragged
outside the visible bitmap editing window
18) Replaced some home-grown filename manipulation code with some
calls to F32 services
From DavidA:
------------
19) New test code TRecLd.* demonstrating some ideas to be used as the
basis for recursive loading of layout information from resource files
(such as will allow more complicated dialog geometries)
20) TRecLd has its own special subclass of CCoeContainerControl,
and parts of it are intended to migrate to CCoeContainerControl
itself in due course (this code requires CONE 059)
From Vipul:
-----------
21) Fix to EIKCONSO.CPP to make HideCursor() effective
From DavidW:
------------
22) Changed TEdwin2 to (at last!) allow data exchange between it and
a launched TBitEd0 sub-application. So insert "Paint" style pictures
now really does work - and they can be edited again later
(caveat: this version of Eikon can't yet use the version of EText
that supports persistence of rich text, so you can't save and load
your TEdwin2 documents)
23) Changed every CalculateRequiredSize() function to have a trailing
...L on its name, ie CalculateRequiredSizeL(), as required by the
corresponding change in CONE 059
24) Simplified some example code in TDialg0 that accesses its toolbar
button states, so as not to need to know about the intervening
buttonarray object any more (this simplification requires CONE 059)
25) Pixel positioning tweak in secret editor code, for slightly
improved visuals.
Version 0.01.015
================
(Made by DavidW, 5 Mar 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/020
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/058 ETEXT/026 TBOX/042 FONTS/008 ALWL/011
From Julian:
------------
1) Fixed problem (found by Pieter and diagnosed by DavidA) whereby
setting a line in a dialog dimmed or invisible could result in
preceding lines also being dimmed or invisiblised (this fix relies
upon CONE 058)
2) The same fix also deals with the case of strange effects when a
non-focussable line in a dialog has a prompt with a mnemonic
3) Added a non-focussable line to the "Text editors" dialog in
TDialg1 to test the above fixes
4) Added File Import and File Export dialogs to the bitmap editor
code in TBitEd0, allowing import and export of *.PBM files
5) The bitmap editor now has a permanent bitmap device (instead of
frequently creating and destroying one) to deal with all bitmap
manipulation, with the result that the drawing process has speeded up
From Natascha:
--------------
6) New module EIKPARAD.* containing code for three new system
dialogs: the Paragraph Alignment dialog, the Paragraph Spacing
dialog, and the Paragraph Indents dialog
7) New functions RunAlignDialogL() etc in CEikEdwin, to run eg the
Paragraph Alignment dialog for that edwin
8) TEdwin0 now has three new toolbar buttons, allowing access to
these three new edwin functions
(TEdwin0 already saves its global character and paragraph formats to
file, so re-opening an existing TEdwin0 document will reinstate the
formatting present in it when it was last edited)
From DavidW:
------------
9) Converted TBitEd0 to be a document-oriented application, with
files with typical extension *.PNT; save a file in TBitEd0 and you'll
see it appear in the list offered by the Shell in its Documents
dialog (identified as belonging to the TBitEd0 application)
10) TBitEd0 is now an auto-saving application, ie saving all changes
automatically on exit, S3-style, without prompting the user for
confirmation
11) More preparation for processing sidebar events other than clicks
on the menu button: the code that eventually deals with these has
been routed in the first instance through the menu bar, to ensure
that these events are treated serially (eg so that you don't end up
with two sidebar popup menus active at the same time)
12) On the PC, just as F9 is mapped to the menu button on the
sidebar, so now is F8 - F5 mapped to the Help, Clipboard, Irda, and
Zoom sidebar buttons respectively
13) Put a fix in place to prevent the foreground application
receiving sidebar events when the Eikon Server has a dialog that is
active (eg the Task List dialog).
Version 0.01.014
================
(Made by DavidW, 4 Mar 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/020
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/057 ETEXT/026 TBOX/042 FONTS/008 ALWL/011
From Neil:
----------
1) Added SetXScrollBarFlags() and XScrollBarFlags() (where 'X' is
either H or V) in CEikListBox, to enable non-default scrollbars
2) Changed listbox scrollbar flag names from "Style" to "Flags"
since they effect functionality as well as appearance (and this also
keeps things consistent with eg CEikEdwin)
3) Added similar ScrollBarFlags functions to CEikEdwin
4) Replaced a call to FormatTextL() in the SetExtentL() of CEikEdwin
with a call to a new function ResetViewL(), also called from
RunFontDialogL(). This function keeps the line with the cursor in
the same position on the screen as best as possible, instead of
resetting it to the first line (as FormatTextL() did). To see the
effect of this change, eg use TScrlB1 and resize its edwin
5) Changed SetScrollBars() in CEikEdwin to cater for horizontal as
well as vertical scrollbars
6) Added a copy of the properties dialog from TScrlB2 into TScrlB1,
allowing changes to the number of lines of data (not yet functional),
the number of lines visible, and the width of the edwin
(it's now clear that both scrollable listboxes and edwins have redraw
problems when resizing - these will be addressed soon)
7) Fixed a scrollbar bug (found by SimonC) in which a scrollbar with
dimmed button(s) got increased such that new buttons were added, but
the new buttons didn't get dimmed as required
From Julian:
------------
8) In the bitmap editor, the way the focus pixel has been improved
(following an idea in Draw), using a "+" cross in "Pixel" mode of the
application
9) In "Region" mode, the cross changes to two crossed lines (try it
and see), and when the focus pixel is inside the selected region, a
"X" cross is used instead
From Vasmi:
-----------
10) Fixed the SetFileNameL() function of CEikFileNameSelector so
that, if a specific filename is passed in, that name (if it exists) is
the one initially displayed in the choice list
11) Made the Edit Picture function in TEdwin2 cope with either the
"bitmap" or the "simple" kind of picture, by bringing up the correct
dialog in either case
From Brendan:
-------------
12) New module EIKTAG.* containing two new classes, CEikTag and
CEikBitmap, each to be used in due course in Alert dialogs
13) A CEikTag is like CEikLabel in many ways (a proper analysis of
whether the two classes ought to be combined needs to be done); it is
a text label that is non-focussable, can change font, can align its
text, and does not recognize mnemonics
14) There's also a CEikBufTag variant of CEikTag, that does not
require memory allocation to alter its text
15) CEikBitmap is a simple bitmap control
16) See new test program TBmpTag for code that exercises CEikTag and
CEikBitmap
17) Also made some improvements to TWldSl
From Siamak:
------------
18) More work on MC (Multi-Column) list boxes; currently, keyboard
navigation/selection (with no scrolling) works, but scrollbars,
pointer events, etc, are not supported yet
19) See the latest TLBox for an example of an MC listbox
20) Made some internal changes in listbox code to improve reusability
From SimonC:
------------
21) Made some detailed changes to scrollbar positioning code, to try
to ensure the borders of their buttons always get drawn properly (this
turns out to be quite complicated, as a side-effect of the "dense
packing" flag, which in effect allows buttons to lie about the extent
of screen space they need to draw over)
From MartinD:
-------------
22) The edit combo box now displays a cursor (see TCombox)
23) Other internal improvements to the edit combo box code
From Bret:
----------
24) Changes to test code TMenuB0 in preparation for testing launching
pop-up menus on a "pen held still" event
From DavidW:
------------
25) Re-arranged a lot of the code in TEdwin2, to avoid some memory
leaks, and to clarify its structure generally
26) In TEdwin2, there is now only only one "Insert picture" menu
command, that leads onto a dialog with a listbox of four different
picture types - "Paint", "Draw", "Simple", and "Bitmap from file";
choosing "Simple" or "Bitmap from file" runs up an appropriate
dialog; choosing "Paint" now runs up the TBitEd0 test application
27) Moved the CEikTitleWindow class out of TEdwin0 test code into
EIKAPPC.*, so that it can be used by other applications as well; in
particular it is now used by TBitEd0, in the case when it is being
run as a sub-program (eg from TEdwin2)
28) Provided LaunchPopupMenuL() function in CEikonEnv, which can be
called whenever an application desires; changed code in TMenuB0 to
give an example of how to call this function; the "return value" is
that the HandleCommandL() function of the CEikAppControl subclass is
called (the same as for commands chosen from the menubar proper)
(in principle cascade sub-menus can be launched from any such popup
menu, but for the time being, pen navigation into these sub-menus
won't be possible)
29) Added a new utility function AddDialogLikeControlToStackL() to
CEikonEnv, returning the CCoeControlStack* pointer of the stack the
passed control was added to; changed code in eg EIKDIALG.CPP and
EIKCHLST.CPP to use this new function
30) The "No"/"Yes" pair of buttons in eg the Query dialog now respond
to Alt-N and Alt-Y respectively (but not yet to N and Y)
31) Fixed a bug in the "copying deferred loaded data" part of Demo,
which could cause a crash in the case when no document file had been
loaded.
Version 0.01.013
================
(Made by DavidW, 1 Mar 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/020
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/057 ETEXT/026 TBOX/042 FONTS/008 ALWL/011
Uses CONE/057 for the first time
From Julian:
------------
1) Further developments in the bitmap editor, allowing moving and
clearing of a select region (ie including "drag and drop")
From MartinD:
-------------
2) First cut of an edit combo box control, ie an editor with a tab
button to expand a list of ready-made choices (such as a history
list); implementation in the new module EIKCMBOX.*
3) See test code TCOMBOX.* for an example (early days yet)
From SimonC:
------------
4) Analog clocks can now have their background color specified. At
present this happens only if the flag EEikAnalogClockSelectBackground
is set, because the drawing flickers quite badly and the clock hands
are hidden until they are animated. For demo purposes, all the
clocks in TDialg0 behave like this. Hopefully the CLOCK.DLL can
offer some more support here, otherwise the whole feature will get
thrown out and the spec team will simply have to do without this
particular bell-and-whistle
(this new clock feature requires that a pile of new *.PBM bitmaps get
placed in your \e32data; this happens automatically inside EIKON's
MNT GETREL)
5) Clocks now also have their border drawn by default. This can be
disabled via the flag EEikClockNoBorder. All toolbars have this set
for now
6) Converted the toolbars in the Shell and TDialg0 to be
buttonarrays, so that their controls get sized properly (before too
long, it's likely that *all* toolbars will convert to this scheme)
7) Buttonarrays have been generalized to allow them to include
spacers
8) Other minor internal changes to buttonarray code
From Neil:
----------
9) Upgraded CEikEdwin to use the scrollbar manager functions for
positioning and sizing scrollbars
10) Fixed a small bug in listbox code that prevented the scrollbar
"snapping" into position on the thumb release
11) Fixed a small bug (rounding error) in the calculation of the
thumb position in scrollbars
12) In TScrlB2, the "number of items" editor in the properties dialog
is now functional
From Siamak:
------------
13) Changed CEikListBox::Draw() to draw a 3D border if the listbox
flag EEikListBoxSunkenBoxBorder is set
14) Started work on multi-column ("snaking") list boxes, as will be
used in the (real) Shell; implementing this control requires two new
classes: CEikMultiColumnListBox (derived from CEikListBox) and
CEikMultiColumnListBoxView (derived from CEikListBoxView)
15) Modified the test app, TLBox, to use a CEikMultiColumnListBox
(although this still behaves like a standard listbox at the moment)
instead of an MFI listbox
16) Other internal listbox changes
From Bret:
----------
17) Clicking on sidebar buttons other than the menu button now
results in an IPC message to the foreground client (previously, this
only happened for the menu button)
18) For now, the response to these other buttons is simply to display
an info print
From Brendan:
-------------
19) Improvements to world selector drawing code
From DavidW:
------------
20) Renamed the "MDWORK" verb of MNT.CMD to "MAKEWORK", to match E32
21) Simplified the forest of listbox classes, by throwing out all the
mad mixins (definition: a "mad mixin" is an M class with a Base()
function that returns a CBase pointer, clearly showing that the class
design is mad :-)
22) Various other changes to listbox classes to make them more
flexible and easier to use (without having to duplicate lots of code)
23) New test program TLBox1, showing the start of a hierarchical
listbox, together with various classes that will end up, after due
evolution, in Eikon.
Version 0.01.012
================
(Made by DavidW, 29 Feb 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/020
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/056 ETEXT/026 TBOX/042 FONTS/008 ALWL/011
Uses TBOX/042 and CONE/056 for the first time
From Brendan:
-------------
1) Incorporates first cut of Eikon world selectors; these allow you
to select a city or a country, or a city in a particular country
2) The selectors consist of CWorldSelector and CWorldManager; the
selectors must be linked to a manager, which keeps track of the state
of the "world ID", by reference to the world database
3) A city selector and a country selector can exist as a pair,
sharing their world manager
4) Default keyboard behaviour is as follows: Ctrl-L locks the search
mode of the selectors (specific text can be displayed for a
particular search mode); otherwise incremental matching applies
5) See the new test program TWldSl, in which various world selectors
are created in different ways (singly and in pairs); Test1
adds/removes a sunken box border; Test2 changes the font; Test3 shows
the controls in a dialog
From SimonC:
------------
6) Defined two new toolbar flags, EEikTBarLeftOfScreen and
EEikTBarTopOfScreen; changed TDialg0 to have its toolbar at the left
of the screen
7) Changed CEikAppControl::GetClientExtent() to pay closer attention
to the position of the toolbar (which side of the screen, etc)
8) Added a new function CreateSecondToolBarL to CEikAppControl,
essentially containing the code that used to exist separately in test
code like TBut0 and TDialg0, to ease the creation of an auxiliary
toolbar (sometimes called "toolband") from a resource file; see TBut0
or TDialg0 for how to use this new function
9) In an attempt to prevent the uneven line down the side of
toolbars caused by clocks and other controls which don't draw a
border, have gone back to having toolbars and button arrays draw a
border; clocks at the top or bottom of a toolbar presently cover some
of this border
10) Various other small changes to the toolbar and buttonarray code
in the wake of recent changes to the box layout engine:
11) CEikSpacer now has new functions SetSpacerHeight and
SetSpacerWidth, so that button arrays can specify eg the height of
spacers; currently spacers are set to the same height as the system
font, if toolbar buttons are individually stretchable, and (still)
the same height as buttons otherwise
From Neil:
----------
12) Started a re-write of the ScrollBarManager class, to add in extra
functionality (eg tiling functionality) currently duplicated by
different clients of scrollbars (such as edwin and listbox); thus
there are new functions CalcClientRect() and TileScrollBarsL()
13) The former functionality of AddScrollBarL() has had to be split
into a number of different functions, eg CreateScrollBarL() and
AddScrollBarToClient() (plus various SetXxxxL() functions), to cope
with wider sets of requirements
14) Converted list boxes to use the new scrollbar manager functions,
instead of positioning the scrollbars manually
15) Partially converted edwin to the new scrollbar manager scheme;
likewise updated TScrlB0
16) In TScrlB2, the visible items and width number editors in the
Properties dialog are now functional; this has exposed a couple of
bugs in the listbox redraw code and thumb drag scrolling
From Siamak:
------------
17) CEikListBox now has a new ConstructL() function that allows its
client to specify the size of the listbox in terms of the numbers of
items and the number of character widths per item; the size of any
scrollbars to be added on gets taken care of automatically; this
simplifies application code such as that in TLBox
From DavidA:
------------
18) One line fix to EIKEDWIN.CPP to prevent a crash when laying out a
dialog like the "No buttons" dialog in TDialg0.
Version 0.01.011
================
(Made by DavidW, 28 Feb 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/020
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/055 ETEXT/026 TBOX/041 FONTS/008 ALWL/011
From SimonC:
------------
1) Various improvements to the CEikClock classes, eg new flags are
available offering a choice of clock styles. Eg clocks can have
shadowed hands/figures and can display a date, and the second hand is
optional for analog clocks
2) See the three new dialogs in TDialg0 for many examples of clocks
(eg a dialog with no fewer than four clocks in it)
3) New functions SetClockFlags and SetBackgroundColor
4) A CEikClock is now always created in its own window, to prevent
problems with the background of the containing window obscuring part
of the clock display
5) Clocks in toolbars are once again drawn centred rather than
left-aligned
6) The background color is once again drawn throughout the whole
size of a toolbar (rather than being missed out from the area around
a clock)
From Julian:
------------
7) Numerous further improvements to the bitmap editor, TBitEd0
8) The individual pixels can now be altered to any one of four
colors (black, dark gray, light gray, or white), by clicking on latch
buttons in the toolbar
9) To start with, the bitmap editor will create a plain bitmap sized
30x30, but this will be sized larger automatically, if the user
alters a pixel outside this region
10) Started work on Zoom In and Zoom Out feature (the grid won't be
drawn if the bitmap ratio is too small)
11) Scrolling up/down and left/right is now possible, within the
bitmap drawing
(as before, some of the problems seen in using TBitEd0 can be
attributed to known defects in BITGDI)
From Neil:
----------
12) A few more bug fixes for awkwardly sized scrollbars
13) Moved all scroll-bar "move button" code into its own new module,
EIKSBMB.*, to allow easier independent access to it by application
code (eg code wanting buttons with the Up Down Left or Right
triangles drawn on them)
14) New testcode TScrlB2 with a listbox with a scrollbar, together
with a dialog to change the number of items, number of visible items,
and width of the scrollbar (the dialog has no effect yet)
From Siamak:
------------
15) Added more support for horizontal scrollbars in listboxes; in
TLBox, you can now see a horizontal scrollbar (though it's not
functional yet)
16) Fixed a bug in the CreateDefaultModel() function of CEikListBox,
which wasn't calling the ConstructL() function for the listbox model
it had created
17) Fixed a sizing bug that was showing up in TBut0 to do with
positioning pop-out listboxes
From DavidW:
------------
18) Converted to the new box layout engine code, from CONE 055; the
main change here is that the default alignment flags have changed
from EBloAlignTop|EBloAlignLeft (which used to have the value 0) to
EBloWholeWidth|EBloWholeHeight (which *now* has the value 0)
19) Most of the layout code in Eikon seems to have been converted
successfully; a known exception is the "No buttons" dialog in
TDialg0, which presently panics (a fix is being undertaken); note
that various toolbars and dialogs now look slightly different from
before; some of these changes are positive and some are not! (further
changes are pending here).
Version 0.01.010
================
(Made by DavidW, 27 Feb 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/020
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/054 ETEXT/026 TBOX/041 FONTS/008 ALWL/011
From Julian:
------------
1) Further improvements to the bitmap editor TBitEd0, which now
allow the bitmap to be altered and the changes saved to file
2) For now, the only possible change is to set the current pixel to
black, which you do by pressing Space
(due to a couple of known bugs in BitGdi there are problems with the
details of this; the version of BITGDID.* now in R:\EIKON\TEMP fix
some, but not all, of these problems)
3) If you make changes and then try to quit the program, you will
get an opportunity to save your changes, which will overwrite the
original file, in \e32data
(you will be able to get back the original *.PBM file, if you need
it, from \EIKON\SRCDATA)
From Siamak:
------------
4) Various bug fixes and improvements to the listbox code
responsible for redrawing the selection and/or current item
5) Changed inter-item spacing in list boxes to 2 instead of 4 (so
that more items will fit into a given space)
6) Fixed some problems with the TLBox app, eg creation of the
listbox with the wrong height, and non-observance of cleanup stack
guidelines
From DavidW:
------------
7) Many changes to storing and streaming functions, in order to
support embedded objects and multiple streams more fully
8) Eg the CEikAppControl virtual functions StoreL and RestoreL have
split in each case into two: StoreDocComponentsL() followed by
ExternalizeDocL(), and InternalizeDocL() followed by
RestoreDocComponentsL() - the order being significant! The
...ComponentsL() functions take a store as a parameter, whereas the
others just take a stream
9) The end result of these changes can be seen in the latest Demo,
which can now launch TEdwin0 (from the Frame | Global Text menu) and
which can store and restore TEdwin0 data on behalf of its sub-program
(the Demo file format version number has been incremented, and
previous *.DEM files will fail to load)
10) Corresponding changes also needed to be made to the clipboard
class, allowing embedded objects to be streamed to and from the
clipboard as well as "standard" streams (again, try Demo as an
example)
11) Two new classes have been introduced in Demo, which are intended
to move to system code in due course (once they have acquired some
stability): RTempFile and RDeferredStream
12) Changed CReadClipboard not to Leave if there is no clipboard
file, but just to put the clipboard into a state whereby all
GetReadStream...() calls fail with KNotFound.
Version 0.01.009
================
(Made by DavidW, 26 Feb 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/020
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/054 ETEXT/026 TBOX/041 FONTS/008 ALWL/011
From DavidW:
------------
1) Numerous internal changes as preparation for supporting two
applications running inside the same Eikon environment
2) To an extent you can already see two applications running inside
the same environment; start up the Demo app, load a file (or create a
frame), and then use "Frame | Global text" to run up a copy of
TEdwin0 (which you will need to have built first) inside Demo; what's
still missing is an actual transfer of edited data between these two
apps
3) Changed the TEikDocHeader class so that several of its functions
are now static; see eg Demo or TEdwin0 (or TDialg0 or TEdwin1) for
how to use TEikDocHeader in its new incarnation
4) Made changes to resource file handling, in line with new builds
020 of BAFL and 054 of CONE
5) New functions StoreAppToStreamL and RestoreAppFromStreamL in
CEikAppControl supersede and extend StoreAppL() and RestoreAppL(); to
use these functions, you will need to have provided your
CEikAppControl derived class with GetAppVersion() and GetAppName()
functions
6) New function AppObserver() in CEikAppControl, to see (in effect)
whether the application is being run as a sub-application by another;
this function returns NULL for a "top-level" invocation, and
otherwise the handle of the "calling" CEikAppControl
7) See code in TEdwin0 for when an app should be calling
AppObserver(), and what to do with the result
8) New data member iTitle in CEikAppControl which, if present, gives
the "title text" of this sub-application, as run from the point of
view of its caller; again see TEdwin0 for an example
9) Renamed the DoOpenL() functions in test applications to
DoFileOpenL(), and likewise DoSaveL() to DoFileSaveL().
Version 0.01.008
================
(Made by DavidW, 23 Feb 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/019
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/053 ETEXT/026 TBOX/041 FONTS/008 ALWL/011
From Julian:
------------
1) Started work on a new test application, ..\tsrc\TBitEd0, which
features a toy bitmap editor
2) Currently TBitEd0 displays a hard-wired bitmap, scaled and with a
grid drawn on top of it, supporting cursor navigation, but it is not
yet possible to alter the drawing displayed
3) Refined the clipboard interface, so that the read and write
clipboards are now created by a NewLC() call (formerly NewL()), to
give added system-wide protection against the clipboard file being
left tied up due to poor application programming; clients of the
clipboard now typically call CleanupStack::PopAndDestroy() when they
are finished with it
4) Changed the "Double click settings" dialog in the Shell, not to
require the use of floating point maths (hence a numeric editor is
used rather than a floating point editor)
From Neil:
----------
5) More of the "weird size problems" with scrollbars at various
awkward sizes (and awkward numbers of buttons) should have been
resolved now, due to internal changes
6) Some of these internal changes have the side-effect that the
SetLength() call to a scrollbar (or scrollbar manager) can Leave on
occasion, if a new button should be created, but fails with OOM - so
the function changes name to SetLengthL(), and callers may need to
take appropriate evasive action
From Siamak:
------------
7) Made various bug fixes and minor improvements to the listbox
code, and to MFI listboxes in particular (but things still aren't
quite perfect yet)
8) The main new feature is that MFI listboxes now truncate text
fields that exceed the column width, and show a trailing ellipsis,
rather than simply relying on GDI to clip the text.
Version 0.01.007
================
(Made by DavidW, 23 Feb 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/019
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/053 ETEXT/026 TBOX/041 FONTS/008 ALWL/011
From Julian:
------------
1) Converted Eikon code to the new double-click mechanism (present
in Wserv 025, superseding the mechanism in CONE prior to 053)
2) The start-up code of the Eikon Server process calls the
SetDoubleClick() function of RWsSession to initialize double click
parameters
3) Added a dialog in the Shell to allow the user to alter the double
click parameters (delay between clicks, and a measure of the distance
between the clicks)
4) Altered controls as required to the new scheme (mainly by
removing code!)
From Siamak:
------------
5) Various changes to the MFI (multi-field item) list box,
especially its item viewer, which now enforces alignment of fields by
clipping each field of an item if it exceeds the column width
(currently, all text fields of a MFI have the same max width)
6) The MFI list box item viewer now draws the item's icon (if it
exists); see TLBox for an example
(Note that this work is not complete and further improvements to MFI
listboxes are pending, eg better highlighting of items)
From Neil:
----------
7) Added draw routines for all scrollbar buttons using new functions
DrawArrowInRect() and IconRect(), both in CEikScrollMoveButton
8) Changed the default horizontal scrollbar in TScrlB0 to be long
enough to show all buttons, to allow TScrlB0 to test the new drawing
routines in both horizontal and vertical cases
From SimonC:
------------
9) Improved the code in EIKCLOCK.* so that the three sizes of analog
clock currently available now have hands more in proportion to their
sizes
10) Clocks also get positioned correctly now (more often!)
11) Added more test cases of buttons with mnemonics, to the dialogs
in TBut0
12) Fixed a bug in the button code that was preventing a button with
a mnemonic on its second line of text from being accessed via the
keyboard
From Bret:
----------
13) Corrected a bug in the selection of dimmed cascade menu items
14) Changed various menu pane functions to take a TRect& as a
parameter, rather than a TRect (the former is almost always more
efficient)
From DavidW:
------------
15) Updated MNT.CMD to fetch the latest RCOMP.EXE, v274, which was
successfully used to build this release (and all the test code).
Version 0.01.006
================
(Made by DavidW, 22 Feb 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/019
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/052 ETEXT/026 TBOX/041 FONTS/008 ALWL/011
From SimonC:
------------
1) Added OfferMnemonicL() and DrawMnemonic() functions to CEikButton
so that dialog push buttons could have a mnemonic key
2) See the "Clocks" button in the Customize Toolbar dialog for an
example of a push button that can be actioned by its mnemonic
3) To support mnemonics in buttons with two lines of text (which are
drawn in the smaller system font), another system font had to be
defined, "SmallerSystemUnderlineFont"
4) Added a version number to CEikToolBarData so that code that loads
customized toolbar data from profile files oughtn't to panic if more
fields are added later
5) Altered the CalculateRequiredSize of a button array to remove
most of the assumptions in it that the array is laid out vertically
From Bret:
----------
6) Menu panes now always have space for ticks and buttons on the
left, and space for cascade symbols on the right, irrespective of
whether these items actually appear or nor. This achieves a more
consistent look for all menu panes (as suggested by MartinB) and
makes those which had just buttons/ticks of just cascades look
visually balanced
7) The width of the space for buttons, ticks and cascades is set by
a constant; the above changes not only approved the visual appearance
but also allowed coding simplifications
8) Added new function CEikMenuPane::DrawCascadeSymbol(), which is
called by CEikMenuPane::DrawItem() and draws a cascade symbol
algorithmically (rather than using a character in a font)
9) Set about disabling dimmed cascade items on menu panes
(previously if a cascade was set dimmed, it would still launch a
cascade if selected); to implement this feature in an application,
the cascade items in the menu pane must be given a command ID; with
this command ID, the application can call SetItemDimmed()
10) Updated TMenuB0.* to toggle and test a dimmed cascade menu item
From Julian:
------------
11) Changed various pieces of text-message preparation code to use
Format() instead of eg Append(), so as to be more international
12) Renamed the function CEikMenuPane::SetItemText() to
SetItemTextL(), in recognition of the fact that it can Leave
13) Put a query dialog into TDialg0 before going into an endless loop
in response to the "Busy" toolbar button
14) Various changes and simplifications to the detailed implementation
of the clipboard
15) See the latest code in ..\src\eikedwin.cpp or ..\demo\demain.cpp
for examples of using the clipboard; note in particular how the code
in ..\demo puts *two* data formats into the clipboard: one in its own
"native" format, and the other in a kind of "global text" format
16) The definition of format types has been separated into its own
header file, EIKCLIPB.HRH, leaving EIKCLIPB.H without any specific
assumptions about the Eikon environment
From Neil:
----------
17) Further improvements to scrollbar resizing layout logic in
EIKSCRLB.CPP; for now, any excess "shaft space" resulting from
removing buttons is drawn just as a filled rectangle
18) TScrlB0 is now happy with many "too short" scrollbar lengths,
though there are still a few strange happenings that are being
debugged
From Vamsi:
-----------
19) In TEdwin2, the "Edit picture" dialog is now called when the
cursor is placed either before or after a picture
20) Stopped duplicating the resource for the "Edit picture" and
"Insert picture" dialogs (which differed only in their titles); now
re-use the same resource, and choose the relevant title at runtime,
using CEikDialog::SetTitleL().
Version 0.01.005
================
(Made by DavidW, 21 Feb 1996)
Uses: E32/053 F32/017 STORE/008 BAFL/019
GDI/012 FNTSTORE/007 FBS/013 BITGDI/013 WSERV/025 CLOCK/007
CONE/052 ETEXT/026 TBOX/041 FONTS/008 ALWL/011
From DavidW:
------------
1) First released compatible with the above versions of E32 etc:
(The API to the Clock DLL has changed fundamentally, and the code in
EIKCLOCK has only been partially converted to this new API. So don't
be too surprised if, for this release, you see clocks badly drawn!)
2) Programs that linked with FBSD.LIB now have to link with
FBSCLID.ZIP instead
3) All "RGroupWindow"s become "RWindowGroup"s
4) As an experiment, renamed the GETJBLD verb of MNT.CMD to GETCOMPS
(for "get components"). Thus
GETBLD = GETSRC + GETCOMPS
Version 0.01.004
================
(Made by DavidW, 21 Feb 1996)
Uses: E32/052 F32/016 STORE/007 BAFL/017
GDI/010 FNTSTORE/005 FBS/012 BITGDI/012 WSERV/024 CLOCK/006
CONE/051 ETEXT/025 TBOX/040 FONTS/007 ALWL/010
From Julian:
------------
1) Converted the cliboard code into something much closer to the
scheme described in the latest minutes of the Architecture Team
(an enum for the format type is still being used for the time being,
though, pending the arrival of UUID technology)
2) CEikClipboard has gone, being replaced with CWriteClipboard and
CReadClipboard (both derived, behind the scenes, from CClipboard);
the lack of "Eik" in these class names reflects the desire to move
this class out of Eikon altogether (Store is a possible new home)
3) CEikonEnv no longer creates any clipboard instance during
application startup, but leaves it to software components to create
transient clipboard instances as and when needed
4) A single line editor now will only paste in text data in the
clipboard up to the first paragraph delimiter in it (to avoid a
single line editor ending up with multiple paragraphs in it!)
5) For the time being, picture characters in clipboard text are
excluded during a paste operation, to prevent random damage
From KevinD:
------------
6) Added support for on-the-fly changing of maximum and minimum
field values in MFNEs: use UpdateMinAndMax() - any out-of-bounds
values are reset within the new limits
7) Updated TDialg1 so that the Number Editor dialog has a tick box
toggling the max/min values of the CEikIntegerEd from +/- 1600 to +/-
999
8) Changed the color of MFNE prefixes to that of the digits
9) Tweak to alignment of MFNE digits, post-fixes and pre-fixes
10) Fixed bug where two pointer clicks on the start of a MFNE field
did not display the cursor
From Siamak:
------------
11) The vertical scrollbar for listboxes is now operational, ie it
can be operated via the pen, causing scrolling
12) Fix to bug whereby listbox heights were sometimes leaving space
for a horizontal scrollbar, even though none is present (resulting in
partially visible items)
13) Fix to bug whereby a flashing cursor in an incrementally matching
listbox could get temporarily separated from the highlighted item
From SimonC:
------------
14) Customizable toolbars can now have the order of their buttons
specified; as usual see either TBut0 or Demo
15) This new "order" information is saved to the application's
profile file automatically (in the absence - yet - of internal
versioning numbers for toolbar customization data, this means that
old *.APF files will fail to load properly, and indeed had better be
deleted, to avoid panicking the app on startup)
16) Altered the dimming code for radio button groups, by providing an
explicit SetDimmed() function, thereby avoiding the need to call
SetDimmed() on individual radio buttons inside any Draw() function
From Vamsi:
-----------
17) The Edit Picture dialog in TEdwin2 now successfully edits
pictures of the "simple" kind, provided the cursor is positioned just
in front of one beforehand; their height can be altered, or their
"brush" attribute
18) Changed CEikEdwin::NotifyForwardChangedL() from protected to
public, to allow it to be called from outside (as required by TEdwin2
code)
From Neil:
----------
19) Internal preparation for allowing scrollbars to be dynamically
resized, and still cope with all their buttons (not fully working
yet)
From DavidW:
------------
20) Converted Demo to the scheme of automatic saving of any changes,
on exit, and gave it an explicit "File save" menu command to boot
21) Converted the "Scale bitmap" dialog in Demo to use the new
UpdateMinAndMax() function to set the bounds for the MFNE there
dynamically, thereby reducing application-specific code (and
improving the UI of this dialog)
22) Put a few new text messages into EIKON.RSS, eg "Saved" and
"Nothing to save".
Version 0.01.003
================
(Made by DavidW, 20 Feb 1996)
Uses: E32/052 F32/016 STORE/007 BAFL/017
GDI/010 FNTSTORE/005 FBS/012 BITGDI/012 WSERV/024 CLOCK/006
CONE/051 ETEXT/025 TBOX/040 FONTS/007 ALWL/010
From Bret:
----------
1) Change to the way the menubar code deals with hot keys of items
that are dimmed: it is now clearer that cooperation from the
application is required here; the application control should supply a
CheckHotKeyNotDimmedL(TInt aSelection) function, and return EFalse if
the selection is dimmed
2) According to the return value from this function, the menubar
code called either HandleCommandL or HandleAttemptDimmedSelectionL;
the default implementation of CheckHotKeyNotDimmedL (in the class
MEikMenuObserver) always returns ETrue
3) Modified TMenuB0 to provide an example of the above
4) Also modified TMenuB0 to provide an example of hot-key tables
changing when the menubar changes
From Neil & Siamak:
-------------------
5) List boxes now support having scrollbars, if flags
EEikListBoxVScrollBar or ...HScrollBar are set
6) See the latest TLBox for an example of a listbox with a vertical
scrollbar; this scrollbar moves automatically when the list is
scrolled on account of the highlight moving (though the reverse does
not yet happen, ie user interaction with the scrollbar has no effect
at present)
(one side-effect of this change in list-box code, strangely, is that
it seems that "simple" listboxes can show parts of list items, rather
than just whole numbers of them)
From SimonC:
------------
7) Horizontal groups of radio buttons can now be drawn dimmed if
required
8) In the absence of forthcoming dialog technology like multi-page
dialogs, split the Customize Toolbar dialog into two, with the part
specifying the clock (if any) being accessed via a tab-out button
9) The "spacer" option in the Customize Toolbar dialog is now
(partially) functional: checking this box gives a spacer after the
button if it is visible
10) Added a "button order" field to the Customize Toolbar dialog, but
this isn't functional yet
From Neil:
----------
11) Fixed a bug with let a scrollbar's button animate if the user
clicked on the bottom pixel of its border, but without the event
being recorded
12) Added a new scrollbar member data iMinReqLengthToDisplay, which
gets updated during CreateComponentsL() and will be used in resolving
layout problems if a scrollbar isn't long enough for all its
requested components
From Vamsi:
-----------
13) Started work on "Edit picture" functionality in TEdwin2; the
application can detect if the cursor is positioned just before a
picture
14) An appropriate "Edit picture" dialog is presented on demand,
though this isn't functional yet
15) Added an inline function Text() to CEikEdwin, returning the
CGlobalText pointer to its editable text object
From DavidW:
------------
16) TEdwin1 now auto-saves changes to its "settings" (ie the width of
its edit windows) on exit, to a profile file
17) Brought TEdwin0 into the twentieth century, by giving it a menu
bar
18) TEdwin0 is now store-aware, with a File menu with Open and SaveAs
commands; TEdwin0 reads and writes *.ED0 files, which contain its
formatting information (ie, which font it is using) as well as text
19) For the first time in a test application, TEdwin0 also has a
"Save" command (as opposed to just having a SaveAs command), and
tracks whether any changes have been made to its contents; these are
automatically saved to file on exit
(there's clearly a lot of similarity between the File SaveAs (etc)
commands of all the different test apps; the scope for additional
code-sharing and design-sharing, with new functions in Eikon, will be
explored shortly)
20) CEikEdwin wasn't reporting EEikCeStateChanged to its observer on
a format change (eg a font change); now fixed.
Version 0.01.002
================
(Made by DavidW, 19 Feb 1996)
Uses: E32/052 F32/016 STORE/007 BAFL/017
GDI/010 FNTSTORE/005 FBS/012 BITGDI/012 WSERV/024 CLOCK/006
CONE/051 ETEXT/025 TBOX/040 FONTS/007 ALWL/010
EIKMAIN.* is no more
--------------------
1) EIKMAIN.* has been split into EIKENV.* and EIKAPPC.*, containing
the classes CEikonEnv and CEikAppControl respectively (also, a small
part of EIKMAIN.* has been relocated as BNDARRAY.* in CONE)
2) Most application *.CPP files simply change from #including
<eikmain.h> to #including both of <eikenv.h> and <eikappc.h>
3) However, there are significantly fewer inter-dependencies between
different Eikon source modules (which, among other things, can result
in faster incremental builds of Eikon source code)
From Vamsi:
-----------
4) Further pushed back the boundaries of pictures in rich text, with
developments in the test application TEdwin2:
5) The "Insert bitmap" dialog now allows the filename of the *.PBM
bitmap to be specified
6) The "Insert picture" dialog now allows the "brush style" of the
centre of the picture to be specified (eg forward diagonal,
cross-hatch)
From SimonC:
------------
7) The Customize Toolbar dialog now automatically saves its settings
to file on exit; this file is also automatically loaded the next time
the app is started, thereby achieving seamless persistence of toolbar
8) Applications no longer need to provide two different (but
related) resource structs, defining a toolbar - one to define the
toolbar itself, and the other providing the choice list of button
names for the Customize Toolbar dialog; instead, in effect the second
list is automatically generated from the first
9) The hard-wired width in the CalculateRequiredSize of the digital
clock was too small (because of changes in the font a while back?);
changed this to a larger hard-wired value for now(!)
From Bret:
----------
10) Fixed a bug pointed out by MartinB, namely if the app called
ChangeMenuBarL() with "aDisplayNow" set to EFalse, eventually
oversized menu panes would be drawn
11) Modified the test code TMenuB0 to exhibit the above case
12) Tidied up ChangeMenuBarL() generally
From Julian:
------------
13) Further modifications in CEikClipboard (not documented in detail
here since yet more changes are pending)
14) Provided the sample app ..\demo\demo with clipboard functions,
cut copy and paste
15) If text is pasted into a edwin, the edwin will no longer allow
its maximum character limit (if any) to be exceeded
From Siamak:
------------
16) In order to test the reusability of the listbox code, and as a
step towards one of the file selector views, work has started on
"multi-field item" (MFI) listboxes
17) Relatively few changes were needed to the listbox control and
view classes to support this new style of listbox, which you can get
in your programs by setting the EEikListBoxMultiFieldItems flag
18) See the TLBox test code for an example of an MFI list box
From DavidW:
------------
19) Added "EXPORT" verb to MNT.CMD, with the following effect
copy ..\inc\*.h \e32inc
copy ..\inc\*.rh \e32inc
copy ..\inc\*.hrh \e32inc
copy ..\incg\eikon.rsg \e32inc
to make it easier for applications writers making changes in EIKON,
to get the EIKON header files they change into the correct system
includes directory (whilst they wait for an official release)
20) Provided CEikHotKeysTable with a Reset() function, to fix a bug
when a change in the menu bar involved a change in the set of hotkeys
available
21) There's a new flag CEikAppControlCustomizableToolbar, which can
be set in your EikMain() function (see Demo or TBut0 for examples) to
allow system code to make various simplifications on your behalf -
such as allowing a simpler definition of your toolbar resource in the
resource file
22) Application profile files (.APF files) now have much more support
in system software than before: there's a new class TEikApfHeader, in
a new module EIKAPF.*
23) For now, the only two test applications that save/load profiles
are TBut0 and Demo; in each case the saving/loading happens
transparently, without any user control over the matter (yet)
24) Any application that runs the Customize Toolbar dialog will have
a profile file generated automatically for it (if none existed
before), containing a persistent version of the toolbar preferences
selected
25) In addition to generic profile settings (of which a customized
toolbar is the first example), applications can add their own
specific profile information, by overriding the CEikAppControl
functions StoreProfileL() and RestoreProfileL(); this happens in
Demo, which records its "auto-zoom new pictures" setting in this way
26) An application can in principle call CEikAppControl::SaveProfileL
at any time, to cause a complete *.APF file to be written up,
containing the latest values
27) CEikDll::StartPrgDllL() now takes one more parameter, giving the
name of the profile file to be used (it will be NULL by default, in
which case code inside CEikAppControl can generate a default name, if
there is data to save to the profile)
28) The Shell's "Profiles" menu command now works, for the first
time, giving a file selector of all \PROFILES\*.APF files (as usual,
the file selector will fail, if the specified directory fails to
exist); go into either TBut0 or Demo and customize the toolbar, and
then there will be \PROFILE\*.APF files for the Shell to view
29) App name comparison inside TEikDocHeader testing (and now also
inside TEikApfHeader testing) is no longer case-sensitive, thereby
removing a few anomalies.
Version 0.01.001
================
(Made by DavidW, 16 Feb 1996)
Uses: E32/052 F32/016 STORE/007 BAFL/017
GDI/010 FNTSTORE/005 FBS/012 BITGDI/012 WSERV/024 CLOCK/006
CONE/050 ETEXT/025 TBOX/040 FONTS/007 ALWL/010
From DavidW:
------------
1) Contains all EIK*.* files, and other associated files,
transferred from their home since 11 Dec last year, in \CONE
2) Also contains files in ..\TSRC, ..\SHELL, and ..\DEMO directories
3) As will be expected, EIKON's mnt.cmd includes GETCONE and
GETSRCCONE verbs (and also calls these from inside GETJBLD and
GETSRCALL as appropriate)
4) CONE.RSS, CONE.RSG, and CONE.RSC become EIKON.* instead
5) Note that you have to add \e32sys\eikond.lib to the set of
libraries linked with your test application (in the Project |
Settings | Link dialog)
***** The following added later *****
6) The code was still trying to open CONE.RSC as the system resource
file, instead of EIKON.RSC - now fixed
7) MNT GETSRCCONE was deleting \bafl\*.* - now fixed