--- a/omads/omadsappui/AspSyncUtil/src/AspSyncUtil.cpp Thu Aug 19 09:41:17 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,811 +0,0 @@
-/*
-* Copyright (c) 2005 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:
-*
-*/
-
-
-
-// INCLUDES
-#include "AspSyncUtil.h"
-#include "AspDialogUtil.h"
-#include "AspProfileDialog.h"
-#include "AspProfileWizardDialog.h"
-#include "AspAutoSyncHandler.h"
-
-#include "AspSyncUtil.rh"
-#include "AspDebug.h"
-
-#include <AiwCommon.hrh> // for application ids
-#include <DataSyncInternalPSKeys.h>
-
-#ifdef RD_DSUI_TIMEDSYNC
-#include "AspSettingViewDialog.h"
-#endif
-// ============================ MEMBER FUNCTIONS ===============================
-
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::NewL
-//
-// -----------------------------------------------------------------------------
-//
-CAspSyncUtil* CAspSyncUtil::NewL()
- {
- FLOG( _L("CAspSyncUtil::NewL START") );
-
- CAspSyncUtil* self = new (ELeave) CAspSyncUtil();
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(self);
-
- FLOG( _L("CAspSyncUtil::NewL END") );
- return self;
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor
-//
-// -----------------------------------------------------------------------------
-//
-CAspSyncUtil::~CAspSyncUtil()
- {
- FLOG( _L("CAspSyncUtil::~CAspSyncUtil START") );
-
- delete iResHandler;
- delete iSyncHandler;
- delete iContentList;
-
- CloseSyncSession();
-
- FLOG( _L("CAspSyncUtil::~CAspSyncUtil END") );
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::ConstructL
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::ConstructL(void)
- {
- FLOG( _L("CAspSyncUtil::ConstructL START") );
-
- iSettingEnforcement = TUtil::SettingEnforcementState();
-
- TAspParam param(iApplicationId, NULL); // param not used in CAspSyncHandler
- iSyncHandler = CAspSyncHandler::NewL(param);
-
- iSyncSessionOpen = EFalse;
-
- FLOG( _L("CAspSyncUtil::ConstructL END") );
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::CAspSyncUtil
-//
-// -----------------------------------------------------------------------------
-//
-CAspSyncUtil::CAspSyncUtil()
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::SynchronizeL
-//
-// Called by CSyncUtilApi::SynchronizeL.
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::SynchronizeL(RFile& aTaskFile)
- {
- CAspAutoSyncHandler* autoSyncHandler = CAspAutoSyncHandler::NewL();
- CleanupStack::PushL(autoSyncHandler);
-
- autoSyncHandler->SynchronizeL(aTaskFile);
-
- CleanupStack::PopAndDestroy(autoSyncHandler);
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::SynchronizeL
-//
-// Called by CSyncUtilApi::SynchronizeL.
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::SynchronizeL(TInt aApplicationId, TInt aJobId, TInt aInfo1, TDes& aInfo2)
- {
- FLOG( _L("CAspSyncUtil::SynchronizeL START") );
-
- if (!iResHandler)
- {
- iResHandler = CAspResHandler::NewL();
- }
-
- iApplicationId = aApplicationId;
-
- OpenSyncSessionL();
-
- TRAPD(err, DoSynchronizeL(aApplicationId, aJobId, aInfo1, aInfo2));
-
- CloseSyncSession();
-
- User::LeaveIfError(err);
-
- FLOG( _L("CAspSyncUtil::SynchronizeL END") );
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::ShowSettingsL
-//
-// Called by CSyncUtilApi::ShowSettingsL.
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::ShowSettingsL(TInt aApplicationId, TInt aInfo1, TDes& /*aInfo2*/)
- {
- FLOG( _L("CAspSyncUtil::ShowSettingsL START") );
-
- if (!iResHandler)
- {
- iResHandler = CAspResHandler::NewL();
- }
-
- iApplicationId = aApplicationId;
-
- if (aApplicationId != EApplicationIdSync)
- {
- // other apps only show profile dialog
- ShowProfileDialogL(aApplicationId);
- return;
- }
-
-
- TInt dialogMode = EModeDialogWait;
- if (aInfo1 == EModeDialogNoWait)
- {
- dialogMode = EModeDialogNoWait;
- }
-
- OpenSyncSessionL();
-
- TRAPD(err, ShowSettingsDialogL(aApplicationId, KErrNotFound, dialogMode));
-
- if (dialogMode == EModeDialogWait)
- {
- iSettingDialog = NULL;
- CloseSyncSession();
- }
-
- User::LeaveIfError(err);
-
- FLOG( _L("CAspSyncUtil::ShowSettingsL END") );
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::ShowSettingsDialog
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::ShowSettingsDialogL(TInt aApplicationId,
- TInt aProfileId, TInt aDialogMode)
- {
- if (aApplicationId != EApplicationIdSync)
- {
- CreateContentListL();
- CheckAppAndProviderL(aApplicationId);
- }
-
- TAspParam param(aApplicationId, &iSyncSession);
- param.iMode = aDialogMode;
- param.iProfileId = aProfileId;
-
- iSettingDialog = CAspSettingDialog::NewL(param);
-
- if (aDialogMode == EModeDialogWait)
- {
- iSettingDialog->ExecuteLD(R_ASP_SETTING_DIALOG);
- }
- else
- {
- iSettingDialog->ExecuteLD(R_ASP_SETTING_DIALOG_2);
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::ShowProfileDialog
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::ShowProfileDialogL(TInt aApplicationId)
- {
- FLOG( _L("CAspSyncUtil::ShowProfileDialogL START") );
-
- OpenSyncSessionL();
-
- TRAPD(err, EditProfileL(aApplicationId));
-
- CloseSyncSession();
-
- User::LeaveIfError(err);
-
- FLOG( _L("CAspSyncUtil::ShowProfileDialogL END") );
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::EditProfileL
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::EditProfileL(TInt aAplicationId)
- {
- CreateContentListL();
- CheckAppAndProviderL(aAplicationId);
-
- TInt profileId = KErrNotFound;
- TInt taskId = KErrNotFound;
- TInt resourceId = R_ASP_PROFILE_QUERY_TITLE;
-
- TBool ret = SelectProfileL(profileId, taskId, resourceId, KNullDesC,ETrue);
- if (!ret || profileId == KErrNotFound)
- {
- return; // no sync profile
- }
-
- if (iSettingEnforcement)
- {
- DoEditReadOnlyProfileL(aAplicationId, profileId,
- EDialogModeSettingEnforcement);
- }
- else
- {
- DoEditProfileL(aAplicationId, profileId, EDialogModeEdit);
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::DoEditProfileL
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::DoEditProfileL(TInt aApplicationId, TInt aProfileId,
- TInt aDialogMode)
- {
- TAspParam param(EApplicationIdSync, &iSyncSession);
- CAspProfileList* profileList = CAspProfileList::NewLC(param);
- profileList->ReadAllProfilesL(CAspProfileList::ENoMandatoryCheck);
-
-
- param.iApplicationId = aApplicationId;
- CAspProfile* profile = CAspProfile::NewLC(param);
-
- TInt err = KErrNone;
- TRAP(err, profile->OpenL(aProfileId, CAspProfile::EOpenReadWrite,
- CAspProfile::EAllProperties));
-
- if (err == KErrLocked)
- {
- TDialogUtil::ShowErrorNoteL(R_ASP_LOCKED_PROFILE);
- }
- User::LeaveIfError(err);
-
- iContentList->SetProfile(profile);
- TRAP(err, iContentList->InitAllTasksL());
-
- if (err != KErrNone)
- {
- iContentList->SetProfile(NULL);
- }
- User::LeaveIfError(err);
-
- TAspParam param2(aApplicationId, &iSyncSession);
- param2.iProfile = profile;
- param2.iMode = aDialogMode;
- param2.iContentList = iContentList;
- param2.iProfileList = profileList; // needed for unique server id check
-
-#ifdef RD_DSUI_TIMEDSYNC
- CAspSettingViewDialog::ShowDialogL(param2);
-#else
- TRAP(err, CAspProfileDialog::ShowDialogL(param2));
-#endif
-
- iContentList->SetProfile(NULL);
- User::LeaveIfError(err);
-
- CleanupStack::PopAndDestroy(profile);
- CleanupStack::PopAndDestroy(profileList);
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::DoEditReadOnlyProfileL
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::DoEditReadOnlyProfileL(TInt aApplicationId, TInt aProfileId,
- TInt aDialogMode)
- {
- TAspParam param(aApplicationId, &iSyncSession);
- CAspProfile* profile = CAspProfile::NewLC(param);
-
- profile->OpenL(aProfileId, CAspProfile::EOpenRead,
- CAspProfile::EAllProperties);
-
- iContentList->SetProfile(profile);
- TInt err = KErrNone;
- TRAP(err, iContentList->InitAllTasksL());
-
- if (err != KErrNone)
- {
- iContentList->SetProfile(NULL);
- }
- User::LeaveIfError(err);
-
- TAspParam param2(aApplicationId, &iSyncSession);
- param2.iProfile = profile;
- param2.iMode = aDialogMode;
- param2.iContentList = iContentList;
-
- TRAP(err, CAspProfileDialog::ShowDialogL(param2));
-
- iContentList->SetProfile(NULL);
- User::LeaveIfError(err);
-
- CleanupStack::PopAndDestroy(profile);
- }
-
-
-// -----------------------------------------------------------------------------------------------------
-// CAspSyncUtil::SelectProfileL
-// aCheckId currently will be always set to ETrue
-// this Check can be used in future to differentiate if its called from DoSynchronizeL() or EditProfileL()
-// ------------------------------------------------------------------------------------------------------
-//
-TBool CAspSyncUtil::SelectProfileL(TInt& aProfileId, TInt& aTaskId,
- TInt aResourceId, const TDesC& aLocalDatabase,TBool aCheckId)
- {
- aProfileId = KErrNotFound;
- aTaskId = KErrNotFound;
- TBool ret = EFalse;
- TInt index=KErrNotFound;
-
- TAspParam param(iApplicationId, &iSyncSession);
- CAspProfileList* profileList = CAspProfileList::NewLC(param);
-
- if (aLocalDatabase.Length() > 0)
- {
- profileList->ReadEMailProfilesL(aLocalDatabase, KErrNotFound);
- if(profileList->Count() == 0)
- {
- profileList->ReadAllProfilesL(CAspProfileList::EBasePropertiesOnly);
- }
- }
- else
- {
- profileList->ReadAllProfilesL(CAspProfileList::EBasePropertiesOnly);
- }
-
- profileList->Sort();
-
- if (profileList->Count() == 0)
- {
- if (!iSettingEnforcement)
- {
- if (TDialogUtil::ShowConfirmationQueryL(R_ASP_QUERY_NO_PROFILES))
- {
- TAspParam param(iApplicationId, &iSyncSession);
- CAspProfileWizardDialog::ShowDialogL(param);
- }
- }
-
- ret = EFalse;
- }
-
-
- else
- {
- if(aCheckId)
- {
-
-
- if (iSettingEnforcement)
- {
- ret = TDialogUtil::ShowProfileQueryL(profileList, aProfileId, aResourceId);
-
- }
- else
- {
- ret = TDialogUtil::ShowProfileQueryAppL(profileList, aProfileId, aResourceId,index);
- }
-
-
- if (ret)
- {
- index = profileList->ListIndex(aProfileId);
-
- __ASSERT_DEBUG(index != KErrNotFound, TUtil::Panic(KErrGeneral));
-
- TAspProfileItem& item = profileList->Item(index);
-
- aTaskId = item.iTaskId;
-
- }
-
- else
- {
- if(index==1)
- CAspProfileWizardDialog::ShowDialogL(param);
- //ret=EFalse;
-
- }
- }
-
- else
- {
-
-
- ret = TDialogUtil::ShowProfileQueryL(profileList, aProfileId, aResourceId);
-
- if (ret)
- {
- TInt index = profileList->ListIndex(aProfileId);
-
- __ASSERT_DEBUG(index != KErrNotFound, TUtil::Panic(KErrGeneral));
-
- TAspProfileItem& item = profileList->Item(index);
- aTaskId = item.iTaskId;
-
-
-
- }
-
-
- }
- }
-
- CleanupStack::PopAndDestroy(profileList);
-
- return ret;
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::DoSynchronizeL
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::DoSynchronizeL(TInt aApplicationId, TInt /*aJobId*/,
- TInt aInfo1, TDes& aInfo2)
- {
- FLOG( _L("CAspSyncUtil::DoSynchronizeL START") );
-
- CreateContentListL();
- CheckAppAndProviderL(aApplicationId);
-
- //check PS key
- TInt keyVal = 0;//EDataSyncNotRunning
- TInt err = RProperty::Get( KPSUidDataSynchronizationInternalKeys,
- KDataSyncStatus,
- keyVal );
- if(err == KErrNone && keyVal)
- {
- TDialogUtil::ShowInformationNoteL(R_ASP_SYNC_ALREADY_RUNNING);
- return;
- }
-
- if (CAspProfile::OtherSyncRunning(&iSyncSession))
- {
- TDialogUtil::ShowInformationNoteL(R_ASP_SYNC_ALREADY_RUNNING);
- FLOG( _L("CAspSyncUtil::DoSynchronizeL END") );
- return;
- }
-
- if (iApplicationId == EApplicationIdEmail && TUtil::IsEmpty(aInfo2))
- {
- FLOG( _L("### mailbox name not defined ###") );
- FLOG( _L("CAspSyncUtil::DoSynchronizeL END") );
- User::Leave(KErrNotFound);
- }
-
-
- TInt profileId = KErrNotFound;
- TInt taskId = KErrNotFound;
- TBool ret = EFalse;
- TInt resourceId = R_ASP_PROFILE_QUERY_TITLE;
-
- if (aApplicationId == EApplicationIdEmail)
- {
- ret = SelectProfileL(profileId, taskId, resourceId, aInfo2,ETrue);
- }
- else
- {
- ret = SelectProfileL(profileId, taskId, resourceId, KNullDesC,ETrue);
- }
-
- if (!ret || profileId == KErrNotFound)
- {
- FLOG( _L("CAspSyncUtil::DoSynchronizeL END") );
- return; // no sync profile
- }
-
- TAspParam aspParam(iApplicationId, &iSyncSession);
- CAspProfile* profile = CAspProfile::NewLC(aspParam);
- TRAPD (err1, profile->OpenL(profileId, CAspProfile::EOpenRead,
- CAspProfile::EAllProperties));
- User::LeaveIfError(err1);
- if (aApplicationId != EApplicationIdEmail)
- {
- aInfo2 = KNullDesC;
- }
- //create task for content type ,if it is not created yet
- ret = CheckTaskAndProtocolL(profileId, aInfo2);
-
- TInt dataProviderId = TUtil::ProviderIdFromAppId(aApplicationId);
- taskId = TAspTask::FindTaskIdL(profile, dataProviderId, aInfo2);
-
- CleanupStack::PopAndDestroy(profile);
-
- if (!ret)
- {
- FLOG( _L("CAspSyncUtil::DoSynchronizeL END") );
- return; // some mandatory data missing
- }
-
- if (!CheckMandatoryL(profileId))
- {
- FLOG( _L("CAspSyncUtil::DoSynchronizeL END") );
- return; // some mandatory data missing
- }
-
-#ifdef _DEBUG
- TBuf<KBufSize> buf;
- TUtil::GetApplicationName(buf, aApplicationId);
- FTRACE(RDebug::Print(_L("statrting sync (%S)"), &buf));
-#endif
-
- TAspSyncParam param(aApplicationId);
- param.iProfileId = profileId;
- param.iTaskId = taskId;
-
- if (aInfo1 == EApplicationIdEmail)
- {
- // email sync 3.2 needs synchronous syncing
- param.iDialogMode = EModeDialogWait;
- }
-
- iSyncHandler->SynchronizeL(param);
-
- FLOG( _L("CAspSyncUtil::DoSynchronizeL END") );
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::CheckMandatoryL
-//
-// -----------------------------------------------------------------------------
-//
-TBool CAspSyncUtil::CheckMandatoryL(TInt aProfileId)
- {
- TAspParam param(iApplicationId, &iSyncSession);
- CAspProfile* profile = CAspProfile::NewLC(param);
- profile->OpenL(aProfileId, CAspProfile::EOpenRead,
- CAspProfile::EAllProperties);
-
- TInt contentCount = 0;
- TInt ret = CAspProfile::CheckMandatoryData(profile, contentCount);
- CleanupStack::PopAndDestroy(profile);
-
- if (ret != EMandatoryOk)
- {
- if (iSettingEnforcement)
- {
- TDialogUtil::ShowInformationNoteL(R_ASP_NOTE_TARM_MANDATORY_MISSING);
- }
- else if (TDialogUtil::ShowConfirmationQueryL(R_ASP_QUERY_MANDATORY_MISSING))
- {
- DoEditProfileL(iApplicationId, aProfileId, EDialogModeEditMandatory);
- }
-
- return EFalse;
- }
-
- return ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::DataProviderExist
-//
-// -----------------------------------------------------------------------------
-//
-TBool CAspSyncUtil::DataProviderExist(TInt aApplicationId)
- {
- if (iContentList == NULL)
- {
- return ETrue;
- }
-
- TInt providerId = TUtil::ProviderIdFromAppId(aApplicationId);
- TInt index = iContentList->FindProviderIndex(providerId);
-
- if (index == KErrNotFound)
- {
- return EFalse;
- }
- return ETrue;
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::CreateContentListL
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::CreateContentListL()
- {
- if (iContentList)
- {
- return;
- }
-
- TAspParam param(KErrNotFound, &iSyncSession);
- param.iMode = CAspContentList::EInitDataProviders;
- iContentList = CAspContentList::NewL(param);
- }
-
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::CheckAppAndProvider
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::CheckAppAndProviderL(TInt aApplicationId)
- {
- TInt sid = RProcess().SecureId().iId;
-
- if (!TUtil::IsValidSID(sid))
- {
- FLOG( _L("### CAspSyncUtil::CheckAppAndProviderL: wrong SID (%xd) ###"), sid);
- User::Leave(KErrNotSupported); // unknown caller app
- }
-
- if (!TUtil::IsValidAppId(aApplicationId))
- {
- FLOG( _L("### CAspSyncUtil::CheckAppAndProviderL: wrong app id (%d) ###"), aApplicationId);
- User::Leave(KErrNotSupported); // unknown caller app
- }
-
- if (aApplicationId != EApplicationIdSync && !DataProviderExist(aApplicationId))
- {
- FLOG( _L("### CAspSyncUtil::CheckAppAndProviderL: no data provider (%d) ###"), aApplicationId);
- User::Leave(KErrNotFound); // sync data provider not found
- }
- }
-
-// -----------------------------------------------------------------------------
-// CAspSyncUtil::CheckTaskAndProtocolL
-//
-// -----------------------------------------------------------------------------
-//
-TBool CAspSyncUtil::CheckTaskAndProtocolL(TInt aProfileId ,const TDesC& aLocalDatabase)
- {
-
- TAspParam param(iApplicationId, &iSyncSession);
-
- CAspProfile* profile = CAspProfile::NewLC(param);
- TRAPD (err, profile->OpenL(aProfileId, CAspProfile::EOpenReadWrite,
- CAspProfile::EAllProperties));
- if (err == KErrLocked)
- {
- TDialogUtil::ShowErrorNoteL(R_ASP_LOCKED_PROFILE);
- CleanupStack::PopAndDestroy(profile);
- return EFalse;
- }
-
- TInt dataProviderId = TUtil::ProviderIdFromAppId(iApplicationId, CAspProfile::IsOperatorProfileL(profile));
- iContentList->RemoveAllTasks();
- iContentList->SetProfile(profile);
- iContentList->InitAllTasksL();
-
- if (iApplicationId == EApplicationIdEmail)
- {
-
- TInt protocol = profile->ProtocolVersion();
- if (protocol == EAspProtocol_1_1)
- {
-
- CleanupStack::PopAndDestroy(profile);
- iContentList->SetProfile(NULL);
- return EFalse;
- }
-
- TInt taskId = TAspTask::FindTaskIdL(profile, dataProviderId, aLocalDatabase);
- if (taskId == KErrNotFound)
- {
-
- iContentList->ModifyTaskIncludedL(dataProviderId, ETrue, aLocalDatabase);
-
- }
-
- }
- else
- {
- TInt taskId = TAspTask::FindTaskIdL(profile, dataProviderId, KNullDesC);
- if (taskId == KErrNotFound)
- {
-
- iContentList->ModifyTaskIncludedL(dataProviderId, ETrue, KNullDesC);
-
- }
- }
-
- iContentList->SetProfile(NULL);
- CleanupStack::PopAndDestroy(profile);
- return ETrue;
- }
-
-// -----------------------------------------------------------------------------
-// OpenSyncSessionL
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::OpenSyncSessionL()
- {
- if (!iSyncSessionOpen)
- {
- TRAPD(err, iSyncSession.OpenL());
-
- if (err != KErrNone)
- {
- FLOG( _L("### CAspSyncUtil::OpenSyncSessionL: RSyncMLSession::OpenL failed (%d) ###"), err);
-
- iSyncSession.Close(); // can be done always
- User::Leave(err);
- }
- else
- {
- FLOG( _L("CAspSyncUtil::OpenSyncSessionL: RSyncMLSession::OpenL ok") );
- }
-
- iSyncSessionOpen = ETrue;
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CloseSyncSession
-//
-// -----------------------------------------------------------------------------
-//
-void CAspSyncUtil::CloseSyncSession()
- {
- if (iSyncSessionOpen)
- {
- iSyncSession.Close();
- iSyncSessionOpen = EFalse;
- }
- }
-
-
-// End of file
-