camerauis/cameraapp/generic/src/CamStandbyContainer.cpp
branchRCL_3
changeset 20 38fb6f7eacd5
parent 12 8c55c525d5d7
child 31 8f559c47d7fd
--- a/camerauis/cameraapp/generic/src/CamStandbyContainer.cpp	Wed Apr 14 15:41:04 2010 +0300
+++ b/camerauis/cameraapp/generic/src/CamStandbyContainer.cpp	Tue Apr 27 16:19:06 2010 +0300
@@ -29,6 +29,7 @@
 #include "CamUtility.h"
 #include "CamAppUi.h"
 #include "CamViewBase.h"
+#include "CamPanic.h"
 #include <cameraapp.rsg>
 #include <vgacamsettings.rsg>
 #include <ctsydomainpskeys.h>
@@ -97,64 +98,8 @@
     // AknBidiTextUtils::ConvertToVisualAndWrapToStringL
     iText->UseLogicalToVisualConversion( EFalse );
 
-    // Get label text from resource
-    HBufC* labelText;
-    if ( static_cast<CCamAppUi*>( iEikonEnv->AppUi() )->IsConstructionComplete() )
-        {
-	    switch( aError )
-	        {
-	        case KErrNone:
-	            labelText = StringLoader::LoadLC( R_CAM_STANDBY_TEXT );
-	            break;
-	        case KErrInUse:
-	            labelText = StringLoader::LoadLC( R_CAM_STANDBY_CAMERA_IN_USE_TEXT );
-	            break;
-	        case KErrNoMemory:
-	        	labelText = StringLoader::LoadLC( R_CAM_MEMLO_NOT_ENOUGH_MEMORY );
-	            break;
-	        case KErrPermissionDenied:
-	            labelText = StringLoader::LoadLC( R_CAM_STANDBY_CAMERA_DISABLED_TEXT );
-                break;
-	        default: // any other error
-	            labelText = StringLoader::LoadLC( R_CAM_STANDBY_CAMERA_UNAVAILABLE_TEXT );
-	            break;
-	        }
-        }
-	 else
-        {
-        labelText = StringLoader::LoadLC( R_CAM_STANDBY_EMPTY_TEXT );
-        }        
-
-
-    iText->SetTextL( *labelText );
-    // Wrap the text, where it doesn't fit.
-    // ...Create the line width array necessary for ConvertToVisual..()
-    const TInt KLabelMaxLines = 5;
-    CArrayFix<TInt>* lineWidths = 
-        new ( ELeave ) CArrayFixFlat<TInt> ( KLabelMaxLines );
-    CleanupStack::PushL( lineWidths );
-    for (TInt i = 0; i < KLabelMaxLines; ++i )
-        {
-        lineWidths->AppendL( aRect.Width() );            
-        }
-    // ...Create the text buffer that will receive the wrapped text.
-    iWrappedLabelText = HBufC::NewL(
-        labelText->Length() + KLabelMaxLines * ( KAknBidiExtraSpacePerLine + 1 ) );
-    TPtr ptr = iWrappedLabelText->Des();
-    // ...Get the wrapped text conversion.
-    AknBidiTextUtils::ConvertToVisualAndWrapToStringL(
-        labelText->Des(),
-        *lineWidths,
-        *AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont ),
-        ptr,
-        ETrue
-        );
-    // ...Cleanup
-    CleanupStack::PopAndDestroy( lineWidths );  
-    CleanupStack::PopAndDestroy( labelText );
-
-    // Set the wrapped text to the label.
-    iText->SetTextL( *iWrappedLabelText );
+    SetStandbyErrorL( aError );
+    
 
     // Initialise foreground timer - used to delay the exit
     // from standby when foreground is gained
