diff -r 000000000000 -r 40261b775718 mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/src/MVSSaveAsDialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmlibs/mmfw/tsrc/mmvalidationsuite/mmvalidationsuiteapp/src/MVSSaveAsDialog.cpp Tue Feb 02 01:56:55 2010 +0200 @@ -0,0 +1,118 @@ +// Copyright (c) 2005-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: +// MVSSavaAeDialog.cpp +// Part of the MVS Application for TechView +// + +#include "MVSSaveAsDialog.h" +#include "MVSApp.hrh" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +_LIT(KAnyFile,"*"); +const TInt KShortErrorMessageLength = 64; +const TInt KMaxDisplayedFullNameLen = 35; + +TInt CMVSSaveAsDialog::SetupDialogLD(TDes& aFileName, TBool* aReplace) + { + CMVSSaveAsDialog* dialog = new(ELeave) CMVSSaveAsDialog(aFileName, aReplace); + TInt val = dialog->ExecuteLD(R_EIK_DIALOG_FILE_SAVEAS); + return val; + } + +CMVSSaveAsDialog::CMVSSaveAsDialog(TDes& aFilename, TBool* aReplace):CEikFileSaveAsDialog(&aFilename),iFilename(aFilename) + { + iReplace = aReplace; + } + +TBool CMVSSaveAsDialog::OkToExitL(TInt aButtonId) + + { + if (aButtonId==EEikBidBrowse) + { + HandleBrowseButtonL(); + return EFalse; + } + else + { + CEikFileNameEditor* fileNameEditor=(CEikFileNameEditor*)(Control(EEikCidFileNameEd)); + TFileName* fullName=new(ELeave) TFileName; + CleanupStack::PushL(fullName); + fileNameEditor->GetFullNameL(*fullName); + TUint attributes=0; + if (!ConeUtils::FileExists(*fullName)) + { + ConeUtils::EnsurePathExistsL(*fullName); + } + else + { + TBuf<32> infoDialogTitle; + iEikonEnv->ReadResource(infoDialogTitle,R_EIK_TBUF_DIALOG_TITLE_CONFIRM_FILE_REPLACE); + TBuf formatStr; + User::LeaveIfError(iEikonEnv->FsSession().Att(*fullName,attributes)); + if (attributes&KEntryAttReadOnly) + { + iEikonEnv->LeaveWithInfoMsg(R_EIK_TBUF_CANNOT_REPLACE_READONLY_FILE); + } + else + { + iEikonEnv->ReadResource(formatStr,R_EIK_TBUF_FILE_REPLACE_CONFIRM1); + } + TBuf abbrevName; + User::LeaveIfError(EikFileUtils::Parse(*fullName)); + TParsePtr parse(*fullName); + EikFileUtils::AbbreviateFileName(parse.NameAndExt(),abbrevName); + TBuf textMsg; + textMsg.Format(formatStr,&abbrevName); + CEikDialog* infoDialog=new(ELeave) CEikInfoDialog(infoDialogTitle,textMsg,CEikInfoDialog::EIgnoreEnter); + *iReplace = infoDialog->ExecuteLD(R_EIK_DIALOG_SINGLE_FILE_REPLACE); + } + // check disk is present in selected drive + TParsePtrC parse(*fullName); + TPtrC drv=parse.Drive(); + TBuf<4> root(drv); + root.Append(TChar(KPathDelimiter)); + root.Append(KAnyFile); + RDir dir; + const TInt ret=dir.Open(iEikonEnv->FsSession(),root,EFileRead|EFileShareAny); + if (ret==KErrNotReady) + { + iEikonEnv->LeaveWithInfoMsg(R_EIK_TBUF_DISK_NOT_PRESENT); + } + if (ret==KErrNone) + { + dir.Close(); + } + // + iFilename=*fullName; + CleanupStack::PopAndDestroy(); // fullName + return ETrue; + } + }