diff -r a5fecba4b1e4 -r 7464c1e21dae deviceupdatesui/deviceupdates/src/dminforetrieval.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deviceupdatesui/deviceupdates/src/dminforetrieval.cpp Fri Mar 19 04:28:07 2010 +0530 @@ -0,0 +1,545 @@ +/* +* Copyright (c) 2002-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: Provides methods for DmInfo class. +* +*/ + +#include +#include +#include +#include "dmadvancedview.h" +#include "NSmlDMSyncPrivateCRKeys.h" +#include "dminforetrieval.h" + +DmInfo::DmInfo(DmAdvancedView* serversview, QGraphicsItem* /*parent*/) + { + iAppEngine = CNSmlDMSyncAppEngine::NewL(this); + iSyncProfileList = CNSmlDMSyncProfileList::NewL( iAppEngine ); + iProfileList = new (ELeave) CArrayFixFlat< TNSmlDMProfileItem >(1); + iDbNotifier = CNSmlDMDbNotifier::NewL( iAppEngine->Session(), this ); + iDbNotifier->RequestL(); + serversView = serversview; + iDbEventsBlocked = EFalse; + } + +DmInfo::~DmInfo() + { + delete iProfileList; + delete iSyncProfileList; + delete iAppEngine; + delete iDbNotifier; + } + +void DmInfo::refreshProfileList(TBool aIncludeHidden ) + { + FLOG( "[OMADM] DmInfo::refreshProfileList" ); + iProfileList->Reset(); + TKeyArrayFix key(_FOFF( TNSmlDMProfileItem, iProfileName ), ECmpFolded16 ); + iProfileList->Sort(key); + iSyncProfileList->Reset(); + TRAPD( error, iSyncProfileList->ReadProfileItemsL( aIncludeHidden ) ); + if ( error != KErrNone ) + { + iSyncProfileList->Reset(); + } + + //read profile values + for ( TInt index = 0; index < iSyncProfileList->Count(); index++ ) + { + TNSmlDMProfileItem profile; + profile.iProfileName = iSyncProfileList->Item( index ).iProfileName; + if ( profile.iProfileName.Length() == 0 ) + { + //StringLoader::Load( profile.iProfileName, R_QTN_APPS_EMPTYPROFILE ); + TBuf<20> noname(_L("No NAME")); + profile.iProfileName = noname; + } + profile.iProfileId = iSyncProfileList->Item( index ).iProfileId; + profile.iBearer = iSyncProfileList->Item( index ).iBearer; + profile.iSynced = iSyncProfileList->Item( index ).iSynced; + profile.iLastSync = iSyncProfileList->Item( index ).iLastSync; + profile.iLastSuccessSync = iSyncProfileList->Item( index ).iLastSuccessSync; + profile.iActive = iSyncProfileList->Item( index ).iActive; + profile.iDeleteAllowed = iSyncProfileList->Item( index ).iDeleteAllowed; + profile.iProfileLocked = iSyncProfileList->Item( index ).iProfileLocked; + TInt start = 0; + TBool found( EFalse ); + if ( iProfileList->Count() == 0 ) + { + iProfileList->AppendL ( profile ); + } + else + { + while ( ( start < iProfileList->Count() ) && ( !found ) ) + { + if ( iAppEngine->Compare( profile.iProfileName, + iProfileList->At( start ).iProfileName ) < 1 ) + { + iProfileList->InsertL( start, profile ); + found = ETrue; + } + start++; + } + if ( !found ) //insert to the end of the list + { + iProfileList->AppendL( profile ); + } + } + } + FLOG( "[OMADM] CNSmlDMSyncDocument::ReadProfileListL() completed" ); + } + +int DmInfo::profilescount() + { + return iProfileList->Count(); + } + +int DmInfo::profileinfo(int profilelistnum, QStringList& itemtext, int& icon, bool& lock) + { + //TNSmlDMProfileItem* item = ProfileItemAt(profilelistnum); + TBuf text; + TBuf timeString; + TBuf dateString; + HBufC* timeFormatted; + + TBool settingEnforcement = TUtil::SettingEnforcementState(); + TBool btObex = FeatureManager::FeatureSupported(KFeatureIdSyncMlDmObex); + + if(profilelistnum >= 0 && iProfileList->Count() > 0) + { + + QString text = QString::fromUtf16(iProfileList->At( profilelistnum ).iProfileName.Ptr(), + iProfileList->At( profilelistnum ).iProfileName.Length()); + itemtext << text ; + if(iProfileList->At( profilelistnum ).iSynced) + { + timeFormatted = TUtil::SyncTimeLC( ( iProfileList->At( profilelistnum ).iLastSuccessSync )); + QString time = QString::fromUtf16(timeFormatted->Ptr(), + timeFormatted->Length()); + itemtext << time ; + CleanupStack::PopAndDestroy(1); + } + else + { + itemtext << hbTrId("txt_device_update_dblist_server_view_l2"); + } + if ( ( iProfileList->At( profilelistnum ).iBearer == EProfileInternet )) + { + icon = 0; + } + else + { + //Bluetooth + icon = 1; + } + + TInt id = DefaultFotaProfileIdL(); + if( id == iProfileList->At( profilelistnum ).iProfileId) + { + //Check default or not + //If default icon = 3; + icon = 2 ; + } + + if(settingEnforcement || ( iProfileList->At( profilelistnum ).iProfileLocked)) + { + lock = true; + } + return 1; + } + else + return 0; + } + +// ----------------------------------------------------------------------------- +// DmInfo::DefaultFotaProfileIdL +// ----------------------------------------------------------------------------- +// +TInt DmInfo::DefaultFotaProfileIdL() const + { + FLOG( "[OMADM] CNSmlDMFotaModel::DefaultFotaProfileIdL()" ); + TInt profileId( KErrNotFound ); + CRepository* centrep = NULL; + TRAPD( err, centrep = CRepository::NewL( KCRUidNSmlDMSyncApp ) ); + FTRACE( FPrint( _L( + "[OMADM] CNSmlDMFotaModel::DefaultFotaProfileIdL(), opening cenrep returned %d" ), + err ) ); + User::LeaveIfError( err ); + centrep->Get( KNSmlDMDefaultFotaProfileKey, profileId ); + delete centrep; + FTRACE( FPrint( _L( + "[OMADM] CNSmlDMFotaModel::DefaultFotaProfileIdL() completed, profileId = %d" ), + profileId ) ); + return profileId; + } + +// ----------------------------------------------------------------------------- +// DmInfo::SetDefaultFotaProfileIdL +// ----------------------------------------------------------------------------- +// +void DmInfo::SetDefaultFotaProfileIdL( const TInt aProfileId ) + { + FLOG( "[OMADM] CNSmlDMFotaModel::SetDefaultFotaProfileIdL()" ); + + CRepository* centrep = NULL; + TRAPD( err, centrep = CRepository::NewL( KCRUidNSmlDMSyncApp ) ); + FTRACE( FPrint( _L( + "[OMADM] CNSmlDMFotaModel::SetDefaultFotaProfileIdL(), opening cenrep returned %d" ), + err ) ); + + User::LeaveIfError( err ); + centrep->Set( KNSmlDMDefaultFotaProfileKey, aProfileId ); + delete centrep; + + FLOG( "[OMADM] CNSmlDMFotaModel::SetDefaultFotaProfileIdL() completed" ); + } + +void DmInfo::setDefaultProfile(int listitem) + { + if(listitem >= 0&& listitem < profilescount()) + { + SetDefaultFotaProfileIdL(iProfileList->At( listitem ).iProfileId); + FLOG( "[OMADM] default profile set done" ); + } + else + { + FLOG( "[OMADM] Invalid list item" ); + } + } + +bool DmInfo::Isprofilelocked(int profilelistnum) + { + bool lock = false; + if(profilelistnum >= 0 && iProfileList->Count() > 0) + { + TBool settingEnforcement = TUtil::SettingEnforcementState(); + if(settingEnforcement || ( iProfileList->At( profilelistnum ).iProfileLocked)) + { + lock = true; + } + } + return lock; + } + + +bool DmInfo::Isdefaultprofile(int profilelistnum) + { + bool defaultprofile = false; + if(profilelistnum >= 0 && iProfileList->Count() > 0) + { + TInt id = DefaultFotaProfileIdL(); + if( id == iProfileList->At( profilelistnum ).iProfileId) + { + defaultprofile = true; + } + } + return defaultprofile; + } + +void DmInfo::profileTransport(int profilelistnum, int& transport) + { + if(profilelistnum >= 0 && profilelistnum < profilescount()) + { + if ( ( iProfileList->At( profilelistnum ).iBearer == EProfileInternet )) + { + transport = 0; + FLOG( "[OMADM] DmInfo::profileTransport Internet" ); + } + else + { + transport = 1; + FLOG( "[OMADM] DmInfo::profileTransport Bluetooth" ); + } + FLOG( "[OMADM] DmInfo::profileTransport set done" ); + } + else + { + FLOG( "[OMADM] Invalid list item" ); + } + } + +// ----------------------------------------------------------------------------- +// CNSmlDMSyncDocument::DeleteProfile +// ----------------------------------------------------------------------------- +// +TInt DmInfo::DeleteProfile( TInt& aIndex ) + { + FTRACE( FPrint( + _L("[OMADM] CNSmlDMSyncDocument::DeleteProfile(), index = %d"), + aIndex ) ); + + TInt retVal = KErrNotFound; + TInt profcount = iProfileList->Count(); + if ( profcount <= 0 && aIndex >= profcount && aIndex < 0) + { + return retVal; + } + TRAP( retVal, iAppEngine->DeleteProfileL( + (*iProfileList)[aIndex].iProfileId ) ); + if ( retVal == KErrNone ) + { + //Update profile list + refreshProfileList(); + } + + FTRACE( FPrint( + _L("[OMADM] CNSmlDMSyncDocument::DeleteProfile() completed, retval = %d"), + retVal) ); + return retVal; + } + +bool DmInfo::createNewprofile() + { + iProfileId = iAppEngine->CreateProfileL(); + if(iProfileId > 0) + return true; + else + return false; + } + + +int DmInfo::saveProfile(QStringList& itemdata, bool& sessmode, QString& currap,unsigned int& portnum, bool& nauth ) + { + Q_UNUSED(sessmode); + Q_UNUSED(nauth); + FLOG( "[OMADM] void CNSmlDMDlgProfileView::SaveProfileL:" ); + TRAPD( err, iProfile = iAppEngine->OpenProfileL( iProfileId, ESmlOpenReadWrite ) ); + if( err != KErrNone ) + { + FLOG( "[OMADM] err != KErrNone--problem in opening the profile" ); + return false; + } + TPtrC srvname(reinterpret_cast(itemdata[0].constData())); + // Server name + iProfile->SetNameL( srvname ); + // Server Id + TPtrC srvid(reinterpret_cast(itemdata[1].constData())); + iProfile->SetServerIdL(srvid ); + // Server password + TPtrC srvpwd(reinterpret_cast(itemdata[2].constData())); + iProfile->SetServerPasswordL(srvpwd ); + // connection type + iProfile->SetBearerTypeL( EAspBearerInternet ); + // Accesspoint + if(currap.length()) + iProfile->SetAccessPointL( iapmap[currap] ); + else + iProfile->SetAccessPointL( KErrGeneral ); //Default access point + // Host address + TInt num = portnum; + TPtrC hostaddr(reinterpret_cast(itemdata[3].constData())); + iProfile->SetHostAddressL( hostaddr, num ); + // User name + TPtrC usrname(reinterpret_cast(itemdata[4].constData())); + iProfile->SetUserNameL( usrname ); + // User password + TPtrC usrpwd(reinterpret_cast(itemdata[5].constData())); + iProfile->SetPasswordL( usrpwd ); + // Http authentication + iProfile->SetHttpUsedL( nauth ); + // http username + TPtrC httpusrname(reinterpret_cast(itemdata[6].constData())); + iProfile->SetHttpUserNameL( httpusrname ); + // http password + TPtrC httpusrpwd(reinterpret_cast(itemdata[7].constData())); + iProfile->SetHttpPasswordL( httpusrpwd ); + // iProfile->SetCreatorId( KUidSmlSyncApp.iUid ); + iProfileId = 0; + iProfile->SaveL(); + iAppEngine->CloseProfile(); + refreshProfileList();//updates profile list + return 1; + } + +bool DmInfo::getProfiledata(int& itemnum, QStringList& itemdata, + bool& sessmode, QStringList& iaplist, int& curriap, int& portnum, + bool& nwauth) + { + if (itemnum >= 0 && iProfileList->Count() > 0) + { + iProfileId = iProfileList->At(itemnum).iProfileId; + } + TRAPD( err, iProfile = iAppEngine->OpenProfileL( iProfileId, ESmlOpenRead ) ); + if (err == 0) + { + //srvname + TBuf bufdata; + iProfile->GetName(bufdata); + itemdata << QString::fromUtf16(bufdata.Ptr(), bufdata.Length()); + + //srvid + iProfile->GetServerId(bufdata); + itemdata << QString::fromUtf16(bufdata.Ptr(), bufdata.Length()); + + //srvpwd + iProfile->GetServerPassword(bufdata); + itemdata << QString::fromUtf16(bufdata.Ptr(), bufdata.Length()); + + //hostaddress + + iProfile->GetHostAddress(bufdata, portnum); + itemdata << QString::fromUtf16(bufdata.Ptr(), bufdata.Length()); + + //username + iProfile->GetUserName(bufdata); + itemdata << QString::fromUtf16(bufdata.Ptr(), bufdata.Length()); + + //usrpwd + iProfile->GetPassword(bufdata); + itemdata << QString::fromUtf16(bufdata.Ptr(), bufdata.Length()); + + //nwusrname + iProfile->GetHttpUserNameL(bufdata); + itemdata << QString::fromUtf16(bufdata.Ptr(), bufdata.Length()); + + //nwpwd + iProfile->GetHttpPasswordL(bufdata); + itemdata << QString::fromUtf16(bufdata.Ptr(), bufdata.Length()); + + //connection type + int transporttype = iProfile->BearerType(); + if (((transporttype != EProfileObexBlueTooth) && (transporttype + != EProfileInternet)) || transporttype == EProfileInternet) + { + //default to internet + sessmode = true; + } + else + sessmode = false; + int apid = iProfile->AccessPointL(); + curriap = apid; + getIaplist(iaplist, apid, curriap); //append default connection to list + TBuf<20> apnum; + RDebug::RawPrint(_L("omadm access point is")); + apnum.AppendNum(curriap); + RDebug::RawPrint(apnum); + //check iap id exists or not + nwauth = iProfile->HttpUsedL(); + return true; + } + else + { + return false; + } + } + +bool DmInfo::checksrvid(QString& serverid) + { + TPtrC srvid(reinterpret_cast (serverid.constData())); + return iAppEngine->ServerIdFoundL(srvid, iProfileId); + } + +void DmInfo::getIaplist(QStringList& iaplist, int& iapselected, + int& listindex) + { + iapmap.clear(); + RCmManager cmManager; + cmManager.OpenLC(); + RArray iapidlist; + cmManager.ConnectionMethodL(iapidlist, EFalse, EFalse, ETrue); + RCmConnectionMethod conn; + for (TInt i = 0; i < iapidlist.Count(); i++) + { + TRAPD(err, conn = cmManager.ConnectionMethodL( iapidlist[i] )); + + if (err == KErrNone)//connection method exists + { + CleanupClosePushL(conn); + HBufC* name = conn.GetStringAttributeL(CMManager::ECmName); + QString iapname = QString::fromUtf16(name->Ptr(), name->Length()); + iaplist << iapname; + iapmap[iapname] = iapidlist[i]; + if (iapselected == iapidlist[i]) + { + RDebug::RawPrint(_L("omadm iap found")); + listindex = iapmap.count() - 1; + } + delete name; + + CleanupStack::PopAndDestroy(1); // conn + } + } + CleanupStack::PopAndDestroy(1); // cmManager + } + +void DmInfo::synchronize(int& itemnum) + { + TBool fotanote = EFalse; + DisableDbNotifications(ETrue); + TRAPD( error, iAppEngine->SynchronizeL( iProfileList->At( itemnum ).iProfileName, + iProfileList->At( itemnum ).iProfileId, + iProfileList->At( itemnum ).iBearer,fotanote ) ); + if(error == KErrNone) {} + } + +void DmInfo::synccomplete(int jobstatus) + { + if (jobstatus == ENSmlSyncComplete) + { + //iSyncProfileList->ReadProfileItemsL(); + //Update profile list + refreshProfileList(); + } + serversView->syncCompleted(jobstatus); + iDbEventsBlocked = EFalse; + } + +// ----------------------------------------------------------------------------- +// HandleDbEventL +// ----------------------------------------------------------------------------- +// +void DmInfo::HandleDbEventL(TNSmlDMDbEvent aEvent) + { + FLOG( "[OMADM] DmInfo::HandleDbEventL:" ); + + if (!iDbEventsBlocked) + { + switch (aEvent.iType) + { + case CNSmlDMDbNotifier::EClose: + iAppEngine->SyncCompleted(ENSmlRefreshMainView); + break; + + case CNSmlDMDbNotifier::EUpdate: + iSyncProfileList->ReadProfileItemL(aEvent.iProfileId); + iAppEngine->SyncCompleted(ENSmlRefreshMainView); + break; + + case CNSmlDMDbNotifier::EDelete: + iSyncProfileList->Remove(aEvent.iProfileId); + iAppEngine->SyncCompleted(ENSmlRefreshMainView); + break; + + case CNSmlDMDbNotifier::EUpdateAll: + iSyncProfileList->ReadProfileItemsL(); + iAppEngine->SyncCompleted(ENSmlRefreshMainView); + break; + + default: + break; + } + } + FLOG( "[OMADM] DmInfo::HandleDbEventL() completed" ); + } + +// ----------------------------------------------------------------------------- +// DisableDbNotifications +// ----------------------------------------------------------------------------- +// +void DmInfo::DisableDbNotifications(TBool aEvent) + { + iDbEventsBlocked = aEvent; + FLOG( "[OMADM] DmInfo::DisableDbNotifications() completed" ); + } +