--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/remotestoragefw/rsfwnotifierplugins/src/rsfwnotpluginnamedialog.cpp Wed Sep 01 12:15:08 2010 +0100
@@ -0,0 +1,164 @@
+/*
+* Copyright (c) 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: File name query dialog for "save as" dialog
+*
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+#include <rsfwnotplugindlg.rsg>
+#include <StringLoader.h>
+#include <aknnotewrappers.h>
+#include <bautils.h>
+#include "rsfwnotpluginnamedialog.h"
+
+// Left to right and right to left markers
+_LIT( KDirectionalChars, "\x202A\x202B\x202C\x202D\x200E\x200F" );
+
+
+
+
+// -----------------------------------------------------------------------------
+// CRsfwNotPluginNameDialog::NewL
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CRsfwNotPluginNameDialog* CRsfwNotPluginNameDialog::NewL(
+ const TDesC& aOldName,
+ TDes& aNewName,
+ RFs& aFs)
+ {
+ CRsfwNotPluginNameDialog* self =
+ new( ELeave ) CRsfwNotPluginNameDialog(
+ aNewName, aFs);
+
+ CleanupStack::PushL( self );
+ self->ConstructL( aOldName );
+ CleanupStack::Pop( self );
+
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CRsfwNotPluginNameDialog::CRsfwNotPluginNameDialog
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CRsfwNotPluginNameDialog::CRsfwNotPluginNameDialog(
+ TDes& aNewName, RFs& aFs ) :
+ CAknTextQueryDialog( aNewName ), iFs(aFs)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CRsfwNotPluginNameDialog::ConstructL
+//
+// -----------------------------------------------------------------------------
+//
+void CRsfwNotPluginNameDialog::ConstructL( const TDesC& aOldName )
+ {
+ TParsePtrC name( aOldName );
+ Text().Copy( name.NameAndExt() );
+ iOldName = aOldName.AllocL();
+
+ // Strip any directionality markers to get pure name
+ TPtr ptr( iOldName->Des() );
+ AknTextUtils::StripCharacters( ptr, KDirectionalChars );
+ }
+
+// -----------------------------------------------------------------------------
+// CRsfwNotPluginNameDialog::~CRsfwNotPluginNameDialog
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CRsfwNotPluginNameDialog::~CRsfwNotPluginNameDialog()
+ {
+ delete iOldName;
+ }
+
+// -----------------------------------------------------------------------------
+// CRsfwNotPluginNameDialog::OkToExitL
+//
+// -----------------------------------------------------------------------------
+//
+TBool CRsfwNotPluginNameDialog::OkToExitL( TInt aButtonId )
+ {
+ TBool result( CAknTextQueryDialog::OkToExitL( aButtonId ) );
+
+ HBufC* userText = Text().AllocLC();
+ TPtr ptrUserText( userText->Des() );
+
+ // Strip any directionality markers to get pure name
+ AknTextUtils::StripCharacters( ptrUserText, KDirectionalChars );
+
+ // Check file name
+ TBool isValidName( EFalse );
+ TText badChar(NULL);
+ isValidName = iFs.IsValidName(*userText, badChar);
+
+
+ if( !isValidName )
+ {
+ TBuf<5> dotbuf;
+ dotbuf.Append(KDot);
+ TChar dot(dotbuf[0]);
+ if (badChar == dot)
+ {
+ // dot is a special case, as "." or ".." are illegal file names
+ // but for example "file.name" is not, and thus dot is not mentioned
+ // in R_RD_FLDR_ILLEGAL_CHARACTERS
+ ShowSimpleInfoNoteL(R_RD_FLDR_BAD_FILE_NAME );
+ }
+ else
+ {
+ ShowSimpleInfoNoteL(R_RD_FLDR_ILLEGAL_CHARACTERS );
+ }
+
+ CAknQueryControl* queryControl = QueryControl();
+ if (queryControl)
+ {
+ CEikEdwin* edwin = static_cast< CEikEdwin* >(
+ queryControl->ControlByLayoutOrNull( EDataLayout ) );
+ if (edwin)
+ {
+ edwin->SetSelectionL( edwin->TextLength(), 0 );
+ }
+ }
+ CleanupStack::PopAndDestroy( userText );
+ return EFalse;
+ }
+ CleanupStack::PopAndDestroy( userText );
+ return result;
+
+ }
+
+
+// ------------------------------------------------------------------------------
+// CRsfwNotPluginNameDialog::ShowSimpleInfoNoteL
+//
+// ------------------------------------------------------------------------------
+//
+void CRsfwNotPluginNameDialog::ShowSimpleInfoNoteL(
+ const TInt aTextId)
+ {
+ HBufC* text = NULL;
+ text = StringLoader::LoadLC( aTextId );
+ CAknInformationNote* dlg = new(ELeave) CAknInformationNote( ETrue );
+ dlg->ExecuteLD( *text );
+ CleanupStack::PopAndDestroy( text );
+ }
+
+
+