omadm/omadmappui/src/NSmlDMSyncAppUi_fota.cpp
changeset 0 3ce708148e4d
child 8 0a8136f75056
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/omadm/omadmappui/src/NSmlDMSyncAppUi_fota.cpp	Thu Dec 17 08:40:12 2009 +0200
@@ -0,0 +1,876 @@
+/*
+* Copyright (c) 2005-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:  Methods for Device Manager Application UI
+*
+*/
+
+#include <apgwgnam.h>
+#include <gsfwviewuids.h>
+#include <aknnotewrappers.h>
+#include <aknnavide.h>
+#include <StringLoader.h>
+#include <textresolver.h>
+#include <DevManInternalCRKeys.h> //SAN support
+#include <centralrepository.h>
+#include <barsread.h>
+#include <e32property.h>
+#include <NSmlDMSync.rsg>
+#include "nsmldmsyncinternalpskeys.h"
+#include "NSmlDMSyncAppUi.h"
+#include "NSmlDMSyncApp.h"
+#include "NSmlDMSyncAppEngine.h"
+#include "NSmlDMFotaModel.h"
+#include "NSmlDMFotaView.h"
+#include "NSmlDMProfilesView.h"
+#include "NSmlDMSyncDocument.h"
+#include "NSmlDMDlgProfileView.h"
+#include "NSmlDMSyncDebug.h"
+#include "NSmlDMSyncDialog.h"
+#include "NSmlDMSyncProfile.h"
+#include "NSmlDMSyncPrivateCRKeys.h"
+#include <featmgr.h>
+
+#include <hlplch.h>
+#include <csxhelp/dm.hlp.hrh>
+
+
+// ============================ MEMBER FUNCTIONS ==============================
+//
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::ConstructL()
+    {
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ConstructL()" );
+
+    BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible);
+    iSyncDocument = (CNSmlDMSyncDocument*) iDocument;
+    iSyncAppEngine = iSyncDocument->AppEngine();
+    iSyncAppEngine->RequestSyncStatus( this );
+    iFotaModel = CNSmlDMFotaModel::NewL( iSyncDocument );
+    iProfilesView = new (ELeave) CNSmlDMProfilesView(); 
+
+    iViewTitle = 0;
+    
+    iProfilesView->ConstructL(); // this );
+    AddViewL( iProfilesView ); // Transfer ownership to CAknViewAppUi
+
+    TInt configFlags( 0 );
+    CRepository* centrep = NULL;
+    centrep = CRepository::NewL( KCRUidNSmlDMSyncApp );
+    centrep->Get( KNSmlDMFotaConfigurationKey, configFlags );
+    delete centrep;
+
+    if ( configFlags & KNSmlDMFotaEnableFotaViewFlag )
+        {
+    	iNaviDecorator = 0;
+        // Show tabs for main views from resources
+        CEikStatusPane* sp = StatusPane();
+
+        // Fetch pointer to the default navi pane control
+        iNaviPane = ( CAknNavigationControlContainer* )
+            sp->ControlL( TUid::Uid(EEikStatusPaneUidNavi) );
+
+   
+        CNSmlDMFotaView* fotaView = new (ELeave) CNSmlDMFotaView;
+        iMainView = fotaView;
+        CleanupStack::PushL( fotaView );
+        fotaView->ConstructL();
+        AddViewL( fotaView ); // Transfer ownership to CAknViewAppUi
+        CleanupStack::Pop( fotaView );
+
+        ActivateLocalViewL( fotaView->Id() );
+        }
+    else
+        {
+        ActivateLocalViewL( iProfilesView->Id() );
+        }
+    
+ 
+	iDialogUp       = 0;
+	iDestroyed      = 1;
+
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ConstructL() completed" );
+    }
+
+// ------------------------------------------------------------------------------
+// Destructor
+// ------------------------------------------------------------------------------
+
+CNSmlDMSyncAppUi::~CNSmlDMSyncAppUi()
+    {
+    FLOG( "[OMADM] ~CNSmlDMSyncAppUi()" );
+
+    delete iFotaModel;
+	delete iNaviDecorator;
+	if ( iDestroyed == 0 )
+		{
+		delete iAppView;
+		}
+	}
+
+// ------------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::TabChangedL
+// ------------------------------------------------------------------------------
+//
+
+// ------------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::DynInitMenuPaneL
+// ------------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::DynInitMenuPaneL( TInt /*aResourceId*/,
+                                         CEikMenuPane* /*aMenuPane*/ )
+    {
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::DynInitMenuPaneL:" );
+	}
+
+// ------------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::HandleKeyEventL
+// ------------------------------------------------------------------------------
+//
+TKeyResponse CNSmlDMSyncAppUi::HandleKeyEventL( const TKeyEvent& aKeyEvent,
+                                            	TEventCode aType )
+    {
+    FTRACE( FPrint(
+            _L("[OMADM] CNSmlDMSyncAppUi::HandleKeyEventL: = 0x%x"),aKeyEvent.iCode ) );
+	//EEventKeyDown ends settdialog
+	if ( iDialogUp != 0 ) 
+		{
+		return EKeyWasConsumed;
+		}
+	if ( aType == EEventKey )
+		{
+		switch ( aKeyEvent.iCode )
+			{
+			case EKeyUpArrow:
+				{
+				if ( !Synchronise() )
+					{
+					HandleUpScrollL();
+					}
+				}
+		    	break;
+
+			case EKeyDownArrow:
+				{
+				if ( !Synchronise() )
+					{
+					HandleDownScrollL();
+					}
+				}
+			    break;
+
+			case EKeyPhoneEnd:
+			    {			    			    
+			    FLOG( "End key pressed" );
+			    if ( iMainView )
+			        {			
+			        ExitCallL();
+			        }
+			    }
+			case EKeyEscape:
+				{
+				if ( Synchronise() )
+					{
+					iSyncAppEngine->CancelSyncL();
+					}						
+				}
+			    break;
+			default:
+
+				return EKeyWasNotConsumed;		
+			}
+		}
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::HandleKeyEventL() completed" );
+    return EKeyWasNotConsumed;
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::HandleCommandL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::HandleCommandL( TInt aCommand )
+    {
+    FTRACE( FPrint(
+        _L("[OMADM] CNSmlDMSyncAppUi::HandleCommandL() command = 0x%x"),
+        aCommand ) );
+
+    iSyncDocument->DisableDbNotifications( ETrue );
+	iBusy = ETrue;
+
+    switch ( aCommand )
+        {
+      case   EAknCmdHelp:                           
+			{
+			     
+           if (FeatureManager::FeatureSupported( KFeatureIdHelp ))
+			   {
+                HlpLauncher::LaunchHelpApplicationL( iEikonEnv->WsSession(), AppHelpContextL());
+      		    	iBusy = EFalse;
+      	 }		 
+			
+			}
+    		break;
+
+	    case EAknSoftkeyExit: //For independent .exe app launch from file browser
+		case EAknCmdExit:
+        case EEikCmdExit:		// quit application
+			{
+			TApaTaskList taskList(CEikonEnv::Static()->WsSession());
+	        TApaTask task1(taskList.FindApp( KFotaServerAppUid));
+			TInt value=-1;
+            TInt r1=RProperty::Set(KPSUidNSmlDMSyncApp,KNSmlDMSyncUiLaunchKey,value);
+	        if(task1.Exists())
+	        	{
+	        	task1.EndTask();
+	        	}
+			Exit();
+			}
+		    break;
+		    
+		case ENSmlMenuCmdNewProfile:	// create new profile
+			{
+			if (TUtil::SettingEnforcementState())
+				{
+				ShowResourceErrorNoteL( R_QTN_DM_INFO_NOTE_LOCKED_SETTING );
+				break;
+				}
+            HandleCommandNewProfileL();
+			}
+		    break;
+
+		case ENSmlMenuCmdEraseProfile:	// delete profile
+			{
+			if (TUtil::SettingEnforcementState()|| iSyncDocument->ProfileItem()->iProfileLocked)
+				{
+				ShowResourceErrorNoteL( R_QTN_DM_INFO_NOTE_LOCKED_SETTING );
+				break;
+				}
+            HandleCommandEraseProfileL();
+			}
+    		break;
+		
+		case ENSmlMenuCmdOpenLog:			// open syncronisation log view
+			{
+			CNSmlDMSyncDialog::ShowDialogL( 
+            			      iSyncDocument->ProfileItem()->iProfileId,
+			                  iSyncAppEngine->Session() );
+			iBusy = EFalse;
+			}
+		    break;
+
+		case ENSmlMenuCmdOpenSettings:		// open profile for editing
+			{
+			if (TUtil::SettingEnforcementState())
+				{
+				ShowResourceErrorNoteL( R_QTN_DM_INFO_NOTE_LOCKED_SETTING );
+				break;
+				}
+			ShowEditProfileDialogL( ESmlEditProfile );
+			}
+		    break;
+		
+		case ENSmlMenuCmdStartSync:			// start synchronisation
+			{
+            if ( ShowConfirmationNoteL( R_QTN_SML_CONF_STARTQUERY ) )
+                {
+                StartSyncL();
+                }
+			}
+		    break;
+		
+		default:
+            break;      
+        }
+    iSyncDocument->DisableDbNotifications( EFalse );
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::HandleCommandL() completed" );
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::HandleUpScrollL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::HandleUpScrollL()
+	{
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::HandleUpScrollL:" );
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::HandleDownScrollL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::HandleDownScrollL()
+	{
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::HandleDownScrollL:" );
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::ShowEditProfileDialogL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::ShowEditProfileDialogL( TNSmlEditMode aMode,
+                                               TInt /*aStartUp*/)
+	{
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ShowEditProfileDialogL:" );
+
+	TInt profileId( KErrNotFound );
+	if ( aMode != ESmlNewProfile )
+		{
+		profileId = iSyncDocument->ProfileItem()->iProfileId;
+		}
+    
+    iAppView = CNSmlDMDlgProfileView::NewL( 
+                                    iSyncDocument,
+	                                aMode,
+	                                profileId );
+	  	                               
+	TRAPD( error, iAppView->ExecuteLD( R_NSML_SETTING_DIALOG ) );
+	if ( error != KErrNone )
+		{
+		ShowErrorNoteL( error );
+		}
+	else
+		{
+		iBusy = ETrue;
+		iActiveView = CNSmlDMSyncAppUi::SettingsView;
+		AddToStackL( iAppView );
+		}
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::ProcessCommandParametersL
+// -----------------------------------------------------------------------------
+//
+TBool CNSmlDMSyncAppUi::ProcessCommandParametersL( TApaCommand /*aCommand*/,
+                                                   TFileName& aDocumentName,
+                                                   const TDesC8& /*aTail*/ )
+	{
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ProcessCommandParametersL:" );
+
+	 // This is to prevent dummy document creation
+	aDocumentName.Zero();
+	return EFalse;
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::StartSyncL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::StartSyncL(
+    const TInt aProfileId, // = KErrNotFound
+    const TBool aUseFotaProgressNote ) // = EFalse
+	{
+    FTRACE( FPrint(
+        _L("[OMADM] CNSmlDMSyncAppUi::StartSyncL() aProfileId = %d"),
+        aProfileId ) );
+
+	if ( aProfileId == KErrNotFound )
+	    {
+        iConfedProfileId = iSyncDocument->ProfileItem()->iProfileId;
+	    }
+	else
+	    {
+	    iConfedProfileId = aProfileId;
+	    }
+
+    FTRACE( FPrint(
+        _L("[OMADM] CNSmlDMSyncAppUi::StartSyncL() used profileId = %d"),
+        iConfedProfileId ) );
+        
+	CNSmlDMSyncProfile* profile = 
+	            iSyncAppEngine->OpenProfileL( iConfedProfileId, ESmlOpenReadWrite );
+
+    TInt connectionBearer = profile->BearerType();
+    
+    TBuf<KNSmlMaxProfileNameLength> serverName;
+    profile->GetName( serverName );
+	
+	if ( profile->SASyncState() == ESASyncStateDisable )
+		{
+		if ( ShowConfirmationNoteL( R_QTN_SML_CONF_ACTIVEQUERY ) )
+			{
+			profile->SetSASyncStateL( ESASyncStateEnable );
+			profile->SaveL();
+			}
+		else
+			{
+			iSyncAppEngine->CloseProfile();
+			return;
+			}
+		}
+
+    iSyncAppEngine->CloseProfile();		
+    TRAPD( error, iSyncAppEngine->SynchronizeL( serverName, 
+                                                iConfedProfileId, 
+                                                connectionBearer,
+                                                aUseFotaProgressNote ) );
+	
+	if (error == KErrNone)
+		{
+		iActiveView = CNSmlDMSyncAppUi::ProgressView;
+		}
+	else
+		{
+		ShowErrorNoteL( error );
+		iActiveView = CNSmlDMSyncAppUi::MainView;
+		}
+
+    FTRACE( FPrint(
+        _L("[OMADM] CNSmlDMSyncAppUi::StartSyncL() completed, error = %d"),
+        error ) );
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::ChangeViewL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::ChangeViewL(TBool aRefresh)
+	{
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ChangeViewL:" );
+
+	iActiveView = CNSmlDMSyncAppUi::MainView;
+	if ( aRefresh != EFalse )
+		{
+		iSyncDocument->RefreshProfileListL();
+        iProfilesView->RefreshL();
+		}
+	CAknTitlePane* titlePane = 
+	    (CAknTitlePane*) StatusPane()->ControlL( TUid::Uid( EEikStatusPaneUidTitle ) );
+	HBufC* titleText = NULL;    
+
+	if ( iViewTitle )
+	{
+	titleText = iEikonEnv->AllocReadResourceLC( R_SML_APP_TITLE );
+	iViewTitle = 0;	
+	}
+	else
+	{
+	titleText = iEikonEnv->AllocReadResourceLC( R_SML_PROFILES_TITLE );	
+	}	
+	
+	titlePane->SetTextL( titleText->Des() );
+	CleanupStack::PopAndDestroy(titleText);
+	iBusy = EFalse;
+
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ChangeViewL() completed" );
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::ShowErrorNoteL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::ShowErrorNoteL( TInt aError ) const
+	{
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ShowErrorNoteL:" );
+
+	TBuf<KNSmlMaxTextLength256> errMsg;	
+	SetErrorMessageL( aError, errMsg );	
+	CAknInformationNote* queryDialog = new (ELeave) CAknInformationNote;
+	queryDialog->ExecuteLD( errMsg );
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ShowErrorNoteL() completed" );
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::SetErrorMessageL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::SetErrorMessageL( TInt aError, TDes& aMsg ) const
+	{
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::SetErrorMessageL:" );
+    CTextResolver* textResolver = CTextResolver::NewLC();
+    
+    aMsg.Append( textResolver->ResolveErrorString( aError,
+	                                         CTextResolver::ECtxNoCtx ) );
+	
+	CleanupStack::PopAndDestroy( textResolver );
+
+	HBufC* appTitle = iEikonEnv->AllocReadResourceLC( R_SML_APP_TITLE );
+	aMsg.Insert( 0, appTitle->Des() );
+	CleanupStack::PopAndDestroy( appTitle );
+    FTRACE( FPrint(
+        _L("[OMADM] CNSmlDMSyncAppUi::SetErrorMessageL() completed, aError = %d, aMsg ="),
+        aError ) );
+    FTRACE( FPrint(
+        _L("[OMADM] \"%S\""),
+        &aMsg ) );
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::HelpContextL
+// -----------------------------------------------------------------------------
+//
+
+CArrayFix<TCoeHelpContext>* CNSmlDMSyncAppUi::HelpContextL() const
+	{
+	CArrayFixFlat<TCoeHelpContext>* array = 
+	                            new (ELeave) CArrayFixFlat<TCoeHelpContext>(1);
+	array->AppendL( TCoeHelpContext( KUidSmlSyncApp, KDM_HLP_MAIN_VIEW ) );
+	array->AppendL( TCoeHelpContext( KUidSmlSyncApp, KFOTA_HLP_SETTINGS ) );
+	array->AppendL( TCoeHelpContext( KUidSmlSyncApp, KDM_HLP_SERVERS_VIEW ) );
+	array->AppendL( TCoeHelpContext( KUidSmlSyncApp, KDM_HLP_SETTINGS ) );
+	return array;
+	}
+
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::ShowResourceErrorNoteL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::ShowResourceErrorNoteL(TInt aResource) const
+    {
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ShowResourceErrorNoteL:" );
+
+	HBufC* errorText = iEikonEnv->AllocReadResourceLC( aResource );
+	CAknInformationNote* queryDialog = new (ELeave) CAknInformationNote;
+	queryDialog->ExecuteLD( errorText->Des() );
+	CleanupStack::PopAndDestroy( errorText );
+
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ShowResourceErrorNoteL() completed" );
+	}
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::FotaModel
+// -----------------------------------------------------------------------------
+//
+CNSmlDMFotaModel* CNSmlDMSyncAppUi::FotaModel() const
+    {
+    return iFotaModel;
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::MarkFwUpdChangesStartL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::MarkFwUpdChangesStartL()
+    {
+    __ASSERT_ALWAYS( iFotaModel, TUtil::Panic( KErrGeneral ) );
+    iFotaModel->MarkFwUpdChangesStartL();
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::FwUpdStatesChangedL
+// -----------------------------------------------------------------------------
+//
+TBool CNSmlDMSyncAppUi::FwUpdStatesChangedL()
+    {
+    __ASSERT_ALWAYS( iFotaModel, TUtil::Panic( KErrGeneral ) );
+    return iFotaModel->FwUpdStatesChangedL();
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::ShowConfirmationNoteL
+// -----------------------------------------------------------------------------
+//
+TBool CNSmlDMSyncAppUi::ShowConfirmationNoteL( TInt aResource ) const
+    {
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::ShowConfirmationNoteL:" );
+
+	HBufC* queryText = iEikonEnv->AllocReadResourceLC( aResource );
+	CAknQueryDialog* queryDialog = new (ELeave) CAknQueryDialog();
+
+	TBool retValue = queryDialog->ExecuteLD( R_STARTQUERY_NOTE,
+	                                         queryText->Des() );
+	CleanupStack::PopAndDestroy( queryText );
+    FTRACE( FPrint(
+        _L("[OMADM] CNSmlDMSyncAppUi::ShowConfirmationNoteL() completed, retval = %d"),
+        retValue ) );
+	return retValue;
+	}
+	
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::HandleCommandNewProfileL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::HandleCommandNewProfileL()
+    {
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::HandleCommandNewProfileL:" );
+    
+	if ( iSyncDocument->ProfileCount() != 0 )
+	    {
+		//This if loop check required whether keypad or touch (via stylus) being used incase of single click enabled
+	    if(iProfilesView->MenuBar()->ItemSpecificCommandsEnabled())
+	        {
+	        HBufC* delQuery = StringLoader::LoadL( 
+	                R_QTN_SML_APPUI_COPY,
+	                iSyncDocument->ProfileItem()->iProfileName );
+	        CleanupStack::PushL( delQuery );
+
+	        CAknQueryDialog* queryDialog = new (ELeave) CAknQueryDialog();
+	        iDialogUp = 1;
+
+	        if ( queryDialog->ExecuteLD( R_STARTQUERY_NOTE, delQuery->Des() ) )  
+	            {
+	            iDialogUp = 0;
+	            ShowEditProfileDialogL( ESmlCopyProfile );					
+	            }
+	        else
+	            {
+	            iDialogUp = 0;
+	            ShowEditProfileDialogL( ESmlNewProfile );	
+	            }
+	        CleanupStack::PopAndDestroy( delQuery );
+	        }
+	    else
+	        {
+	        iDialogUp = 0;
+	        ShowEditProfileDialogL( ESmlNewProfile );   
+	        }
+	    }
+	else
+		{
+		iDialogUp = 0;
+		ShowEditProfileDialogL( ESmlNewProfile );	
+		}
+	
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::HandleCommandNewProfileL() completed" );
+    }
+    
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::HandleCommandEraseProfileL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::HandleCommandEraseProfileL()
+    {
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::HandleCommandEraseProfileL:" );
+    
+	HBufC* delQuery = StringLoader::LoadL(
+	    R_SML_APPUI_NOTE_TEXT_DEL,
+	    iSyncDocument->ProfileItem()->iProfileName );
+	CleanupStack::PushL( delQuery );
+	
+	CAknQueryDialog* queryDialog = new (ELeave) CAknQueryDialog( );
+	iDialogUp = 1;
+
+	if ( queryDialog->ExecuteLD( R_STARTQUERY_NOTE, delQuery->Des() ) ) 
+		{
+		TInt index = 0;
+		TInt result = iSyncDocument->DeleteProfile( index );
+		if ( result == KErrNone )
+			{
+            iProfilesView->RefreshL();
+			}
+		else
+			{
+			ShowErrorNoteL( result );
+			}
+		}
+	iDialogUp = 0;
+	iBusy = EFalse;
+	CleanupStack::PopAndDestroy( delQuery );
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::HandleCommandEraseProfileL() completed" );
+    }
+    
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::Synchronise
+// -----------------------------------------------------------------------------
+//
+TBool CNSmlDMSyncAppUi::Synchronise()
+    {
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::Synchronise:" );
+    return iSyncAppEngine->SyncRunning();
+    }
+    
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::SyncComplete
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::SyncComplete( TNSmlStatus /* aStatus */ )                                      
+                                     
+    {
+    FLOG( "[OMADM] CNSmlDMSyncAppUi::SyncComplete()" );
+
+    TRAP_IGNORE( iSyncDocument->RefreshProfileListL() );
+    // The listbox should get at least an empty array in any case, so
+    // the result checking is not needed.
+    TRAP_IGNORE( iProfilesView->RefreshL() );
+    RProperty::Set( KPSUidNSmlDMSyncApp,
+                				    KServerAlertType,
+                    				KErrNotFound );
+    iSyncDocument->ResetSession();                				
+    TRAP_IGNORE( iMainView->RefreshL(ETrue) );
+    TInt Value;
+    TInt r=RProperty::Get(KPSUidNSmlDMSyncApp,KNSmlDMSyncUiLaunchKey,Value);    
+    if ( iSyncDocument->IsServerAlertSync() && Value == 1) //for Server alert launch case    
+        {
+        FLOG(  "[OMADM] CNSmlDMSyncAppUi::SyncComplete: RunAppShutter" );
+      //  TRAP_IGNORE( ExitCallL() );
+           	FLOG(  "CNSmlDMSyncAppUi::SyncComplete--SANSupport existed" );
+           	//new for fota case SAN Support
+           	TInt configFlags( EGenericSession  );
+        		CRepository* centrep = NULL;
+        		TRAPD( err, centrep = CRepository::NewL( KCRUidDeviceManagementInternalKeys ) );
+        		if ( centrep )
+            	{
+            	if( err == KErrNone )
+            	{
+            	centrep->Get( KDevManSessionType, configFlags );            
+            	centrep->Set( KDevManSessionType, EGenericSession  );
+              }
+              delete centrep;
+            	}      
+            // Check P&S Key set by Application Management. 
+           	// If P&S Key is set then indicates that DM UI should not be closed. Application Mgmt
+           	// Server will take care of closing DM UI
+           	const TUid KMyPropertyCat = {0x1020781C};
+			
+			const TUint KDMUINotClosed = 0x00005;
+			//enum TMyPropertyKeys {EMyPropertyInteger, EMyPropertyArray};
+	 	
+	 	
+	 		TInt valuekey = 0;
+			RProperty::Get(KMyPropertyCat, KDMUINotClosed, valuekey);
+		      
+           	
+           //new for fota case SAN Support
+           if( configFlags != EFotaPkgFound && !valuekey) //no update found
+              {
+            	FLOG(  "[OMADM] CNSmlDMSyncAppUi::SyncComplete: RunAppShutter::Sansupport" );            	
+            	TRAP_IGNORE( ExitCallL() );          	
+        	 	  CAknEnv::Static()->RunAppShutter();
+              }              
+           }
+    if ( Value == 3 )	
+        {
+       	Value = 2;
+       	RProperty::Set(KPSUidNSmlDMSyncApp,KNSmlDMSyncUiLaunchKey,Value);
+        }      
+
+    }
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::RefreshMainViewL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::RefreshMainViewL( )
+    {    
+    iMainView->RefreshL(ETrue);	
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::CloseGs
+// -----------------------------------------------------------------------------
+//
+
+void CNSmlDMSyncAppUi::CloseGs()
+    {
+    TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
+    TApaTask task(taskList.FindApp( KUidSmlSyncApp ) );
+    task.SetWgId( CEikonEnv::Static()->RootWin().Identifier() ); 
+    task.SendToBackground();
+    CAknEnv::Static()->RunAppShutter();	
+    }
+
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::ExitCallL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::ExitCallL( )
+    {    
+    iMainView->UpdateExitL();	    
+    }
+
+// -----------------------------------------------------------------------------
+// CNSmlDMSyncAppUi::CheckFotaDlL
+// -----------------------------------------------------------------------------
+//
+void CNSmlDMSyncAppUi::CheckFotaDlL()
+	{
+	FLOG( "CNSmlDMSyncAppUi::CheckFotaDlL : Begin" );
+	if( FeatureManager::FeatureSupported( KFeatureIdSyncMlDmFota ) )
+		{
+		//When Download is going on
+	    TInt value = KErrNotFound, err = KErrNotFound;
+	    err = RProperty::Get(KPSUidNSmlDMSyncApp,KFotaDLStatus,value);
+	    FTRACE( FPrint( _L("[OMADM]\t CNSmlDMSyncAppUi::CheckFotaDl() \
+	    KFotaDLStatus val = %d & err = %d"),
+	    value,err ) );
+	    if(!err && value == 1)
+	        {
+	        FLOG( "CNSmlDMSyncAppUi::CheckFotaDl Ongoing Fota operation\
+	        identified." );
+
+	        TApaTaskList taskList(CEikonEnv::Static()->WsSession());
+	        TApaTask task=taskList.FindApp(TUid::Uid(0x102072c4));
+	        if(task.Exists())
+	            {
+	            FLOG( "CNSmlDMSyncAppUi::CheckFotaDl Switching to FS \
+	            Download" );
+	            task.BringToForeground();
+	            }
+	        else
+	            FLOG( "CNSmlDMSyncAppUi::CheckFotaDl Inconsistency problem\
+	            need to debug" );
+	        }							
+
+	    else
+	        {
+	        FLOG("CNSmlDMSyncAppUi::CheckFotaDl  No ongoing Fota\
+	        operation identified!");
+	        }
+	    }
+	FLOG( "CNSmlDMSyncAppUi::CheckFotaDlL : End" );
+	}
+
+void CNSmlDMSyncAppUi::CheckAMDlL()
+  {
+  	
+  	FLOG( "CNSmlDMSyncAppUi::CheckAMDlL : Start" );
+  	const TUid KAppMgmtServerUid = {0x1020781C};
+	
+            
+              TInt silentoperation = 1;
+        	RProperty::Get( KPSUidNSmlDMSyncApp,
+                				    KServerAlertType,
+                    				silentoperation);
+	    
+	 	
+	 	const TUint KAMServerUIEnabled = 0x00001;
+	 	TInt newValue;
+		TInt err = RProperty::Get(KAppMgmtServerUid, KAMServerUIEnabled, newValue);
+		
+		if(!err && newValue && (silentoperation==KErrNotFound || silentoperation==1))
+		{
+	    	FLOG( "CNSmlDMSyncAppUi::CheckAMDlL : Entered:" );
+	    
+	    	if(silentoperation ==0)
+		{
+	    	FLOG( "CNSmlDMSyncAppUi::CheckAMDlL :silentoperation ==0" );
+		}
+	    	else
+		{
+	    	FLOG( "CNSmlDMSyncAppUi::CheckAMDlL :silentoperation not equal to 0" );
+		}	
+			
+		TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
+    		TApaTask task = taskList.FindApp(KAppMgmtServerUid );
+    		const TInt id = task.WgId();
+		task.SetWgId(id);
+		
+		FTRACE( FPrint( _L("[OMADM]\t CNSmlDMSyncAppUi::CheckAMDlL() \
+	    	WGID val = %d"),
+	    	id ) );
+		
+    		if(task.Exists())
+    		{
+    		  FLOG( "CNSmlDMSyncAppUi::CheckAMDlL :task.Exists() : BringToForeground" );
+        	task.BringToForeground();
+        	}      
+     		} 
+  	
+  }
+// End of File