@@ -305,6 +250,11 @@
 //
 void CCamStandbyContainer::HandleForegroundEventL( TBool aForeground )
     {
+    CCamAppUi* appUi = static_cast<CCamAppUi*>( iEikonEnv->AppUi());
+    if( appUi && !appUi->IsRecoverableStatus() )
+        {
+        return;
+        }
     if ( aForeground )
         {
         // start timer to delay exit from standby
@@ -372,7 +322,9 @@
         aPointerEvent.iType,
         aPointerEvent.iPosition.iX,
         aPointerEvent.iPosition.iY );
-
+      CCamAppUi* appUi = static_cast<CCamAppUi*>( iEikonEnv->AppUi());  
+      if(appUi && !appUi->IsRecoverableStatus())
+          return;
       TInt callType( EPSCTsyCallTypeUninitialized );
       RProperty::Get( KPSUidCtsyCallInformation, KCTsyCallType, callType );
        if ( callType != EPSCTsyCallTypeH324Multimedia)
@@ -394,4 +346,80 @@
         KAknsIIDQsnBgAreaMain, Rect(), EFalse );
     }
 
+void CCamStandbyContainer::SetStandbyErrorL( TInt aError )
+    {
+    iStandbyError = aError;
+    __ASSERT_DEBUG( iText, CamPanic( ECamPanicNullPointer ) );
+    
+    HBufC* labelText;
+    if ( static_cast<CCamAppUi*>( iEikonEnv->AppUi() )->IsConstructionComplete() )
+        {
+        switch( aError )
+            {
+            case KErrNone:
+                labelText = StringLoader::LoadLC( R_CAM_STANDBY_TEXT );
+                break;
+            case KErrInUse:
+                labelText = StringLoader::LoadLC( R_CAM_STANDBY_CAMERA_IN_USE_TEXT );
+                break;
+            case KErrNoMemory:
+                labelText = StringLoader::LoadLC( R_CAM_MEMLO_NOT_ENOUGH_MEMORY );
+                break;
+            case KErrPermissionDenied:
+                labelText = StringLoader::LoadLC( R_CAM_STANDBY_CAMERA_DISABLED_TEXT );
+                break;
+            case ECamErrMassStorageMode:
+                labelText = StringLoader::LoadLC( R_CAM_STANDBY_CAMERA_STORAGE_INACCESSIBLE );
+                break;
+            case ECamErrMemoryCardNotInserted:
+                labelText = StringLoader::LoadLC( R_CAM_STANDBY_CAMERA_INSERT_MMC );
+                break;
+            default: // any other error
+                labelText = StringLoader::LoadLC( R_CAM_STANDBY_CAMERA_UNAVAILABLE_TEXT );
+                break;
+            }
+        }
+     else
+        {
+        labelText = StringLoader::LoadLC( R_CAM_STANDBY_EMPTY_TEXT );
+        }        
+
+
+    //iText->SetTextL( *labelText );
+    // Wrap the text, where it doesn't fit.
+    // ...Create the line width array necessary for ConvertToVisual..()
+    const TInt KLabelMaxLines = 5;
+    CArrayFix<TInt>* lineWidths = 
+        new ( ELeave ) CArrayFixFlat<TInt> ( KLabelMaxLines );
+    CleanupStack::PushL( lineWidths );
+    for (TInt i = 0; i < KLabelMaxLines; ++i )
+        {
+        lineWidths->AppendL( Rect().Width() );            
+        }
+    // ...Create the text buffer that will receive the wrapped text.
+    if( iWrappedLabelText )
+        {
+        delete iWrappedLabelText;
+        iWrappedLabelText = NULL;
+        }
+    iWrappedLabelText = HBufC::NewL(
+        labelText->Length() + KLabelMaxLines * ( KAknBidiExtraSpacePerLine + 1 ) );
+    TPtr ptr = iWrappedLabelText->Des();
+    // ...Get the wrapped text conversion.
+    AknBidiTextUtils::ConvertToVisualAndWrapToStringL(
+        labelText->Des(),
+        *lineWidths,
+        *AknLayoutUtils::FontFromId( EAknLogicalFontPrimaryFont ),
+        ptr,
+        ETrue
+        );
+    // ...Cleanup
+    CleanupStack::PopAndDestroy( lineWidths );  
+    CleanupStack::PopAndDestroy( labelText );
+
+    // Set the wrapped text to the label.
+    iText->SetTextL( *iWrappedLabelText );
+    iText->DrawNow();
+    }
+
 // End of File