Revision: 201013 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 14 Apr 2010 15:55:57 +0300
branchRCL_3
changeset 14 21239b3bcd78
parent 13 1984aceb8774
child 15 9711e452b5e9
Revision: 201013 Kit: 201015
alarmui/src/alarmutils.cpp
calendarui/commonutils/src/calenentryutil.cpp
calendarui/commonutils/src/calenviewutils.cpp
calendarui/controller/group/calencontroller.mmp
calendarui/controller/inc/calendbchangenotifier.h
calendarui/controller/inc/calenmultipledbui.h
calendarui/controller/inc/calennotifier.h
calendarui/controller/inc/calentoolbarimpl.h
calendarui/controller/inc/calenviewattachmentsdialog.h
calendarui/controller/src/calenattachmentui.cpp
calendarui/controller/src/calencmdlinelauncher.cpp
calendarui/controller/src/calencontroller.cpp
calendarui/controller/src/calendbchangenotifier.cpp
calendarui/controller/src/calendeleteui.cpp
calendarui/controller/src/calenmultidbeditor.cpp
calendarui/controller/src/calenmultipledbui.cpp
calendarui/controller/src/calennotifier.cpp
calendarui/controller/src/calenviewattachmentsdialog.cpp
calendarui/controller/src/calenviewmanager.cpp
calendarui/editors/data/CalenDefaultEditorsData.rss
calendarui/editors/inc/calendbfield.h
calendarui/editors/inc/calenunifiededitor.h
calendarui/editors/src/calenalldayfield.cpp
calendarui/editors/src/calendbfield.cpp
calendarui/editors/src/calenunifiededitor.cpp
calendarui/editors/src/calenunifiededitorcontrol.cpp
calendarui/globaldata/BWINS/calenglobaldatau.def
calendarui/globaldata/eabi/calenglobaldatau.def
calendarui/globaldata/group/CalenGlobalData.mmp
calendarui/globaldata/group/bld.inf
calendarui/globaldata/inc/calendbchangenotifier.h
calendarui/globaldata/inc/calenfilemapping.h
calendarui/globaldata/inc/calenglobaldata.h
calendarui/globaldata/src/calendbchangenotifier.cpp
calendarui/globaldata/src/calenfilemapping.cpp
calendarui/globaldata/src/calenglobaldata.cpp
calendarui/group/bld.inf
calendarui/organizerplugin/aiagendapluginengine/src/AIAgendaPluginEngineImpl.cpp
calendarui/settings/settingsui/src/CalenFileListSettingItem.cpp
calendarui/views/inc/caleneventviewcontainer.h
calendarui/views/src/caleneventviewcontainer.cpp
clock2/clockengines/clockserver/server/src/clockserverimpl.cpp
clock2/clockengines/clocktimezoneresolver/src/clockmcctzmapper.cpp
clock2/clockui/uilayer/clockworldview/src/clockworldview.cpp
clock2/clockui/uilayer/src/clockappui.cpp
notepad/notepad1/LibSrc/NpdListDialog.cpp
notepad/notepad1/LibSrc/NpdModel.cpp
notepad/notepad1/LibSrc/NpdViewerDialog.cpp
organizer_pub/notepad_library_api/tsrc/group/ABLD.BAT
organizer_pub/notepad_library_api/tsrc/group/TestNpdApi.pkg
organizer_pub/notepad_library_api/tsrc/group/TestNpdApi.sis
organizer_pub/notepad_library_api/tsrc/group/TestNpdApi.sisx
organizer_pub/notepad_library_api/tsrc/group/rd-key.pem
organizer_pub/notepad_library_api/tsrc/group/rd.cer
pimappservices/appenginesdocs/app-engines_documentation.history.xml
pimappservices/appenginesdocs/app-engines_documentation.mrp
pimappservices/calendar/server/src/agsattachmentindex.cpp
pimappsupport/vcardandvcal/documentation/TestVersit.rtf
--- a/alarmui/src/alarmutils.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/alarmui/src/alarmutils.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -48,6 +48,7 @@
 #include <wakeupalarm.h>
 #include <calalarm.h> // KUidAgendaModelAlarmCategory - the alarm category id for calendar alarms
 #include <AknUtils.h>
+#include <HWRMPowerStateSDKPSKeys.h>
 
 #ifndef SYMBIAN_CALENDAR_V2
 #include <agmalarm.h> // deprecated, use CalAlarm.h when SYMBIAN_CALENDAR_V2 flag is enabled
@@ -960,12 +961,20 @@
 void CAlarmUtils::DeviceShutdown()
     {
     TRACE_ENTRY_POINT;
-    iShutdownTimer->Cancel();
-    if( StarterConnect() )
-        {
-        iStarter.Shutdown();
-        iStarter.Close();
-        }    
+    
+    // charging state added for the err EMDN-835CW2.
+    TInt chargingState;
+    RProperty::Get( KPSUidHWRMPowerState, KHWRMChargingStatus , chargingState );
+    
+    if( IsDeviceInAlarmState() && ( chargingState != EChargingStatusCharging ) )
+        {       
+            iShutdownTimer->Cancel();
+            if( StarterConnect() )
+                {
+                iStarter.Shutdown();
+                iStarter.Close();
+                }    
+        }
     TRACE_EXIT_POINT;
     }
 
--- a/calendarui/commonutils/src/calenentryutil.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/commonutils/src/calenentryutil.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -1015,7 +1015,7 @@
 
     if( aStartTime == CalenDateUtils::BeginningOfDay( aStartTime ) 
             && aStopTime == CalenDateUtils::BeginningOfDay( aStopTime ) 
-            && aStartTime != aStopTime && differenceInTime.Int() == 1) // fix for AllDayEntry issue
+            && aStartTime != aStopTime && differenceInTime.Int() >= 1) // fix for AllDayEntry issue
         {
         allDayEvent = ETrue;
         }
--- a/calendarui/commonutils/src/calenviewutils.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/commonutils/src/calenviewutils.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -215,7 +215,7 @@
         if( startLocalTime != stopLocalTime && 
                 startLocalTime == CalenDateUtils::BeginningOfDay( startLocalTime ) && 
                 stopLocalTime == CalenDateUtils::BeginningOfDay( stopLocalTime ) && 
-                startLocalTime != stopLocalTime && differenceInTime.Int() == 1 ) // fix for AllDayEntry issue
+                startLocalTime != stopLocalTime && differenceInTime.Int() >= 1 ) // fix for AllDayEntry issue
             {
             allDayEvent = ETrue;
             }
--- a/calendarui/controller/group/calencontroller.mmp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/group/calencontroller.mmp	Wed Apr 14 15:55:57 2010 +0300
@@ -54,7 +54,6 @@
 SOURCE          calencmdlineparser.cpp
 SOURCE          calencmdlinelauncher.cpp
 SOURCE          calencontroller.cpp
-SOURCE          calendbchangenotifier.cpp
 SOURCE          calendebug.cpp
 SOURCE          calendeleteui.cpp
 SOURCE          caleneditui.cpp
--- a/calendarui/controller/inc/calendbchangenotifier.h	Wed Mar 31 21:29:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,151 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:   Notifies observers of external changes to the calendar database
-*
-*/
-
-
-#ifndef __CALENDBCHANGENOTIFIER_H
-#define __CALENDBCHANGENOTIFIER_H
-
-//  INCLUDES
-#include <e32base.h>
-
-#include <calchangecallback.h>      //MCalChangeCallBack
-
-// FORWARD DECLARATIONS
-class CCalSession;                  //Calendar session
-class CCalenGlobalData;             //Calendar global data
-
-// CLASS DECLARATION
-
-/**
-* Observer class for database changes.  Forwards callback from 
-* MCalChangeCallBack2
-*/
-class MCalenDBChangeObserver
-    {
-    public:
-        virtual void HandleDBChangeL() = 0;
-    };
-
-/**
-*  CCalenDbChangeNotifier buffers notifications from MCalChangeCallBack2 and 
-*  only notifies its observers after a set period has elapsed.  This prevents
-*  Calendar views refreshing more often than necessary during a sync operation
-*/
-NONSHARABLE_CLASS(CCalenDbChangeNotifier) : public CActive,
-                                                                  public MCalChangeCallBack2
-    {
-    public:  // Constructors and destructor
-        /**
-        * Constructor.
-        * @param aGlobalData global data reference
-        * @return a pointer to the new CCalenDbChangeNotifier instance
-        */
-        static CCalenDbChangeNotifier* NewL( CCalenGlobalData& aGlobalData );
-
-       /**
-        * Destructor.
-        */
-        ~CCalenDbChangeNotifier();
-        
-    public:
-        /**
-        * Allow CCalenViews to register for database change notifications
-        * @param aDBObserver Observer to register
-        */
-        void RegisterObserverL( MCalenDBChangeObserver& aDBObserver );
-        
-        /**
-        * Allow CCalenViews to deregister for database change notifications
-        * @param aDBObserver Observer to deregister
-        */
-        void DeRegisterObserverL( MCalenDBChangeObserver& aDBObserver );
-        
-        /**
-        * Returns the time of the last call to MCalChangeCallBack2::CalChangeNotification
-        * This is not necessarily the same time as the last notification issued by 
-        * this class
-        * @return Time of the last database modification as TTime
-        */
-        TTime LastDBModificationTime() const;
-        
-    public: 
-        /**
-        * From MCalChangeCallBack2
-        * Called when the calendar database is changed through another
-        * CCalSession
-        * @param aChangeItems array of database items changed 
-        */
-        void CalChangeNotification( RArray<TCalChangeEntry>& aChangeItems );
-
-    private:
-        /**
-        * C++ default constructor.
-        * @param aGlobalData global data reference
-        */
-        CCalenDbChangeNotifier( CCalenGlobalData& aGlobalData );
-
-        /**
-        * By default Symbian 2nd phase constructor is private.
-        * Performs any construction which may leave
-        */
-        void ConstructL();
-
-        /**
-        * From CActive
-        * Called when outstanding asynchronous request completes
-        * This will be called when iNotificationTimer either completes
-        * or is cancelled
-        */
-        void RunL();
-        
-        /**
-        * From CActive
-        * Called by the active scheduler if RunL leaves
-        * Ensures we are ready to receive the next database event
-        * @param aError System wide error code
-        */
-        TInt RunError( TInt aError );
-
-        /**
-        * From CActive
-        * Implements cancellation of outstanding asynchronous requests
-        * Cancels iNotificationTimer if started
-        */
-        void DoCancel();
-
-    private:    // Data
-        CCalenGlobalData& iGlobalData;
-        
-        //Database change observer filter
-        CCalChangeNotificationFilter* iCalChangeFilter;      
-        
-        //Observer array
-        RPointerArray<MCalenDBChangeObserver> iDBObservers;
-        
-        //Timer to limit the amount of notifications issued by this class
-        RTimer iNotificationTimer;
-        
-        //The time of the last received notification
-        TTime iLastDbChangeNotification;
-        
-        //Flag to restart the timer after cancelling last tiemr request
-        TBool iRestartTimer;
-    };
-
-#endif      // __CALENDBCHANGENOTIFIER_H
-
-// End of File
--- a/calendarui/controller/inc/calenmultipledbui.h	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/inc/calenmultipledbui.h	Wed Apr 14 15:55:57 2010 +0300
@@ -245,12 +245,23 @@
                 CCalCalendarInfo& aCalendarInfoModified);
     
     /*
-     * Async exit for the dialog
+     * Callback for CAsyncCallBack class
+     * @param aThisPtr* this pointer.
+     * @return TInt status.
      */
-    static TInt DoAsyncExit(TAny* aPtr);
+    static TInt AsyncCallBackL(TAny* aThisPtr);
     
-    static TInt DoAsyncDeleteTemL(TAny* aPtr);
+    /*
+     * Async method to handle all async commnds
+     * @param aCommand Async command
+     */
+    void HandleAsyncCommandL(const TInt aCommand);
 
+    /*
+     * Async method to handle all async commnds
+     * @param aCommand Async command
+     */
+    void DoAsyncActionL(const TInt aCommand);
 
     /*
      * @brief Creates button for the toolbar.
@@ -277,6 +288,12 @@
      * Refocus the items in list when delete action happened. 
      */
     void ReAdjustListItemFocusL(const TInt aCurrentIndex);
+    
+    /**
+     * From CCoeControl Gets help context
+     * @param aContext Help context
+     */
+    void GetHelpContext(TCoeHelpContext& aContext) const;
 
 public:  // from MCalenNotificationHandler
 	/** 
@@ -319,9 +336,6 @@
     RArray<MCalenServices::TCalenIcons> iIconIndices;
     CAknIconArray* iIconList;
     RArray<TInt32> iColorUidArray;
-    CAsyncCallBack* iAsyncExit;
-    CAsyncCallBack* iAsyncDeletequery;
-    TInt iAsyncExitCmd;
     CCalenMultiDBEditor* iDbEditor;//Not not owned
     TBool iConflictOccured;
     TBool iIsDbEditorOpen ; 
@@ -329,6 +343,10 @@
     CCalCalendarInfo* iCalendarInfoNew;
     CCalCalendarInfo* iCalendarInfoOriginal;
     CCalCalendarInfo* iCalendarInfoEdited;
+    
+    CAsyncCallBack*  iAsyncAction;
+    TInt             iAsyncActionCmd;
+    TInt             iCurrentIndex;
     };
 
 
--- a/calendarui/controller/inc/calennotifier.h	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/inc/calennotifier.h	Wed Apr 14 15:55:57 2010 +0300
@@ -34,7 +34,6 @@
 // FORWARD DECLARATIONS
 class CCalenGlobalData;                 // Calendar global data singleton
 class CEnvironmentChangeNotifier;       // Receive system event notifications
-class CCalenDbChangeNotifier;           // Receive database change notifications
 class CCalenEComWatcher;                // Receives Ecom registry change notifications
 class CCalenSetting;                    // Calendar settings
 class CCalenController;
@@ -251,7 +250,6 @@
         RArray<TCalenNotification> iBroadcastQueue;
         TBool iBroadcastActive;
 
-        CCalenDbChangeNotifier* iDbChangeNotifier;
         CCalenSetting* iSetting;
         TBool iIsSettingsBroadcastDeferred;
         TBool iSettingsNeedsBroadcast;
--- a/calendarui/controller/inc/calentoolbarimpl.h	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/inc/calentoolbarimpl.h	Wed Apr 14 15:55:57 2010 +0300
@@ -140,6 +140,11 @@
          */
         void ResetToolbarExtensionCommandsL();
         
