appfw/apparchitecture/group/RELEASE.TXT
changeset 0 2e3d3ce01487
equal deleted inserted replaced
-1:000000000000 0:2e3d3ce01487
       
     1 AppArc 1.2.118
       
     2 --------------
       
     3 Released by MattM
       
     4 
       
     5 Upgraded to new E32TOOLS and E32TOOLP
       
     6 
       
     7 Updated bld.inf file to add support to support testcode, and corrected 
       
     8 controlpanel .def file exports.
       
     9 
       
    10 This release is not BC or SC due to: 
       
    11 
       
    12 the fix for EDNATHE-488DCR (increase in the size of a class, as a fix for 
       
    13 potential recurring panics) 
       
    14 
       
    15 EDNATHE-464JPQ has breaks SC and BC
       
    16 
       
    17 Fixed: 
       
    18 ER5 deferred defects
       
    19 EDN761578 Recent Files list has gone
       
    20 EDNBWHE-45UCS4 Need to reset shell after changing "text/html" mapping
       
    21 EDNATHE-462DBT Control panel DLLs are not unloaded
       
    22 EDNATHE-488DCR Recogniser names restricted to 12 characters
       
    23 EDNATHE-464JPQ CApaAppInfoFile classes create temporary RFs connections
       
    24 EDN779965 Dangerous code in CApaFsMonitor::Start()
       
    25 
       
    26 
       
    27 
       
    28 AppArc 1.2.117
       
    29 --------------
       
    30 Released by SimonC on 09 July 1999
       
    31 
       
    32 Binary and source compatible with 116
       
    33 
       
    34 Fixed EDNDMAY-49CDSX "Need to remove call to deprecated function"
       
    35 Various changes to MNT to remove all references to narrow releasables.
       
    36 
       
    37 No test code run due to the lack of changes
       
    38 
       
    39 Apparc 1.2.116
       
    40 --------------
       
    41 Re-released for automated build process
       
    42 
       
    43 AppArc 1.2.114
       
    44 --------------
       
    45 Built by SimonC on 10 Feb 1999
       
    46 
       
    47 Fixed EDN557946 "CApaFsMonitor uses the wrong form of RFs::NotifyChangeCancel"
       
    48 
       
    49 AppArc 1.2.113
       
    50 --------------
       
    51 Built by MattM on 29 Jan 1999
       
    52 
       
    53 Fixed
       
    54 Not found error after installing application
       
    55 
       
    56 AppArc 1.2.112
       
    57 --------------
       
    58 Built by MattM on 19 Jan 1999
       
    59 
       
    60 Fixed
       
    61 EDN062791 Default app can be wrong
       
    62 EDN923095 RDL recognisers didn't work immediately after installation
       
    63 EDN173648 Problem with RApaLsSession::AppForDataType
       
    64 
       
    65 AppArc 1.2.111
       
    66 --------------
       
    67 Built by MattM on 13 Jan 1999
       
    68 
       
    69 Fixed
       
    70 EDN537499 Panic attempting to view directory with unknown App file
       
    71 EDN116503 CApaProcess::SetMainDocFileName does not allow clearing of the file name
       
    72 
       
    73 AppArc 1.2.110
       
    74 --------------
       
    75 Built by MattM on
       
    76 
       
    77 Changed priority of AppArc server to EPriorityAbsoluteForeground
       
    78 Changed scanning active object from CIdle to CPeriodic, with a small pause
       
    79 between each scanning unit (to allow lower priority threads a lookin)
       
    80 
       
    81 Fixed
       
    82 EDN736553 Machine completely* locks up
       
    83 EDN851148 Panic on Startup which locks the machine
       
    84 
       
    85 AppArc 1.2.109
       
    86 --------------
       
    87 Built by MattM on 5 December 1998
       
    88 
       
    89 Changed priority of AppArc server to nearer priority of EIKSRV.
       
    90 
       
    91 Fixed
       
    92 EDN833327 MRU list doesn't work if the C:\system\data directory doesn't exist.
       
    93 EDN060924 Deleting mru.dat stops the mru-list coming up
       
    94 EDN349934 Recent files does not work if there's no c:\System\Data\ directory
       
    95 EDN572427 "mru.dat" should be "Mru.dat"
       
    96 EDN951003 Recently used files list is case-sensitive
       
    97 EDN969635 DataType may not be reported correctly
       
    98 
       
    99 AppArc 1.2.108
       
   100 --------------
       
   101 Built by MattM on 26 November 1998
       
   102 
       
   103 SW1-427 IsProgram() return value can be incorrect
       
   104 SW1-400 AppArc doesn't handle even-numbered tailend lengths correctly.
       
   105 SW1-413 Shell is too slow
       
   106 SW1-455 Apparc is too hard to fetch
       
   107 
       
   108 AppArc 1.2.107
       
   109 --------------
       
   110 Built by MattM on 12 November 1998
       
   111 
       
   112 Added Base addresses for all new DLL's
       
   113 
       
   114 EPOC Software Problems
       
   115 SW1-329 AppArc doesn't set TailEnd length.
       
   116 SW1-330 RECAPP doesn't recognize narrow build documents on wide build machines
       
   117 SW1-195 APSEXE.DLL WINS base address clashes with that of EIKSRV.DLL
       
   118 SW1-306 Missing #defines
       
   119 SW1-287 #defines should be replaced by literal descriptors
       
   120 
       
   121 AppArc 1.2.106
       
   122 --------------
       
   123 Built by MattM on 30 October 1998
       
   124 
       
   125 Deb/rel and unicode Uid release.
       
   126 
       
   127 UID fest from AppArc is here:
       
   128 
       
   129 Control panel items:
       
   130 uid			0x10000297
       
   131 unicodeuid	0x10003A34
       
   132 
       
   133 Applications
       
   134 uid			0x1000006c
       
   135 unicodeuid	0x100039CE
       
   136 
       
   137 Application data files
       
   138 uid			0x1000006d
       
   139 unicodeuid	0x10003A12
       
   140 
       
   141 Recognizers
       
   142 uid			0x1000013E
       
   143 unicodeuid	0x10003A37
       
   144 
       
   145 AIF files
       
   146 uid			0x1000006a
       
   147 unicodeuid	0x10003A38
       
   148 
       
   149 AppArc 1.2.105
       
   150 --------------
       
   151 Built by MattM on 28 October 1998
       
   152 
       
   153 Moved ApMime to EMIME project.
       
   154 
       
   155 AppArc 1.2.104
       
   156 --------------
       
   157 Built by MattM on 19 October 1998
       
   158 
       
   159 Breaks BC for UNICODE build users of CApaCommandLine::TailEnd.  Previously this 
       
   160 had a TDes16 interface, now it has a TDes8 interface in both builds.  This 
       
   161 reflects the intended usage, the passing of binary data to applications.
       
   162 
       
   163 The client interface to RApaLsSession now attempts reconnection if the server 
       
   164 terminates during an open session.
       
   165 
       
   166 AppArc server now uses the new fileserver notification to minimise
       
   167 rescanning of drives, and the new fileserver read functions to read
       
   168 the first few bytes from a file when identifying it's type.
       
   169 
       
   170 AppArc 1.2.103
       
   171 --------------
       
   172 Built by MattM on 24 September 1998
       
   173 
       
   174 This is a BETA release
       
   175 
       
   176 This build breaks BC for the new exports in build 100+
       
   177 
       
   178 Optimisations made to TDataType to enable Shell to perform cached lookup
       
   179 on UID'd types without resorting to server calls.
       
   180 
       
   181 AppArc 1.2.102
       
   182 --------------
       
   183 Built by MattM on 21 August 1998
       
   184 
       
   185 ONLY FOR USE BY APPS EG (and friends)
       
   186 
       
   187 This build breaks BC with the new exports added for build 101.
       
   188 
       
   189 Source compatability is maintained.
       
   190 
       
   191 Completed implementation of new server interface as per document 
       
   192 R:\apparc\dspec\Server API.rtf, please refer to that document for documentation.
       
   193 
       
   194 This build of AppArc is intended for use by development Shells 060+
       
   195 
       
   196 AppArc 1.2.101
       
   197 --------------
       
   198 Built by MattM on 28 July 1998
       
   199 
       
   200 Release valids on a clean drive
       
   201 
       
   202 This build is of BETA status, pending a design review of the AppArc server and Shell.
       
   203 
       
   204 The export in RApaLsSession UpdateDataRecognizerList() is likely to be removed in the
       
   205 future.
       
   206 
       
   207 1) Added Data type support to AIF files
       
   208 The following exports are new for R5:
       
   209 
       
   210 class CApaAppInfoFileReader
       
   211 	void DataTypesSupportedL(CArrayFix<TDataTypeWithPriority>& aTypeList) const;
       
   212 
       
   213 class CApaAppInfoFileWriter : public CApaAppInfoFile void AddDataTypeL(const 
       
   214 TDataTypeWithPriority& aTypePriority);
       
   215 
       
   216 Supported data types are stored in Application AIF files (which are fully data 
       
   217 compatible with R1 AIF files) along with a concept of "Priority" this is used 
       
   218 for resolving the current preferred handler of a data type, in the absence of 
       
   219 any user preferences.
       
   220 
       
   221 Data type priorities are defined in APMSTD.H and are:
       
   222 
       
   223 KDataTypePriorityUserSpecified
       
   224 KDataTypePriorityHigh
       
   225 KDataTypePriorityNormal
       
   226 KDataTypePriorityLow
       
   227 KDataTypePriorityLastResort
       
   228 
       
   229 Note, it's not legal for applications to specify KDataTypePriorityUserSpecified 
       
   230 in their AIF file, as this can't be overridden, and contrary to all the 
       
   231 available evidence, the user DOES know best.
       
   232 
       
   233 Extended test code to cope with new stuff
       
   234 
       
   235 2) Added Data Type to application map to APMIME
       
   236 
       
   237 The following (interesting) exports have been added compared to the APMIME 
       
   238 release in 100: (this isn't an all inclusive list, it's just the ones that are 
       
   239 of interest to AppArc clients)
       
   240 
       
   241 class CTypeStoreManager
       
   242 	static CTypeStoreManager* NewL(RFs& aFs);
       
   243 	// Persistence
       
   244 	void StoreL();
       
   245 	void RestoreL();
       
   246 	void InternalizeL(RReadStream& aStream);
       
   247 	void ExternalizeL(RWriteStream& aStream) const;
       
   248 	// Enquiry
       
   249 	void GetAppByDataType(const TDataType& aDataType, TUid& aUid) const;
       
   250 	void GetDataTypesByAppL(TUid aUid, CArrayFix<TDataType>* aTypeArray) const;
       
   251 	const CArrayFixFlat<TMappingDataTypeToApp>& MappingArray() const;
       
   252 	// Management
       
   253 	void InsertDataMappingL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid);
       
   254 	TBool InsertIfHigherL(const TDataType& aDataType, TDataTypePriority aPriority, TUid aUid);
       
   255 	void DeleteDataMapping(const TDataType& aDataType);
       
   256 
       
   257 These can be used to query and amend the list of application/data type associations.
       
   258 
       
   259 3) Added TDataTypeWithPriority and priority utilities.
       
   260 
       
   261 For use in 1) and 2)
       
   262 
       
   263 4) Fixed T_SERV debug panics
       
   264 
       
   265 5) Added MIME type recognition to the AppArc Server, the following exports are 
       
   266 new:
       
   267 class RApaLsSession
       
   268 	TInt UpdateDataRecognizerList();
       
   269 	TInt RecognizeData(const TDesC& aName, const TDesC8& aBuffer, TDataRecognitionResult& aDataType);
       
   270 	TInt RecognizeSpecificData(const TDesC& aName, const TDesC8& aBuffer, const TDataType& aDataType, TBool& aResult);
       
   271 
       
   272 The Shell is responsible for ensuring the AppArc server is kept up to date with 
       
   273 respect of the recognizer list - clients shouldn't need to call 
       
   274 UpdateRecognizerList(), which due to the scanning efforts involved has a heavy 
       
   275 overhead.
       
   276 
       
   277 RecognizeData and RecognizeSpecificData will provide mime type information to 
       
   278 the client, based on the information supplied - the client must open the file if 
       
   279 this is appropriate.
       
   280 
       
   281 6) Added application launching to the AppArc server.
       
   282 
       
   283 This marks a change in the architecure of document launching.  It is strongly 
       
   284 recommended that launchers of applications use these new server calls to broker 
       
   285 all their application launching.
       
   286 
       
   287 There is also a slight change in the way recognizers use UID's, from now the 
       
   288 following is true:
       
   289 
       
   290 The 2nd Uid if a TUidType indicates the protocol used to launch the application.  
       
   291 This protocol must be uniquely implemented by a recognizer in a .RDL file, 
       
   292 derived from CApaRecognizerType, currently supported protocols are:
       
   293 The EIKON App protocol (KUidApp)
       
   294 The OPL protocol (KUidOplApp) released by the OPL runtime
       
   295 
       
   296 It's anticipated that Java will release an additional recognizer for Java 
       
   297 applications (KUidJavaApp)
       
   298 
       
   299 The 2nd Uid contained within an EPOC store file is used for type identification, 
       
   300 and is mapped on to a "TDataType" that can also handle internet standard MIME 
       
   301 types.
       
   302 
       
   303 Thus a CApaRecognizerType file can now expect to be called with a document file 
       
   304 name, but a TUidType that is different to the TUidType within that file (this is 
       
   305 to support the launching of, say, Agenda files by an OPL or Java based Agenda 
       
   306 file viewer)
       
   307 
       
   308 If no mime type mapping is available the CApaRecognizerType list will be called 
       
   309 as for ER1 releases, this is to fully support compatibility with ER1 style 3rd 
       
   310 party recognizers.
       
   311 
       
   312 The following exports are of interest:
       
   313 class RApaLsSession
       
   314 	TInt AppForDataType(const TDataType& aDataType, TUid& aAppUid);
       
   315 This returns the binding of application to DataType in aAppUid, if there is no 
       
   316 binding then the current "default" handler is returned.  If there is no handler
       
   317 a NULL uid is returned.
       
   318 
       
   319 	TInt StartDocument(const TDesC& aFileName, TThreadId& aId);
       
   320 This starts the document file of aFileName and returns the TThreadId of the 
       
   321 process.  The effect is the same as performing a RecognizeData on the file, 
       
   322 followed by a call to the next documented method.
       
   323 
       
   324 	TInt StartDocument(const TDesC& aFileName, const TDataType& aDataType, TThreadId& aId);
       
   325 This launches an application with a known data type, this is useful to clients 
       
   326 that already have data type information and wish to take advantage of this, and 
       
   327 avoid the overhead of performing a recognition on the file.  This uses the 
       
   328 current "preferred" handler of the data type, this may be specified by the user.  
       
   329 If another application is desired this must be chosen explictily using the 
       
   330 following method.  If no binding can be found for the data type the old style 
       
   331 recognition by the .RDL recognizers will be performed, if this doesn't get a 
       
   332 match KErrNotSupported will be returned.
       
   333 
       
   334 	TInt StartDocument(const TDesC& aFileName, TUid aAppUid, TThreadId& aId);
       
   335 This launches the filename with the supplied application. 
       
   336 
       
   337 7) Added Application icons to AppArc server, the relevant export here is:
       
   338 class RApaLsSession
       
   339 	TInt GetAppIcon(TUid aAppUid, TInt aSize, CApaMaskedBitmap& aAppBitmap);
       
   340 Size is a number between 0 and 2 inclusive, representing the smallest to largest
       
   341 icons for the application.  The actual size of these icons is dependent on the
       
   342 implementation, no scaling is performed.  Fully featured EPOC apps can be expected
       
   343 to supply 24,32 and 48 pixel icons on 1/2 VGA.
       
   344 
       
   345 8) Added test code, and less interesting utility functions for all the above.
       
   346 
       
   347 9) Added batch files for running test code - runtest.bat on MARM and runtestw [var]
       
   348 under WINS, these live in \apparc\tdata\
       
   349 
       
   350 10) Moved down to E32TOOLS 088 due to a defect in DEFMAKE
       
   351 
       
   352 All WINS variants pass tests
       
   353 All MARM varinats pass tests, with the exception of
       
   354 
       
   355 T_PRO and T_OOM which fail on MARM unicode
       
   356 
       
   357 These failures do not constitute a regression from AppArc 100
       
   358 
       
   359 AppArc 1.2.100
       
   360 ==============
       
   361 Built by MattM on 3/7/98
       
   362 
       
   363 Jumped from 086 to 100 release to allow space for platform 4 revisions
       
   364 
       
   365 Changed interface in APMIME to "Data" in place of "Mime" allowing for greater 
       
   366 flexibility in use of "mime" types.  Retained name for DLL to ensure binary 
       
   367 compatibility.
       
   368 
       
   369 Fixed defect in APMFNDR as for APFFNDR - wins REL and UREL mime recognizer 
       
   370 loading did not work
       
   371 
       
   372 Updated ROM build files
       
   373 
       
   374 AppArc 1.1.86
       
   375 =============
       
   376 Built by MattM on 29/6/98
       
   377 
       
   378 Release valids on a clean drive.
       
   379 
       
   380 Removed incorrect mime getrel methods
       
   381 Fixed rom building scripts
       
   382 
       
   383 Fixes:
       
   384 SW1-544 WINS rel & urel recognisers don't work
       
   385 
       
   386 All 4 WINS and 4 MARM variants released and tested.
       
   387 
       
   388 The following tests pass on all variants:
       
   389 
       
   390 T_CMDLN, T_FILE, T_MDR, T_WGNAM, ICONTOOL
       
   391 
       
   392 The following tests have the documented failure conditions:
       
   393 
       
   394 T_MRU fails test 07 line 248 on all MARM variants (passes on WINS)
       
   395 T_OOM fails KERN-EXEC 3 on MARM Unicode variants (passes WINS and MARM narrow)
       
   396 T_SERV fails on all debug variants WINS and MARM (passes on release variants)
       
   397 T_PRO fails KERN-EXEC 3 on MARM Unicode variants (passes WINS and MARM narrow)
       
   398 
       
   399 None of these failures is a regression from AppArc 1.1.85
       
   400 
       
   401 AppArc 1.1.85
       
   402 =============
       
   403 
       
   404 Identical to 084 without MIME releases
       
   405 
       
   406 AppArc 1.1.84
       
   407 =============
       
   408 Built on 22/5/98 by MattM
       
   409 
       
   410 Changes following code review
       
   411 
       
   412 AppArc 1.1.83
       
   413 =============
       
   414 Built on 18/5/98 by MattM
       
   415 
       
   416 Added MIME type recognition
       
   417 
       
   418 Fixed AppArc DLL loading to allow unloading of AppArc DLLs due to deletion or 
       
   419 updating, however due to EPOC32 defect SW1-46 this remains broken, however as of 
       
   420 this release it's possible to unload recognizer DLL's by removing the DLL, then 
       
   421 waiting sufficient time for the Shell recognizer scanner to update it's list, 
       
   422 then 1 second later the AppArc server list will be updated.
       
   423 [an easy way is to Open/close a CF card door, this forces a full rescan]
       
   424 
       
   425 Fixed some VC5 warnings
       
   426 
       
   427 Fixed 
       
   428 SW1-957 Missing leave in AppArc
       
   429 
       
   430 Apparc 1.0.82
       
   431 =============
       
   432 
       
   433 Added extra support for Recent Files list for OPL apps.
       
   434 
       
   435 
       
   436 Apparc 1.0.80
       
   437 =============
       
   438 20/02/98 by Natascha
       
   439 
       
   440 Uses:	apparc.dll: E32[120] ; F32[090] ; Store[043] ; GDI[057]
       
   441 
       
   442 	apgrfx.dll: Fntstore[046] ; Fbserv[075] ; Bitgdi[062] ; Wserv[094]
       
   443 
       
   444         Mimestor[002]
       
   445 
       
   446 Tools: E32Tools[082] ; E32Utils[014] ; GCCTOOLS[113]; GDITOOLS[039]
       
   447 EIKTOOLS[123]
       
   448 
       
   449 1) Rebuilt using correct Unicode components.
       
   450 
       
   451 Apparc 1.0.79
       
   452 =============
       
   453 19/02/98 by Natascha
       
   454 
       
   455 Uses:	apparc.dll: E32[119] ; F32[089] ; Store[043] ; GDI[053]
       
   456 
       
   457 	apgrfx.dll: Fntstore[043] ; Fbserv[075] ; Bitgdi[058] ; Wserv[090]
       
   458 
       
   459 Tools: E32Tools[082] ; E32Utils[014] ; GCCTOOLS[113]; GDITOOLS[039]
       
   460 EIKTOOLS[123]
       
   461 
       
   462 Made the following changes as a result of code review (by CharlesW).
       
   463 
       
   464 1) Changed CApaFileRecognizer::DoRecognizeAllApps() to
       
   465 DoRecognizeAllAppsL() since it is a leaving function.
       
   466 
       
   467 2) Use the more efficient InsertL() function to copy one array to
       
   468 another rather than AppendL() in a for loop.
       
   469 
       
   470 3) In CApaFileRecognizer::InsertAppIntoListL() the priority is now
       
   471 based primarily on the mime type priority, not an average of the app
       
   472 and mime type priorities.
       
   473 
       
   474 4) Put the mimestor manager on the Cleanup stack in
       
   475 CApaDataTypeRecognizer functions.
       
   476 
       
   477 5) Made the CApaFileRecognizerData class definition and member data
       
   478 private to CApaFileRecognizer.
       
   479 
       
   480 
       
   481 Apparc 1.0.78
       
   482 =============
       
   483 02/02/98 by Natascha
       
   484 
       
   485 Uses:	apparc.dll: E32[119] ; F32[089] ; Store[043] ; GDI[053]
       
   486 
       
   487 	apgrfx.dll: Fntstore[043] ; Fbserv[075] ; Bitgdi[058] ; Wserv[090]
       
   488 
       
   489 Tools: E32Tools[082] ; E32Utils[014] ; GCCTOOLS[113]; GDITOOLS[039]
       
   490 EIKTOOLS[123]
       
   491 
       
   492 Includes UNICODE release of all components.
       
   493 
       
   494 1) Changed over to new build system splitting mnt.cmd into ebld.bat
       
   495 and mnt.cmd and using makmake etc...
       
   496 
       
   497 2) Defect fix SW1-516: to speed up drawing of control panel moved the DLL loading into
       
   498 CApaSystemControl::CreateL() from CApaSystemControl::ConstructL()
       
   499 which was being called to build up the list of available controls. 
       
   500 Added member data iUidType and iFullPath.  This also means that OOM
       
   501 is less likely when bringing up the control panel.
       
   502 
       
   503 3) Defect fix SW1-451: in CApaScanningAppFinder::FindAllAppsL() set
       
   504 iDriveList=NULL after deleting it (spotted by MartinB).
       
   505 
       
   506 4) Defect fix SW1-566: in CApaScanningAppFinder destructor now delete
       
   507 iFileList.
       
   508 
       
   509 5) Defect fix SW1-620: in CApaScanningControlFinder::NextL() iFileIndex
       
   510 was only being reset to 0 if there was a drive in between which
       
   511 failed GetFileListL(); if 2 consecutive drives both had controls it
       
   512 was hit and miss whether all those on the second drive would be
       
   513 correctly picked up since it only started scanning the file list at
       
   514 the iFileIndex value at which the drive before had finished.  Fix is
       
   515 to set iFileIndex=0 at the same time as deleting iFileList.
       
   516 
       
   517 6) Extension to recognizer scheme: added class CApaUidlessRecognizerType
       
   518 which is there to recognize files that the uid-based recognizers
       
   519 fail to recognize.  This means that CApaFileRecognizer class now has
       
   520 a new private member *iData (before only 1 pointer so store all the
       
   521 new data in the one pointer to keep things BC) - iData contains
       
   522 iFileRecognizerList and iUidlessFileRecognizerList, and a list of
       
   523 mime types and supporting apps.  
       
   524 
       
   525 CApaFileRecognizer::RecognizeFileL() now works by calling the
       
   526 uid-based recognizers as usual, if none of them recognize the file 
       
   527 call all uidless recognizers, which can each add
       
   528 MIME types to the list, then picks the highest priority MIME type and
       
   529 finds the best app capable of handling that MIME type, if no apps are
       
   530 found to support the best MIME type keep going through the list until
       
   531 the best app is found, then call the uid based recognizer passing in the
       
   532 uid of the app.
       
   533 
       
   534 Various other functions for clients to call through
       
   535 CApaFileRecognizer class:
       
   536 
       
   537 RecognizeAllMimeTypesL()        - for file
       
   538 RecognizeAllAppsL()             - for file
       
   539 RecognizeBestAppL()             - for file
       
   540 RecognizeAllAppsByMimeType()    - for MIME type.
       
   541 
       
   542 Test code added to T_FILE to test some of the uidless recognizer
       
   543 functionality.
       
   544 
       
   545 7) Recognizer loading code changed to support the new uidless
       
   546 recognizers - in CApaScanningFileRecognizer class.
       
   547 
       
   548 8) A new uidless recognizer CApaDataTypeRecognizer which gets MIME
       
   549 types from the mimestor manager and apps from the mimestor manager
       
   550 and aif files.
       
   551 
       
   552 9) UNICODE releases for all components.
       
   553 
       
   554 10) CApaAppInfoFileReader and CApaAppInfoFileWriter classes changed to support
       
   555 the ability to specify supported MIME types in AIF files.
       
   556 
       
   557 
       
   558 AppArc 1.0.077
       
   559 ==============
       
   560 
       
   561 22/07/97 by IanH
       
   562 
       
   563 Uses:	apparc.dll: E32[107] ; F32[074] ; Store[043] ; GDI[053]
       
   564 
       
   565 	apgrfx.dll: Fntstore[043] ; Fbserv[066] ; Bitgdi[058] ; Wserv[085]
       
   566 
       
   567 Tools: E32Tools[067] ; E32Utils[018] ; GCCTOOLS[113]
       
   568 
       
   569 General:
       
   570 
       
   571 Binary compatible with 065 - 076, but extends API (see 3)
       
   572 
       
   573 1) MNT no longer fetches non-existant WSERV MARMUD releasables (spotted by Natascha).
       
   574 
       
   575 2) MNT getdef extended to get WINS control.def's
       
   576 
       
   577 3) Two inline methods added to CApaDoorBase to get and set the already present protected member data iSource. 
       
   578 This is not a 1.01 change, more a platform improvement for the initial benefit of Nautilus.
       
   579 
       
   580 public:
       
   581 	inline TUid Source()const;
       
   582 	inline void SetSource(TUid aSource);
       
   583 protected:
       
   584 	TUid iSource; // foreign representation of a translated door (eg MS Word doc)
       
   585 
       
   586 4) Testcode T_MDR extended to test the above.
       
   587 
       
   588 
       
   589 
       
   590 AppArc 1.0.076
       
   591 ==============
       
   592 
       
   593 16/07/97 by IanH
       
   594 
       
   595 Uses:	apparc.dll: E32[107] ; F32[074] ; Store[043] ; GDI[053]
       
   596 
       
   597 	apgrfx.dll: Fntstore[043] ; Fbserv[066] ; Bitgdi[058] ; Wserv[085]
       
   598 
       
   599 Tools: E32Tools[067] ; E32Utils[018] ; GCCTOOLS[113]
       
   600 
       
   601 General:
       
   602 
       
   603 Binary compatible with 065 - 075
       
   604 
       
   605 ) Fixes CSW3-1386: Overriding of ROM apps doesnt work - the in ROM versions are still loaded instead of those in RAM. The fix ensures that the correct dll is loaded, but does not cache the new AIF data.
       
   606 
       
   607 ) Fixes SW1-122: OPL programs don't run when copied from one disk to another. This was another manifestation of the above defect, and the fix carries the same proviso (though in this case it's meaningless as the data is the same - it was just copied between discs).
       
   608 
       
   609 ) The above fixes left a couple of slight problems, and these have been noted in a new defect report SW1-134.
       
   610 
       
   611 
       
   612 
       
   613 AppArc 1.0.075
       
   614 ==============
       
   615 
       
   616 10/07/97 by IanH
       
   617 
       
   618 Uses:	apparc.dll: E32[107] ; F32[074] ; Store[043] ; GDI[053]
       
   619 
       
   620 	apgrfx.dll: Fntstore[043] ; Fbserv[066] ; Bitgdi[058] ; Wserv[085]
       
   621 
       
   622 Tools: E32Tools[067] ; E32Utils[018] ; GCCTOOLS[113]
       
   623 
       
   624 General:
       
   625 
       
   626 Binary compatible with 065 - 074
       
   627 
       
   628 ) Fixes SW3-1520 (showstopper): Apparc sometimes paniced if a document file was corrupt. Now it always leaves KErrCorrupt
       
   629 
       
   630 ) Fixes CSW3-1680: Some code was taking the address of temporary TPtrC's returned from CApaCommandLine members. This was causing CApaLsSession::StartApp() to fail strangely in some circumstances, eg when trying to open the help database from EasyFax.
       
   631 
       
   632 ) Fixes SW1-63: Synchronising agenda entries that countain embedded objects could lose the embedded objects entirely if the entry had been edited in eg Schedule+. Not any more though...
       
   633 
       
   634 ) MNT VALID extended as per orders.
       
   635 
       
   636 
       
   637 
       
   638 AppArc 1.0.074
       
   639 ==============
       
   640 
       
   641 4/06/97 by IanH
       
   642 
       
   643 Uses:	apparc.dll: E32[107] ; F32[074] ; Store[043] ; GDI[053]
       
   644 
       
   645 	apgrfx.dll: Fntstore[043] ; Fbserv[066] ; Bitgdi[058] ; Wserv[085]
       
   646 
       
   647 Tools: E32Tools[067] ; E32Utils[018] ; GCCTOOLS[113]
       
   648 
       
   649 General:
       
   650 
       
   651 Binary compatible with 065 - 073
       
   652 
       
   653 ) Fixes SW3-1277: AIF's of plug=in controls were not being loaded, leaving all controls with default captions and icons. A showstopper for Babel.
       
   654 
       
   655 ) MNT getrel tweaked.
       
   656 
       
   657 
       
   658 
       
   659 AppArc 1.0.073
       
   660 ==============
       
   661 
       
   662 2/06/97 by IanH
       
   663 
       
   664 Uses:	apparc.dll: E32[107] ; F32[074] ; Store[043] ; GDI[053]
       
   665 
       
   666 	apgrfx.dll: Fntstore[043] ; Fbserv[066] ; Bitgdi[058] ; Wserv[085]
       
   667 
       
   668 Tools: E32Tools[067] ; E32Utils[018] ; GCCTOOLS[113]
       
   669 
       
   670 General:
       
   671 
       
   672 Binary compatible with 065 - 072
       
   673 
       
   674 ) Fixes SW3-1041: MNT now unsets all environmental variables it uses
       
   675 
       
   676 ) Fixes SW3-1048: CApaAppList::UpdateL() does not increment iUpdateCounter. At last the extras bar updates properly.
       
   677 
       
   678 
       
   679 
       
   680 
       
   681 
       
   682 
       
   683 AppArc 1.0.072
       
   684 ==============
       
   685 
       
   686 27/05/97 by IanH
       
   687 
       
   688 Uses:	apparc.dll: E32[107] ; F32[074] ; Store[043] ; GDI[053]
       
   689 
       
   690 	apgrfx.dll: Fntstore[043] ; Fbserv[066] ; Bitgdi[058] ; Wserv[085]
       
   691 
       
   692 Tools: E32Tools[067] ; E32Utils[018] ; GCCTOOLS[113]
       
   693 
       
   694 General:
       
   695 
       
   696 Binary compatible with 065 - 071
       
   697 
       
   698 ) Fixed SW3-950: CApaApplication:GenerateFileName() will PANIC with <long-name>(100) by increasing a temp descriptors length by 4 bytes
       
   699 
       
   700 ) Fixed SW3-1002: App list not always marked changed when it should be. Now it is.
       
   701 
       
   702 
       
   703 
       
   704 AppArc 1.0.071
       
   705 ==============
       
   706 
       
   707 27/05/97 by IanH
       
   708 
       
   709 Uses:	apparc.dll: E32[107] ; F32[074] ; Store[043] ; GDI[053]
       
   710 
       
   711 	apgrfx.dll: Fntstore[043] ; Fbserv[066] ; Bitgdi[058] ; Wserv[085]
       
   712 
       
   713 Tools: E32Tools[067] ; E32Utils[018] ; GCCTOOLS[113]
       
   714 
       
   715 General:
       
   716 
       
   717 Binary compatible with 065 - 070
       
   718 
       
   719 ) Upgraded to C-001 level dependancies.
       
   720 
       
   721 ) Eradicated all "taking address of temporary" warnings caused by passing &_L("") descriptors into TParse::Set() by creating temporary variables of type TPtrC. 
       
   722 
       
   723 ) Checked that all major mnt commands work properly.
       
   724 
       
   725 ) App list server version number incremented (I forgot to do this in the last release)
       
   726 
       
   727 ) Fixed SW3-125: Changes to AIF files weren't being picked up by the cached app list.
       
   728 The list now caches the time stamp of each app's AIF - if this changes between scans then the data is re-read.
       
   729 If the AIF disappears, the icons & caption are reset to the defaults.
       
   730 
       
   731 ) Fixed SW-5483: Password protected documents not handled gracefully under WINC.
       
   732 Model doors tried to restore encrypted documents without decrypting them first, leading to death. 
       
   733 Now encrypted docs are not restored, instead their container stores are just kept kicking about, ready to be written out again.
       
   734 This will allow Nautilus' Agenda synchronizer to deal with passworded memos tidily.
       
   735 
       
   736 
       
   737 
       
   738 
       
   739 AppArc 1.0.070
       
   740 ==============
       
   741 
       
   742 23/05/97 by IanH
       
   743 
       
   744 Uses:	apparc.dll: E32[105] ; F32[072] ; Store[042] ; GDI[051]
       
   745 
       
   746 	apgrfx.dll: Fntstore[042] ; Fbserv[063] ; Bitgdi[056] ; Wserv[083]
       
   747 
       
   748 Tools: E32Tools[066] ; E32Utils[014] ; GCCTOOLS[113]
       
   749 
       
   750 General:
       
   751 
       
   752 Binary compatible with 065 - 069
       
   753 
       
   754 ) Fixed a defect in the recognizer list where in copying recognizers from one list to another the wrong extension was being appended to recognizer dll names and so they were failing to load.
       
   755 Involved adding one line of code that parsed in the absent .RDL extension. (spotted by Bill)
       
   756 
       
   757 
       
   758 
       
   759 AppArc 1.0.069
       
   760 ==============
       
   761 
       
   762 21/05/97 by IanH
       
   763 
       
   764 Uses:	apparc.dll: E32[105] ; F32[072] ; Store[042] ; GDI[051]
       
   765 
       
   766 	apgrfx.dll: Fntstore[042] ; Fbserv[063] ; Bitgdi[056] ; Wserv[083]
       
   767 
       
   768 Tools: E32Tools[066] ; E32Utils[014] ; GCCTOOLS[113]
       
   769 
       
   770 General:
       
   771 
       
   772 Binary compatible with 065 - 068
       
   773 
       
   774 ) The data cached by the recognizer list to avoid calls to RLibrary wasn't actually being taken advantage of, meaning that the Shell couldn't atke advantage of these methods. 
       
   775 The cached data is now used whereever possible (spotted by Bill). 
       
   776 Changes made to CApaScanningFileRecognizer::operator[] and CApaScanningFileRecognizer::RecognizerListLC()
       
   777 
       
   778 
       
   779 
       
   780 
       
   781 
       
   782 
       
   783 
       
   784 AppArc 1.0.068
       
   785 ==============
       
   786 
       
   787 21/05/97 by IanH
       
   788 
       
   789 Uses:	apparc.dll: E32[105] ; F32[072] ; Store[042] ; GDI[051]
       
   790 
       
   791 	apgrfx.dll: Fntstore[042] ; Fbserv[063] ; Bitgdi[056] ; Wserv[083]
       
   792 
       
   793 Tools: E32Tools[066] ; E32Utils[014] ; GCCTOOLS[113]
       
   794 
       
   795 General:
       
   796 
       
   797 Binary compatible with 065 - 067
       
   798 
       
   799 ) SW3-305 fixed: CApaAppList::Update() and Purge() fixed so that overriding of built-in apps works properly.
       
   800 
       
   801 ) Loading/unloading/overriding of file recognizer dlls fixed. This has necessitated a couple of API changes:
       
   802 
       
   803 Two new exported methods on CApaFileRecognizerType - Lock() and Unlock().
       
   804 When CApaFileRecognizer::RecognizeFileL() is called and a particular type recognizer returned, this object should be Lock()'ed immediately, and should only be Unlock()'ed when you've finished using it.
       
   805 This will ensure the dll is not unloaded while you are using it. This change in usage will only affect the Shell.
       
   806 
       
   807 The protected method IMPORT_C TInt CApaFileRecognizer::RemoveFileRecognizerType(const CApaFileRecognizerType* aFileRecognizerType) added to allow recognizers to be removed from the list before their dll's are unloaded.
       
   808 
       
   809 
       
   810 
       
   811 
       
   812 
       
   813 
       
   814 
       
   815 AppArc 1.0.067
       
   816 ==============
       
   817 
       
   818 19/05/97 by IanH
       
   819 
       
   820 Uses:	apparc.dll: E32[105] ; F32[072] ; Store[042] ; GDI[051]
       
   821 
       
   822 	apgrfx.dll: Fntstore[042] ; Fbserv[063] ; Bitgdi[056] ; Wserv[083]
       
   823 
       
   824 Tools: E32Tools[066] ; E32Utils[014] ; GCCTOOLS[113]
       
   825 
       
   826 General:
       
   827 
       
   828 Binary compatible with 065 and 066
       
   829 
       
   830 From Neil:
       
   831 
       
   832 ) Fixed SW3-347: EXEs don't die properly when killed by the shell - all memory is now freed.
       
   833 
       
   834 ) Fixed SW3-362: TApaTask::EndTask(TTimeIntervalMicroSeconds32 aDelay, TRequestStatus& aStatus) is flawed.
       
   835 It loses its two parameters, and no longer waits to see if an app responds to the shutdown message, offering to kill it if it does not.
       
   836 This behaviour was flawed because so apps where taking longer than the time limit to save their doc's before exiting, and so where being mistakenly identified as hung and were being shot.
       
   837 Changes made to the .def and .frx files to remove the parameters - only Eikon need rebuild.
       
   838 
       
   839 From Ian:
       
   840 
       
   841 ) Optimisations of CApaDoor::SetFormatToIcon() code have brought a 100% speed increase for both creating and restoring doors.
       
   842 The changes included using the app list server to avoid scanning the filesystem when possible, and cutting down my use of AIF files (they are now loaded once instead of twice).
       
   843 
       
   844 ) Fixed SW3-373: CreateControl should be CreateControlL(). control def & frz files altered accordingly.
       
   845 
       
   846 ) Fixed SW3-424: AppListServer version numbers incorrect.
       
   847 
       
   848 ) CApaScanningFileRecognizer now caches recognizers uid, drive and name so that this information can be returned to callers in other threads (the alternative, using RLibrary, will not work in this case). 
       
   849 This fix facilitates the Shell's use of this class.
       
   850 
       
   851 ) "Profile" testcode added that profiles various aspects of apparc.
       
   852 
       
   853 
       
   854 
       
   855 
       
   856 
       
   857 
       
   858 
       
   859 AppArc 1.0.066
       
   860 ==============
       
   861 
       
   862 15/05/97 by IanH
       
   863 
       
   864 Uses:	apparc.dll: E32[105] ; F32[072] ; Store[042] ; GDI[051]
       
   865 
       
   866 	apgrfx.dll: Fntstore[042] ; Fbserv[063] ; Bitgdi[056] ; Wserv[083]
       
   867 
       
   868 Tools: E32Tools[066] ; E32Utils[014] ; GCCTOOLS[113]
       
   869 
       
   870 General:
       
   871 
       
   872 Binary compatible with 065
       
   873 
       
   874 From Neil:
       
   875 
       
   876 ) Fix for SW-5164 - Bombs leaping to the foreground when tasking between apps. 
       
   877 BC change involving moving the new window to the front before sending the old window to the back when switching tasks.
       
   878 
       
   879 From Ian:
       
   880 
       
   881 ) Introduction of 3 new classes, and accompanying testcode :-)
       
   882 The technology for making the shell's control panel dynamically extensible is now in place.
       
   883 Extensions come in the form of plug-in dll's who's API must conform to control.def/frx (released in ctwns*.* and ctmarm*.*). 
       
   884 This means a method of the form:
       
   885 
       
   886 	EXPORT_C void CreateControl(const TDesC& aPath)
       
   887 		{}
       
   888 
       
   889 This first export must be a method that creates the control and runs it asynchronously.
       
   890 The path passed in is the full path of the control's dll - this could be useful for loading resources etc.
       
   891 There is no base class for these controls - implementors may write them as they wish.
       
   892 
       
   893 The plug-in control dll's must reside in \system\controls\ on any local drive. 
       
   894 They should have a ".ctl" extension and a UID2 of KUidSystemControlDll (defined in apgctl.h). 
       
   895 Their UID3 should uniquely identify that particular control.
       
   896 The system for loading these dll's means that dll's in ROM can be overridden by dll's in RAM and on local media - this means that the standard controls in the shell may be replaced by whizzier versions in the future.
       
   897 
       
   898 Each control dll may have an accompanying AIF file.
       
   899 If present, this file should contain the controls icon (1 icon 48x48 pixels), and it's caption in multiple languages. The other sections of AIF files are ignored for the purposes of controls.
       
   900 If a control doesn't have an accompanying AIF file, its caption defaults to the dll name and a default icon is used (this icon need not be the same as that for unrecognised files).
       
   901 
       
   902 AppArc provides classes to automate loading and caching these plug-in controls:
       
   903 CApaSystemControl (apgctl.h) is a wrapper for a plug-in extension to the shell's control panel. It represents a loaded control dll, and also caches the dll's icon and caption.
       
   904 CApaSystemControlList (apgctl.h) holds a linked list of CApaSystemControl's. It also manages rescanning of the filesystem to locate new controls.
       
   905 CApaScanningControlFinder (apfctlf.h) carries out the actual scanning, and it is here that the directory structure for control dll's is mandated
       
   906 
       
   907 One minimal sample control has been supplied in testcode: m_ctrl.mak
       
   908 
       
   909 
       
   910 
       
   911 
       
   912 AppArc 1.0.065
       
   913 ==============
       
   914 
       
   915 14/05/97 by IanH
       
   916 
       
   917 Uses:
       
   918 
       
   919 	apparc.dll: E32[105] ; F32[072] ; Store[042] ; GDI[051]
       
   920 
       
   921 	apgrfx.dll: Fntstore[042] ; Fbserv[063] ; Bitgdi[056] ; Wserv[083]
       
   922 
       
   923 Tools: E32Tools[066] ; E32Utils[014] ; GCCTOOLS[113]
       
   924 
       
   925 General:
       
   926 
       
   927 ***** Do not touch this apparc until there's a new WPENG to go with it!!!!!!!! *****
       
   928 
       
   929 Not quite binary compatible with 058 - 061 and 064, but almost nobody will notice (see 5)
       
   930 
       
   931 1) Moved up to C0 level dependancies.
       
   932 
       
   933 2) App's aifdata no longer released - this is now released with AifTool but in time will migrate to the apps themselves.
       
   934 
       
   935 3) Fixed SW3-71 - IMPORT_C static TInt NewThread() removed from apsserv.h as the method didn't actually exist.
       
   936 
       
   937 4) Fixed SW-5359 - Drives are now scanned in the order y:->a: then z:, ensuring that removable/substed drives are scanned before the RAM drive, and that ROM is scanned last. 
       
   938 Remote drives are not scanned.
       
   939 This means that files in RAM or ROM can be overridden by plugging in a CF card - a good last ditch escape route.
       
   940 
       
   941 5) Fixed SW-5220 - CApaModelDoor needed a DetachFromStore(), otherwise an embedded store was being left open when its host was destroyed, causing panics in Nautilus.
       
   942 CApaModelDoor now overrides virtual CPicture::DetachFromStore(), but this shouldn't affect anyone because CApaModelDoor has a NewL() and it's c'tor is private and not exported.
       
   943 This fix involved adding one new export to apparc.dll - done in a BC fashion. 
       
   944 It also meant adding one new virtual function to CApaModelHeader:
       
   945 
       
   946 	virtual void DetachFromStoreL(CPicture::TDetach /*aDegree*/)=0;
       
   947 
       
   948 This means that anyone who used this class must recompile against this new apparc - a grep of r: suggests that this will only be WPENG and Nautilus.
       
   949 
       
   950 grep -dli-w CApaModelHeader r:\*.cpv r:\*.inv r:\*.h_v
       
   951 
       
   952 File R:\APPARC\APPARC\APAMDR.CPV:
       
   953 File R:\APPARC\TSRC\T_MDR.CPV:
       
   954 File R:\NAOLEIFS\AGNSYSRC\E32MODEL.CPV:
       
   955 File R:\NAOLEIFS\AGNSYSRC\E32RICHT.CPV:
       
   956 File R:\NAOLEIFS\WRDSRC\EWORD.CPV:
       
   957 File R:\NAUTILUS\SCWORD\EWORD.CPV:
       
   958 File R:\WORD\WPENG\WNGDOOR.CPV:
       
   959 File R:\APPARC\INC\APAMDR.H_V:
       
   960 File R:\NAOLEIFS\AGNSYSRC\E32MODEL.H_V:
       
   961 File R:\NAOLEIFS\WRDSRC\MODELDH.H_V:
       
   962 File R:\NAOLEIFS\WRDSRC\MODELHD.H_V:
       
   963 File R:\WORD\INC\WNGDOOR.H_V:
       
   964 
       
   965 Implementors of this class (ie WPENG) should provide this new method with a body that, if necessary, passes the call on to the model that they contain. This will ensure that all users of the store have a chance to tidily get rid of any dependance on the store before it disappears.
       
   966 In the case of WPENG this will mean either adding a DetachFromStoreL() method to CWordModel that propagates the call to its text component, or making this call directly on the text from the header.
       
   967 Nautilus, the only other team affected, will need to do no more than rebuild against the new apparc and WPENG.
       
   968 
       
   969 6) .map files for all arm dll's are now pvcsed along with the dll's themselves
       
   970 
       
   971 
       
   972 
       
   973 
       
   974 
       
   975 
       
   976 
       
   977 AppArc.064
       
   978 ==========
       
   979 
       
   980 07/05/97 by IanH
       
   981 
       
   982 Uses:
       
   983 
       
   984 	apparc.dll: E32[099+] ; F32[069+] ; Store[042+] ; GDI[048+]
       
   985 
       
   986 	apgrfx.dll: Fntstore[038+] ; Fbserv[057+] ; Bitgdi[055+] ; Wserv[080+]
       
   987 
       
   988 Tools: E32Tools[063] ; E32Utils[012] ; GDITOOLS[034] ; GCCTOOLS[113]
       
   989 
       
   990 General:
       
   991 
       
   992 ) Binary compatible with 058 - 062.
       
   993 
       
   994 ) replaces bad 063
       
   995 
       
   996 
       
   997 AppArc.063
       
   998 ==========
       
   999 
       
  1000 07/05/97 by IanH
       
  1001 
       
  1002 Uses:
       
  1003 
       
  1004 	apparc.dll: E32[099+] ; F32[069+] ; Store[042+] ; GDI[048+]
       
  1005 
       
  1006 	apgrfx.dll: Fntstore[038+] ; Fbserv[057+] ; Bitgdi[055+] ; Wserv[080+]
       
  1007 
       
  1008 Tools: E32Tools[063] ; E32Utils[012] ; GDITOOLS[034] ; GCCTOOLS[113]
       
  1009 
       
  1010 General:
       
  1011 
       
  1012 ) Binary compatible with 058 - 062.
       
  1013 
       
  1014 ) Fixed SW-5063 - apps being orphaned if their doc's failed to construct.
       
  1015 
       
  1016 ) Following three public methods added to CApaScanningFileRecognizer:
       
  1017 
       
  1018 	IMPORT_C void SetRecognizerL(const TRecognizer& aRecognizer); 
       
  1019 	IMPORT_C TRecognizer operator[](TInt aIndex)const; 
       
  1020 	IMPORT_C TInt UpdateCounter()const;
       
  1021 
       
  1022 These additions have been approved by the BC police and have been implemented in a BC fashion.
       
  1023 They are required by the Shell so that it can keep it's two recognizers in sync with one another without undue work and allocing.
       
  1024 
       
  1025 SetRecognizerL() will return silently if a recognizer of that UID is already present in the list, but will leave if it doesn't exist on disc or has incorrect UID's etc.
       
  1026 
       
  1027 ) T_File testcode expanded to test the above
       
  1028 
       
  1029 
       
  1030 
       
  1031 AppArc.062
       
  1032 ==========
       
  1033 
       
  1034 02/05/97 by IanH
       
  1035 
       
  1036 Uses:
       
  1037 
       
  1038 	apparc.dll: E32[099+] ; F32[069+] ; Store[042+] ; GDI[048+]
       
  1039 
       
  1040 	apgrfx.dll: Fntstore[038+] ; Fbserv[057+] ; Bitgdi[055+] ; Wserv[080+]
       
  1041 
       
  1042 Tools: E32Tools[063] ; E32Utils[012] ; GDITOOLS[034] ; GCCTOOLS[113]
       
  1043 
       
  1044 General:
       
  1045 
       
  1046 ) Binary compatible with 058 - 061.
       
  1047 
       
  1048 ) Fix to CApaDoor::NewL() that was not always deleting the doc it took ownership of in OOM conditions.
       
  1049 
       
  1050 ) Texted's .AIF updated such that it's caption is now "Program"
       
  1051 
       
  1052 ) The spec of CApaAppFinder::FindAppL(const TDesC& aFileName,TUid aFileUid)=0 has changed (SDK team take note!):
       
  1053 
       
  1054 - if a valid full path has been passed in as aFileName, that is returned.
       
  1055 
       
  1056 Otherwise,
       
  1057 
       
  1058 - if aFileUid is not KNullUid all drives are scanned for a file matching aFileUid and aFileName's extension (.APP is used if no extension is specified) ie. if aFileUid is supplied aFileName is ignored except for the extension
       
  1059 - if aFileUid is KNullUid a file matching aFileName is searched for
       
  1060 
       
  1061 This means that an app can have it's dll and directory renamed (eg system\apps\word\word.app -> system\apps\oldword\oldWord.app) and word documents will still be associated with it because association is now by UID  in the first instance.
       
  1062 
       
  1063 ) Testcode updated.
       
  1064 
       
  1065 
       
  1066 
       
  1067 
       
  1068 
       
  1069 AppArc.059
       
  1070 ==========
       
  1071 
       
  1072 29/04/97 by IanH
       
  1073 
       
  1074 Uses:
       
  1075 
       
  1076 	apparc.dll: E32[099+] ; F32[069+] ; Store[042+] ; GDI[048+]
       
  1077 
       
  1078 	apgrfx.dll: Fntstore[038+] ; Fbserv[057+] ; Bitgdi[055+] ; Wserv[080+]
       
  1079 
       
  1080 Tools: E32Tools[063] ; E32Utils[012] ; GDITOOLS[034] ; GCCTOOLS[113]
       
  1081 
       
  1082 General:
       
  1083 
       
  1084 ) Binary compatible with 058. Source compatible unless you used KApfTempPath in apfdef.h
       
  1085 
       
  1086 ) KApfTempPath now hidden in a static method Apfile::TempPath(), added in a BC manner.
       
  1087 
       
  1088 ) Defect in TApaAppCapability::InternalizeL() that was causing the iIsHidden flag to always be set to false fixed (spotted by Bill).
       
  1089 
       
  1090 ) 2nd UID of KSharedLibraryUid [0x1000008d] added to apparc.dll, apgrfx.dll, apfile.dll and apserv.dll (SW-3947)
       
  1091 
       
  1092 ) CApaAppListServer::NewL() no longer panics if you try to create a second instance - it now leaves KErrAlreadyExists (SW-4338)
       
  1093 
       
  1094 ) CApaScanningAppFinder::FindAppL() does not now confuse files and directories, and only recognizes apps with \system\apps\ in their path (SW-4325)
       
  1095 
       
  1096 ) Server-side support for RApaLsSession::GetAppCapability() and StartApp() added - they no longer return KErrNotSupported.
       
  1097 
       
  1098 ) Apparc no longer releases the default AIF file (appdata.zip) - this will now be released by Eikon.
       
  1099 
       
  1100 
       
  1101 
       
  1102 
       
  1103 
       
  1104 
       
  1105 
       
  1106 AppArc.058
       
  1107 ==========
       
  1108 
       
  1109 22/04/97 by IanH
       
  1110 
       
  1111 Uses:
       
  1112 
       
  1113 	apparc.dll: E32[098] ; F32[069] ; Store[042] ; GDI[049]
       
  1114 
       
  1115 	apgrfx.dll: Fntstore[038] ; Fbserv[055] ; Bitgdi[054] ; Wserv[079]
       
  1116 
       
  1117 Tools: E32Tools[063] ; E32Utils[011] ; GDITOOLS[032] ; GCCTOOLS[113]
       
  1118 
       
  1119 General:
       
  1120 
       
  1121 1) Not binary compatible with previous releases. This release freezes the API.
       
  1122 
       
  1123 ) Takes new components as above
       
  1124 
       
  1125 ) TBool TApaAppCapability::iAppIsHidden added to AIF files. The extensability system for capabilities means that old AIF files are still valid - they will just default to a false value for this new flag.
       
  1126 If this flag is set true then the app should not be shown in the Shell (eg in the extra's bar). (requested by Kevin Dempsey)
       
  1127 
       
  1128 ) CApaDocument::ValidatePasswordL()const added. Apps that support passwording should override the default implementation and check the password, leaving KErrLocked if the password is set but not successfully entered. (suggested by DW)
       
  1129 
       
  1130 ) CApaDoor::DocumentL(TBool aCheckPassword=EFalse) gains the aCheckPassword parameter.
       
  1131 If aCheckPassword is set to ETrue and the document is in memory, any password will be checked before a handle to the doc is returned. 
       
  1132 If the document has to be restored the password will always be checked, irrespective of this parameter's value.
       
  1133 
       
  1134 ) TRunContext removed from CApaApplication, along with virtual method DocumentRunContext(). 
       
  1135 It has been replaced by a pv method Capability() that should return a cached version of the information held in the AIF file (an implementation of this method will be provided at the Eikon level).
       
  1136 
       
  1137 == sell App::Capability() and PreDocConstruct() to Eikon
       
  1138 
       
  1139 ) CApaDoor's c'tor now checks that the document passed in supports embedding, leaving KErrNotSupported if it does not.
       
  1140 
       
  1141 ) When CApaDoor restores a glass door but SetFormatToGlassL() fails, the door now sets itself iconic unless the error returned was KErrNoMemory, which is propagated.
       
  1142 
       
  1143 ) TFileName iFullFileName removed - RLibrary::FileName() is now used instead.
       
  1144 
       
  1145 ) RApaLsSession::GetAppCapability() added - stubbed for now.
       
  1146 
       
  1147 ) CApaMaskedBitmap c'tor provided and made private to sabotage derivation.
       
  1148 
       
  1149 ) CApaWindowGroupName member data made private.
       
  1150 
       
  1151 ) CApaFileRecognizerType::RunL() now returns the TThreadId of the main thread started so that observers can log onto clients threads etc. (requested by HowardP)
       
  1152 
       
  1153 ) Taken over releasing the app's .AIF files from Bill - Apparc now pvcs's the necessary bitmaps etc.
       
  1154 
       
  1155 ) enum CApaFileRecognizerType::TFileType renamed TRecognizedType. Some values have been renamed:
       
  1156 EApp -> EProgram
       
  1157 ENotDocOrApp -> EOtherFile
       
  1158 
       
  1159 Type() method added to CApaFileRecognizerType that returns the TRecognizedType of the current file.
       
  1160 
       
  1161 ) TUid CApaFileRecognizerType::FileType() renamed TypeUid()
       
  1162 
       
  1163 ) TApaAppCapability::CopyCapability() made void.
       
  1164 CApaFileRecognizerType::Capability() made void.
       
  1165 CApaAppData::Capability() made void.
       
  1166 CApaAppInfoFileReader::Capability() made void.
       
  1167 
       
  1168 ) CApaAppListServer no longer takes ownership of the app list and recognizer passed into its c'tor
       
  1169 
       
  1170 ) UpdateList() withdrawn from the Xxx API to avoid nasty re-entrance problems in the app list.
       
  1171 
       
  1172 ) The max filename length for recognizer dll's is now limited to 12 characters (not including path or extension). 
       
  1173 This is defined as KApaMaxRecognizerNameLength in apaflrec.h
       
  1174 
       
  1175 ) CRecognizerArray* RecognizerListLC()const and SetRecognizersFromList(const CRecognizerArray& aList) added to CApaScanningFileRecognizer so that multiple recognizers can be kept up-to-date without them all needing to rescan.
       
  1176 
       
  1177 ) The exe recognizer now recognizes all files with a 1st UID of KExecutableImageUid (defined in e32uid.h). It runs them as exe's on ARM, but loads them as dll's under WINS (exe's dont work under WINS).
       
  1178 UID[2] values are no longer used for exe's - KUidExe, KUidExeNonFile and KUidExeDoc have been withdrawn.
       
  1179 
       
  1180 Changes as a result of AndrewT's API review:
       
  1181 
       
  1182 ) CApaDll, and it's containing header apadll.h, made private - no longer released
       
  1183 
       
  1184 ) MApaAppFinder becomes CApaAppFinder - better design, as the object can be deleted through this interface
       
  1185 MApaAppLocator becomes CApaAppLocator for similar reasons...
       
  1186 
       
  1187 ) As a result CApaAppFinder becomes CApaScanningAppFinder
       
  1188 
       
  1189 ) CApaApplication::OpenIniFileLC(RFs& aFs) becomes pure virtual to avoid dangerous policy decisions on file locations. 
       
  1190 An implementation will be provided by Eikon :-)
       
  1191 
       
  1192 ) Reserved some virtual methods in CApaApplication and CApaDocument
       
  1193 
       
  1194 ) KIniFileDrive removed from apadef.h along with KIniFileExtension and KAppInfoFileExtension
       
  1195 
       
  1196 ) TApaDocCleanupItem (apacln.h) has changed slightly - it's now even easier to but CApaDocument-derived classes on the cleanup stack:
       
  1197 
       
  1198 		TApaDocCleanupItem cleanup(iApaProcess,doc);
       
  1199 		CleanupStack::PushL(cleanup);
       
  1200 		// do stuff...
       
  1201 		CleanupStack::Pop();
       
  1202 
       
  1203 ) The following definitions moved from apadef.h to a new header apfdef.h:
       
  1204 KAppFileExtension
       
  1205 KAppInfoFileExtension
       
  1206 KIniFileExtension
       
  1207 KIniFileDrive
       
  1208 
       
  1209 
       
  1210 
       
  1211 
       
  1212 AppArc.056
       
  1213 ==========
       
  1214 
       
  1215 07/04/97 by IanH
       
  1216 
       
  1217 Uses:
       
  1218 
       
  1219 	apparc.dll: E32[097] ; F32[067] ; Store[041] ; GDI[047]
       
  1220 
       
  1221 	apgrfx.dll: Fntstore[038] ; Fbserv[053] ; Bitgdi[053] ; Wserv[078]
       
  1222 
       
  1223 Tools: E32Tools[060] ; E32Utils[010] ; GDITOOLS[031] ; GCCTOOLS[113]
       
  1224 
       
  1225 General:
       
  1226 
       
  1227 1) Not binary compatible with previous releases.
       
  1228 
       
  1229 ) CApaMaskedBitmap::NewL() made static (spotted by Bill)
       
  1230 
       
  1231 ) As suggested by Geert, the protected interfaces of all public classes have been reviewed. 
       
  1232 The following classes no longer have protected interfaces, meaning that they lose some exported functions and can no longer be derived from:
       
  1233 
       
  1234 	CApaDoor
       
  1235 	CApaModelDoor
       
  1236 	CApaAppFinder 
       
  1237 	CApaIconFileReader / Writer (these classes have also been renamed... see below)
       
  1238 
       
  1239 ) CApaAppListServer startup changed. The server now runs in the callers thread, and takes ownership of the applist and file recognizer passed to it.
       
  1240 Any shell should have code similar to the following in it's construction routine (eg in CShlModel::NewL()):
       
  1241 
       
  1242 	CApaAppFinder* appFinder=CApaAppFinder::NewL(fs);
       
  1243 	appList = CApaAppList::NewL(fs,appFinder);	// takes ownership of appFinder
       
  1244 	fileRecognizer = CApfFileRecognizer::NewL(fs,appList,aAppStarter);
       
  1245 	appListServer = CApaAppListServer::NewL(appList,fileRecognizer); // takes ownership of appList and fileRecognizer
       
  1246 
       
  1247 ) Icon files have been renamed to application info files - they now contain information previously encoded into the app UID.
       
  1248 The old .ICN file format is no longer supported - new .AIF files for all apps will be forthcoming.
       
  1249 The capabilities are defined by the following class in apgicnfl.h:
       
  1250 
       
  1251 	class TApaAppCapability
       
  1252 		{
       
  1253 	public:
       
  1254 		TBool iCannotRunAsMainApp;
       
  1255 		TBool iIsEmbeddable;
       
  1256 		TBool iSupportsNewFile;
       
  1257 		};
       
  1258 	typedef TPckgBuf<TApaAppCapability> TApaAppCapabilityBuf;
       
  1259 
       
  1260 New methods of the app info file reader and writer (previously icon file reader/writer) get and set the capability:
       
  1261 
       
  1262 TInt CApaAppInfoFileReader::Capability(TDes8& aInfo)const
       
  1263 TInt CApaAppInfoFileWriter::SetCapability(TDes8& aInfo)const
       
  1264 
       
  1265 Both methods should be used in conjunction with the TApaAppCapabilityBuf buffer as follows:
       
  1266 
       
  1267 	// set some capabilities
       
  1268 	TApaAppCapability capability;
       
  1269 	capability.iIsEmbeddable = ETrue;
       
  1270 	capability.iSupportsNewFile = EFalse;
       
  1271 	TApaAppCapabilityBuf buf(capability);
       
  1272 	TInt ret = writer->SetCapability(buf);
       
  1273 
       
  1274 	// check the capability
       
  1275 	TApaAppCapabilityBuf buf;
       
  1276 	TInt ret = reader->Capability(buf);
       
  1277 	TApaAppCapability capability=buf();
       
  1278 
       
  1279 ) There have been various API changes to support this:
       
  1280 	- The CApaIconFileXxx classes become CApaAppInfoFileXxx 
       
  1281 	- KIconFileExtension becomes KAppInfoFileExtension and is now defined as ".AIF"
       
  1282 	- KUidAppIcon is renamed KUidAppInfoFile, but retains the same value.
       
  1283 	- some classes have gained Capability(TDes& ) methods, into which you  should pass a TApaAppCapabilityBuf as described above.
       
  1284 	- CApaApplication::OpenIconFileLC() becomes OpenAppInfoFileLC()
       
  1285 	- MApaAppLocator::GetAppCapabilityByUid(TDes8& aCapabilityBuf,TUid aAppUid)=0 added
       
  1286 
       
  1287 ) All apps should now have the same UID[1] - KUidApp. All other app UID values have been withdrawn.
       
  1288 As a result CApaDll::IsAppUid() has been withdrawn.
       
  1289 
       
  1290 ) EIKAPP.DEF, the def file used by apps when linking, has been renamed APP.DEF and is now reeased by apparc into epoc32\release\wins.
       
  1291 The link section of all apps should now contain /def:"\Epoc32\Release\Wins\app.def" unless they have any other exports apart from those specified app.def
       
  1292 A matching app.frz has been released into \Epoc32\Release\Marm\ - this is only a guide however. 
       
  1293 Each app should produce it's own set of 4 ARM .frz files (one for each build) because ARM .frz files encode the dll name and build in their first line.
       
  1294 
       
  1295 ) There are two new releasables dfwns and dfarm that should be fetched to \epoc32\release\wins\ and \epoc32\release\marm\ respectively. They contain the .def files for apps and recognizers.
       
  1296 
       
  1297 From Neil:
       
  1298 
       
  1299 ) CApaTask::SwitchOpenFile() and SwitchCreateFile() now check the window group name for busy and not supported flags, returning an error if the request cannot be completed. 
       
  1300 A few chnages have been made to CApaWindowGroupName to support this
       
  1301 
       
  1302 
       
  1303 
       
  1304 
       
  1305 
       
  1306 
       
  1307 
       
  1308 
       
  1309 
       
  1310 AppArc.055
       
  1311 ==========
       
  1312 
       
  1313 06/04/97 by IanH
       
  1314 
       
  1315 Uses:
       
  1316 
       
  1317 	apparc.dll: E32[096] ; F32[065] ; Store[040] ; GDI[046]
       
  1318 
       
  1319 	apgrfx.dll: Fntstore[037] ; Fbserv[052] ; Bitgdi[051] ; Wserv[076]
       
  1320 
       
  1321 Tools: E32Tools[057] ; E32Utils[009] ; GDITOOLS[031] ; GCCTOOLS[113]
       
  1322 
       
  1323 General:
       
  1324 
       
  1325 1) Not binary compatible with previous releases.
       
  1326 
       
  1327 From Neil:
       
  1328 
       
  1329 ) RestartAfterBackup() and Set...() removed from CApaWindowGroupName API as these services are now handled remotely.
       
  1330 
       
  1331 ) RespondsToSwitchFilesEvent() and Set...() added to CApaWindowGroupName - an app (eg OPL) can unset this flag to inform the shell that it does not support switch files and that a new instance should be created for each new launching of the app.
       
  1332 
       
  1333 ) RespondsToShutdownEvent() and Set...() added to CApaWindowGroupName - an app (eg OPL) can set this flag to inform any shell that it needs to be killed, not closed.
       
  1334 
       
  1335 ) TApaTask::KillTask() added to kill tasks that dont respond to "shutdown" messages
       
  1336 
       
  1337 ) T_wgnam extended to test above CApaWindowGroupName changes.
       
  1338 
       
  1339 From Ian:
       
  1340 
       
  1341 ) Fixes to a couple of header files such that all referenced classes are now defined prior to their use, rather than relying on someone else doing it some time before including that header.
       
  1342 
       
  1343 ) CApaAppList now behaves sensibly if an app's icon file is corrupt or empty - it loads icons from the default icon file rather than leaving.
       
  1344 
       
  1345 ) CApaIconFileReader::NewL() added to complement NewLC()
       
  1346 
       
  1347 ) Extra "name" builds added to all .mak files to make binary compatable releases easier (suggested by Geert)
       
  1348 
       
  1349 ) Temporarily iconic doors now persist the correct glass door size even if the embedded doc is edited (defect spotted by MartinH SW-2195)
       
  1350 
       
  1351 ) Base address of 0x43700000 set for apserv.dll (ommission spotted by MartinB)
       
  1352 
       
  1353 ) All RApaLsSession methods now implemented except for UpdateList() and StartApp(), which still return KErrNotSupported.
       
  1354 
       
  1355 
       
  1356 
       
  1357 
       
  1358 
       
  1359 
       
  1360 
       
  1361 AppArc.053
       
  1362 ==========
       
  1363 
       
  1364 30/03/97 by IanH
       
  1365 
       
  1366 Uses:
       
  1367 
       
  1368 	apparc.dll: E32[095] ; F32[063] ; Store[039] ; GDI[046]
       
  1369 
       
  1370 	apgrfx.dll: Fntstore[037] ; Fbserv[051] ; Bitgdi[051] ; Wserv[075]
       
  1371 
       
  1372 Tools: E32Tools[056] ; E32Utils[009] ; GDITOOLS[031] ; GCCTOOLS[113]
       
  1373 
       
  1374 General:
       
  1375 
       
  1376 1) Not binary compatible
       
  1377 
       
  1378 From Neil:
       
  1379 
       
  1380 ) CApaCommandLine::New(HBufC*) added.
       
  1381 
       
  1382 ) Untrapped leave defect fix to CApaTaskList
       
  1383 
       
  1384 From Ian:
       
  1385 
       
  1386 ) OOM testcode T_OOM added. A couple of OOM fixes have arisen from this.
       
  1387 
       
  1388 ) Fix to CApaAppFinder such that it ignores more F32 errors rather than stopping a search prematurely without good reason (spotted by Simon while using his floppy drive)
       
  1389 
       
  1390 ) The API of RApaLsSession (apgcli.h) is now complete, though some methods are not yet implemented server-side. 
       
  1391 This class represents a session with the app list server.
       
  1392 The app list server provides system-wide access to any shell's cached list of applications.
       
  1393 When the shell is started it will create a CApaAppList - after doing this it should start a server, passing in the handle to it's list.
       
  1394 The server shares the Shell's heap and accesses the list as required.
       
  1395 If the shell does not set up the server all client attempts to connect will fail. Among other things, this will mean that "Embed object" dialogs will not work.
       
  1396 
       
  1397 ) TApaAlServStarter::StartInThread(CApaAppList* aAppList,CApaFileRecognizer* aFileRecognizer) now takes the CApaFileRecognizer* as an extra parameter. 
       
  1398 For you can pass in a null recognizer handle if you wish, though that will mean that clients wont be able to start apps using the app list server.
       
  1399 
       
  1400 ) Americanized some argument names in header files on request of MartinT (eg aRecogniser -> aRecognizer)
       
  1401 
       
  1402 ) static TInt CApaApplication::GenerateFileName(RFs& aFs,TFileName& aRootName) added - some code taken from Shell.
       
  1403 The root name passed should consist of drive,path,and root filename. 
       
  1404 The path is created if it doesn't already exist, and then if the root filename is already in use a new name is generated:
       
  1405 eg "c:\Documents\Name.ext"
       
  1406    "c:\Documents\name(01).ext"
       
  1407 aRootName is set to equal the new full name.
       
  1408 KErrArgument is returned if not all components of aRootname are present, and KErrOverflow is returned if the generated filename becomes too long.
       
  1409 
       
  1410 ) The definition of "non-filebased" has been tightened somewhat to mean "cannot create new files" ie an app that doesn't want to appear on the Shell's "New file" list.
       
  1411 
       
  1412 ) 
       
  1413 
       
  1414 
       
  1415 
       
  1416 
       
  1417 
       
  1418 
       
  1419 
       
  1420 
       
  1421 AppArc.052
       
  1422 ==========
       
  1423 
       
  1424 24/03/97 by IanH
       
  1425 
       
  1426 Uses:
       
  1427 
       
  1428 	apparc.dll: E32[093] ; F32[061] ; Store[037] ; GDI[044]
       
  1429 
       
  1430 	apgrfx.dll: Fntstore[036] ; Fbserv[050] ; Bitgdi[050] ; Wserv[074]
       
  1431 
       
  1432 Tools: E32Tools[053] ; E32Utils[009] ; GDITOOLS[031] ; GCCTOOLS[113]
       
  1433 
       
  1434 General:
       
  1435 
       
  1436 1) Not binary compatible
       
  1437 
       
  1438 From Ian:
       
  1439 
       
  1440 ) The pure virtual method CApaDocument::IsEmptyL(CStreamStore) becomes IsEmpty()const.
       
  1441 It becomes const, ceases to leave and no longer takes a store as a parameter - on Restore() doc's should internalize enough data such that they know whether or not they have any content. (suggested by Delma)
       
  1442 
       
  1443 ) Added new dll apserv - released as a part of the apgrfx releasables. It provides server access to a cached list of apps available on the machine. Nobody bar Eikon will want to use it. 
       
  1444 More details to follow
       
  1445 
       
  1446 ) Added CApaDoor::AppUidL() that returns the UID of the app associated with the embedded doc (requested by DavidA)
       
  1447 
       
  1448 ) Icon files no longer stretch icons to the required size when they're requested. 
       
  1449 A call to CApaIconFileReader::CreateMaskedBitmapL() will now returned the largest available bitmap that isn't larger than the requested size.
       
  1450 If all available icons are larger than the size requested, the smallest available icon is scaled down and returned. 
       
  1451 
       
  1452 
       
  1453 
       
  1454 
       
  1455 
       
  1456 AppArc.050
       
  1457 ==========
       
  1458 
       
  1459 19/03/97 by IanH
       
  1460 
       
  1461 Uses:
       
  1462 
       
  1463 	apparc.dll: E32[093] ; F32[061] ; Store[037] ; GDI[044]
       
  1464 
       
  1465 	apgrfx.dll: Fntstore[036] ; Fbserv[050] ; Bitgdi[050] ; Wserv[074]
       
  1466 
       
  1467 Tools: E32Tools[053] ; E32Utils[009] ; GDITOOLS[031] ; GCCTOOLS[113]
       
  1468 
       
  1469 General:
       
  1470 
       
  1471 1) Binary compatible with 049
       
  1472 
       
  1473 From Ian:
       
  1474 
       
  1475 2) Defect fix to CApaDoor::ExternalizeStateStream() - temporarily iconic doors now remember their glass size correctly after multiple Store()'s (spotted by DavidA)
       
  1476 
       
  1477 
       
  1478 
       
  1479 
       
  1480 
       
  1481 
       
  1482 
       
  1483 AppArc.049
       
  1484 ==========
       
  1485 
       
  1486 11/3/97 by IanH
       
  1487 
       
  1488 Uses:
       
  1489 
       
  1490 	apparc.dll: E32[093] ; F32[061] ; Store[037] ; GDI[044]
       
  1491 
       
  1492 	apgrfx.dll: Fntstore[036] ; Fbserv[050] ; Bitgdi[050] ; Wserv[074]
       
  1493 
       
  1494 Tools: E32Tools[053] ; E32Utils[009] ; GDITOOLS[031] ; GCCTOOLS[113]
       
  1495 
       
  1496 General:
       
  1497 
       
  1498 1) Not binary compatible with previous releases
       
  1499 
       
  1500 From Ian:
       
  1501 
       
  1502 2) Defect fix to dodgy ASSERT in CApaDoor::DetachFromStore() (spotted by DavidA)
       
  1503 
       
  1504 ) CApaDocument::EditL() now takes an extra parameter: TBool aReadOnly.
       
  1505 If aReadOnly is true, the embedded doc should be opened in read-only mode - ie navigation of the document should be allowed, but it should not be possible to change the content.
       
  1506 This parameter defaults to EFalse.
       
  1507 
       
  1508 ) Agenda defects SW-479 and SW-520 fixed - glass doors now correctly persist their size if they are temporarily made iconic
       
  1509 
       
  1510 ) CApaDoor::SetFormatToTemporaryIcon() now takes a TBool parameter which allows it to be toggled on and off. The default parameter is ETrue
       
  1511 If a door is in iconic mode, SetFormatToTemporaryIcon(ETrue) has no effect - it stays iconic.
       
  1512 If a door is glass, SetFormatToTemporaryIcon(ETrue) temporarily makes it iconic, but when persisted the door will persist glass door settings.
       
  1513 SetFormatToTemporaryIcon(EFalse) only has an effect if the door is currently ETemporarilyIconic. In this case the door is returned to EGlassDoor format.
       
  1514 
       
  1515 ) TApaPictureFactory::SetIconSize() added. 
       
  1516 If called, this causes all doors restored by the factory to have their iconic size set as specified instead of using the persisted value.
       
  1517 This fixes SW-1026 - doors being pasted from one app to another end up with the door size of the old app, even though this is often different to the default icon size in the new app.
       
  1518 
       
  1519 From Neil:
       
  1520 
       
  1521 ) TApaWindowGroupName becomes CApaWindowGroupName, using an HBufC to provide support for long filenames.  
       
  1522 This will fix showstopper defect SW-1488
       
  1523 
       
  1524 Consequent changes to this class are:
       
  1525 
       
  1526 The static FindByXxx() functions no longer return an instance of the class.  
       
  1527 Use the NewL() or NewLC() variant which takes a window group id (returned by the FindByXxx() function), to initialize a window group name or the new exported function ConstructFromWgIdL() for an existing instance of the class
       
  1528 
       
  1529 SetCaption() becomes SetCaptionL() and likewise: SetDocName() becomes SetDocNameL();
       
  1530 
       
  1531 
       
  1532 
       
  1533 AppArc.048
       
  1534 ==========
       
  1535 
       
  1536 11/3/97 by DavidW
       
  1537 
       
  1538 Uses:
       
  1539 
       
  1540 	apparc.dll: E32[090] ; F32[060] ; Store[037] ; GDI[044]
       
  1541 
       
  1542 	apgrfx.dll: Fntstore[036] ; Fbserv[049] ; Bitgdi[049] ; Wserv[073]
       
  1543 
       
  1544 Tools: E32Tools[051] ; E32Utils[008] ; GDITOOLS[030] ; GCCTOOLS[113]
       
  1545 
       
  1546 General:
       
  1547 
       
  1548 1) Not binary compatible
       
  1549 
       
  1550 2) Provided a VALID verb for MNT.CMD, to check that the (Arm Rel and
       
  1551 Arm Deb) releaseables are completely rebuildable from the network
       
  1552 
       
  1553 3) Three new functions added to TApaTask:
       
  1554 
       
  1555     IMPORT_C TInt SwitchOpenFile(const TDesC& aFilename);
       
  1556     IMPORT_C TInt SwitchCreateFile(const TDesC& aFilename);
       
  1557     IMPORT_C TInt SendMessage(TUid aUid, const TDesC& aParams);
       
  1558 
       
  1559 4) The above implemented by means of new Uid values
       
  1560 
       
  1561 const TUid KUidApaMessageSwitchOpenFile={0x10000163};
       
  1562 const TUid KUidApaMessageSwitchCreateFile={0x10000164};
       
  1563 
       
  1564 5) I have broken the Unicode build, since SendMessage wants to call
       
  1565 an RWsSession function taking a TDesC8& as a parameter.  I'll leave
       
  1566 this for someone else to fix
       
  1567 
       
  1568 6) Fixed the FindApp(TUid) and CycleTasks() functions to TApaTaskList
       
  1569 to be EXPORTed
       
  1570 
       
  1571 From Ian:
       
  1572 ---------
       
  1573 7) On Kevin's suggestion, introduced a new TFormat type for CApaDoorBase, namely ETemporarilyIconic
       
  1574 
       
  1575 8) New virtual function SetFormatToTemporaryIconL() in CApaDoor, with the effect that
       
  1576 // if the door is currently iconic do nothing
       
  1577 // if the door is glass switch it's format to iconic, but ensure that when externalized the format will be persisted as glass
       
  1578 
       
  1579 
       
  1580 
       
  1581 
       
  1582 
       
  1583 AppArc.047
       
  1584 ==========
       
  1585 
       
  1586 10/3/97 by IanH
       
  1587 
       
  1588 Uses:
       
  1589 
       
  1590 	apparc.dll: E32[090] ; F32[060] ; Store[037] ; GDI[044]
       
  1591 
       
  1592 	apgrfx.dll: Fntstore[036] ; Fbserv[049] ; Bitgdi[049] ; Wserv[073]
       
  1593 
       
  1594 Tools: E32Tools[051] ; E32Utils[008] ; GDITOOLS[030] ; GCCTOOLS[113]
       
  1595 
       
  1596 General:
       
  1597 
       
  1598 1) Not binary compatible
       
  1599 
       
  1600 2) Takes new F32, GDI, GCC
       
  1601 
       
  1602 ) CApaDocument::EditL() no longer takes a store as a parameter. On restoration documents should hang onto the store handle for future reference, only nulling it if DetachFromStore() is called (this will be called before the doc is stored).
       
  1603 
       
  1604 ) The OPL recogniser (formerly known as recint.rdl) is no longer released by apparc. 
       
  1605 It will now be released as a part of OPL - .iby's should change to reflect this but no changes to mnt getbld's should be required as all apparc's recognisers are packaged in one releasable.
       
  1606 
       
  1607 ) Default implementation of CApaDocument::GlassDoorL() now panics instead of returning null. Should aid debugging. (suggested by MartinB)
       
  1608 
       
  1609 ) TUid iSource added to CApaDoorBase for use by converters. 
       
  1610 It stores the foreign representation of a translated door (eg MS Word doc), and is KNullUid if the door was not created by converting from a foreign file.
       
  1611 
       
  1612 From Bill:
       
  1613 
       
  1614 ) CApaAppList::UpdateL() changed such that it only increments the "UpdateCounter" if the apps present have changed.
       
  1615 This will stop the Shell ExtrasBar from re-drawing itself every time a file is created / deleted, etc.
       
  1616 
       
  1617 ) TApaTaskList::FindApp(TUid) and TApaTaskList::CycleTasks() added (merged by NeilD)
       
  1618 
       
  1619 
       
  1620 
       
  1621 
       
  1622 
       
  1623 
       
  1624 
       
  1625 
       
  1626 
       
  1627 
       
  1628 AppArc.046
       
  1629 ==========
       
  1630 
       
  1631 4/3/97 by IanH
       
  1632 
       
  1633 Uses:
       
  1634 
       
  1635 	apparc.dll: E32[090] ; F32[060] ; Store[036] ; GDI[043]
       
  1636 
       
  1637 	apgrfx.dll: Fntstore[036] ; Fbserv[049] ; Bitgdi[049] ; Wserv[073]
       
  1638 
       
  1639 Tools: E32Tools[051] ; E32Utils[008] ; GDITOOLS[030] ; GCCTOOLS[111]
       
  1640 
       
  1641 General:
       
  1642 
       
  1643 1) Binary compatible with 045
       
  1644 
       
  1645 ) Fixed access violation defect in CApaDoor::SetFormatToGlass() (spotted by MartinD)
       
  1646 
       
  1647 
       
  1648 
       
  1649 
       
  1650 
       
  1651 
       
  1652 
       
  1653 AppArc.045
       
  1654 ==========
       
  1655 
       
  1656 3/3/97 by IanH
       
  1657 
       
  1658 Uses:
       
  1659 
       
  1660 	apparc.dll: E32[090] ; F32[058] ; Store[036] ; GDI[043]
       
  1661 
       
  1662 	apgrfx.dll: Fntstore[036] ; Fbserv[049] ; Bitgdi[049] ; Wserv[073]
       
  1663 
       
  1664 Tools: E32Tools[051] ; E32Utils[008] ; GDITOOLS[030] ; GCCTOOLS[111]
       
  1665 
       
  1666 General:
       
  1667 
       
  1668 1) Not binary compatible with 044
       
  1669 
       
  1670 ) updated to new components as above
       
  1671 
       
  1672 ) CApaAppFinder's constructor now takes it's RFs& as const (suggested by Simon)
       
  1673 
       
  1674 ) CApaDocument::GlassPictureL() no longer takes a store as a parameter. 
       
  1675 The doc will either be newly created or will be RestoreL()'ed before GlassPictureL() is called - so CApaDocument::RestoreL() must restore the doc to a state from which it can draw itself as a glass door (if it supports this form of display).
       
  1676 
       
  1677 ) CApaDoor::DocumentL() and SetFormatToGlassL() no longer take a store as a parameter
       
  1678 
       
  1679 ) CApaDoor::SetFormatToIconL() no longer takes a size as a parameter - the size is passed in on construction and persisted. 
       
  1680 An iconic door's Capability() states that it does not support scaling (ie changing its size) so that form will not allow the user to drag icons to different sizes. 
       
  1681 Despite this the icons size may still be altered through calls to SetSizeInTwips() and SetSizeInPixels().
       
  1682 
       
  1683 ) Embedded documents in doors are now put in their own embedded store inside the door. (Thanks to Charles, AndrewT and Geert for help with this)
       
  1684 This means that doors can be copied without having to load up the document they contain, giving speed and memory gains.
       
  1685 A consequence of this is that even if a main document is encrypted, any embedded documents will remain unencrypted. 
       
  1686 Embedded documents may be encrypted in their own right, but they do not inherit any protection from container documents.
       
  1687 This should be stressed in user documentation. 
       
  1688 
       
  1689 ) Representation of doors as icons improved - they now make better use of the different sizes of icon available.
       
  1690 
       
  1691 ) If an app supports embedding (eg it has a rich text component) it should ensure that it overrides CApaDocument::DetachFromStore and propagates the call to all embedded objects.
       
  1692 
       
  1693 ) CApaIconFileReader::NewLC() now accepts KNullUid instead of a valid uid for the icon file, and doesn't check the type in this case.
       
  1694 
       
  1695 ) MApaAppFinder gains two more pure virtual methods that return the temp file path and the full filename of the default icon file, centralizing access to the two pieces of info.
       
  1696 
       
  1697 ) CApaProcess::NewL() no longer takes a temp path as a parameter. This path is now defined in apffndr.h and need not be defined anywhere else.
       
  1698 
       
  1699 ) CApaModelDoor now stores and restores it's format and size such that it can be understood by a CApaDoor and vice versa.
       
  1700 
       
  1701 ) Class CApaDoorBase introduced, which CApaModelDoor and CApaDoor inherit from. 
       
  1702 The enum TFormat that was scoped by CApaDoor is now scoped by CApaDoorBase.
       
  1703 The method CApaDoor::GetFormat() moves to CApaDoorBase and changes name to Format().
       
  1704 
       
  1705 ) The UID typing scheme for app dll's has been extended slightly. 
       
  1706 The general layout for an app dll's uid type has not been changed, and is:
       
  1707 
       
  1708 UID[0] = PE File
       
  1709 UID[1] = Type of app
       
  1710 UID[2] = particular app id
       
  1711 
       
  1712 The types of app have been extended to specify whether or not an app is file-based, and are now as follows:
       
  1713 
       
  1714 KUidApp							0x1000006c - file-base, non-embeddable app (eg Agenda)
       
  1715 KUidAppNonFile					0x1000014a - non-file based non-embeddable app (eg Calculator)
       
  1716 KUidAppEmbeddable				0x1000006e - file-based embeddable and main app (eg Word)
       
  1717 KUidAppEmbeddableNonFile		0x1000014b - non-file-based main and embeddable app (no eg)
       
  1718 KUidAppEmbeddableOnly			0x1000006f - app is embeddable only, cannot run as a main app (therefore non-filebased by definition)
       
  1719 
       
  1720 File-based apps are document centric and create lots of files (eg word), while non-file-based apps aren't and don't (eg calculator).
       
  1721 All app writers must choose the UID that best suits their app - see Ian if you're unsure.
       
  1722 This change will allow the shell to list only file-based apps in it's "Create new file" dialog.
       
  1723 This has involved a couple of UID name changes (though the meaning of the UIDs reamins the same)
       
  1724 
       
  1725 KUidAppDll becomes KUidApp
       
  1726 KUidAppAndEmbeddedApp becomes KUidAppEmbeddable
       
  1727 
       
  1728 ) A third file recogniser dll added: RECEXE.DLL, the exe recogniser. This recognises files with the following uid layout:
       
  1729 
       
  1730 For exe's:
       
  1731 
       
  1732 UID[0] = PE File
       
  1733 UID[1] = Type of exe					
       
  1734 UID[2] = particular exe id
       
  1735 
       
  1736 The types of exe mirror the types of app, and are as follows:
       
  1737 
       
  1738 KUidExe							0x10000070 
       
  1739 KUidExeNonFile					0x1000014C
       
  1740 
       
  1741 For doc's associated with exe's:
       
  1742 
       
  1743 UID[0] = Store type
       
  1744 UID[1] = KUidExeDoc				0x10000071
       
  1745 UID[2] = id of associated exe
       
  1746 
       
  1747 ) File recogniser dlls now have a .rdl extension (Recognizer DLl) and live in \system\recogs NB this means mnt getrel's will have to change to get the recognisers down into this directory
       
  1748 
       
  1749 ) Changes to CApaFileRecognizerType:
       
  1750 RecognizeFileL() becomes concrete and a pure virtual method DoRecognizeFileL() is added.
       
  1751 TUid iFileType is added - by default this is set to UID[1] of the recognized file - it's type
       
  1752 TUid iAppUid is now the UID of the associated app - by default this is set to UID[2] of the recognized file. 
       
  1753 There are now inline methods to return these two UID's.
       
  1754 Pure virtual method Capability() added - this returns a TCapability class detailing whether the recognised file is a program, and, if so, whether it is file-based and whether it is embeddable.
       
  1755 
       
  1756 ) CApaDocument::DetachFromStoreL() now takes a CPicture::TDetach as a parameter. 
       
  1757 This will be one of EDetachFull and EDetachDraw.
       
  1758 For EDetachFull you should ensure that you internalize all data that you require to fully store yourself later, and null any references to containing stores.
       
  1759 For EDetachDraw you should ensure that you have internalized enough info to draw yourself, nothing more, and that you null any references to containing stores.
       
  1760 If an app doesn't support drawing as a glass door it wont have to do anything in the case of EDetachDraw (except that nulling of stores).
       
  1761 
       
  1762 From Neil:
       
  1763 
       
  1764 ) TApaCommandLine class heavily revamped. 
       
  1765 It's now called CApaCommandLine, and gains methods for setting each component of the command line separately.
       
  1766 
       
  1767 ) Implementors of MApaAppStarter::StartAppL(const CApaCommandLine& aCommandLine) should note that it must now take ownership of the command line and protect it and destroy it appropriately.
       
  1768  
       
  1769 
       
  1770 
       
  1771 
       
  1772 
       
  1773 
       
  1774 
       
  1775 
       
  1776 AppArc.043
       
  1777 ==========
       
  1778 
       
  1779 13/2/97 by IanH
       
  1780 
       
  1781 Uses:
       
  1782 
       
  1783 	apparc.dll: E32[086] ; F32[050] ; Store[035] ; GDI[042]
       
  1784 
       
  1785 	apgrfx.dll: Fntstore[035] ; Fbserv[045] ; Bitgdi[045] ; Wserv[065]
       
  1786 
       
  1787 Tools: E32Tools[050] ; E32Utils[005] ; GDITOOLS[028] ; GCCTOOLS[111]
       
  1788 
       
  1789 General:
       
  1790 
       
  1791 1) Not binary compatible with 042
       
  1792 
       
  1793 ) updated to new components as above
       
  1794 
       
  1795 2) A large-scale re-organisation of code has taken place. 
       
  1796 AppArc is now split into 3 major dll's plus multiple plug-in app recognisers.
       
  1797 Of all the changes, the highlights include:
       
  1798 
       
  1799 The file recogniser base classes now live in apparc.dll and can be found in apaflrec.h, not apgflrec.h as was previously the case.
       
  1800 
       
  1801 TApaAppIdentifier, TApaAppEntry and TApaAppFinderBase now live in a new header apaid.h in apparc.dll
       
  1802 
       
  1803 Apgrfx.h becomes apgdoor.h as it defines CApaDoor
       
  1804 
       
  1805 TApaAppFinderBase becomes MApaAppFinder, and gains member functions to find all available apps as well as finding a particular one.
       
  1806 
       
  1807 TApaAppFinder becomes CApaAppFinder. It now lives in apfile.dll and encasulates all the search logic that depends on any particular file system structure (ie system\apps etc).
       
  1808 
       
  1809 CApaAppList now takes a MApaAppFinder as a parameter to its constructor, using this to build its list of available apps. It takes ownership of the app finder supplied.
       
  1810 
       
  1811 A couple of mixins gain virtual inline destructors. This allows derived objects to be deleted through these interfaces.
       
  1812 
       
  1813 Names defined for a few previously anonymous CBase-derived classes.
       
  1814 
       
  1815 apgrfx.h becomes apgdoor.h
       
  1816 
       
  1817 CApaModelHeader::AppId() made const (suggested by Duncan)
       
  1818 
       
  1819 Class CApaScanningFileRecogniser added - this is a concrete implementation of CApaFileRecogniser that scans the system for plug-in app recogniser dlls (eg interpreted app recogniser, exe recogniser, apparc app recogniser).
       
  1820 Plug-in app recognisers are searched for in \system\libs\ on all non-remote drives.
       
  1821 Plug-in dlls should have the following UIDS: 
       
  1822 	UID[0] = [dll build]
       
  1823 	UID[1] = KUidAppRecognizer   (={0x1000013E})
       
  1824 	UID[2] = [uid of the particular dll] (eg KUidInterpreterExe for the exe interpreter)
       
  1825 A plug-in's first exported function should be a parameterless constructor that returns a pointer to full constructed object of base type CApaFileRecogniserType.
       
  1826 
       
  1827 A concrete implementation of MApaAppLocator, CApaAppLocatorProxy, is also provided (for the sole use of CApaScanningFileRecogniser). This class implements GetAppEntryByUid(TUid) by scanning the system for an app dll that has the matching UID.
       
  1828  
       
  1829 App dll's should now once again export their constructor as their ordinal 1 method. The dummy 1st export is no longer required due to changes in the shell to bring it into line with the rest of the world. (Sorry for the hassle).
       
  1830 
       
  1831 
       
  1832 Testcode:
       
  1833 
       
  1834 T_FILE testcode added that tests the built-in app finder, and also CApaScanningFileRecogniser.
       
  1835 
       
  1836 T_PRO expanded to test classes CApaAppList and CApaAppData that previously had no testcode.
       
  1837 
       
  1838 
       
  1839 
       
  1840 
       
  1841 AppArc.042
       
  1842 ==========
       
  1843 
       
  1844 12/2/97 by IanH
       
  1845 
       
  1846 Uses:
       
  1847 
       
  1848 	apparc.dll: E32[086] ; F32[050] ; Store[035] ; GDI[042]
       
  1849 
       
  1850 	apgrfx.dll: Fntstore[035] ; Fbserv[045] ; Bitgdi[045] ; Wserv[065]
       
  1851 
       
  1852 Tools: E32Tools[050] ; E32Utils[005] ; GDITOOLS[028] ; GCCTOOLS[111]
       
  1853 
       
  1854 General:
       
  1855 
       
  1856 1) Binary compatible with 041
       
  1857 
       
  1858 2) Regressed to GCCTOOLS 111
       
  1859 
       
  1860 3) Interpreted app starter re-written (by Howard)
       
  1861 
       
  1862 4) Defect fix to command line to remove trailing space from full command line (by Neil)
       
  1863 
       
  1864 Notes for Glass-door enabled apps and SDK:
       
  1865 
       
  1866 Having just written a glass door add-on for TOPBUT1 I thought it might be worth more carefully defining a couple of the methods in the CPicture interface:
       
  1867 
       
  1868 The "Current size" of a picture is calculated from the original size taking cropping and scale factor into account.
       
  1869 
       
  1870 The value of "Crop" is relative to the *original* size of the picture.
       
  1871 
       
  1872 
       
  1873 
       
  1874 
       
  1875 
       
  1876 
       
  1877 
       
  1878 AppArc.041
       
  1879 ==========
       
  1880 
       
  1881 7/2/97 by IanH
       
  1882 
       
  1883 Uses:
       
  1884 
       
  1885 	apparc.dll: E32[086] ; F32[050] ; Store[035] ; GDI[042]
       
  1886 
       
  1887 	apgrfx.dll: Fntstore[035] ; Fbserv[045] ; Bitgdi[045] ; Wserv[065]
       
  1888 
       
  1889 Tools: E32Tools[050] ; E32Utils[005] ; GDITOOLS[028] ; GCCTOOLS[112]
       
  1890 
       
  1891 General:
       
  1892 
       
  1893 1) Not build compatible with 040
       
  1894 
       
  1895 ) Apps must now export their constructor as the ordinal 2 function of their app dll. 
       
  1896 Changes will be made to the Eikon .def file to support this, but all apps should add the following line to their project to ensure that they have a first exported function as well as a second:
       
  1897 
       
  1898 __FIRST_EXPORT
       
  1899 
       
  1900 ) Defect fix in command line classes by Neil
       
  1901 
       
  1902 
       
  1903 
       
  1904 
       
  1905 AppArc.040
       
  1906 ==========
       
  1907 
       
  1908 6/2/97 by IanH
       
  1909 
       
  1910 Uses:
       
  1911 
       
  1912 	apparc.dll: E32[086] ; F32[050] ; Store[035] ; GDI[042]
       
  1913 
       
  1914 	apgrfx.dll: Fntstore[035] ; Fbserv[045] ; Bitgdi[045] ; Wserv[065]
       
  1915 
       
  1916 Tools: E32Tools[050] ; E32Utils[005] ; GDITOOLS[028] ; GCCTOOLS[112]
       
  1917 
       
  1918 General:
       
  1919 
       
  1920 1) Binary compatible with 039
       
  1921 
       
  1922 ) Changes made to CApaAppData such that if an application doesnt have an icon file it's dll name is used as a caption and the default icon is used as it's icon. Previously apps without icon files weren't being detected by the shell at all.
       
  1923 
       
  1924 
       
  1925 
       
  1926 
       
  1927 
       
  1928 
       
  1929 
       
  1930 
       
  1931 AppArc.039
       
  1932 ==========
       
  1933 
       
  1934 5/2/97 by IanH
       
  1935 
       
  1936 Uses:
       
  1937 
       
  1938 	apparc.dll: E32[086] ; F32[050] ; Store[035] ; GDI[042]
       
  1939 
       
  1940 	apgrfx.dll: Fntstore[035] ; Fbserv[045] ; Bitgdi[045] ; Wserv[065]
       
  1941 
       
  1942 Tools: E32Tools[050] ; E32Utils[005] ; GDITOOLS[028] ; GCCTOOLS[112]
       
  1943 
       
  1944 General:
       
  1945 
       
  1946 1) Not binary compatible with 038
       
  1947 
       
  1948 ) apgrfx.dll now has its base address set to avoid conflicts (spotted by MartinB)
       
  1949 
       
  1950 ) MApaDocContainer renamed MApaEmbeddedDocObserver, and an extra exit mode "EEmpty" added. If an embedded document has no content it should return EEmpty when it exits, and the container can then choose not to insert it if it doesnt want to.
       
  1951 
       
  1952 ) Defect in CApaDoor::RestoreDoc() fixed (spotted by DavidA)
       
  1953 
       
  1954 From Bill:
       
  1955 
       
  1956 ) Rewrite of the file recogniser module, and new classes CApaAppList and CApaAppData that cache a list of all apps available on the system. No testcode for this stuff yet...
       
  1957 
       
  1958 ) The interpreted app recogniser is now completely perplexed and will have to be rewritten (Howard?)
       
  1959 
       
  1960 From Neil:
       
  1961 
       
  1962 ) Relocated the TApaCommandLine class from Eikon to Apparch.  This class encapsulates the command line and is formatted as follows:
       
  1963 
       
  1964 <app name><space>command byte><doc name><space><tail end>
       
  1965 
       
  1966 app name and doc name may conatain spaces if surrounded by quotes.  Embedded quotes in these names is not supported.
       
  1967 
       
  1968 Various accessor functions exist to extract the various components of the command line, and setter functions will be added soon (for now you must construct the command line in a descriptor and call Set())
       
  1969 
       
  1970 This class will be used to start all apps.  This has involved some API changes to the file recognizer classes.
       
  1971 
       
  1972 New class TApaWindowGroupName to encapsulate the window group name of applications.  Set and get functions exist for all components.  
       
  1973 
       
  1974 The window group name stores the caption name, document name, application uid, and several "status bits" for apps to mark themselves as System (will not be closed for backup), Busy, that there document name is not actually a file (eg Platypus) and whether the app wishes to be restarted after a backup (mainly for use by OPL programs but will be ignored in version 1 anyway!)
       
  1975 
       
  1976 Test code for TApaWindowGroupName in T_WGNAM.*
       
  1977 
       
  1978 
       
  1979 
       
  1980 
       
  1981 
       
  1982 
       
  1983 AppArc.038
       
  1984 ==========
       
  1985 
       
  1986 3/2/97 by IanH
       
  1987 
       
  1988 Uses:
       
  1989 
       
  1990 	apparc.dll: E32[086] ; F32[050] ; Store[035] ; GDI[042]
       
  1991 
       
  1992 	apgrfx.dll: Fntstore[035] ; Fbserv[045] ; Bitgdi[045] ; Wserv[065]
       
  1993 
       
  1994 Tools: E32Tools[050] ; E32Utils[005] ; GDITOOLS[028] ; GCCTOOLS[112]
       
  1995 
       
  1996 General:
       
  1997 
       
  1998 1) Not binary compatible with 037
       
  1999 
       
  2000 2) Takes the new gdi etc.
       
  2001 
       
  2002 3) CApaProcess::NewL() now takes a TApaAppFinderBase by & instead of as a *, and no longer defaults this parameter to NULL.
       
  2003 The default search algorithm will now be provided in Eikon and must be passed in each time on construction of a process. 
       
  2004 Nb CApaProcess takes ownership of the TApaAppFinderBase passed in, which should be allocated on the heap.
       
  2005 
       
  2006 
       
  2007 
       
  2008 
       
  2009 
       
  2010 
       
  2011 
       
  2012 
       
  2013 
       
  2014 AppArc.037
       
  2015 ==========
       
  2016 
       
  2017 31/1/97 by IanH
       
  2018 
       
  2019 Uses:
       
  2020 
       
  2021 	apparc.dll: E32[086] ; F32[050] ; Store[033] ; GDI[041]
       
  2022 
       
  2023 	apgrfx.dll: Fntstore[034] ; Fbserv[044] ; Bitgdi[044] ; Wserv[064]
       
  2024 
       
  2025 Tools: E32Tools[050] ; E32Utils[005] ; GDITOOLS[028] ; GCCTOOLS[111]
       
  2026 
       
  2027 General
       
  2028 
       
  2029 1) Not binary compatible with 036
       
  2030 
       
  2031 ) App dlls are no longer Gate()'ed on loading. 
       
  2032 This means that __DECLARE_APP_DLL_UID should no longer be declared in each app's code and that the ordinal one function of an app dll should now be the constructor (this was previously the ordinal 2 function).
       
  2033 
       
  2034 ) Missing exports added to many file recogniser methods
       
  2035 
       
  2036 
       
  2037 
       
  2038 
       
  2039 
       
  2040 
       
  2041 
       
  2042 AppArc.036
       
  2043 ==========
       
  2044 
       
  2045 27/1/97 by IanH
       
  2046 
       
  2047 Uses:
       
  2048 
       
  2049 	apparc.dll: E32[086] ; F32[050] ; Store[033] ; GDI[041]
       
  2050 
       
  2051 	apgrfx.dll: Fntstore[034] ; Fbserv[044] ; Bitgdi[044] ; Wserv[064]
       
  2052 
       
  2053 Tools: E32Tools[050] ; E32Utils[005] ; GDITOOLS[028] ; GCCTOOLS[111]
       
  2054 
       
  2055 General
       
  2056 
       
  2057 1) Not binary compatible with 035
       
  2058 
       
  2059 ) apgrfx.dll now links to wserv
       
  2060 
       
  2061 ) Icon files no longer store iRequiresNewDocName, which as a result no longer has an accessor (change from Bill)
       
  2062 
       
  2063 ) New modules:
       
  2064 
       
  2065 ApgTask.h - the task and task list classes (formerly in Eikon)
       
  2066 
       
  2067 ApgFlrec.h - the file recogniser classes (formerly in Shell)
       
  2068 
       
  2069 ApgApp.h - the app recogniser for app arc apps (formerly in Shell)
       
  2070 
       
  2071 ApgInt.h - the app recogniser for interpreted apps (formerly in Shell)
       
  2072 
       
  2073 The above modules have no testcode as yet...
       
  2074 
       
  2075 
       
  2076 
       
  2077 
       
  2078 
       
  2079 
       
  2080 
       
  2081 AppArc.035
       
  2082 ==========
       
  2083 
       
  2084 27/1/97 by IanH
       
  2085 
       
  2086 Uses: E32[085] ; F32[049] ; Store[033] ; GDI[041] ; Fntstore[034] ; Fbserv[044] ; Bitgdi[044]
       
  2087 
       
  2088 Tools: E32Tools[050] ; E32Utils[005] ; GDITOOLS[028] ; GCCTOOLS[111]
       
  2089 
       
  2090 General
       
  2091 
       
  2092 1) Not binary compatible with 034
       
  2093 
       
  2094 3) There will be at least one more non-binary compatible release this week before the B5 freeze.
       
  2095 
       
  2096 Changes
       
  2097 
       
  2098 4) Further re-arrangement of code between the two dll's. CApaDoor is now entirely in apgrfx.dll, and no longer has a CApaDoorBase baseclass.
       
  2099 
       
  2100 5) A new module apamdr added for the benefit of Nautilus-type converters. 
       
  2101 It contains a concrete CApaModelDoor that contains a CApaModelHeader. 
       
  2102 Concrete implementations of the header must be provided for all application models that wish to support embedding and have their embedded documents translated by Nautilus.
       
  2103 The persistant format of a CApaEmbeddedDoor is compatible with that of a CApaDoor to the extent that either can be internalized by the other safely.
       
  2104 A factory class must be provided for each implementation of the header.
       
  2105 
       
  2106 ) In the interests of encapsulation CApaDocument::Capability() now returns a CApaDocument::TCapability instead of a TUint (suggested by Duncan).
       
  2107 
       
  2108 ) CApaProcess::MainDocFileName() and TempFilePath() now return TPtrC instead of const TDesC* (suggested by Brendan)
       
  2109 
       
  2110 ) If a glass door is passworded it will now be automatically iconified on restoration and the user will only be prompted for a password when they directly interact with it.
       
  2111 
       
  2112 ) const TUid KUidSecurityStream={268435661} is now defined in apparc.h - this is the uid that should be used for the security stream for passworded documents.
       
  2113 
       
  2114 ) The persistant format of CApaDoors has changed, so any apps that support embedding will find that their file formats have changed also...
       
  2115 
       
  2116 
       
  2117 
       
  2118 
       
  2119 
       
  2120 
       
  2121 AppArc.034
       
  2122 ==========
       
  2123 
       
  2124 20/1/97 by IanH
       
  2125 
       
  2126 Uses: E32[085] ; F32[049] ; Store[033] ; GDI[041] ; Fntstore[034] ; Fbserv[044] ; Bitgdi[044]
       
  2127 
       
  2128 Tools: E32Tools[050] ; E32Utils[005] ; GDITOOLS[028] ; GCCTOOLS[111]
       
  2129 
       
  2130 General
       
  2131 
       
  2132 1) Not binary compatible with 033
       
  2133 
       
  2134 2) Takes new E32 etc.
       
  2135 
       
  2136 ) The search algorithm for locating app dll's has changed. An app dll is now searched for in \system\apps\appname\appname.app on all drives until one is located. Files of the correct name can optionally have their uids checked. This new algorithm should significantly speed up loading of documents.
       
  2137 
       
  2138 ) CApaProcess now takes a TApaAppFinderBase* as a parameter of its NewL() instead of a search path. This base class efines an API for access to a method in which any search algorithm required could be implemented. This parameter defaults to NULL, and if no finder is passed in a default one is used that implements the above behaviour. A substitute finder should only be passed in if eg a different directory structure is implemented on a future machine. CApaProcess takes ownership of any app finder passed in.
       
  2139 
       
  2140 ) As a result of the search code moving CApaDll no longer has a FindAppDll() method.
       
  2141 
       
  2142 ) CApaDoor gains a NewL to complement its NewLC (requested by SimonC)
       
  2143 
       
  2144 ) inline const TDesC* TempFilePath()const added to CApaProcess (requested by SimonC)
       
  2145 
       
  2146 ) CApaProcess::OpenNewDocumentL() now takes a CStreamDictionary*& as an extra parameter - this is read in from the file that is opened (error spotted by Kevin).
       
  2147 
       
  2148 ) ReadRootStreamL() and OpenNewDocumentL() take a TUint aFileMode as additional parameters. aFileMode indicates the mode in which the file should be opened. For most use this should be set to EFileShareExclusive|EFileWrite, while EFileShareExclusive|EFileRead should be used if the file is to be opened read only. These methods no longer try to open files with write access, retrying with read-only access if this fails. If you require this behaviour you'll have to do it yourself by trapping calls to these methods.
       
  2149 
       
  2150 ) The following CApaProcess methods are now static:
       
  2151 
       
  2152 	static CStreamDictionary* ReadRootStreamLC(RFs& ,CFileStore*& ,const TDesC& ,TUint )
       
  2153 	static void WriteRootStreamL(CFileStore& ,CStreamDictionary& ,const CApaApplication& )
       
  2154 	static TApaAppIdentifier ReadAppIdentifierL(const CStreamStore& ,const CStreamDictionary& )
       
  2155 	static void WriteAppIdentifierL(CStreamStore& ,CStreamDictionary& ,const TApaAppIdentifier& )
       
  2156 
       
  2157 Note that ReadRootStreamL() now takes an RFs& and WriteRootStreamL() has been overloaded with a version that takes a correctly constructed TApaAppIdentifier instead of a CApaApplication&
       
  2158 
       
  2159 ) Access violation defect in ~CApaProcess() fixed (spotted by MartinB)
       
  2160 
       
  2161 ) The plan for passworded documents:
       
  2162 
       
  2163 When a document's RestoreL() is called and it begins to restore, the first thing it should do is check to see whether its store contains an appropriate password stream. 
       
  2164 If it does then this means the store is passworded, so prompt the user to enter the password (EikProcess should provide a method that pops up this dialog for you). 
       
  2165 If the password is entered correctly then continue restoration.
       
  2166 If the password is wrong, RestoreL() should leave KErrLocked.
       
  2167 
       
  2168 ) CApaDoor::RestoreL() will not leave if a *glass* door's RestoreL() leaves with KErrLocked. 
       
  2169 Instead it TRAP's the leave and iconises the document without restoring it. 
       
  2170 In this way the user can try to open the document again later if they want to view it.
       
  2171 
       
  2172 ) CApaDocument::CanDrawGlass() becomes Capability() - this returns a set of flags (defined in CApaDocument) as follows:
       
  2173 	
       
  2174 	enum {
       
  2175 		ECanDrawGlass	=0x01,
       
  2176 		ECanPrint		=0x02
       
  2177 		};
       
  2178 
       
  2179 By default this method returns 0 (ie the doc can do nothing) - return any combination of the above flags if you feel more daring
       
  2180 
       
  2181 ) CApaApplication::OpenIconFileLC() is now pure virtual - an implementation will be supplied by Eikon's CEikDocument
       
  2182 
       
  2183 
       
  2184 
       
  2185 
       
  2186 
       
  2187 AppArc.033
       
  2188 ==========
       
  2189 
       
  2190 10/1/97 by IanH
       
  2191 
       
  2192 Uses: E32[082] ; F32[046] ; Store[032] ; GDI[040] ; Fntstore[033] ; Fbserv[043] ; Bitgdi[043]
       
  2193 
       
  2194 Tools: E32Tools[049] ; E32Utils[004] ; GDITOOLS[028] ; GCCTOOLS[111]
       
  2195 
       
  2196 General
       
  2197 
       
  2198 1) Not binary compatible with 032
       
  2199 
       
  2200 2) Takes new GDI etc
       
  2201 
       
  2202 3) Definitions for KIconFileExtension, KIniFileExtension and KAppFileExtension are now publicised in apparc.h
       
  2203 
       
  2204 4) Ini files now always live on drive c:
       
  2205 
       
  2206 
       
  2207 CApaApplication changes:
       
  2208 
       
  2209 5) OpenIconFileL() and OpenIniFileL() become LC and const
       
  2210 
       
  2211 6) New method: 
       
  2212 
       
  2213 	TFileName AppFullName()const;
       
  2214 
       
  2215 This should return the full path and name of the app - by default the dll name & location is returned but this method may be over-ridden by eg OPL to return another location. (requested by Howard)
       
  2216 
       
  2217 
       
  2218 CApaDocument changes:
       
  2219 
       
  2220 7) CApaDocument::CreateFileStoreLC() has changed its specification. Previously it returned a stream dictionary and took a store by reference. The first thing any caller did after calling this function was to write the rootstream of the file to make it valid and then destroy the stream dictionary. The WriteRootStream() step has now been moved inside CreateFileStoreLC(), meaning that it now returns a CFileStore* instead of taking one by reference. One new line of code should be added at the end of applications' CreateFileStore() implementations:
       
  2221 
       
  2222 	iApaProcess->WriteRootStreamL(*store,*streamDic,*Application());
       
  2223 
       
  2224 This will ensure that CreateFileStoreLC() now returns a fully constructed and initialised file store (on the cleanup stack).
       
  2225 
       
  2226 
       
  2227 CApaProcess changes:
       
  2228 
       
  2229 8) MainDocFileName() becomes const
       
  2230 
       
  2231 9) SetMainDocFileNameL(const TDesC&) loses the L - it can no longer leave, though it will panic if a filename larger than a TFileName is passed in.
       
  2232 
       
  2233 10) SetMainDocument(CApaDocument* aDocument) added. It panics if aDocument has not already been added using AddNewDocument() or OpenNewDocument()
       
  2234 
       
  2235 11) ImportNewDocumentL() becomes 
       
  2236 
       
  2237 	CApaDocument* OpenNewDocumentL(CFileStore*& aStore,const TDesC& aDocFullFileName)
       
  2238 	
       
  2239 It now returns the opened store via a parameter taken by reference. 
       
  2240 
       
  2241 12) SaveToDirectFileStoreL() withdrawn - this method will now be provided by Eikon.
       
  2242 
       
  2243 13) NewMainDocumentL() and OpenMainDocumentL() have been withdrawn. A combination of Open/AddNewDocument() and SetMainDocument() should now be used. Combined with the above changes this in fact gives Eikon and applications much more flexibility in creating and opening documents.
       
  2244 
       
  2245 Replacing a typical call to OpenMainDocumentL(), the following calls should take place:
       
  2246 
       
  2247 	// open the document
       
  2248 	CFileStore* store = NULL;
       
  2249 	CApaDocument* doc = apaProcess->OpenNewDocumentL(store,filePath);
       
  2250 	// set it as the main document
       
  2251 	apaProcess->SetMainDocument(doc);
       
  2252 	apaProcess->SetMainDocFileName(filePath);
       
  2253 
       
  2254 Replacing a typical call to NewMainDocumentL(), the following calls should take place:
       
  2255 
       
  2256 	// create a new document
       
  2257 	CApaDocument* doc = apaProcess->AddNewDocumentL(dllname);
       
  2258 	apaProcess->SetMainDocument(doc);
       
  2259 	// create the store and initialise it
       
  2260 	CFileStore* store = doc->CreateFileStoreLC(apaProcess->FsSession(),filePath);
       
  2261 	apaProcess->SetMainDocFileName(filePath);
       
  2262 	// initialise the document with factory settings
       
  2263 	doc->NewDocumentL();
       
  2264 
       
  2265 
       
  2266 CApaDoor changes:
       
  2267 
       
  2268 14) If there is no caption in an application's icn file the Caption() in a containing CApaDoor is now set to a zero length descriptor instead of "UNKNOWN". This should be detectyed at a higher level and some locale specific message substituted.
       
  2269 
       
  2270 15) Default icon size should now be passed in to CApaDoor::NewL() - it is no longer hard-coded to TSize(500,500)
       
  2271 
       
  2272 
       
  2273 
       
  2274 
       
  2275 AppArc.032
       
  2276 ==========
       
  2277 
       
  2278 19/12/96 by IanH
       
  2279 
       
  2280 Uses: E32[076] ; F32[042] ; Store[030] ; GDI[039] ; Fntstore[032] ; Fbserv[039] ; Bitgdi[041]
       
  2281 
       
  2282 Tools: E32Tools[048] ; E32Utils[004] ; GDITOOLS[027] ; GCCTOOLS[111]
       
  2283 
       
  2284 1) Binary compatible with 030 and 031 (B4 level)
       
  2285 
       
  2286 2) NewMainDocumentL() altered slightly such that the filename is correctly set before NewDocumentL() is called on the newly creaed document. This allows some speed optimisations in Word.
       
  2287 
       
  2288 
       
  2289 
       
  2290 
       
  2291 AppArc.031
       
  2292 ==========
       
  2293 
       
  2294 17/12/96 by IanH
       
  2295 
       
  2296 Uses: E32[076] ; F32[042] ; Store[030] ; GDI[039] ; Fntstore[032] ; Fbserv[039] ; Bitgdi[041]
       
  2297 
       
  2298 Tools: E32Tools[048] ; E32Utils[004] ; GDITOOLS[027] ; GCCTOOLS[111]
       
  2299 
       
  2300 1) Binary compatible with 030
       
  2301 
       
  2302 2) As per the spec team decision the icons representing embedded objects are no longer resizable by dragging. 
       
  2303 
       
  2304 This effect is slightly weird because when the icon is highlighted it has the blobby marquee around it which somewhat implies that you can drag its extent. 
       
  2305 However, if you try to drag one of the blobs you immediately launch the embedded application - not exactly intuitive.
       
  2306 Maybe two different types of marquee are required, one to indicate dragableness and the other just focus (but this falls down when you consider using shift-drag to crop).
       
  2307 
       
  2308 
       
  2309 
       
  2310 AppArc.030
       
  2311 ==========
       
  2312 
       
  2313 13/12/96 by IanH
       
  2314 
       
  2315 Uses: E32[076] ; F32[042] ; Store[030] ; GDI[039] ; Fntstore[032] ; Fbserv[039] ; Bitgdi[041]
       
  2316 
       
  2317 Tools: E32Tools[048] ; E32Utils[004] ; GDITOOLS[027] ; GCCTOOLS[111]
       
  2318 
       
  2319 1) Binary compatible with 029
       
  2320 
       
  2321 Changes to CApaProcess:
       
  2322 
       
  2323 ) SaveToDirectFileStoreL() now creates any temporary file on the same drive as the target document to ensure that RFs::Replace() works.
       
  2324 
       
  2325 ) SaveToDirectFileStoreL() now checks that the store passed in is non-null and of the right type.
       
  2326 
       
  2327 ) NewMainDocumentL() code re-arranged so that it is now rollback-robust (thanks Duncan). This fixes HA-383
       
  2328 
       
  2329 
       
  2330 
       
  2331 
       
  2332 AppArc.028
       
  2333 ==========
       
  2334 
       
  2335 05/12/96 by IanH
       
  2336 
       
  2337 Uses: E32[076] ; F32[042] ; Store[030] ; GDI[039] ; Fntstore[032] ; Fbserv[039] ; Bitgdi[041]
       
  2338 
       
  2339 Tools: E32Tools[048] ; E32Utils[004] ; GDITOOLS[027] ; GCCTOOLS[111]
       
  2340 
       
  2341 1) B4 release. This is not compatible with the previous release.
       
  2342 
       
  2343 Changes:
       
  2344 
       
  2345 ) CApaDoor::SetFormatToGlassL() no longer takes a TSize as a parameter. The embedded document is now relied upon to initially size itself sensibly and from then on to remember any changes in scaling and cropping.
       
  2346 
       
  2347 ) Subtle chagnes to iconic doors - they are now scalable but not cropable. 
       
  2348 
       
  2349 ) Any concept of document file extensions has been removed from application architecture, in line with current thinking:
       
  2350 
       
  2351 	CApaApplication::DocFileExtension() withdrawn, and extensions are no longer appended to filenames. App dll's, icon files and ini files retain their extensions.
       
  2352 
       
  2353 
       
  2354 
       
  2355 AppArc.027
       
  2356 ==========
       
  2357 
       
  2358 03/12/96 by IanH
       
  2359 
       
  2360 Uses: E32[075] ; F32[042] ; Store[030] ; GDI[039] ; Fntstore[032] ; Fbserv[039] ; Bitgdi[041]
       
  2361 
       
  2362 Tools: E32Tools[048] ; E32Utils[004] ; GDITOOLS[027] ; GCCTOOLS[111]
       
  2363 
       
  2364 1) B4 release
       
  2365 
       
  2366 Changes:
       
  2367 
       
  2368 ) inline CApaDoor::GetFormat()const added that returns one of CApaDoor::EIconic or CApaDoor::EGlassDoor depending upon the door's current format.
       
  2369 
       
  2370 ) Iconic door code re-written to (hopefully) solve the problems of resizing etc.
       
  2371 
       
  2372 ) CApaApplication::OpenIniFileLC() is now implemented to return a CDictionaryStore (see Store release notes for details of this class). The path of the ini file is determined to be the same as that of the app dll unless the app dll is in ROM in which case the same path is used except on drive c:
       
  2373 CDictionaryStore should be treated as a temporary object - all the time it exists the file is open, so the object should be destroyed as soon as it is finished with to ensure that other processes are not unnecessarily blocked from using the file.
       
  2374 
       
  2375 Here is some example code for using an ini file in a (possibly) typical scenario:
       
  2376 
       
  2377 	//
       
  2378 	// open an app's ini file
       
  2379 	CDictionaryStore* iniFile = Application()->OpenIniFileL(TheFs);
       
  2380 	CleanupStack::PushL(iniFile);
       
  2381 	//
       
  2382 	// read the required data stream out of the file
       
  2383 	RDictionaryReadStream readStream;
       
  2384 	readStream.OpenL(*iniFile,aDataStreamUid);
       
  2385 	TLotsOfData data;
       
  2386 	readStream>> data;
       
  2387 	readStream.Close();
       
  2388 	//
       
  2389 	// close the ini file
       
  2390 	CleanupStack::PopAndDestroy(); // iniFile
       
  2391 	iniFile = NULL;
       
  2392 	//
       
  2393 	//
       
  2394 	// ...
       
  2395 	// do loads of stuff (eg launch a dialog) that uses the data read in
       
  2396 	// ...
       
  2397 	//
       
  2398 	//
       
  2399 	// if the data has changed as a result of "doing stuff" then re-write it to the ini file
       
  2400 	CDictionaryStore* iniFile = Application()->OpenIniFileL(TheFs);
       
  2401 	CleanupStack::PushL(iniFile);
       
  2402 	//
       
  2403 	// write the new data
       
  2404 	RDictionaryWriteStream writeStream;
       
  2405 	writeStream.AssignL(*iniFile,aDataStreamUid);
       
  2406 	writeStream<< data;
       
  2407 	writeStream.CommitL();
       
  2408 	writeStream.Close();
       
  2409 	//
       
  2410 	// commit the store safely and close it again
       
  2411 	if (iniFile->Commit()!=KErrNone)
       
  2412 		iniFile->RevertL(); // try to restore the store to it's previous state if things go wrong
       
  2413 	CleanupStack::PopAndDestroy(); // iniFile
       
  2414 	iniFile = NULL;
       
  2415 	//
       
  2416 
       
  2417 
       
  2418 AppArc.026
       
  2419 ==========
       
  2420 
       
  2421 27/11/96 by IanH
       
  2422 
       
  2423 Uses: E32[074] ; F32[041] ; Store[029] ; GDI[038] ; Fntstore[031] ; Fbserv[038] ; Bitgdi[040]
       
  2424 
       
  2425 Tools: E32Tools[046] ; E32Utils[003] ; GDITOOLS[027] ; GCCTOOLS[111]
       
  2426 
       
  2427 1) Takes new GDI etc., and new gditools (all bitmaps have to be reconverted).
       
  2428 
       
  2429 Changes:
       
  2430 
       
  2431 ) RDebug::Print()'s removed from the apparc dll
       
  2432 
       
  2433 ) CApaDoor::DetachFromStoreL() added to completely restore the embedded document.
       
  2434 
       
  2435 ) CApaDocument::DetachFromStoreL(const CStreamStore& aStore) added. This does nothing by default - an app should supply an imlementation if they support deferred loading. In this case the action of this method should be to load in any data not yet internalized from the store, but not to overwrite any data already in memory.
       
  2436 
       
  2437 
       
  2438 AppArc.025
       
  2439 ==========
       
  2440 
       
  2441 22/11/96 by IanH
       
  2442 
       
  2443 Uses: E32[074] ; F32[040] ; Store[029] ; GDI[037] ; Fntstore[030] ; Fbserv[037] ; Bitgdi[039]
       
  2444 
       
  2445 Tools: E32Tools[046] ; E32Utils[003] ; GDITOOLS[026] ; GCCTOOLS[111]
       
  2446 
       
  2447 1) Binary compatible defect fix release for Agenda and Data
       
  2448 
       
  2449 2) No new components taken
       
  2450 
       
  2451 Changes:
       
  2452 
       
  2453 ) Files are now opened writable if this is possible, only defaulting to read-only if opening as writable fails. This allows documents based in permanent file stores to be edited :-) (Spotted by Kev)
       
  2454 
       
  2455 
       
  2456 AppArc.024
       
  2457 ==========
       
  2458 
       
  2459 19/11/96 by IanH
       
  2460 
       
  2461 Uses: E32[074] ; F32[040] ; Store[029] ; GDI[037] ; Fntstore[030] ; Fbserv[037] ; Bitgdi[039]
       
  2462 
       
  2463 Tools: E32Tools[046] ; E32Utils[003] ; GDITOOLS[026] ; GCCTOOLS[111]
       
  2464 
       
  2465 1) This release is being made primarily to allow work to proceed on OPL
       
  2466 
       
  2467 2) No new components taken
       
  2468 
       
  2469 Changes:
       
  2470 
       
  2471 ) Some files have changed name:
       
  2472 	AppIcnfl.*  -> ApaIcnfl.*
       
  2473 	AppPriv.h   -> ApaDll.h
       
  2474 	AppStd.h    -> ApaStd.h
       
  2475 	AppUtil.cpp -> ApaStd.cpp
       
  2476 
       
  2477 ) CApaIconFileWriter::AddIconL(CApaMaskedBitmap& aIcon) added.
       
  2478 
       
  2479 ) TAppCaption becomes TApaAppCaption
       
  2480 
       
  2481 
       
  2482 AppArc.023
       
  2483 ==========
       
  2484 
       
  2485 15/11/96 by IanH
       
  2486 
       
  2487 Uses: E32[074] ; F32[040] ; Store[029] ; GDI[037] ; Fntstore[030] ; Fbserv[037] ; Bitgdi[039]
       
  2488 
       
  2489 Tools: E32Tools[046] ; E32Utils[003] ; GDITOOLS[026] ; GCCTOOLS[111]
       
  2490 
       
  2491 2) This release reinstates all the testcode that was dropped in the change to the new directory structure.
       
  2492 
       
  2493 3) The base address for the AppArc dll is now set as 0x40000000 in line with MartinB's revised suggestion.
       
  2494 
       
  2495 4) AppArc.dll now supports typesafe linking with uid KApparcDllUid = 0x100000DE
       
  2496 
       
  2497 5) New releasable appdata that contains the default icn file (see below). It should be fetched into:
       
  2498 	\Epoc32\Release\Wins\Rel\Z\System\Data
       
  2499 	\Epoc32\Release\Wins\Deb\Z\System\Data
       
  2500 	\Epoc32\Release\Marm
       
  2501 
       
  2502 and the following line should be placed in .oby files:
       
  2503 
       
  2504 	data=\Epoc32\Release\Marm\default.icn System\Data\default.icn
       
  2505 
       
  2506 
       
  2507 Changes:
       
  2508 
       
  2509 ) CApaDoor now has access to a default icon file which it uses if it can't locate the correct icon file (eg the app used to embed an object was on a CF card). This means that apps no longer *require* the existance of an icon file to be embeddable
       
  2510 
       
  2511 ) The persistant format of *glass* doors has changed , so files containing such doors will be incompatible with previous versions of apparc.
       
  2512 
       
  2513 ) TDesC* CApaDoor::Caption() added that returns the name of the app with which the embedded object is associated. 
       
  2514 
       
  2515 ) CApaApplication::IniFileUid() and IconFileUid() have been withdrawn as they were of no use and made no sense.
       
  2516 
       
  2517 ) CApaDocument::HasChanged() is now pure virtual, and CApaDocument no longer has a TBool iChanged as member data. This keeps apparc policy independant as different apps will want to implement this function in different ways. Eikon may supply a default implemenation...
       
  2518 
       
  2519 ) CApaDoor* NewLC(CApaDocument& aDoc,...) no longer takes a CApaProcess as a parameter as it can get at this pointer via the aDoc parameter.
       
  2520 
       
  2521 ) CApaProcess::WriteRootStreamL() now takes a const CApaApplication& instead of a CApaDocument. This app should be the application used to create the main doc in the file being written.
       
  2522 
       
  2523 ) CApaProcess::SaveToDirectFileStoreL() has changed in the same way as WriteRootStreamL()
       
  2524 
       
  2525 ) Extra type checking of document added to CApaProcess::ReadRootStreamL(). This method now leaves KErrCorrupt if the file is not of the correct type.
       
  2526 
       
  2527 ) TApaPictureFactory now takes a MGraphicsDeviceMap* on construction
       
  2528 
       
  2529 ) CApaApplication::OpenIconFileLC() now just OpenIconFileL() because this call was often being trapped and the C caused aggro.
       
  2530 
       
  2531 ) Some CApaDoor methods that took a TSize as a parameter now take a const TSize& instead
       
  2532 
       
  2533 Defect Fixes:
       
  2534 
       
  2535 ) The correct UID for the icon file is now used in CApaApplication::OpenIconFileLC()
       
  2536 
       
  2537 ) CApaApplication::Dll() now const
       
  2538 
       
  2539 ) Resizing of embedded icons should now work properly.
       
  2540 
       
  2541 ) CApaProcess::ReadRootStreamLC() now opens the store in read only mode (so files can be read from ROM). If you wish to make your CFileStore writable call CFileStore::File().ChangeMode(EFileShareExclusive|EFileWrite) to get exclusive write access. (Spotted by Duncan)
       
  2542  
       
  2543 Test Code:
       
  2544 
       
  2545 ) T_Pro extended to test the embedding subsystem when some required app dlls and/or icn files are not present.
       
  2546 
       
  2547 
       
  2548 
       
  2549 AppArc.020
       
  2550 ==========
       
  2551 
       
  2552 3/11/96 by DavidW
       
  2553 
       
  2554 Uses: E32Tools[045] ; E32[072] ; F32[038] ; Store[028] ; GDI[036] ; Fntstore[030] ; Fbserv[036] ; Bitgdi[039]
       
  2555 
       
  2556 1)  Fixed an infinite loop defect in CApaProcess::FindAppInListL() which
       
  2557 meant that a second app couldn't be added to a process
       
  2558 
       
  2559 
       
  2560 AppArc.019
       
  2561 ==========
       
  2562 
       
  2563 31/10/96 by DavidW
       
  2564 
       
  2565 Uses: E32Tools[045] ; E32[072] ; F32[038] ; Store[028] ; GDI[036] ; Fntstore[030] ; Fbserv[036] ; Bitgdi[039]
       
  2566 
       
  2567 1)  Upgraded to E32[072] et al.  Rebuilt the Wins Release and Debug
       
  2568 variants, and the Gcc Release variant.  Test code not rebuilt! 
       
  2569 Relying on Eikon's test code for now
       
  2570 
       
  2571 2)  As suggested by Julian, provided CApaProcess with a public
       
  2572 accessor function FsSession() which returns a reference to the RFs
       
  2573 held inside CApaProcess property
       
  2574 
       
  2575 3)  Fixed MNT GETSRC not to impose a version number if none has been
       
  2576 given from the command line
       
  2577 
       
  2578 4)  Fixed MNT GETBLD to only run the MAKEWORK and GETTOOLS once,
       
  2579 instead of twice
       
  2580 
       
  2581 
       
  2582 AppArc.018
       
  2583 ==========
       
  2584 
       
  2585 29/10/96 by DavidW
       
  2586 
       
  2587 Uses: E32Tools[045] ; E32[071] ; F32[037] ; Store[027] ; GDI[035] ; Fntstore[029] ; Fbserv[035] ; Bitgdi[038]
       
  2588 
       
  2589 1)  Moved up to Store[027], and therefore dropped Apparc's copy of
       
  2590 the CStreamDictionary class
       
  2591 
       
  2592 2)  Also moved up to F32[037]
       
  2593 
       
  2594 3)  CApaProcess::NewMainDocumentL() now supports being called with a
       
  2595 zero-length filename, in which case the function no longer attempts
       
  2596 to create a file of this name, but returns NULL for the CFileStore*
       
  2597 handle; this supports applications that don't create files
       
  2598 
       
  2599 4)  Made the MainDocFileName() function of CApaProcess simply return
       
  2600 a const TDesC*, instead of going to the overhead of calling the Des()
       
  2601 function on the internal HBuf variable; this is also important for
       
  2602 applications that don't create files (since otherwise the function
       
  2603 involved creating a TPtr from the NULL pointer)
       
  2604 
       
  2605 5)  The above changes mean that the iMainDoc and iMainDocFileName
       
  2606 data members of CApaProcess can revert to being private (previously I
       
  2607 had patched the INCC release component of AppArc 017 to make them
       
  2608 public, else Eikon couldn't work)
       
  2609 
       
  2610 6)  Fixed a series of latent fatalities by altering code like
       
  2611 	delete iMainDocFileName;
       
  2612 	iMainDocFileName = xxx.AllocL();
       
  2613 to insert the line
       
  2614 	iMainDocFileName = NULL;
       
  2615 in between the delete and the AllocL()
       
  2616 
       
  2617 7)  Fixed a defect pointed out by MartinD and Jezar in that the
       
  2618 ReadRootStreamLC() function was always opening the file in read mode
       
  2619 only, which is fine for Direct stores but not for Permanent
       
  2620 ("re-writable") ones; note that some decision will need to be taken
       
  2621 shortly on how to cope with read-only data files
       
  2622 
       
  2623 8)  As suggested by MartinB & Duncan, changed the Changed() function
       
  2624 in CApaDocument to be virtual and const, and renamed it to
       
  2625 HasChanged(); the default implementation remains to return the value
       
  2626 of the iChanged member data, but some applications may prefer to
       
  2627 implement change tracking in a more sophisticated manner
       
  2628 
       
  2629 9)  As suggested by MartinB, altered the StoreL() function of
       
  2630 CApaDocument to be const, since Store is a const operation.  At the
       
  2631 same time, applied const to various other CApaDocument functions
       
  2632 
       
  2633 10) Added UNLOCK and LOCK verbs to MNT.CMD.
       
  2634 
       
  2635 
       
  2636 AppArc.017
       
  2637 ==========
       
  2638 
       
  2639 18/10/96 by IanH
       
  2640 
       
  2641 Uses: E32Tools[045] ; E32[071] ; F32[036] ; Store[026] ; GDI[035] ; Fntstore[029] ; Fbserv[035] ; Bitgdi[038]
       
  2642 
       
  2643 ARM release size:
       
  2644 
       
  2645 apparc.dll  18,108
       
  2646 
       
  2647 General
       
  2648 =======
       
  2649 
       
  2650 ) Not binary compatible with previous release
       
  2651 
       
  2652 
       
  2653 Changes
       
  2654 =======
       
  2655 
       
  2656 Changes to CApaProcess:
       
  2657 
       
  2658 ) At the request of MartinB all member data is now private and accessor functions have been supplied as required.
       
  2659 
       
  2660 ) DestroyDocumentL() no longer takes the CApaDocument* by reference (and consequently no longer sets it to null).
       
  2661 
       
  2662 Changes to CApaDocument:
       
  2663 
       
  2664 ) At the request of MartinB iChanged is now protected and has an inline accessor function Changed()
       
  2665 
       
  2666 General changes:
       
  2667 
       
  2668 ) Fixed mnt getrel so it no longer does mad stuff (thanks Julian)
       
  2669 
       
  2670 ) Extended the embedding testcode slightly
       
  2671 
       
  2672 
       
  2673 Still To Come
       
  2674 =============
       
  2675 
       
  2676 ) .ini files (with visited document lists)
       
  2677