camerauis/cameraapp/generic/src/Camdefaultnamesettingpage.cpp
changeset 0 1ddebce53859
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/src/Camdefaultnamesettingpage.cpp	Thu Jan 07 16:18:56 2010 +0200
@@ -0,0 +1,155 @@
+/*
+* Copyright (c) 2007 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:  Setting item page for default name (text/date).*
+*/
+
+
+
+// INCLUDE FILES
+#include "Camdefaultnamesettingpage.h"
+#include "CamUtility.h"
+#include "CamAppUi.h"
+
+#include <cameraapp.rsg>
+#include <vgacamsettings.rsg>
+
+#include <AknQueryDialog.h>
+#include <StringLoader.h>
+
+// CONSTANTS
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// ---------------------------------------------------------------------------
+// CCamDefaultNameSettingPage::CCamDefaultNameSettingPage
+// C++ constructor
+// ---------------------------------------------------------------------------
+//
+CCamDefaultNameSettingPage::CCamDefaultNameSettingPage(
+    TDes&           aNameBase,
+    TCamCameraMode  aMode,
+    const TDesC*    aSettingTitleText, 
+    TInt            aSettingNumber, 
+    TInt            aControlType,
+    TInt            aEditorResourceId, 
+    TInt            aSettingPageResourceId,
+    MAknQueryValue& aQueryValue )
+    : CAknPopupSettingPage( aSettingTitleText, aSettingNumber,
+                            aControlType, aEditorResourceId,
+                            aSettingPageResourceId,
+                            aQueryValue ),
+      iNameBase( aNameBase ),
+      iMode( aMode )
+    {
+    }
+    
+
+// ---------------------------------------------------------------------------
+// CCamDefaultNameSettingPage::~CCamDefaultNameSettingPage
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CCamDefaultNameSettingPage::~CCamDefaultNameSettingPage()
+    {
+    }
+
+
+// ---------------------------------------------------------------------------
+// CCamDefaultNameSettingPage::OkToExitL
+// Check if the name base value is ok, so the user can
+// exit the setting page.
+// ---------------------------------------------------------------------------
+//
+TBool CCamDefaultNameSettingPage::OkToExitL( TBool aAccept )
+    {
+    if ( aAccept )
+        {
+        iTempNameBase = iNameBase;
+        
+        if ( QueryValue()->CurrentValueIndex() == ECamNameBaseText )
+            {
+            // Ensure application is in editing orientation
+            CCamAppUi* appUi = static_cast<CCamAppUi*>( CEikonEnv::Static()->AppUi() );
+            TInt editingOrientation = CAknAppUiBase::EAppUiOrientationUnspecified;
+            TInt error = CamUtility::GetPsiInt( ECamPsiEditingOrientation, editingOrientation );
+            if ( !error )
+                {
+                appUi->SwitchOrientationIfRequiredL( editingOrientation );
+                }  
+            // Show the editor dialog                
+            TBool editorRet = EFalse;  
+            // Trap this to make sure the orientation is reverted back to normal   
+            TRAPD( leaveErr, editorRet = ShowEditorDialogL() )
+            appUi->SwitchOrientationIfRequiredL( CAknAppUiBase::EAppUiOrientationUnspecified );
+            User::LeaveIfError( leaveErr ); 
+            return editorRet;
+            }
+        }
+    return ETrue;
+    }
+ 
+// ---------------------------------------------------------------------------
+// CCamDefaultNameSettingPage::ShowEditorDialogL
+// Display the text editor dialog
+// ---------------------------------------------------------------------------
+//
+TBool CCamDefaultNameSettingPage::ShowEditorDialogL()    
+    {
+    TBool done = EFalse;
+    while ( !done )
+        {
+        // Show data query
+        HBufC* prompt = NULL;
+        if ( ECamControllerVideo == iMode )
+            {
+            prompt = StringLoader::LoadLC( R_CAM_QUERY_DEFAULT_VIDEO_NAME );
+            }
+        else
+            {
+            prompt = StringLoader::LoadLC( R_CAM_QUERY_DEFAULT_IMAGE_NAME );
+            }
+
+        CAknTextQueryDialog* nameQuery = 
+                    CAknTextQueryDialog::NewL( iTempNameBase );
+
+        nameQuery->SetMaxLength( KMaxNameBaseLength );
+        nameQuery->PrepareLC( R_CAM_RENAME_QUERY );
+        nameQuery->SetPromptL( *prompt );
+
+        TBool res = ( nameQuery->RunLD() == EAknSoftkeyOk );
+
+        CleanupStack::PopAndDestroy(); // prompt
+
+        if ( !res )
+            {
+            // User cancelled the query, return to setting page
+            return EFalse;
+            }
+
+        // Check base name validity
+        res = CamUtility::CheckFileNameValidityL( iTempNameBase );
+
+        if ( res )
+            {
+            // New name base was valid, exit setting page
+            iNameBase = iTempNameBase;
+            return res;
+            }
+
+        // Show data query again
+        }
+    // should never get here        
+    return EFalse;
+    }
+// end of file