+        inline TBool IsICalenToolBar()
+            {
+            return iCalenToolbar ? ETrue : EFalse;
+            }
+        
     private:
 
         /**
--- a/calendarui/controller/inc/calenviewattachmentsdialog.h	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/inc/calenviewattachmentsdialog.h	Wed Apr 14 15:55:57 2010 +0300
@@ -370,6 +370,7 @@
         CCalenController&               iController;
         CDocumentHandler*               iDocHandler; 
         const TDesC&                    iNewTitle;
+        TBool                           iEmbeddedFileOpened;
         
         
         // Internal status flags
--- a/calendarui/controller/src/calenattachmentui.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/src/calenattachmentui.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -745,7 +745,8 @@
 
     // Hide the toolbar before we display settings menu
     MCalenToolbar* toolbar = iController.Services().ToolbarOrNull();
-    if(toolbar&&toolbar->IsVisible())
+   
+    if(toolbar&&toolbar->IsVisible()&& !iController.IsEditorActive())
         {
         toolbar->SetToolbarVisibilityL(EFalse); 
         iShowToolbar = ETrue;
--- a/calendarui/controller/src/calencmdlinelauncher.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/src/calencmdlinelauncher.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -508,6 +508,12 @@
 			    }
 			}
 		}
+	else if(iIsExitOnDlgClose && (aNotification == ECalenNotifyDialogClosed) )
+	    {
+            //dont do any thing
+            //This scenario hits, when the application launched from device search application,
+            //User issued a "Cancel" command while adding attachment. 
+	    }
     else if(aNotification == ECalenNotifyEntryClosed)
     	{
         // Exit when Escape pressed in Eventview
--- a/calendarui/controller/src/calencontroller.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/src/calencontroller.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -163,7 +163,7 @@
     iNotifier = new( ELeave )CCalenNotifier( *this );
 
     // Get an instance of the global data
-    iGlobalData = CCalenGlobalData::NewL( *iNotifier, iNotifier );
+    iGlobalData = CCalenGlobalData::NewL( *iNotifier, iNotifier, iNotifier );
     iGlobalData->InitializeGlobalDataL();
     
     RArray<TCalenNotification> notificationArray;
--- a/calendarui/controller/src/calendbchangenotifier.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,287 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:   Notifies observers of external changes to the calendar database
-*
-*/
-
-
-
-//debug
-#include "calendarui_debug.h"
-
-// INCLUDE FILES
-#include "calendbchangenotifier.h"    // CCalenDbChangeNotifier
-#include "calenglobaldata.h"            // Calendar global data
-#include <calsession.h>                 // CalSession
-
-// -----------------------------------------------------------------------------
-// KTimerResolution limits the number of notifications sent to registered
-// MCalenDBChangeObserver instances.  Notifications may come from 
-// MCalChangeCallBack2 at a very high rate which could impact performance, 
-// for example by causing constant view refreshes.
-// CCalenDbChangeNotifier notifies observers when KTimerResolution has elapsed
-// since the last notification was received from MCalChangeCallBack2
-// -----------------------------------------------------------------------------
-const TInt KTimerResolution = 1000000;  // 1 Second
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CCalenDbChangeNotifier::CCalenDbChangeNotifier
-// C++ default constructor can NOT contain any code, that might leave.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-CCalenDbChangeNotifier::CCalenDbChangeNotifier( CCalenGlobalData& aGlobalData ) 
-    : CActive( EPriorityNormal ),
-      iGlobalData( aGlobalData )
-    {
-    TRACE_ENTRY_POINT;
-
-    iRestartTimer = EFalse;
-
-    TRACE_EXIT_POINT;
-    }
-
-// -----------------------------------------------------------------------------
-// CCalenDbChangeNotifier::NewL
-// Two-phased constructor.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-CCalenDbChangeNotifier* CCalenDbChangeNotifier::NewL( CCalenGlobalData& aGlobalData )
-    {
-    TRACE_ENTRY_POINT;
-
-    CCalenDbChangeNotifier* self = new( ELeave ) CCalenDbChangeNotifier( aGlobalData );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-
-    TRACE_EXIT_POINT;
-    return self;
-    }
-
-// -----------------------------------------------------------------------------
-// CCalenDbChangeNotifier::ConstructL
-// Symbian 2nd phase constructor can leave.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-void CCalenDbChangeNotifier::ConstructL()
-    {
-    TRACE_ENTRY_POINT;
-
-    // We want to receive notifications for the full agenda date range
-    TCalTime start, end;
-    start.SetTimeUtcL( TCalTime::MinTime() );
-    end.SetTimeUtcL( TCalTime::MaxTime() );
-    CalCommon::TCalTimeRange range( start, end ); 
-
-    // Create a notification filter
-    iCalChangeFilter = CCalChangeNotificationFilter::NewL(
-                                                        MCalChangeCallBack2::EChangeEntryAll, 
-                                                        ETrue, 
-                                                        range );
-
-    // Enable database change notifications on current global data session
-    iGlobalData.CalSessionL().StartChangeNotification( *this, *iCalChangeFilter );
-
-    // Create a timer to limit the number of notifications broadcast
-    iNotificationTimer.CreateLocal();
-
-    // Active object, add to active scheduler
-    CActiveScheduler::Add( this );
-
-    TRACE_EXIT_POINT;
-    }
-
-// -----------------------------------------------------------------------------
-// CCalenDbChangeNotifier::~CCalenDbChangeNotifier
-// Destructor
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-CCalenDbChangeNotifier::~CCalenDbChangeNotifier()
-    {
-    TRACE_ENTRY_POINT;
-
-    Cancel();
-    // Reset the observer array.  Array contents are NOT owned by this class
-    iDBObservers.Reset();
-
-    iNotificationTimer.Close();
-
-    // Disable database change notifications on current global data session   
-    PIM_TRAPD_HANDLE( iGlobalData.CalSessionL().StopChangeNotification() );
-
-    // Destroy the notification filter
-    delete iCalChangeFilter;
-    
-    TRACE_EXIT_POINT;    
-    }
-
-// -----------------------------------------------------------------------------
-// CCalenDbChangeNotifier::LastDBModificationTime
-// Returns the time of the last database change notification.  This may not be
-// the time of the last notification sent to MCalenDBChangeObservers.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-TTime CCalenDbChangeNotifier::LastDBModificationTime() const
-    {
-    TRACE_ENTRY_POINT;
-
-    TRACE_EXIT_POINT;
-    return iLastDbChangeNotification;
-    }
-
-// -----------------------------------------------------------------------------
-// CCalenDbChangeNotifier::CalChangeNotification
-// Called when a change to the agenda database occurs from a different session
-// to the one we are currently using.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-void CCalenDbChangeNotifier::CalChangeNotification( RArray<TCalChangeEntry>& /*aChangeItems*/ )
-    {
-    TRACE_ENTRY_POINT;
-
-    // Always update the last notification time, even if we don't notify 
-    // our observers
-    iLastDbChangeNotification.UniversalTime();
-    if( !IsActive() )
-        {
-        iNotificationTimer.After( iStatus, KTimerResolution );
-        SetActive();
-        }
-    else
-        {
-        iRestartTimer = ETrue;
-        iNotificationTimer.Cancel();
-        }
-
-    TRACE_EXIT_POINT;
-    }
-
-// -----------------------------------------------------------------------------
-// CCalenDbChangeNotifier::RegisterObserverL
-// Adds the passed observer to the observer array.  All observers in the array 
-// will be notified of changes to the agenda database.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------    
- void CCalenDbChangeNotifier::RegisterObserverL( MCalenDBChangeObserver& aDBObserver )
-    {
-    TRACE_ENTRY_POINT;
-
-    iDBObservers.Append( &aDBObserver );
-
-    TRACE_EXIT_POINT;
-    }
-
-// -----------------------------------------------------------------------------
-// CCalenDbChangeNotifier::DeRegisterObserverL
-// Removes the passed observer to the observer array.  All observers in the array 
-// will be notified of changes to the agenda database.
-// -----------------------------------------------------------------------------       
-void CCalenDbChangeNotifier::DeRegisterObserverL( MCalenDBChangeObserver& aDBObserver )
-    {
-    TRACE_ENTRY_POINT;
-
-    for( TInt x = 0; x < iDBObservers.Count(); ++x )
-        {
-        if( iDBObservers[x] == &aDBObserver )
-            {
-            iDBObservers.Remove( x );
-            return;
-            }
-        }
-    User::Leave( KErrNotFound );
-
-    TRACE_EXIT_POINT;
-    }
-
-// -----------------------------------------------------------------------------       
-// CCalenDbChangeNotifier::RunL
-// From CActive::RunL
-// Called when notification timer expires
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------       
-void CCalenDbChangeNotifier::RunL()
-    {
-    TRACE_ENTRY_POINT;
-
-    switch( iStatus.Int() )
-        {
-        case KErrCancel:
-            {
-            // The normal reason for the timer being cancelled is another
-            // database change.  Restart the timer.
-            if( iRestartTimer )
-                {
-                iRestartTimer = EFalse;
-                iNotificationTimer.After( iStatus, KTimerResolution );
-                SetActive();
-                }        
-            }
-        break;
-
-        case KErrNone:
-            {
-            //Timer completion, notify observers
-            for( TInt x = 0; x < iDBObservers.Count(); ++x )
-                {
-                iDBObservers[x]->HandleDBChangeL();
-                }
-            }
-        break;
-
-        default:
-            {
-            User::Leave( KErrArgument );
-            }
-        break;
-        }
-
-    TRACE_EXIT_POINT;
-    }
-
-// -----------------------------------------------------------------------------       
-// CCalenDbChangeNotifier::RunError
-// From CActive::RunError
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-TInt CCalenDbChangeNotifier::RunError( TInt aError )
-    {
-    TRACE_ENTRY_POINT;
-
-    //RunL leaving means that the view could not be refreshed.
-    //Theres not much we can do except be ready for the next database event.
-    iRestartTimer = EFalse;
-
-    TRACE_EXIT_POINT;
-    return aError;
-    }
-
-// -----------------------------------------------------------------------------       
-// CCalenDbChangeNotifier::DoCancel
-// From CActive::DoCancel
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-void CCalenDbChangeNotifier::DoCancel()
-    {
-    TRACE_ENTRY_POINT;
-
-    // Stop the notification timer
-    iRestartTimer = EFalse;
-    iNotificationTimer.Cancel();
-
-    TRACE_EXIT_POINT;
-    }
-
-// End of File
--- a/calendarui/controller/src/calendeleteui.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/src/calendeleteui.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -39,6 +39,8 @@
 #include <caleninstanceid.h>            // TCalenInstanceId
 #include <calenactionuiutils.h>
 #include <calcalendarinfo.h>
+#include <calentoolbar.h>
+#include <akntoolbar.h>
 
 #include "calendarui_debug.h"           // Debug
 #include "calendeleteui.h"
@@ -379,6 +381,14 @@
 			    {
 			    MarkedEntriesDeletedL();    
 			    }
+			MCalenToolbar* toolbarImpl = iController.Services().ToolbarOrNull(); 
+            if (toolbarImpl)
+                {
+                CAknToolbar& toolbar = toolbarImpl->Toolbar();
+    
+                // dim clear and clear all toolbar buttons
+                toolbar.SetItemDimmed(ECalenNewMeeting, EFalse, ETrue);
+                }
 			}
         else
             {
--- a/calendarui/controller/src/calenmultidbeditor.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/src/calenmultidbeditor.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -419,6 +419,7 @@
                 {
                 iMultipleDbUi.UpdateOnAddOrEditL(!iEditFlag);
                 }
+             isExitForm = ETrue;
              iMultipleDbUi.ExitDialogL();           
 			 }
             break;
@@ -752,15 +753,15 @@
                TInt index = calendarInfoList.Find( *iCalendarName,CCalenMultiDBEditor::CalenInfoIdentifierL );
                if(index != KErrNotFound)
                    {
+                   retValue = EFalse;
                    if( EAknCmdExit != aButtonId )
-                       {
-                   retValue = EFalse;
-                   HBufC* infoText = StringLoader::LoadLC(
-                           R_QTN_CALE_DB_ALREADY_EXISTS_NOTE , iCalendarName->Des() );
-                   CAknInformationNote* dialog = new( ELeave ) CAknInformationNote(ETrue);
-                   dialog->ExecuteLD( *infoText );
-                   CleanupStack::PopAndDestroy( infoText );                        
-                       }                     
+                       {                       
+                       HBufC* infoText = StringLoader::LoadLC(
+                               R_QTN_CALE_DB_ALREADY_EXISTS_NOTE , iCalendarName->Des() );
+                       CAknInformationNote* dialog = new( ELeave ) CAknInformationNote(ETrue);
+                       dialog->ExecuteLD( *infoText );
+                       CleanupStack::PopAndDestroy( infoText );                        
+                       }
                    }
                else
                    {
@@ -773,13 +774,13 @@
            {
            if( EAknCmdExit != aButtonId )
                {
-           retValue = EFalse;
-           HBufC* infoText(NULL);
-           infoText = AreIllegalChars( *iCalendarName ) ? StringLoader::LoadLC( R_CALEN_ILLEGAL_CHARACTERS ) : 
-                                                    StringLoader::LoadLC( R_CALEN_BAD_FILE_NAME );
-           CAknInformationNote* dialog = new( ELeave ) CAknInformationNote(ETrue);
-           dialog->ExecuteLD( *infoText );
-           CleanupStack::PopAndDestroy( infoText ); 
+               retValue = EFalse;
+               HBufC* infoText(NULL);
+               infoText = AreIllegalChars( *iCalendarName ) ? StringLoader::LoadLC( R_CALEN_ILLEGAL_CHARACTERS ) : 
+                                                        StringLoader::LoadLC( R_CALEN_BAD_FILE_NAME );
+               CAknInformationNote* dialog = new( ELeave ) CAknInformationNote(ETrue);
+               dialog->ExecuteLD( *infoText );
+               CleanupStack::PopAndDestroy( infoText ); 
                }
            }
 		    
--- a/calendarui/controller/src/calenmultipledbui.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/src/calenmultipledbui.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -42,6 +42,9 @@
 #include <CalenInterimUtils2.h>
 #include <calenmulticalutil.h>
 #include <calenmulticaluids.hrh>
+#include <featmgr.h>
+#include <hlplch.h>
+#include <csxhelp/cale.hlp.hrh>
 
 // User includes
 #include "calendarui_debug.h"
@@ -50,6 +53,7 @@
 #include "calenmultidbeditor.h"
 #include "CalendarPrivateCRKeys.h"
 #include "calencontroller.h"
+#include "CalenUid.h"
 
 // Constants
 _LIT( KListSeparatorFormat, "\t" );
@@ -217,9 +221,10 @@
     TRACE_ENTRY_POINT;
     CAknDialog::ConstructL( R_CALEN_MULTIPLEDB_MENUBAR );
     SetTitlePaneL();
-    TCallBack callBack(CCalenMultipleDbUi::DoAsyncExit,this);
-    iAsyncExit = new(ELeave) CAsyncCallBack(callBack,CActive::EPriorityStandard);
     
+    TCallBack actionCallBack(CCalenMultipleDbUi::AsyncCallBackL, this);
+    iAsyncAction = new(ELeave) CAsyncCallBack(actionCallBack,CActive::EPriorityStandard);
+   
 	// register for calendar file change notifications
     RArray<TCalenNotification> notificationArray;
     notificationArray.Append(ECalenNotifyCalendarInfoCreated);
@@ -231,9 +236,6 @@
     
     iConflictOccured = EFalse;
     
-    TCallBack callBackDeleteQuery(CCalenMultipleDbUi::DoAsyncDeleteTemL, this);
-    iAsyncDeletequery = new(ELeave) CAsyncCallBack(callBackDeleteQuery,CActive::EPriorityStandard);
-    
     TRACE_EXIT_POINT;
     }
 
