diff -r 88ee4cf65e19 -r 1aa8c82cb4cb remotestoragefw/mountmanager/src/rsfwmountentry.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remotestoragefw/mountmanager/src/rsfwmountentry.cpp Wed Sep 01 12:15:08 2010 +0100 @@ -0,0 +1,239 @@ +/* +* Copyright (c) 2002-2004 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: Mount configuration entry + * +*/ + + +// INCLUDE FILES +#include +#include +#include "rsfwmountutils.h" + +// ============================ MEMBER FUNCTIONS ============================== + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::NewLC +// ---------------------------------------------------------------------------- +// +EXPORT_C CRsfwMountEntry* CRsfwMountEntry::NewLC() + { + CRsfwMountEntry* self = new (ELeave) CRsfwMountEntry(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::NewL +// ---------------------------------------------------------------------------- +// +EXPORT_C CRsfwMountEntry* CRsfwMountEntry::NewL() + { + CRsfwMountEntry* self = NewLC(); + CleanupStack::Pop(self); + return self; + } + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::CRsfwMountEntry +// ---------------------------------------------------------------------------- +// +CRsfwMountEntry::CRsfwMountEntry() + { + } + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::~CRsfwMountEntry +// ---------------------------------------------------------------------------- +// +EXPORT_C CRsfwMountEntry::~CRsfwMountEntry() + { + Clear(); + iFs.Close(); + } + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::SetItemL +// ---------------------------------------------------------------------------- +// +EXPORT_C void CRsfwMountEntry::SetItemL(TInt aIndex, const TDesC& aValue) + { + TChar driveChar; + + if ((aIndex < EMountEntryItemIndex) || (aIndex >= EMountEntryItemCount)) + { + User::Leave(KErrArgument); + } + + switch (aIndex) + { + case EMountEntryItemName: + if (aValue.Length() > KMaxMountNameLength) + { + User::Leave(KErrArgument); + } + // name must not contain chars not allowed in Symbian file names + // as the name will be stored as drive friendly name + // (rules for allowed chars are the same) + if (!(RsfwMountUtils::IsFriendlyNameValid(aValue))) + { + User::Leave(KErrArgument); + } + break; + case EMountEntryItemUri: + if (aValue.Length() > KMaxMountUriLength) + { + User::Leave(KErrArgument); + } + break; + case EMountEntryItemUserName: + if (aValue.Length() > KMaxMountUserNameLength) + { + User::Leave(KErrArgument); + } + break; + case EMountEntryItemPassword: + if (aValue.Length() > KMaxMountPasswordLength) + { + User::Leave(KErrArgument); + } + break; + case EMountEntryItemDrive: + // remote drives can take drive letters from J through Y + // (see documentation for RFs::DriveList()) + driveChar = aValue[0]; + TInt driveNumber; + User::LeaveIfError(iFs.CharToDrive(driveChar, driveNumber)); + if (!((driveNumber >= EDriveJ) && (driveNumber < EDriveZ))) + { + User::Leave(KErrArgument); + } + break; + default: + // check that the value is not too long + if (aValue.Length() > KMaxMountConfItemLength) + { + User::Leave(KErrArgument); + } + break; + } + + HBufC*& p = iMountEntryItems[aIndex]; + if (p) + { + delete p; + p = NULL; + } + p = aValue.AllocL(); + } + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::SetItemL +// ---------------------------------------------------------------------------- +// +EXPORT_C void CRsfwMountEntry::SetItemL(TInt aIndex, const TDesC8& aValue) + { + HBufC* p = HBufC::NewLC(aValue.Length()); + TPtr pPtr = p->Des(); + pPtr.Copy(aValue); + SetItemL(aIndex, pPtr); + CleanupStack::PopAndDestroy(p); + } + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::SetEntryL +// ---------------------------------------------------------------------------- +// +EXPORT_C void CRsfwMountEntry::SetEntryL(TInt aIndex, + const TDesC& aName, + TChar aDriveLetter, + const TDesC& aUri, + const TDesC& aUserName, + const TDesC& aPassword, + const TDesC& aIap) + { + TBuf index; + index.Num(aIndex); + SetItemL(EMountEntryItemIndex, index); + SetItemL(EMountEntryItemName, aName); + TBuf drive; + drive.Append(aDriveLetter); + SetItemL(EMountEntryItemDrive, drive); + SetItemL(EMountEntryItemUri, aUri); + SetItemL(EMountEntryItemUserName, aUserName); + SetItemL(EMountEntryItemPassword, aPassword); + SetItemL(EMountEntryItemIap, aIap); + } + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::Item +// ---------------------------------------------------------------------------- +// +EXPORT_C const HBufC* CRsfwMountEntry::Item(TInt aIndex) const + { + if ((aIndex >= EMountEntryItemIndex) && (aIndex < EMountEntryItemCount)) + { + return iMountEntryItems[aIndex]; + } + return NULL; + } + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::Clear +// ---------------------------------------------------------------------------- +// +EXPORT_C void CRsfwMountEntry::Clear() + { + TInt i; + for (i = EMountEntryItemIndex; i < EMountEntryItemCount; i++) + { + if (iMountEntryItems[i]) + { + delete iMountEntryItems[i]; + iMountEntryItems[i] = NULL; + } + } + } + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::CloneL +// ---------------------------------------------------------------------------- +// +EXPORT_C CRsfwMountEntry* CRsfwMountEntry::CloneL() const + { + CRsfwMountEntry* entry = CRsfwMountEntry::NewLC(); + TInt i; + for (i = EMountEntryItemIndex; i < EMountEntryItemCount; i++) + { + HBufC* item = iMountEntryItems[i]; + if (item) + { + entry->iMountEntryItems[i] = (*item).AllocL(); + } + } + CleanupStack::Pop(entry); + return entry; + } + +// ---------------------------------------------------------------------------- +// CRsfwMountEntry::ConstructL +// ---------------------------------------------------------------------------- +// +void CRsfwMountEntry::ConstructL() + { + User::LeaveIfError(iFs.Connect()); + } + +// End of File