@@ -269,13 +271,9 @@
     iIconIndices.Reset();
     iIconIndices.Close();
     
-    iAsyncExit->Cancel();
-    delete iAsyncExit;
-    iAsyncExit = NULL;
-    
-    iAsyncDeletequery->Cancel();
-    delete iAsyncDeletequery;
-    iAsyncDeletequery = NULL;
+    iAsyncAction->Cancel();
+    delete iAsyncAction;
+    iAsyncAction = NULL;
         
     if(iCalendarInfoNew)
         {
@@ -554,29 +552,25 @@
       case ECalenCmdEdit:
           {
           TInt retValue = EditItemL();
-          
           if(retValue == EAknCmdExit || retValue == EAknSoftkeyExit )
               {
-              iAsyncExitCmd = retValue;
-              iAsyncExit->CallBack();
+              DoAsyncActionL(retValue);
               }
           }
           break;
       case ECalenCmdAdd:
           {
           TInt retValue = AddItemL();
-          
           if(retValue == EAknCmdExit || retValue == EAknSoftkeyExit )
              {
-             iAsyncExitCmd = retValue;
-             iAsyncExit->CallBack();
+             DoAsyncActionL(retValue);
              }
           }
           break;
       case ECalenCmdDelete:
           {
-          iAsyncDeletequery->CallBack();
-		  }
+          DoAsyncActionL(ECalenCmdDelete);
+          }
           break;
       case ECalenCmdItemSelect:
       case ECalenCmdShow:
@@ -593,10 +587,16 @@
       case EAknCmdExit:
       case EAknSoftkeyExit:
           {
-          iAsyncExitCmd = EAknSoftkeyExit;
-          iAsyncExit->CallBack();
+          DoAsyncActionL(EAknSoftkeyExit);
           }
           break;
+      case EAknCmdHelp:      
+            if (FeatureManager::FeatureSupported(KFeatureIdHelp)) //ravi
+                {
+                HlpLauncher::LaunchHelpApplicationL(
+                        iCoeEnv->WsSession(),iAvkonAppUi->AppHelpContextL());                        
+                }
+          break;
       default:
           break;
       }
@@ -604,6 +604,23 @@
     }
 
 // ----------------------------------------------------------------------------
+// CCalenMultipleDbUi::GetHelpContext
+// Gets help context
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMultipleDbUi::GetHelpContext( TCoeHelpContext& aContext ) const
+    {
+    TRACE_ENTRY_POINT;
+
+    aContext.iMajor = KUidCalendar;
+    // This is specified in HRH file.
+    aContext.iContext = KCALE_HLP_DAY_VIEW; //KCALE_HLP_DAY_VIEW should be replaced with MultipleDbUi related help id
+
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
 // CCalenMultipleDbUi::DoSelectionL
 // Mark the listbox item as hidden/visible based on aMark status
 // ----------------------------------------------------------------------------
@@ -712,8 +729,8 @@
 void CCalenMultipleDbUi::ExitDialogL()
     {
     TRACE_ENTRY_POINT
-    iAsyncExitCmd = EAknSoftkeyExit;
-    iAsyncExit->CallBack();
+    iAsyncActionCmd = EAknSoftkeyExit;
+    iAsyncAction->CallBack();
     TRACE_EXIT_POINT
     }
 
@@ -775,7 +792,7 @@
     {
     TRACE_ENTRY_POINT;
     
-    TInt currentIndex =  iListBox->CurrentItemIndex();
+    TInt currentIndex =  iCurrentIndex;
     
     RPointerArray<CCalCalendarInfo> calendarInfoList; 
     iController.GetAllCalendarInfoL(calendarInfoList);
@@ -887,7 +904,7 @@
         {
         if( aKeyEvent.iCode == EKeyEscape )
             {
-            TryExitL( EKeyEscape );
+            TryExitL( EKeyNo );
             return exitCode; // Chain this one up to the main app so it closes calendar app.
             }
          else if(aType == EEventKey && TChar(aKeyEvent.iCode).IsPrint() )
@@ -972,6 +989,12 @@
            okExit = ETrue;
            }
            break;
+       case EKeyNo:
+           {
+           iController.BroadcastNotification(ECalenNotifyDeleteInstanceView);
+           okExit = CAknDialog::OkToExitL(aButtonId);
+           break;
+           }
        default:
            {
            okExit = CAknDialog::OkToExitL(aButtonId);
@@ -1157,30 +1180,60 @@
     }
 
 // ----------------------------------------------------------------------------
-// CCalenMultipleDbUi::CallBackForAddAndDeleteL
+// CCalenMultipleDbUi::AsyncCallBackL
 // (other items were commented in a header).
 // ----------------------------------------------------------------------------
 //
-TInt CCalenMultipleDbUi::DoAsyncExit(TAny* aPtr)
+TInt CCalenMultipleDbUi::AsyncCallBackL(TAny* aThisPtr)
     {
     TRACE_ENTRY_POINT
-    CCalenMultipleDbUi* self = static_cast<CCalenMultipleDbUi*>(aPtr);
-    self->TryExitL(self->iAsyncExitCmd);
+    CCalenMultipleDbUi* self = static_cast<CCalenMultipleDbUi*>(aThisPtr);
+    self->HandleAsyncCommandL(self->iAsyncActionCmd);
     TRACE_EXIT_POINT
     return 0;
     }
+
 // ----------------------------------------------------------------------------
-// CCalenMultipleDbUi::CallBackForDeleteItemL
+// CCalenMultipleDbUi::DoAsyncActionL
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCalenMultipleDbUi::DoAsyncActionL(const TInt aCommand)
+    {
+    TRACE_ENTRY_POINT
+    iCurrentIndex = iListBox->CurrentItemIndex();
+    iAsyncActionCmd = aCommand;
+    iAsyncAction->CallBack();
+    TRACE_EXIT_POINT
+    }
+
+// ----------------------------------------------------------------------------
+// CCalenMultipleDbUi::DoAsyncActionL
 // (other items were commented in a header).
 // ----------------------------------------------------------------------------
 //
-TInt CCalenMultipleDbUi::DoAsyncDeleteTemL(TAny* aPtr)
+void CCalenMultipleDbUi::HandleAsyncCommandL(const TInt aCommand)
     {
     TRACE_ENTRY_POINT
-    CCalenMultipleDbUi* self = static_cast<CCalenMultipleDbUi*>(aPtr);
-    self->DeleteItemL();
+    
+    switch(aCommand)
+        {
+        case EAknSoftkeyExit:
+        case EAknCmdExit:
+            {
+            TryExitL(aCommand);
+            }
+            break;
+        case ECalenCmdDelete:
+            {
+            DeleteItemL();
+            }
+            break;
+        default:
+            break;
+        }
+    
     TRACE_EXIT_POINT
-    return 0;
     }
 
 // ----------------------------------------------------------------------------
--- a/calendarui/controller/src/calennotifier.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/src/calennotifier.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -101,13 +101,6 @@
         iEComWatcher = NULL;
         }
 
-    // Stop database change notifications.
-    if( iDbChangeNotifier )
-        {
-        delete iDbChangeNotifier;
-        iDbChangeNotifier = NULL;
-        }
-    
     // Stop settings change notifications
     if( iCenRepChangeNotifier )
         {
@@ -170,10 +163,6 @@
     iCenRepChangeNotifier = CCenRepNotifyHandler::NewL( *this, *iRepository );
     iCenRepChangeNotifier->StartListeningL();
     
-    // Register for changes to our database session
-    iDbChangeNotifier = CCalenDbChangeNotifier::NewL( *iGlobalData );
-    iDbChangeNotifier->RegisterObserverL( *this );
-  
     // Register for changes to the ECom registry
     iEComWatcher = CCalenEComWatcher::NewL( *this );
      
@@ -771,6 +760,7 @@
 			case MCalFileChangeObserver::ECalendarFileCreated:
 			case MCalFileChangeObserver::ECalendarInfoCreated:
 				{
+				BroadcastNotification(ECalenNotifyDeleteInstanceView);
 				BroadcastNotification(ECalenNotifyCalendarInfoCreated);
 				}
 				break;
--- a/calendarui/controller/src/calenviewattachmentsdialog.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/src/calenviewattachmentsdialog.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -105,7 +105,8 @@
       CCalenAttachmentModel& aAttachmentModel,CCalenController& aController )
     : iAttachmentModel( aAttachmentModel ),
       iController(aController),
-      iNewTitle( aTitle )  
+      iNewTitle( aTitle ),
+      iEmbeddedFileOpened(EFalse)  
     {
     TRACE_ENTRY_POINT;
     TRACE_EXIT_POINT;
@@ -392,6 +393,7 @@
     {
     TRACE_ENTRY_POINT;
     
+    iEmbeddedFileOpened = EFalse;
     if (aReason == EAknCmdExit)
         {
         //issue this notification, which will be handled by attachmentui.
@@ -798,7 +800,7 @@
     {
     TRACE_ENTRY_POINT;
      //Single click integration
-    if ( iListBox )
+    if ( iListBox && !iEmbeddedFileOpened)
         {
         iListBox->HandlePointerEventL( aPointerEvent );
         }
@@ -1098,18 +1100,27 @@
     
     if(datatype == KNotePadTextDataType())
         {
+        if(iEmbeddedFileOpened)
+            {
+            return;
+            }
+        iEmbeddedFileOpened = ETrue;   
         const TDesC& notepadTitle = _L("NotePad");
         ret = CNotepadApi::ExecFileViewerL( aFile, 
                                            &notepadTitle,
                                            ETrue,
                                            ETrue,
                                            KCharacterSetIdentifierIso88591 );
-        
+        iEmbeddedFileOpened = EFalse;        
         }
     else
         {
         //doc handler will open the other files (other than text file).
         TRAP( ret, iDocHandler->OpenFileEmbeddedL( aFile, datatype ) );
+        if(ret == KErrNone)
+            {
+            iEmbeddedFileOpened = ETrue;
+            }
         }
 
     switch(ret)
--- a/calendarui/controller/src/calenviewmanager.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/controller/src/calenviewmanager.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -1340,7 +1340,14 @@
     {
     TRACE_ENTRY_POINT;
     TRACE_EXIT_POINT;
-    return iToolbar;
+    if (iToolbar)
+        {
+        if (iToolbar->IsICalenToolBar())
+            {
+            return iToolbar;
+            }
+        }
+    return NULL;
     }        
     
 // ----------------------------------------------------------------------------
--- a/calendarui/editors/data/CalenDefaultEditorsData.rss	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/editors/data/CalenDefaultEditorsData.rss	Wed Apr 14 15:55:57 2010 +0300
@@ -202,7 +202,7 @@
             },
         MENU_ITEM
             {
-            command = EAknCmdExit;
+            command = EAknSoftkeyExit;
             txt = qtn_options_exit;
             }
         };
@@ -273,7 +273,7 @@
             },
         MENU_ITEM
             {
-            command = EAknCmdExit;
+            command = EAknSoftkeyExit;
             txt = qtn_options_exit;
             }
         };
@@ -1643,7 +1643,7 @@
             },
         MENU_ITEM
             {
-            command = EAknCmdExit;
+            command = EAknSoftkeyExit;
             txt = qtn_options_exit;
             }
         };
--- a/calendarui/editors/inc/calendbfield.h	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/editors/inc/calendbfield.h	Wed Apr 14 15:55:57 2010 +0300
@@ -116,6 +116,24 @@
           */
          static TBool CalendarInfoNameIdentifierL( const HBufC* aName,
                                     const CCalCalendarInfo& aInfoItem );
+         
+         /**
+          * @brief show infonote when database changes and entry having
+          * childs.
+          */
+         void ShowChangeDBQueryL();
+         /*
+          * Callback for CAsyncCallBack class
+          * @param aThisPtr* this pointer.
+          * @return TInt status.
+          */         
+         static TInt DoAsyncShowChangeDBQueryL(TAny* aThisPtr);
+         
+         /**
+          * @brief Update data in editor
+          * @param aColId collection Id of selected database
+          */    
+         void SetDataToEditorL(const TCalCollectionId& aColId);
 
     public:
          //previous calendar collection id  
@@ -153,6 +171,7 @@
         //services referance not owned
         MCalenServices* iServices;
         HBufC* iCalendarFileName;
+        CAsyncCallBack* iAsyncDBquery;        
         
     };
 
--- a/calendarui/editors/inc/calenunifiededitor.h	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/editors/inc/calenunifiededitor.h	Wed Apr 14 15:55:57 2010 +0300
@@ -297,8 +297,9 @@
 
         /**
          * @brief Handles "Exit" command.
+         * @param aCmd Holds the command issued.
          */
-        void OnCmdExitL();
+        void OnCmdExitL(TInt aCmd);
         
         /**
          * @brief Delete note from Calendar.
--- a/calendarui/editors/src/calenalldayfield.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/editors/src/calenalldayfield.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -162,11 +162,11 @@
         // editor should display EndDate as 23/06/2009.
         if( endDate > startDate )
             {
-            //endDate -= TTimeIntervalDays( 1 );
-            //endDate contains the time component also, even for same day endDate would be greater then startDate
-            //subtracting 1 from endate will give endDate as one day before startDate.
-            //For All day event Start date and End Date are same so assigning startDate to endDate.
-            endDate = startDate;
+            endDate -= TTimeIntervalDays( 1 );
+            if( endDate < startDate )
+                {
+                endDate = startDate;
+                }
             }
 		
 		iUnifiedEditor.EditorFields().SetDateField( ECalenEditorStartDate, startDate, ETrue );
--- a/calendarui/editors/src/calendbfield.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/editors/src/calendbfield.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -112,6 +112,13 @@
     {
     TRACE_ENTRY_POINT;
 
+    if( iAsyncDBquery )
+        {
+        iAsyncDBquery->Cancel();
+        delete iAsyncDBquery;
+        iAsyncDBquery = NULL;
+        }
+    
     delete iDbNamesArrayText;
     delete iDbNamesArray;
     delete iDbNamesTextValues;
@@ -204,6 +211,41 @@
     }
 
 // -----------------------------------------------------------------------------
+// CCalenDbField::SetDataToEditorL
+// update data in form
+// -----------------------------------------------------------------------------
+//
+void CCalenDbField::SetDataToEditorL(const TCalCollectionId& aColId)
+    {
+    TRACE_ENTRY_POINT;
+    //Get MultipleDbInfo array
+    RPointerArray<CCalCalendarInfo> calendarInfoList;
+    iServices->GetAllCalendarInfoL(calendarInfoList);
+    CleanupClosePushL(calendarInfoList);
+
+    TInt index = KErrNotFound;   
+    
+    HBufC* calendarFileName= iServices->GetCalFileNameForCollectionId(aColId).AllocLC();
+    index = calendarInfoList.Find(*calendarFileName, CCalenDbField::CalendarInfoNameIdentifierL);
+    CleanupStack::PopAndDestroy(calendarFileName);        
+    
+    if (KErrNotFound == index)
+        {
+        iDbNamesTextValues->SetCurrentValueIndex(0);
+        }
+    else
+        {
+        iDbNamesTextValues->SetCurrentValueIndex(index);
+        }
+    iUnifiedEditor.EditorDataHandler().SetCalendarFieldEditedL(
+            IsCalendarEdited(), iPreviousColId, iCurrentColId);
+
+    CleanupStack::PopAndDestroy(&calendarInfoList);
+   
+    TRACE_EXIT_POINT;
+    }
+
+// -----------------------------------------------------------------------------
 // CCalenDbField::HandleControlStateChangeL
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
@@ -220,25 +262,10 @@
             ReadDataFromFormL( continueOnError );
             iUnifiedEditor.EditorDataHandler().SetCalendarFieldEditedL(IsCalendarEdited()
                                                             ,iPreviousColId,iCurrentColId);
-            //Check the child entries for the repeated entry
-            //The entry which is changing the calendar having any childs 
-            //show this information note to the user.  
-            CCalEntry& originalEntry = iUnifiedEditor.EditorDataHandler().Entry();
-            RPointerArray<CCalEntry> childEntries;
-            CleanupClosePushL(childEntries);
-            iServices->EntryViewL(iPreviousColId)->FetchL(originalEntry.UidL(), childEntries);            
-            if(IsCalendarEdited() && (childEntries.Count() > 1))
-                {
-                CAknQueryDialog* dlg = CAknQueryDialog::NewL();
-                if( !dlg->ExecuteLD( R_CALEN_DB_CHANGE_QUERY ) )
-                    {
-                    iCurrentColId = iPreviousColId;
-                    SetDataToEditorL();                    
-                    iUnifiedEditor.UpdateFormL();
-                    }
-                }            
-            CleanupStack::PopAndDestroy( &childEntries );
             
+            TCallBack callback(DoAsyncShowChangeDBQueryL,this);
+            iAsyncDBquery = new(ELeave) CAsyncCallBack(callback,CActive::EPriorityStandard);
+            iAsyncDBquery->CallBack();
             break;
             }
         default: 
@@ -248,6 +275,23 @@
     TRACE_EXIT_POINT;
     }
 
+// ----------------------------------------------------------------------------
+// CallBackForShowinginfonote
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+TInt CCalenDbField::DoAsyncShowChangeDBQueryL(TAny* aThisPtr)
+    {
+    TRACE_ENTRY_POINT
+    CCalenDbField* self = static_cast<CCalenDbField*>(aThisPtr);
+    if(self)
+        {
+        self->ShowChangeDBQueryL();
+        }
+    TRACE_EXIT_POINT
+    return 0;
+    }
+
 // -----------------------------------------------------------------------------
 // CCalenDbField::ReadDataFromFormL
 // (other items were commented in a header).
@@ -355,4 +399,34 @@
     TRACE_EXIT_POINT;
     return (!calendarFileName.CompareF(*aName));
     }
+// -----------------------------------------------------------------------------
+// CCalenDbField::ShowChangeDBQueryL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//  
+void CCalenDbField::ShowChangeDBQueryL()
+    {
+    
+    //Check the child entries for the repeated entry
+    //The entry which is changing the calendar having any childs 
+    //show this information note to the user.
+    CCalEntry& originalEntry = iUnifiedEditor.EditorDataHandler().Entry();
+    RPointerArray<CCalEntry> childEntries;
+    CleanupClosePushL(childEntries);
+    iServices->EntryViewL(iPreviousColId)->FetchL(originalEntry.UidL(), childEntries);            
+    if(IsCalendarEdited() && (childEntries.Count() > 1))
+        {
+        TCalCollectionId  currentId = iCurrentColId;
+        SetDataToEditorL();                    
+        iUnifiedEditor.UpdateFormL();
+        CAknQueryDialog* dlg = CAknQueryDialog::NewL();
+        if( dlg->ExecuteLD( R_CALEN_DB_CHANGE_QUERY ) )
+            {
+            iCurrentColId = currentId;
+            SetDataToEditorL(iCurrentColId);
+            iUnifiedEditor.UpdateFormL();
+            }
+        }            
+    CleanupStack::PopAndDestroy( &childEntries );                
+    }
 // End of File
--- a/calendarui/editors/src/calenunifiededitor.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/editors/src/calenunifiededitor.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -583,6 +583,7 @@
          case ECalenEditSeries:
          case ECalenEditOccurrence:
          case EAknCmdExit:
+         case EAknSoftkeyExit:
          case EEikBidCancel:
              {
              // EEikBidCancel is called when Red End key is pressed or
@@ -601,6 +602,9 @@
                  {
                  PIM_TRAPD_HANDLE( TryToSaveNoteOnForcedExitL() );
                  }
+             if(EAknSoftkeyExit == aButtonId)
+                 iServices->IssueCommandL(aButtonId);
+             
              break;
              }
          case EAknSoftkeyDone:
@@ -1051,7 +1055,8 @@
             OnCmdDeleteNoteL();
             break;
         case EAknCmdExit:
-            OnCmdExitL();
+        case EAknSoftkeyExit:            
+            OnCmdExitL(aCommandId);
             break;
         case EAknCmdHelp:
             OnCmdHelpL();
@@ -1420,12 +1425,12 @@
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
 //
-void CCalenUnifiedEditor::OnCmdExitL()
+void CCalenUnifiedEditor::OnCmdExitL(TInt aCmd)
     {
-    TRACE_ENTRY_POINT;
-
-    TryExitL( EAknCmdExit );
-
+    TRACE_ENTRY_POINT;   
+    
+            TryExitL( aCmd );
+       
     TRACE_EXIT_POINT;
     }
 
@@ -1437,7 +1442,13 @@
 //
 void CCalenUnifiedEditor::TryToDeleteNoteL( TBool /* aIsViaDeleteMenu */ )
     {
-    TRACE_ENTRY_POINT;    
+    TRACE_ENTRY_POINT;
+	
+	TInt attachmentCount = iServices->GetAttachmentData()->NumberOfItems(); 		   
+	 if(Edited().AttachmentCount() || attachmentCount)
+		 {
+		 iServices->GetAttachmentData()->Reset();
+		 }
     if (IsCreatingNewEntry())
         {
         iEntryUpdater->TryDeleteInstanceWithUiL( EditorDataHandler().Entry() ,
@@ -1919,7 +1930,7 @@
                 endDate == CalenDateUtils::BeginningOfDay( endDate ) )
             {
             TTimeIntervalDays differenceInTime = endDate.DaysFrom(startDate); // fix for AllDayEntry issue
-            if( CCalEntry::EAppt == Edited().EntryType() && startDate != endDate && differenceInTime.Int() == 1 )
+            if( CCalEntry::EAppt == Edited().EntryType() && startDate != endDate && differenceInTime.Int() >= 1 )
                 {
                 Edited().SetEntryType( CCalEntry::EEvent );
                 }
--- a/calendarui/editors/src/calenunifiededitorcontrol.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/editors/src/calenunifiededitorcontrol.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -237,7 +237,10 @@
         iRepeatField->SetDataToEditorL();
         }
     
-    iDbField->SetDataToEditorL();
+    if(!iDbField->IsCalendarEdited())
+        {
+        iDbField->SetDataToEditorL();
+        }
 
     if( CCalEntry::ETodo != iUnifiedEditor.GetEntryType() )
         {
@@ -1096,6 +1099,13 @@
         result = CalenDateUtils::BeginningOfDay( result );
         }
     
+    if( iAllDayField->IsAllDayEvent() )
+        {
+        TTime endDate = iUnifiedEditor.Edited().EndDateTime();
+        endDate = CalenDateUtils::BeginningOfDay( endDate );
+        iUnifiedEditor.Edited().SetEndDateTimeL(endDate);
+        }
+    
     resDT = result.DateTime();
     TRACE_EXIT_POINT;
     return result;
@@ -1139,6 +1149,8 @@
             // In Editor it should be displayed as "StartDate: 15-08-2010 & EndDate:15-08-2010" 
             // But, while saving EndDate is saved as 12:00am, 16-08-2010. 
             TTime startDate = iUnifiedEditor.Edited().StartDateTime();
+            startDate = CalenDateUtils::BeginningOfDay( startDate );
+            iUnifiedEditor.Edited().SetStartDateTimeL(startDate);
             if( result >= startDate )
                 {
                 result += TTimeIntervalDays( KOneDay );
@@ -1417,20 +1429,11 @@
         // For allday (1 day) event Eg. "Start:- 12:00am, 15-08-2010 &  End:-12:00am, 16-08-2010"
         // In Editor it should be displayed as "StartDate: 15-08-2010 & EndDate:15-08-2010" 
         // No time filed is displayed.
-        if ( end > start )                         
+        end -= TTimeIntervalDays( KOneDay );
+        if ( end < start )                         
             {
-            //end -= TTimeIntervalDays( KOneDay );
-            //end contains the time component also, even for same day end would be greater then start
-            //subtracting 1 from end will give end as one day before start.
-            //For All day event Start date and End Date are same so assigning start to end.
             end = start;
             }
-        else if( end == start )
-            {
-            // For allday event minimum duration is 1day.
-            TTime endDate = start + TTimeIntervalDays( KOneDay );
-            iUnifiedEditor.Edited().SetEndDateTimeL( endDate );
-            }
         }
     
     SetDateField( ECalenEditorEndDate, end, ETrue );
--- a/calendarui/globaldata/BWINS/calenglobaldatau.def	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/globaldata/BWINS/calenglobaldatau.def	Wed Apr 14 15:55:57 2010 +0300
@@ -23,7 +23,7 @@
 	?ResetKeyEventQueue@CCalenGlobalData@@QAEXXZ @ 22 NONAME ; void CCalenGlobalData::ResetKeyEventQueue(void)
 	?GetQueuedKeyEvent@CCalenGlobalData@@QAEHAAUTKeyEvent@@AAW4TEventCode@@@Z @ 23 NONAME ; int CCalenGlobalData::GetQueuedKeyEvent(struct TKeyEvent &, enum TEventCode &)
 	?CalenSendL@CCalenGlobalData@@QAEAAVCCalenSend@@XZ @ 24 NONAME ; class CCalenSend & CCalenGlobalData::CalenSendL(void)
-	?NewL@CCalenGlobalData@@SAPAV1@AAVMCalProgressCallBack@@PAVMCalenContextChangeObserver@@@Z @ 25 NONAME ; class CCalenGlobalData * CCalenGlobalData::NewL(class MCalProgressCallBack &, class MCalenContextChangeObserver *)
+	?NewL@CCalenGlobalData@@SAPAV1@AAVMCalProgressCallBack@@PAVMCalenContextChangeObserver@@PAVMCalenDBChangeObserver@@@Z @ 25 NONAME ; class CCalenGlobalData * CCalenGlobalData::NewL(class MCalProgressCallBack &, class MCalenContextChangeObserver *, class MCalenDBChangeObserver *)
 	?EntryViewExists@CCalenGlobalData@@QAEHXZ @ 26 NONAME ; int CCalenGlobalData::EntryViewExists(void)
 	?AttemptToRetrieveDefaultMailboxL@CCalenGlobalData@@QAEHAAUTMailboxInfo@CMRMailboxUtils@@@Z @ 27 NONAME ; int CCalenGlobalData::AttemptToRetrieveDefaultMailboxL(struct CMRMailboxUtils::TMailboxInfo &)
 	?GetAllCalendarInfoL@CCalenGlobalData@@QAEXAAV?$RPointerArray@VCCalCalendarInfo@@@@@Z @ 28 NONAME ; void CCalenGlobalData::GetAllCalendarInfoL(class RPointerArray<class CCalCalendarInfo> &)
--- a/calendarui/globaldata/eabi/calenglobaldatau.def	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/globaldata/eabi/calenglobaldatau.def	Wed Apr 14 15:55:57 2010 +0300
@@ -31,7 +31,7 @@
 	_ZN16CCalenGlobalData21InitializeGlobalDataLEv @ 30 NONAME
 	_ZN16CCalenGlobalData29GetCalFileNameForCollectionIdEh @ 31 NONAME
 	_ZN16CCalenGlobalData32AttemptToRetrieveDefaultMailboxLERN15CMRMailboxUtils12TMailboxInfoE @ 32 NONAME
-	_ZN16CCalenGlobalData4NewLER20MCalProgressCallBackP27MCalenContextChangeObserver @ 33 NONAME
+	_ZN16CCalenGlobalData4NewLER20MCalProgressCallBackP27MCalenContextChangeObserverP22MCalenDBChangeObserver @ 33 NONAME
 	_ZN16CCalenGlobalData7ContextEv @ 34 NONAME
 	_ZN16CCalenGlobalData7ReleaseEv @ 35 NONAME
 	_ZN16CCalenGlobalData8InstanceEv @ 36 NONAME
--- a/calendarui/globaldata/group/CalenGlobalData.mmp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/globaldata/group/CalenGlobalData.mmp	Wed Apr 14 15:55:57 2010 +0300
@@ -37,7 +37,8 @@
 SOURCE          calenvcalexport.cpp
 
 SOURCE          calencontextimpl.cpp
-SOURCE          calenfilemapping.cpp
+SOURCE          calenfilemapping.cpp 
+SOURCE          calendbchangenotifier.cpp
 
 USERINCLUDE     ../inc
 USERINCLUDE     ../../inc
--- a/calendarui/globaldata/group/bld.inf	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/globaldata/group/bld.inf	Wed Apr 14 15:55:57 2010 +0300
@@ -27,6 +27,7 @@
 //organizer/calendarui/inc
 ../inc/calensend.h                           |../../inc/calensend.h
 ../inc/calencontextchangeobserver.h          |../../inc/calencontextchangeobserver.h
+../inc/calendbchangenotifier.h               |../../inc/calendbchangenotifier.h
 
 //organizer/inc
 ../inc/calenglobaldata.h                     |../../../inc/calenglobaldata.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/globaldata/inc/calendbchangenotifier.h	Wed Apr 14 15:55:57 2010 +0300
@@ -0,0 +1,152 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Notifies observers of external changes to the calendar database
+*
+*/
+
+
+#ifndef __CALENDBCHANGENOTIFIER_H
+#define __CALENDBCHANGENOTIFIER_H
+
+//  INCLUDES
+#include <e32base.h>
+
+#include <calchangecallback.h>      //MCalChangeCallBack
+
+// FORWARD DECLARATIONS
+class CCalSession;                  //Calendar session
+class CCalenGlobalData;             //Calendar global data
+
+// CLASS DECLARATION
+
+/**
+* Observer class for database changes.  Forwards callback from 
+* MCalChangeCallBack2
+*/
+class MCalenDBChangeObserver
+    {
+    public:
+        virtual void HandleDBChangeL() = 0;
+    };
+
+/**
+*  CCalenDbChangeNotifier buffers notifications from MCalChangeCallBack2 and 
+*  only notifies its observers after a set period has elapsed.  This prevents
+*  Calendar views refreshing more often than necessary during a sync operation
+*/
+NONSHARABLE_CLASS(CCalenDbChangeNotifier) : public CActive,
+                                                                  public MCalChangeCallBack2
+    {
+    public:  // Constructors and destructor
+        /**
+        * Constructor.
+        * @param aGlobalData global data reference
+        * @return a pointer to the new CCalenDbChangeNotifier instance
+        */
+        static CCalenDbChangeNotifier* NewL( CCalSession& aSession );
+
+       /**
+        * Destructor.
+        */
+        ~CCalenDbChangeNotifier();
+        
+    public:
+        /**
+        * Allow CCalenViews to register for database change notifications
+        * @param aDBObserver Observer to register
+        */
+        void RegisterObserverL( MCalenDBChangeObserver& aDBObserver );
+        
+        /**
+        * Allow CCalenViews to deregister for database change notifications
+        * @param aDBObserver Observer to deregister
+        */
+        void DeRegisterObserverL( MCalenDBChangeObserver& aDBObserver );
+        
+        /**
+        * Returns the time of the last call to MCalChangeCallBack2::CalChangeNotification
+        * This is not necessarily the same time as the last notification issued by 
+        * this class
+        * @return Time of the last database modification as TTime
+        */
+        TTime LastDBModificationTime() const;
+        
+    public: 
+        /**
+        * From MCalChangeCallBack2
+        * Called when the calendar database is changed through another
+        * CCalSession
+        * @param aChangeItems array of database items changed 
+        */
+        void CalChangeNotification( RArray<TCalChangeEntry>& aChangeItems );
+
+    private:
+        /**
+        * C++ default constructor.
+        * @param aGlobalData global data reference
+        */
+        CCalenDbChangeNotifier( CCalSession& aSession );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        * Performs any construction which may leave
+        */
+        void ConstructL();
+
+        /**
+        * From CActive
+        * Called when outstanding asynchronous request completes
+        * This will be called when iNotificationTimer either completes
+        * or is cancelled
+        */
+        void RunL();
+        
+        /**
+        * From CActive
+        * Called by the active scheduler if RunL leaves
+        * Ensures we are ready to receive the next database event
+        * @param aError System wide error code
+        */
+        TInt RunError( TInt aError );
+
+        /**
+        * From CActive
+        * Implements cancellation of outstanding asynchronous requests
+        * Cancels iNotificationTimer if started
+        */
+        void DoCancel();
+
+    private:    // Data
+
+        //Database change observer filter
+        CCalChangeNotificationFilter* iCalChangeFilter;      
+        
+        //Observer array
+        RPointerArray<MCalenDBChangeObserver> iDBObservers;
+        
+        //Timer to limit the amount of notifications issued by this class
+        RTimer iNotificationTimer;
+        
+        //The time of the last received notification
+        TTime iLastDbChangeNotification;
+        
+        //Flag to restart the timer after cancelling last tiemr request
+        TBool iRestartTimer;
+        
+        CCalSession& iSession;
+    };
+
+#endif      // __CALENDBCHANGENOTIFIER_H
+
+// End of File
--- a/calendarui/globaldata/inc/calenfilemapping.h	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/globaldata/inc/calenfilemapping.h	Wed Apr 14 15:55:57 2010 +0300
@@ -22,6 +22,7 @@
 #include <calsession.h>
 
 class CCalEntryView;
+class CCalenDbChangeNotifier;
 
 
 /**
@@ -107,6 +108,18 @@
      */
     CCalSession *GetSessionPtr();    
     
+    /*
+     * Set the dbchangenotifier observer
+     * @param CCalSession pointer to a session 
+     */
+    void SetDBChangeNotifier(CCalenDbChangeNotifier* aDBChangeNotifier );
+    
+    /*
+     * Get the dbchangenotifier observer.
+     * @return CCalSession pointer to session.
+     */
+    CCalenDbChangeNotifier *GetDBChangeNotifier();
+    
     private:
 
     /**
@@ -125,7 +138,8 @@
     TInt iStatus;
     CCalSession* iSessionPtr;
     TCalCollectionId iColId;        
-    CCalEntryView* iEntryView;        
+    CCalEntryView* iEntryView;
+    CCalenDbChangeNotifier* iDBChangeNotifier;
     };
 
 
--- a/calendarui/globaldata/inc/calenglobaldata.h	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/globaldata/inc/calenglobaldata.h	Wed Apr 14 15:55:57 2010 +0300
@@ -30,6 +30,8 @@
 #include <calentryview.h>           // Calendar Entry view
 #include <e32hashtab.h>                 //RHashSet
 
+#include "calendbchangenotifier.h"      // MCalenDBChangeObserver
+
 #include <calenmulticaluids.hrh>
 
 
@@ -76,7 +78,8 @@
          */
         IMPORT_C static CCalenGlobalData*
                             NewL( MCalProgressCallBack& aCalCallBack,
-                                  MCalenContextChangeObserver* aNotifier=NULL );
+                                  MCalenContextChangeObserver* aNotifier=NULL,
+                                  MCalenDBChangeObserver* aDBNotifier=NULL);
 
         /**
         * Constructor.  Returns a new instance of CCalenGlobalData if
@@ -315,7 +318,8 @@
         * By default Symbian 2nd phase constructor is private. 
         * Doesn't take ownership of aNotifier.
         */
-        void ConstructL( MCalenContextChangeObserver* aNotifier );
+        void ConstructL( MCalenContextChangeObserver* aNotifier,
+                                MCalenDBChangeObserver* aDBNotifier);
 
         /**
         * Private Destructor.  Users of this class should call Release() instead
@@ -485,6 +489,7 @@
         TBool iCalendarForcedExit;
         CCalSession* iCalendarsSession;
         RPointerArray<CCalCalendarInfo> iCalendarInfoList;
+        MCalenDBChangeObserver* iDBChangeNotifier;
     };
 
 #endif  // CALENGLOBALDATA_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/globaldata/src/calendbchangenotifier.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -0,0 +1,287 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:   Notifies observers of external changes to the calendar database
+*
+*/
+
+
+
+//debug
+#include "calendarui_debug.h"
+
+// INCLUDE FILES
+#include "calendbchangenotifier.h"    // CCalenDbChangeNotifier
+#include "calenglobaldata.h"            // Calendar global data
+#include <calsession.h>                 // CalSession
+
+// -----------------------------------------------------------------------------
+// KTimerResolution limits the number of notifications sent to registered
+// MCalenDBChangeObserver instances.  Notifications may come from 
+// MCalChangeCallBack2 at a very high rate which could impact performance, 
+// for example by causing constant view refreshes.
+// CCalenDbChangeNotifier notifies observers when KTimerResolution has elapsed
+// since the last notification was received from MCalChangeCallBack2
+// -----------------------------------------------------------------------------
+const TInt KTimerResolution = 1000000;  // 1 Second
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CCalenDbChangeNotifier::CCalenDbChangeNotifier
+// C++ default constructor can NOT contain any code, that might leave.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+CCalenDbChangeNotifier::CCalenDbChangeNotifier( CCalSession& aSession ) 
+    : CActive( EPriorityNormal ),
+      iSession( aSession )
+    {
+    TRACE_ENTRY_POINT;
+
+    iRestartTimer = EFalse;
+
+    TRACE_EXIT_POINT;
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenDbChangeNotifier::NewL
+// Two-phased constructor.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+CCalenDbChangeNotifier* CCalenDbChangeNotifier::NewL( CCalSession& aSession )
+    {
+    TRACE_ENTRY_POINT;
+
+    CCalenDbChangeNotifier* self = new( ELeave ) CCalenDbChangeNotifier( aSession );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+
+    TRACE_EXIT_POINT;
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenDbChangeNotifier::ConstructL
+// Symbian 2nd phase constructor can leave.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CCalenDbChangeNotifier::ConstructL()
+    {
+    TRACE_ENTRY_POINT;
+
+    // We want to receive notifications for the full agenda date range
+    TCalTime start, end;
+    start.SetTimeUtcL( TCalTime::MinTime() );
+    end.SetTimeUtcL( TCalTime::MaxTime() );
+    CalCommon::TCalTimeRange range( start, end ); 
+
+    // Create a notification filter
+    iCalChangeFilter = CCalChangeNotificationFilter::NewL(
+                                                        MCalChangeCallBack2::EChangeEntryAll, 
+                                                        ETrue, 
+                                                        range );
+
+    // Enable database change notifications on current global data session
+    iSession.StartChangeNotification( *this, *iCalChangeFilter );
+
+    // Create a timer to limit the number of notifications broadcast
+    iNotificationTimer.CreateLocal();
+
+    // Active object, add to active scheduler
+    CActiveScheduler::Add( this );
+
+    TRACE_EXIT_POINT;
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenDbChangeNotifier::~CCalenDbChangeNotifier
+// Destructor
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+CCalenDbChangeNotifier::~CCalenDbChangeNotifier()
+    {
+    TRACE_ENTRY_POINT;
+
+    Cancel();
+    // Reset the observer array.  Array contents are NOT owned by this class
+    iDBObservers.Reset();
+
+    iNotificationTimer.Close();
+
+    // Disable database change notifications on current global data session   
+    PIM_TRAPD_HANDLE( iSession.StopChangeNotification() );
+
+    // Destroy the notification filter
+    delete iCalChangeFilter;
+    
+    TRACE_EXIT_POINT;    
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenDbChangeNotifier::LastDBModificationTime
+// Returns the time of the last database change notification.  This may not be
+// the time of the last notification sent to MCalenDBChangeObservers.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+TTime CCalenDbChangeNotifier::LastDBModificationTime() const
+    {
+    TRACE_ENTRY_POINT;
+
+    TRACE_EXIT_POINT;
+    return iLastDbChangeNotification;
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenDbChangeNotifier::CalChangeNotification
+// Called when a change to the agenda database occurs from a different session
+// to the one we are currently using.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CCalenDbChangeNotifier::CalChangeNotification( RArray<TCalChangeEntry>& /*aChangeItems*/ )
+    {
+    TRACE_ENTRY_POINT;
+
+    // Always update the last notification time, even if we don't notify 
+    // our observers
+    iLastDbChangeNotification.UniversalTime();
+    if( !IsActive() )
+        {
+        iNotificationTimer.After( iStatus, KTimerResolution );
+        SetActive();
+        }
+    else
+        {
+        iRestartTimer = ETrue;
+        iNotificationTimer.Cancel();
+        }
+
+    TRACE_EXIT_POINT;
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenDbChangeNotifier::RegisterObserverL
+// Adds the passed observer to the observer array.  All observers in the array 
+// will be notified of changes to the agenda database.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------    
+ void CCalenDbChangeNotifier::RegisterObserverL( MCalenDBChangeObserver& aDBObserver )
+    {
+    TRACE_ENTRY_POINT;
+
+    iDBObservers.Append( &aDBObserver );
+
+    TRACE_EXIT_POINT;
+    }
+
+// -----------------------------------------------------------------------------
+// CCalenDbChangeNotifier::DeRegisterObserverL
+// Removes the passed observer to the observer array.  All observers in the array 
+// will be notified of changes to the agenda database.
+// -----------------------------------------------------------------------------       
+void CCalenDbChangeNotifier::DeRegisterObserverL( MCalenDBChangeObserver& aDBObserver )
+    {
+    TRACE_ENTRY_POINT;
+
+    for( TInt x = 0; x < iDBObservers.Count(); ++x )
+        {
+        if( iDBObservers[x] == &aDBObserver )
+            {
+            iDBObservers.Remove( x );
+            return;
+            }
+        }
+    User::Leave( KErrNotFound );
+
+    TRACE_EXIT_POINT;
+    }
+
+// -----------------------------------------------------------------------------       
+// CCalenDbChangeNotifier::RunL
+// From CActive::RunL
+// Called when notification timer expires
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------       
+void CCalenDbChangeNotifier::RunL()
+    {
+    TRACE_ENTRY_POINT;
+
+    switch( iStatus.Int() )
+        {
+        case KErrCancel:
+            {
+            // The normal reason for the timer being cancelled is another
+            // database change.  Restart the timer.
+            if( iRestartTimer )
+                {
+                iRestartTimer = EFalse;
+                iNotificationTimer.After( iStatus, KTimerResolution );
+                SetActive();
+                }        
+            }
+        break;
+
+        case KErrNone:
+            {
+            //Timer completion, notify observers
+            for( TInt x = 0; x < iDBObservers.Count(); ++x )
+                {
+                iDBObservers[x]->HandleDBChangeL();
+                }
+            }
+        break;
+
+        default:
+            {
+            User::Leave( KErrArgument );
+            }
+        break;
+        }
+
+    TRACE_EXIT_POINT;
+    }
+
+// -----------------------------------------------------------------------------       
+// CCalenDbChangeNotifier::RunError
+// From CActive::RunError
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+TInt CCalenDbChangeNotifier::RunError( TInt aError )
+    {
+    TRACE_ENTRY_POINT;
+
+    //RunL leaving means that the view could not be refreshed.
+    //Theres not much we can do except be ready for the next database event.
+    iRestartTimer = EFalse;
+
+    TRACE_EXIT_POINT;
+    return aError;
+    }
+
+// -----------------------------------------------------------------------------       
+// CCalenDbChangeNotifier::DoCancel
+// From CActive::DoCancel
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+void CCalenDbChangeNotifier::DoCancel()
+    {
+    TRACE_ENTRY_POINT;
+
+    // Stop the notification timer
+    iRestartTimer = EFalse;
+    iNotificationTimer.Cancel();
+
+    TRACE_EXIT_POINT;
+    }
+
+// End of File
--- a/calendarui/globaldata/src/calenfilemapping.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/globaldata/src/calenfilemapping.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -16,6 +16,7 @@
  */
 #include "calendarui_debug.h"
 #include "calenfilemapping.h"
+#include "calendbchangenotifier.h"      // MCalenDBChangeObserver
 
 #include <calsession.h>
 #include <calentryview.h>           // Calendar Entry view
@@ -68,6 +69,12 @@
     {
     TRACE_ENTRY_POINT
     
+    if( iDBChangeNotifier )
+        {
+        delete iDBChangeNotifier;
+        iDBChangeNotifier = NULL;
+        }
+    
     if(iEntryView)
         {
         delete iEntryView;
@@ -195,4 +202,27 @@
     return iSessionPtr;
     }
 
+/*
+ * Set the dbchangenotifier observer
+ * @param CCalSession pointer to a session 
+ */
+void CCalenFileMapping::SetDBChangeNotifier(CCalenDbChangeNotifier* aDBChangeNotifier )
+    {
+    TRACE_ENTRY_POINT;
+    
+    iDBChangeNotifier = aDBChangeNotifier;
+    TRACE_EXIT_POINT;
+    }
+
+/*
+ * Get the dbchangenotifier observer.
+ * @return CCalSession pointer to session.
+ */
+CCalenDbChangeNotifier *CCalenFileMapping::GetDBChangeNotifier()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    return iDBChangeNotifier;
+    }
+
 //End
--- a/calendarui/globaldata/src/calenglobaldata.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/globaldata/src/calenglobaldata.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -87,7 +87,8 @@
 // ----------------------------------------------------------------------------
 //
 EXPORT_C CCalenGlobalData* CCalenGlobalData::NewL( MCalProgressCallBack& aCalCallBack,
-                                                   MCalenContextChangeObserver* aNotifier )
+                                                   MCalenContextChangeObserver* aNotifier,
+                                                   MCalenDBChangeObserver* aDBNotifier)
     {
     TRACE_ENTRY_POINT;
 
@@ -106,7 +107,7 @@
         // calls CCalenGlobalData::InstanceL in ConstructL and then ConstructL
         // leaves, we will double delete the global data.
         ++self->iRefCount;
-        self->ConstructL( aNotifier );
+        self->ConstructL( aNotifier, aDBNotifier );
         CleanupStack::Pop( self );
         }
     else
@@ -206,7 +207,8 @@
 // Symbian 2nd phase constructor can leave.
 // (other items were commented in a header).
 // -----------------------------------------------------------------------------
-void CCalenGlobalData::ConstructL( MCalenContextChangeObserver* aNotifier )
+void CCalenGlobalData::ConstructL( MCalenContextChangeObserver* aNotifier,
+                                    MCalenDBChangeObserver* aDBNotifier)
     {
     TRACE_ENTRY_POINT;
 
@@ -214,6 +216,8 @@
     
     iNewInstanceViewCreation = NULL;
     
+    iDBChangeNotifier = aDBNotifier;
+    
     TRACE_EXIT_POINT;
     }
 
@@ -829,7 +833,8 @@
         filemap->SetCalendarFileNameL(calendarFileName);
         
         iNewEntryView  = NULL;
-        iNewEntryViewCreation  = NULL;  
+        iNewEntryViewCreation  = NULL;
+        CCalenDbChangeNotifier* dbChangeNotifier = NULL;
         if(iCalSession)
             {
             iNewCalSession = NULL;
@@ -841,6 +846,9 @@
             filemap->SetCollectionId(tempSession.CollectionIdL());
             CreateEntryViewL(tempSession);
             filemap->SetEntryView( iNewEntryView );
+            dbChangeNotifier = CCalenDbChangeNotifier::NewL( tempSession );
+            dbChangeNotifier->RegisterObserverL(*iDBChangeNotifier);
+            filemap->SetDBChangeNotifier(dbChangeNotifier);
             }            
          else
             {
@@ -851,6 +859,9 @@
             filemap->SetEntryView( iNewEntryView );
             iGlobalDataOwnsEntryView = EFalse;
             iGlobalDataOwnsCalSession = EFalse;
+            dbChangeNotifier = CCalenDbChangeNotifier::NewL( tempSession );
+            dbChangeNotifier->RegisterObserverL(*iDBChangeNotifier);
+            filemap->SetDBChangeNotifier(dbChangeNotifier);
             }
         iFileMappingArray.Append(filemap);        
         CleanupStack::Pop(filemap);
@@ -1278,6 +1289,9 @@
 			CreateEntryViewL(tempSession);
 			}
 		fileMapping->SetEntryView( iNewEntryView );
+		CCalenDbChangeNotifier* dbChangeNotifier = CCalenDbChangeNotifier::NewL( tempSession );
+		dbChangeNotifier->RegisterObserverL(*iDBChangeNotifier);
+		fileMapping->SetDBChangeNotifier(dbChangeNotifier);
 		CleanupStack::PopAndDestroy(aCalendarInfo);
 		iCalendarInfoList.Append(tempSession.CalendarInfoL());
 		}
@@ -1660,6 +1674,9 @@
 			fileMapper->SetEntryView( iNewEntryView );
 			
 			iCalendarInfoList.AppendL(newSession->CalendarInfoL());
+		    CCalenDbChangeNotifier* dbChangeNotifier = CCalenDbChangeNotifier::NewL( *newSession );
+		    dbChangeNotifier->RegisterObserverL(*iDBChangeNotifier);
+		    fileMapper->SetDBChangeNotifier(dbChangeNotifier);
 			}
 		else
 			{
@@ -1678,6 +1695,9 @@
 				}
 			
 			fileMapper->SetEntryView(iNewEntryView);
+	        CCalenDbChangeNotifier* dbChangeNotifier = CCalenDbChangeNotifier::NewL( *iCalSession );
+	        fileMapper->SetDBChangeNotifier(dbChangeNotifier);
+	        dbChangeNotifier->RegisterObserverL(*iDBChangeNotifier);
 			iGlobalDataOwnsEntryView = EFalse;
 			iGlobalDataOwnsCalSession = EFalse;
 			iCalendarInfoList.AppendL(iCalSession->CalendarInfoL());
--- a/calendarui/group/bld.inf	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/group/bld.inf	Wed Apr 14 15:55:57 2010 +0300
@@ -23,8 +23,6 @@
 
 #include <platform_paths.hrh>
 
-//  Help exports
-#include "../help/group/bld.inf"
 
 PRJ_EXPORTS
 ../loc/calendar.loc						APP_LAYER_LOC_EXPORT_PATH(calendar.loc)
@@ -81,6 +79,9 @@
 
 PRJ_MMPFILES
 
+//  Help files
+#include "../help/group/bld.inf"
+
 // commonutils
 #include "../commonutils/group/bld.inf"
 
--- a/calendarui/organizerplugin/aiagendapluginengine/src/AIAgendaPluginEngineImpl.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/organizerplugin/aiagendapluginengine/src/AIAgendaPluginEngineImpl.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -148,13 +148,12 @@
     {
         iEnvironmentChangeNotifier->Cancel();
         delete iEnvironmentChangeNotifier;
-    }
-
-    delete iCalendarEngine;  // Close() called in destructor
+    }    
 
     iInstanceArray.ResetAndDestroy();
     iInstanceArray.Close();
 
+		delete iCalendarEngine;  // Close() called in destructor
     
     TRACE_EXIT_POINT;
 }
--- a/calendarui/settings/settingsui/src/CalenFileListSettingItem.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/settings/settingsui/src/CalenFileListSettingItem.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -293,7 +293,7 @@
     // Make sure that iOffToneFile is passed, in case iToneFile happens to be KNullDesC
     ASSERT(!IsEmpty(iToneFile));
     
-    TBool ok = !list->ShowMediaFileListL(&iToneFile, &nullItem,
+    TBool ok = list->ShowMediaFileListL(&iToneFile, &nullItem,
                 NULL, NULL );
     
     
--- a/calendarui/views/inc/caleneventviewcontainer.h	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/views/inc/caleneventviewcontainer.h	Wed Apr 14 15:55:57 2010 +0300
@@ -601,6 +601,7 @@
      TInt iTimeFieldLines;  // Number of lines occupied by time field on the viewer
      TBool iAutomaticHlValue;
      TBool iAutomaticHlInitialized;   
+     TBool iEmbeddedFileOpened;
      CItemFinder*  iAutoFinder; // text finder 
      CFindItemMenu* iFindMenu;  
      TCursorSelection iSelectedText; // Cursor selection for the text editor
--- a/calendarui/views/src/caleneventviewcontainer.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/calendarui/views/src/caleneventviewcontainer.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -118,7 +118,8 @@
     : CCalenContainer( aView, aServices ),
     					  iEntry(NULL),
     					  iAutomaticHlValue(ETrue),
-    					  iAutomaticHlInitialized(EFalse)
+    					  iAutomaticHlInitialized(EFalse),
+    					  iEmbeddedFileOpened(EFalse)
     {
 	TRACE_ENTRY_POINT;
 	iNumOfLinesBeforeLocField = 0;
@@ -561,7 +562,7 @@
     			iTextEditor->SetFocus(ETrue);
     			
     			// TODO: Uncomment this when enabling attachment support
-    			if(iEventViewData)
+    			if(iEventViewData && !iEmbeddedFileOpened)
     			    {
     		
     			    if(iEventViewData->AttachmentCount())
@@ -2786,6 +2787,7 @@
     {
     TRACE_ENTRY_POINT;
     
+    iEmbeddedFileOpened = EFalse;
     if (aReason == EAknCmdExit)
         {
         //issue this notification, which will be handled by attachmentui.
@@ -2953,18 +2955,29 @@
     
     if(datatype == KNotePadTextDataType())
         {
+        if(iEmbeddedFileOpened)
+            {
+            return;
+            }
+        iEmbeddedFileOpened = ETrue; 
         const TDesC& notepadTitle = _L("NotePad");
         ret = CNotepadApi::ExecFileViewerL( aFile, 
                                            &notepadTitle,
                                            ETrue,
                                            ETrue,
                                            KCharacterSetIdentifierIso88591 );
+        iEmbeddedFileOpened = EFalse;
         
         }
     else
         {
         //doc handler will open the other files (other than text file).
         TRAP( ret, iDocHandler->OpenFileEmbeddedL( aFile, datatype ) );
+        
+        if(ret == KErrNone)
+            {
+            iEmbeddedFileOpened = ETrue;
+            }
         }
     
     switch(ret)
--- a/clock2/clockengines/clockserver/server/src/clockserverimpl.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/clock2/clockengines/clockserver/server/src/clockserverimpl.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -506,6 +506,13 @@
 		    }
 		}
 	
+	// Initialise the attributes to null.
+	TTime invalidTime( 0 );
+	iTimeAttributes->iDstOffset = TTimeIntervalMinutes( 0 );
+	iTimeAttributes->iTimeZoneOffset =  TTimeIntervalMinutes( 0 );
+	iTimeAttributes->iUtcDateTime = invalidTime.DateTime();
+		
+	
 	// Get all the information related to the plugin.
 	// The UTC time.
 	TRAP_IGNORE( aPluginImpl.GetTimeInformationL( EUTCTime, iTimeAttributes ) );	
@@ -697,9 +704,47 @@
 		// Lets see if we can narrow down to a single timezone with the MCC recieved.
 		RArray< CTzId > tzIdArray;
 		
-		// Try and fetch the timezone ID using the MCC recieved.
-		TRAP_IGNORE( iTzResolver->TzIdFromMccL( iMcc, tzIdArray, KInvalidTimeZoneId ) );
-		
+		// This parte of code introduced due to error ID EASH-82DPPC(3G Tests for NITZ and GPRS Interaction)
+		// Fix is bascially to narrowing down to single timezone id if NITZ packet is received prior to MCC.
+		// In first IF state we are trying to narrowdown to single timezone ID, if not possible try to use MCC to get timezone
+		// In second IF , we are using MCC to narrow down to single timezone ID directly as dont have NITZ info.
+		if( iTimeAttributes )
+		{
+			TTime invalidTime(0);
+			if( iTimeAttributes->iDstOffset != TTimeIntervalMinutes( 0 ) &&
+			iTimeAttributes->iTimeZoneOffset != TTimeIntervalMinutes( 0 ) &&
+			iTimeAttributes->iUtcDateTime.Year() != invalidTime.DateTime().Year() )
+			{
+				// Try to resolve the timezone id with the data that we have recieved.
+				TInt timezoneId;
+				TRAP_IGNORE( TInt errorVal = iTzResolver->GetTimeZoneL( *iTimeAttributes, iMcc, timezoneId ) );
+				
+				__PRINT("TIMEZONE ID %d", timezoneId );
+
+				// Append the timezone id to array.
+
+				CTzId* matchingDSTZoneId = CTzId::NewL( timezoneId );
+				CleanupStack::PushL( matchingDSTZoneId );
+
+				tzIdArray.AppendL( *matchingDSTZoneId );
+
+				CleanupStack::PopAndDestroy( matchingDSTZoneId );
+
+				matchingDSTZoneId = NULL;
+			}
+			else
+			{
+				__PRINTS("NOT ABLE TO NARROW DOWN TO TIMEZONE ID WITH RECEIVED NITZ HENCE TRY WITH MCC");
+				// Not able to narrow down to single timezone id with received NITZ packet hence try with MCC.
+				TRAP_IGNORE( iTzResolver->TzIdFromMccL( iMcc, tzIdArray, KInvalidTimeZoneId ) );	
+			}
+		}
+		else
+		{
+			__PRINTS("NO NITZ INFO HENCE TRY WITH MCC");
+			// No NITZ info hecne try with MCC to get the time zone Id.
+			TRAP_IGNORE( iTzResolver->TzIdFromMccL( iMcc, tzIdArray, KInvalidTimeZoneId ) );
+		}
 		// Code to check if its the first boot.
 		// Get the first boot status from cenrep. If it is the first boot, clockserver will not update the time.
 		TBool staleBoot( EFalse );
@@ -755,6 +800,20 @@
 				}
 			CleanupStack::PopAndDestroy( currentCTzId );
 			CleanupStack::PopAndDestroy( &tz );
+			
+			// Setting the attributes to null again as we dont trust on
+			// previous NITZ data recevied by device.If device receive
+			// NITZ data again attributes would get filled with actual value.
+			// Has been kept outside because this statement is valid for
+			// first boot also.
+			if( iTimeAttributes )
+			{
+				iTimeAttributes->iDstOffset = TTimeIntervalMinutes( 0 );
+				iTimeAttributes->iTimeZoneOffset =  TTimeIntervalMinutes( 0 );
+				TTime invalidTime( 0 );
+				iTimeAttributes->iUtcDateTime = invalidTime.DateTime();	
+			}
+			
 			}
 		}
 	
--- a/clock2/clockengines/clocktimezoneresolver/src/clockmcctzmapper.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/clock2/clockengines/clocktimezoneresolver/src/clockmcctzmapper.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -143,8 +143,6 @@
 //
 TInt CClockMCCTzIdMapper::UTCOffSetWithoutDSTChangesL( RTz& aTz, const CTzId& aTzId ) const
 	{
-	__PRINTS( "CClockMCCTzIdMapper::UTCOffSetWithoutDSTChangesL - Entry" );
-	
 	TInt timeOffset( KErrNotFound );
 
 	TTime universalTime;
@@ -158,8 +156,6 @@
 	    delete currentRules;
 	    }
 	
-	__PRINTS( "CClockMCCTzIdMapper::UTCOffSetWithoutDSTChangesL - Exit" );
-
 	return timeOffset;
 	}
 
--- a/clock2/clockui/uilayer/clockworldview/src/clockworldview.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/clock2/clockui/uilayer/clockworldview/src/clockworldview.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -150,11 +150,20 @@
 			//Single click integration
             // If current item is other than home location set it as new home
 		    // location
-		    if ( iContainer->ListBox()->CurrentItemIndex() > KZerothIndex )
+		    RClkSrvInterface clkSrvInterface;
+            User::LeaveIfError( clkSrvInterface.Connect() );
+
+            TBool timeUpdateOn( EFalse );
+          
+            // Get the state of the plugin.
+            clkSrvInterface.IsAutoTimeUpdateOn( timeUpdateOn );
+		    if ( iContainer->ListBox()->CurrentItemIndex() > KZerothIndex || timeUpdateOn)
                 {
                 SetHomeLocationL();
                 }
 
+		    // Cleanup.
+		    clkSrvInterface.Close();
 		    }
 		    break;
 		    
@@ -294,7 +303,7 @@
     __PRINTS( "CClockWorldView::DynInitMenuBarL - Entry" );
     
 	//single click integration
-    if( aMenuBar && ( IsSelectionListOpen() || IsGalleryOpen() ) )
+    if( aMenuBar && ( /*IsSelectionListOpen() || */IsGalleryOpen() ) )
         {
         // If the selection list open, we should not display the menupane.
         aMenuBar->StopDisplayingMenuBar();
--- a/clock2/clockui/uilayer/src/clockappui.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/clock2/clockui/uilayer/src/clockappui.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -27,6 +27,8 @@
 #include <clockapp_tab.mbg>
 #include <AknsConstants.h>
 #include <featmgr.h>  
+#include <e32property.h>
+#include <startupdomainpskeys.h>
 
 // User includes
 #include "clock.h"
@@ -223,14 +225,26 @@
     	case EClockAlarmExit:
     	case EAknSoftkeyExit:
     	    {
-    	    if( ExitHidesInBackground() )
+    	    TInt deviceState;
+    	    RProperty::Get( KPSUidStartup, KPSGlobalSystemState , deviceState );
+
+    	    if(  deviceState == ESwStateCharging || deviceState == ESwStateAlarm  ) 
     	        {
-    	        HandleCommandL( EAknCmdHideInBackground );
+
+                Exit();
+
     	        }
     	    else
-    	        {
-    	        Exit();
-    	        }
+                {
+                if( ExitHidesInBackground() )
+                    {
+                    HandleCommandL( EAknCmdHideInBackground );
+                    }
+                else
+                    {
+                    Exit();
+                    }
+                }
     	    }
     	    break;
     	    
@@ -336,7 +350,8 @@
     {
     __PRINTS( "CClockAppUi::HandleForegroundEventL - Entry" );
     
-    if( aForeground )
+    // commented as a part of the error ESLM-83LG82.
+    /*if( aForeground )
         {
         __PRINTS( "CClockAppUi::HandleForegroundEventL - aForeground ETrue" );
         
@@ -352,7 +367,7 @@
             iIADUpdateFlag = EFalse;
             __PRINTS( "CClockAppUi::HandleForegroundEventL - iIADUpdateFlag EFalse" );
             }
-        }
+        }*/
 
     // Inform the world clock view about the change
     CClockWorldView* clockWorldView = static_cast< CClockWorldView* > ( View( KClockAppWorldViewId ) );
--- a/notepad/notepad1/LibSrc/NpdListDialog.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/notepad/notepad1/LibSrc/NpdListDialog.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -427,14 +427,11 @@
         SaveCurrentAndSelectionsL();
         TUid serviceUid = SendByKeysL(*iSendUi, aCommandId, *iModel, iSavedSelectedKeys);
         iModel->SyncL(EFalse); // sync might be delayed while SendAsL.
-        RestoreCurrentAndSelectionsL();
-        //RestoreCurrent();
         TUid EmailUid = {0x10001028};
         if ( serviceUid == EmailUid )
         	{
         	iSendingEmail = ETrue;
         	}
-       
         }
     else
         {
@@ -444,7 +441,6 @@
         SendAsL( *iSendUi, aCommandId, EFalse, text );
         CleanupStack::PopAndDestroy(); // text
         iModel->SyncL(EFalse); // sync might be delayed while SendAsL.
-        RestoreCurrentAndSelectionsL();
         }
     }
 
@@ -1530,7 +1526,7 @@
             iInts = new(ELeave) CArrayFixFlat<TInt>(2);
             iInts->AppendL(0);
             iInts->AppendL(aCount);
-            IncrementL(0); // SetTextL
+            IncrementL( 1 ); // SetTextL
             }
             break;
         default:
--- a/notepad/notepad1/LibSrc/NpdModel.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/notepad/notepad1/LibSrc/NpdModel.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -385,6 +385,7 @@
         {
         User::LeaveIfError(iSavedDeleteKeys.Append(aKeys[i]));
         }
+    iProgressCount = 0;
     ExecuteDeleteStepL();
     iRetval = iFileSession.ReleaseReserveAccess( KDefaultDrive );
     iFileSession.Close();
@@ -397,7 +398,7 @@
 //
 void CNotepadModel::ExecuteDeleteStepL()
     {
-    iProgressCount = 0;
+    
     iStepCount = iSavedDeleteKeys.Count();
     if ( iStepCount > KNotepadMaxDeleteCountInStep )
         {
@@ -411,12 +412,6 @@
     if ( IsTemplates() )
         {
         iSavedDeleteKeys.Remove(0);
-        for (TInt i(0); i < iStepCount - 1; i++)
-            {
-            sql.Append(KNotepadSqlDeleteByKeysAppend);
-            sql.AppendNum(iSavedDeleteKeys[0]);
-            iSavedDeleteKeys.Remove(0);
-            }
         }
     else // If Notepad, Remove is postponed until remove link phase
         {
@@ -512,6 +507,15 @@
             else // do next step
                 {
                 increment = iStepCount - iProgressCount;
+
+                iProgressCount += increment;
+                if ( iModelObserver )
+                    {
+                    iModelObserver->HandleNotepadModelEventL(
+                            MNotepadModelObserver::EProgressDeletion,
+                            1 );
+                    }
+
                 ExecuteDeleteStepL();
                 }
             }
@@ -530,15 +534,7 @@
         {
         increment = iDbUpdate.RowCount() - iProgressCount;
         }            
-    if ( increment > 0 )
-        {
-        iProgressCount += increment;
-        if ( iModelObserver )
-            {
-            iModelObserver->HandleNotepadModelEventL(
-                MNotepadModelObserver::EProgressDeletion, increment);
-            }
-        }
+    
     if ( deleteFinished || ( stat == 0 && 
         SysUtil::FFSSpaceBelowCriticalLevelL(&(iEnv->FsSession())) ) )
         {
--- a/notepad/notepad1/LibSrc/NpdViewerDialog.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/notepad/notepad1/LibSrc/NpdViewerDialog.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -583,33 +583,23 @@
 // -----------------------------------------------------------------------------
 //
 void CNotepadViewerDialog::HandleDialogPointerEventL( const TPointerEvent& aPointerEvent )
-{
-	
-	 if(!AknLayoutUtils::PenEnabled())
-	 {
-	 	return;
-	 }
+    {
+    if(!AknLayoutUtils::PenEnabled())
+        {
+        return;
+        }
 	 
-    if(aPointerEvent.iType == TPointerEvent::EButton1Up ) 
-    {
-   
-       TInt curPos = iEditor->CursorPos();	
-       TRect rect = iEditor->Rect();  
-       if ( !iAutoFinder->ItemWasTappedL( aPointerEvent.iPosition - rect.iTl ) )
-         {
-		 	return;
-		 } 
-		 
-       TInt curPos1 = iEditor->CursorPos();
-       if (curPos == curPos1) 
-       {
-   			iFlags |= ENotepadMenuByOkKey;
-   	    	DisplayMenuL();	       	
-       }
-   
-    
+    if( aPointerEvent.iType == TPointerEvent::EButton1Up ) 
+        {
+        TRect rect = iEditor->Rect();  
+        if ( !iAutoFinder->ItemWasTappedL( aPointerEvent.iPosition - rect.iTl ) )
+            {
+            return;
+            }
+        
+        DisplayMenuL();
+        }
     }
-}
 
 // -----------------------------------------------------------------------------
 // CNotepadViewerDialog::HandleNumberCallL
--- a/organizer_pub/notepad_library_api/tsrc/group/ABLD.BAT	Wed Mar 31 21:29:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-rem
-rem Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-rem All rights reserved.
-rem This component and the accompanying materials are made available
-rem under the terms of "Eclipse Public License v1.0"
-rem which accompanies this distribution, and is available
-rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
-rem
-rem Initial Contributors:
-rem Nokia Corporation - initial contribution.
-rem
-rem Contributors:
-rem
-rem Description:
-rem
-rem
-
-@ECHO OFF
-
-REM Bldmake-generated batch file - ABLD.BAT
-REM ** DO NOT EDIT **
-
-perl -S ABLD.PL "\s60\app\organizer\organizer_sdk\notepad_library_api\tsrc\group\\" %1 %2 %3 %4 %5 %6 %7 %8 %9
-if errorlevel==1 goto CheckPerl
-goto End
-
-:CheckPerl
-perl -v >NUL
-if errorlevel==1 echo Is Perl, version 5.003_07 or later, installed?
-goto End
-
-:End
--- a/organizer_pub/notepad_library_api/tsrc/group/TestNpdApi.pkg	Wed Mar 31 21:29:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-;
-; Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
-; All rights reserved.
-; This component and the accompanying materials are made available
-; under the terms of "Eclipse Public License v1.0"
-; which accompanies this distribution, and is available
-; at the URL "http://www.eclipse.org/legal/epl-v10.html".
-;
-; Initial Contributors:
-; Nokia Corporation - initial contribution.
-;
-; Contributors:
-;
-; Description:  package file
-;
-; Languages
-; =========
-&EN
-
-; Name, UID for installation, Maj.Ver., Min.Ver., Variant, FLAG TO SPECIFY UNICODE, System component
-; ==================================================================================================
-#{"notepad library api Test"},(0x101FB3E7),1,0,1,TYPE=SA
-
-
-; Localised Vendor name
-%{"Nokia-EN"}
-
-; Unique Vendor name
-:"Nokia"
-
-"\epoc32\release\armv5\urel\TestNpdApi.dll"      -"$:\sys\bin\TestNpdApi.dll"
-"..\data\c\TestNpdApi.txt"                                     -"c:\testing\data\TestNpdApi.txt"
-"..\init\testframework.ini"                                     -"c:\TestFramework\testframework.ini"
-"..\conf\TestNpdApi.cfg"                                     -"c:\TestFramework\TestNpdApi.cfg"
-"..\conf\ui_TestNpdApi.cfg"                                     -"c:\TestFramework\ui_TestNpdApi.cfg"
-
-
-; eof
-
Binary file organizer_pub/notepad_library_api/tsrc/group/TestNpdApi.sis has changed
Binary file organizer_pub/notepad_library_api/tsrc/group/TestNpdApi.sisx has changed
--- a/organizer_pub/notepad_library_api/tsrc/group/rd-key.pem	Wed Mar 31 21:29:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDLRF+r1FGGkCwTrb420kbnAps7gi1yYUcXYUdWeFTuBeQe5eW4
-6Y+LWaA8HMlDdoHRB0FgASisYcFagwno9+oFf4AJka4H1gWEs5XTGwAA1s0d8XGh
-7W7Dt9F5FZij8F7/9Pi6+FhhxZFIf1DD+yry9D7+Sp+BgdNALe4XOpf25QIBAwKB
-gQCHgupyjYuvCsgNHn7PNtnvVxInrB5MQNoPli+O+uNJWUK/Q+57Rl+yO8AoEzDX
-pFaLWiuVVhsdloDnAgabT/FXzYncs6uOHyEUV+dSXb78vtLPJqAX+Fg2i3hOXreB
-yskcZ13/OsKVOu5wgrJkx2baZufkqMwOSytf5y9nwjEIKwJBAP+inobagVNrN62j
-KQva3cC+UN/6XnKdTc0CA6bHyLOaJoH1xiMwG/VS2PGjHI0tiSMNtLn/QPpHJ003
-iabGhdUCQQDLjp/9UjFT6K6CF66Chqf30pZXhx+GTSQZmv/gvZiMly7X9fX9BGX3
-2MbJohBC4yI21XKTbisWywkF73Hwh+TRAkEAqmxprzxWN5zPyRdwspHpKymLP/w+
-9xOJM1atGdqFzRFvAU6EF3Vn+OHl9my9s3OwwgkjJqorUYTE3iUGby8D4wJBAIe0
-aqjhdjfwdFa6dFcEb/qMZDpaFQQzbWZnVUB+ZbMPdI/5TqitmU/l2dvBYCyXbCSO
-TGJJcg8yBgP09qBamIsCQFL7j1tM0XPVQJQ89WpKCld7O9ORxRGVj1eG0tWijrH8
-mGbYh8SGCVoWV3vrKSS8GBrFVgQnqUaHuEdtM7tpCAQ=
------END RSA PRIVATE KEY-----
--- a/organizer_pub/notepad_library_api/tsrc/group/rd.cer	Wed Mar 31 21:29:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
------BEGIN CERTIFICATE-----
-MIICzDCCAjWgAwIBAgIBADANBgkqhkiG9w0BAQUFADArMRAwDgYDVQQKEwdSRCBD
-ZXJ0MRcwFQYDVQQDEw5SRCBDZXJ0aWZpY2F0ZTAeFw0wNDExMTUxMjQyMDZaFw0z
-NzA5MjMxMjQyMDZaMCsxEDAOBgNVBAoTB1JEIENlcnQxFzAVBgNVBAMTDlJEIENl
-cnRpZmljYXRlMIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDLRF+r1FGGkCwT
-rb420kbnAps7gi1yYUcXYUdWeFTuBeQe5eW46Y+LWaA8HMlDdoHRB0FgASisYcFa
-gwno9+oFf4AJka4H1gWEs5XTGwAA1s0d8XGh7W7Dt9F5FZij8F7/9Pi6+FhhxZFI
-f1DD+yry9D7+Sp+BgdNALe4XOpf25QIBA6OCAQAwgf0wDAYDVR0TBAUwAwEB/zAL
-BgNVHQ8EBAMCAoQwHQYDVR0OBBYEFFi/kuGzxhVpjGxe9ZwlxC3fH9jFMFMGA1Ud
-IwRMMEqAFFi/kuGzxhVpjGxe9ZwlxC3fH9jFoS+kLTArMRAwDgYDVQQKEwdSRCBD
-ZXJ0MRcwFQYDVQQDEw5SRCBDZXJ0aWZpY2F0ZYIBADBsBgNVHSAEZTBjMGEGBFUd
-IAAwWTATBggrBgEFBQcCARYHaHR0cDovLzBCBggrBgEFBQcCAjA2GjRGb3IgUiZE
-IHVzYWdlIG9ubHkuIFRoaXMgY2VydGlmaWNhdGUgaXMgbm90IHRydXN0ZWQuMA0G
-CSqGSIb3DQEBBQUAA4GBAHGB4RQMAgBdeT2hxfOr6f2nA/dZm+M5yX5daUtZnET9
-Ed0A9sazLawfN2G1KFQT9kxEParAyoAkpbMAsRrnRz/9cM3OHgFm/NiKRnf50DpT
-7oCx0I/65mVD2kt+xXE62/Ii5KPnTufIkPi2uLvURCia1tTS8JmJ8dtxDGyQt8BR
------END CERTIFICATE-----
--- a/pimappservices/appenginesdocs/app-engines_documentation.history.xml	Wed Mar 31 21:29:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<relnotes name="DEVELOPERLIBRARY">
-  <purpose>
-  </purpose>
-</relnotes>
--- a/pimappservices/appenginesdocs/app-engines_documentation.mrp	Wed Mar 31 21:29:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-component	app-engines_documentation
-
-source	\sf\app\organizer\pimappservices\appenginesdocs\
-
-notes_source	\component_defs\release.src
-
-
-ipr E 
-
--- a/pimappservices/calendar/server/src/agsattachmentindex.cpp	Wed Mar 31 21:29:10 2010 +0300
+++ b/pimappservices/calendar/server/src/agsattachmentindex.cpp	Wed Apr 14 15:55:57 2010 +0300
@@ -281,7 +281,8 @@
 		{
 		// check every attachment
 		const CAgnAttachmentIndexItem* KAttachmentItem = iIndex[i];
-		for (TInt j = 0; j < KAttachmentItem->Entries().Count(); ++j)
+		const TInt entryCount = KAttachmentItem->Entries().Count();
+		for (TInt j = 0; j < entryCount; ++j)
 			{
 			// check every entry associated with each attachment
 			if (KEntryLocalUid == (KAttachmentItem->Entries())[j])
--- a/pimappsupport/vcardandvcal/documentation/TestVersit.rtf	Wed Mar 31 21:29:10 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,66 +0,0 @@
-{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;}
-{\f85\froman\fcharset238\fprq2 Times New Roman CE;}{\f86\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f88\froman\fcharset161\fprq2 Times New Roman Greek;}{\f89\froman\fcharset162\fprq2 Times New Roman Tur;}
-{\f90\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f91\fswiss\fcharset238\fprq2 Arial CE;}{\f92\fswiss\fcharset204\fprq2 Arial Cyr;}{\f94\fswiss\fcharset161\fprq2 Arial Greek;}{\f95\fswiss\fcharset162\fprq2 Arial Tur;}
-{\f96\fswiss\fcharset186\fprq2 Arial Baltic;}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;
-\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\widctlpar\adjustright \fs20\lang2057 \snext0 Normal;}{
-\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\lang2057\kerning28 \sbasedon0 \snext0 heading 1;}{\s2\sb240\sa60\keepn\widctlpar\adjustright \b\i\f1\lang2057 \sbasedon0 \snext0 heading 2;}{\s3\sb240\sa60\keepn\widctlpar\adjustright \f1\lang2057 
-\sbasedon0 \snext0 heading 3;}{\s4\keepn\widctlpar\outlinelevel3\adjustright \b\f1\fs20\lang2057 \sbasedon0 \snext0 heading 4;}{\s5\keepn\widctlpar\outlinelevel4\adjustright \b\f1\lang2057 \sbasedon0 \snext0 heading 5;}{\*\cs10 \additive 
-Default Paragraph Font;}}{\*\listtable{\list\listtemplateid38323078\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01-;}{\levelnumbers;}\f0\fbias0 \fi-360\li1800\jclisttab\tx1800 }{\listname 
-;}\listid817500656}{\list\listtemplateid38323078\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01-;}{\levelnumbers;}\f0\fbias0 \fi-360\li1800\jclisttab\tx1800 }{\listname ;}\listid1308366115}
-{\list\listtemplateid38323078\listsimple{\listlevel\levelnfc23\leveljc0\levelfollow0\levelstartat0\levelspace0\levelindent0{\leveltext\'01-;}{\levelnumbers;}\f0\fbias0 \fi-360\li1800\jclisttab\tx1800 }{\listname ;}\listid1721782559}}{\*\listoverridetable
-{\listoverride\listid1308366115\listoverridecount0\ls1}{\listoverride\listid817500656\listoverridecount0\ls2}{\listoverride\listid1721782559\listoverridecount0\ls3}}{\info{\title BITGDI test code}{\author Lane Roberts}{\operator Symbian}
-{\creatim\yr2001\mo9\dy28\hr15\min24}{\revtim\yr2001\mo12\dy5\hr17\min7}{\version6}{\edmins80}{\nofpages1}{\nofwords171}{\nofchars977}{\*\company Dell Computer Corporation}{\nofcharsws0}{\vern113}}\paperw11909\paperh16834\margl1440\margr1440 
-\widowctrl\ftnbj\aenddoc\hyphcaps0\formshade\viewkind1\viewscale100 \fet0\sectd \psz9\linex0\headery706\footery706\colsx709\endnhere\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2
-\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6
-\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang
-{\pntxtb (}{\pntxta )}}\pard\plain \s1\sb240\sa60\keepn\widctlpar\outlinelevel0\adjustright \b\f1\fs28\lang2057\kerning28 {VERSIT test code
-\par }\pard\plain \widctlpar\adjustright \fs20\lang2057 {\f1 
-\par }{\b\f1\fs24 Test executable file locations
-\par 
-\par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
-\brdrs\brdrw10 \clshdng10000\cltxlrtb \cellx3050\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clshdng10000\cltxlrtb \cellx6208\pard \widctlpar\intbl\adjustright {\b\f1 WINS location\cell 
-Hardware location\cell }\pard \widctlpar\intbl\adjustright {\b\f1 \row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \clvertalt
-\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx3050\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx6208\pard 
-\widctlpar\intbl\adjustright {\f1 \\epoc32\\release\\wins\\udeb\\
-\par or
-\par \\epoc32\\release\\wins\\urel\\\cell z:\\system\cell }\pard \widctlpar\intbl\adjustright {\f1 \row }\pard \widctlpar\adjustright {\f1 
-\par }\pard\plain \s5\keepn\widctlpar\outlinelevel4\adjustright \b\f1\lang2057 {Automatic test executables - should be run before every release
-\par }\pard\plain \widctlpar\adjustright \fs20\lang2057 {\f1 Success: Test program exits cleanly 
-\par Failure: Test program stops with an error message._
-\par }{\b\f1 
-\par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
-\brdrs\brdrw10 \clshdng10000\cltxlrtb \cellx2552\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clshdng10000\cltxlrtb \cellx8155\pard\plain \s4\keepn\widctlpar\intbl\outlinelevel3\adjustright 
-\b\f1\fs20\lang2057 {Filename\cell Purpose\cell }\pard\plain \widctlpar\intbl\adjustright \fs20\lang2057 {\b\f1 \row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh
-\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx2552\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
-\brdrs\brdrw10 \cltxlrtb \cellx8155\pard \widctlpar\intbl\adjustright {\f1 TBUGFIX.EXE\tab \cell  General test. It should be updated each time when a defect has been fixed.}{\b\f1 \cell }\pard \widctlpar\intbl\adjustright {\b\f1 \row }\pard 
-\widctlpar\intbl\adjustright {\f1 TPERFORMANCE.EXE\tab \tab \cell Do the bench marking in terms of performance and heap usage.}{\b\f1 \cell }\pard \widctlpar\intbl\adjustright {\b\f1 \row }\pard \widctlpar\intbl\adjustright {\f1 TCHARSETVCARD.EXE\tab 
-\tab \cell Internalise dozens of vCard from files in \\c\\ TestvCards and externalise them by setting different charset and encoding}{\b\f1 \cell }\pard \widctlpar\intbl\adjustright {\b\f1 \row }\pard \widctlpar\intbl\adjustright {\f1 TOOM.EXE\tab \tab 
-\cell  Out of memory test}{\b\f1 \cell }\pard \widctlpar\intbl\adjustright {\b\f1 \row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 
-\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx2552\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx8155\pard 
-\widctlpar\intbl\adjustright {\f1 TVGEN.EXE\tab \tab \cell  Build a vCard\\vCal randomly and internalise\\externalise it}{\b\f1 \cell }\pard \widctlpar\intbl\adjustright {\b\f1 \row }\pard \widctlpar\adjustright {\b\f1 
-\par }{\b\f1\fs24 Manual test executables - should be run if relevant changes have been made}{\f1 
-\par }{\b\f1 
-\par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
-\brdrs\brdrw10 \clshdng10000\cltxlrtb \cellx1487\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clshdng10000\cltxlrtb \cellx7817\pard \widctlpar\intbl\adjustright {\b\f1 Filename\cell Purpose\cell 
-}\pard \widctlpar\intbl\adjustright {\b\f1 \row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \clvertalt\clbrdrt\brdrs\brdrw10 
-\clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx2552\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx8155\pard \widctlpar\intbl\adjustright {\f1 
-TVERSIT.EXE\tab \tab \cell  Need interaction from the user to test various cases such build, internalise, externalise a vCard or vCal}{\b\f1 \cell }\pard \widctlpar\intbl\adjustright {\b\f1 \row }\pard \widctlpar\adjustright {\b\f1\fs24 
-\par Test support files}{\f1 
-\par }{\b\f1 
-\par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
-\brdrs\brdrw10 \clshdng10000\cltxlrtb \cellx851\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clshdng10000\cltxlrtb \cellx4536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb
-\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clshdng10000\cltxlrtb \cellx7088\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \clshdng10000\cltxlrtb \cellx9639\pard \widctlpar\intbl\adjustright {\b\f1 
-Filename\cell Emulator location\cell Hardware location\cell Used by\cell }\pard \widctlpar\intbl\adjustright {\b\f1 \row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh
-\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx851\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
-\brdrs\brdrw10 \cltxlrtb \cellx4536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx7088\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
-\brdrs\brdrw10 \cltxlrtb \cellx9639\pard \widctlpar\intbl\adjustright {\f1 All files \cell \\epoc32\\wins\\c\\testfiles\cell c:\\ testfiles\cell TBUGFIX.EXE\cell }\pard \widctlpar\intbl\adjustright {\f1 \row }\pard \widctlpar\intbl\adjustright {\f1 
-All files \cell \\epoc32\\wins\\c\\ tPerformance\\inputfile\cell c:\\ tPerformance\\inputfile\cell TPERFORMANCE.EXE\cell }\pard \widctlpar\intbl\adjustright {\f1 \row }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb
-\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx851\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl
-\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx4536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx7088\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl
-\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb \cellx9639\pard \widctlpar\intbl\adjustright {\f1 All files\cell \\epoc32\\wins\\c\\ testvcards\cell c:\\ testvcards\cell TCHARSETVCARD.EXE\cell }\pard \widctlpar\intbl\adjustright {
-\f1 \row }\pard \widctlpar\adjustright {\b\f1\fs24 
-\par Test rom building
-\par }{\f1 
-\par \\versit\\tsrc\\tVersit.iby is listed in bld.inf as a test export with destination \\epoc32\\rom\\include\\.  This automatically includes all test programs and files in a rom when used as follows from \\epoc32\\rom\\: \ldblquote tools\\
-buildrom assabet engbuild tVersit.iby\rdblquote . All testing input files specified in the table above}{\f1  }{\f1 are in}{\f1 cluded in tVersit.iby but need to be copied cross to}{\f1  a related directory in c: drive before testing.
-\par }}