meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmfield.cpp
branchRCL_3
changeset 12 4ce476e64c59
parent 0 8466d47a6819
child 16 b5fbb9b25d57
--- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmfield.cpp	Mon Mar 15 12:39:10 2010 +0200
+++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrvieweralarmfield.cpp	Wed Mar 31 21:08:33 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 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"
@@ -20,12 +20,14 @@
 #include "cmrlabel.h"
 #include "cmrimage.h"
 #include "nmrlayoutmanager.h"
+#include "mesmrlistobserver.h"
+#include "cesmrglobalnote.h"
 
 #include <caluser.h>
 #include <calalarm.h>
 #include <calentry.h>
-#include <StringLoader.h>
-#include <AknLayout2ScalableDef.h>
+#include <stringloader.h>
+#include <aknlayout2scalabledef.h>
 #include <esmrgui.rsg>
 
 // DEBUG
@@ -63,7 +65,7 @@
     {
     FUNC_LOG;
     delete iIcon;
-    delete iLabel;
+    delete iLockIcon;
     }
 
 // ---------------------------------------------------------------------------
@@ -74,6 +76,7 @@
     {
     FUNC_LOG;
     SetFieldId ( EESMRFieldAlarm );
+    SetFocusType( EESMRHighlightFocus );
     }
 
 // ---------------------------------------------------------------------------
@@ -85,10 +88,10 @@
     FUNC_LOG;
     iLabel = CMRLabel::NewL();
     iLabel->SetParent( this );
-    iIcon = CMRImage::NewL( KAknsIIDQgnMeetReqIndiAlarm );
+    CESMRField::ConstructL( iLabel ); // ownership transfered
+
+    iIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapAlarm );
     iIcon->SetParent( this );
-    
-    SetFocusType( EESMRHighlightFocus );
     }
 
 // ---------------------------------------------------------------------------
@@ -100,7 +103,7 @@
     FUNC_LOG;
     if ( aEntry.IsAllDayEventL() )
         {
-        iObserver->RemoveControl( FieldId() );
+        iObserver->HideControl( FieldId() );
         }
     else
         {
@@ -115,7 +118,7 @@
             }
         else
             {
-            stringholder = StringLoader::LoadLC( 
+            stringholder = StringLoader::LoadLC(
                     R_QTN_MEET_REQ_ALARM_OFF , iEikonEnv );
             iLabel->SetTextL( *stringholder );
             CleanupStack::PopAndDestroy( stringholder );
@@ -129,27 +132,27 @@
         if( minutes == KHourInMinutes )
             {
             timeUnits = minutes / KHourInMinutes;
-            stringholder = StringLoader::LoadLC( 
+            stringholder = StringLoader::LoadLC(
                     R_QTN_MEET_REQ_ALARM_HOUR , timeUnits, iEikonEnv );
             }
         // Alarm time is more than one hour and less than one day before
         else if( minutes > KHourInMinutes && minutes < KDayInMinutes )
             {
             timeUnits = minutes / KHourInMinutes;
-            stringholder = StringLoader::LoadLC( 
+            stringholder = StringLoader::LoadLC(
                     R_QTN_MEET_REQ_ALARM_HOURS , timeUnits, iEikonEnv );
             }
-        // Alarm is several days before // 
+        // Alarm is several days before //
         else if( minutes >= KDayInMinutes )
             {
             timeUnits = minutes / KDayInMinutes;
-            stringholder = StringLoader::LoadLC( 
+            stringholder = StringLoader::LoadLC(
                     R_QTN_MEET_REQ_ALARM_DAYS , timeUnits, iEikonEnv );
             }
-        // Alarm is minutes before // 
+        // Alarm is minutes before //
         else
             {
-            stringholder = StringLoader::LoadLC( 
+            stringholder = StringLoader::LoadLC(
                     R_QTN_MEET_REQ_ALARM_MINUTES , minutes, iEikonEnv );
             }
 
@@ -165,19 +168,17 @@
 void CESMRViewerAlarmField::InitializeL()
     {
     FUNC_LOG;
-    TAknLayoutText text = NMRLayoutManager::GetLayoutText( 
-            Rect(), 
+    TAknLayoutText text = NMRLayoutManager::GetLayoutText(
+            Rect(),
             NMRLayoutManager::EMRTextLayoutTextEditor );
-    
+
     iLabel->SetFont( text.Font() );
     // This is called so that theme changes will apply when changing theme "on the fly"
     if ( IsFocused() )
         {
         iLabel->FocusChanged( EDrawNow );
         }
-
-    AknLayoutUtils::OverrideControlColorL ( *iLabel, EColorLabelText,
-                                             KRgbBlack );
+    // No implementation yet
     }
 
 // ---------------------------------------------------------------------------
@@ -191,24 +192,43 @@
     TAknLayoutRect rowLayoutRect =
         NMRLayoutManager::GetFieldRowLayoutRect( rect, 1 );
     rect = rowLayoutRect.Rect();
-    
+
     TAknWindowComponentLayout iconLayout =
-        NMRLayoutManager::GetWindowComponentLayout( 
+        NMRLayoutManager::GetWindowComponentLayout(
                 NMRLayoutManager::EMRLayoutTextEditorIcon );
     AknLayoutUtils::LayoutImage( iIcon, rect, iconLayout );
-    
-    TAknLayoutRect bgLayoutRect =
-        NMRLayoutManager::GetLayoutRect( 
-                rect, NMRLayoutManager::EMRLayoutTextEditorBg );
-    TRect bgRect( bgLayoutRect.Rect() );
+  
+    // Layouting lock icon
+    if( iLockIcon )
+    	{
+    	TAknWindowComponentLayout iconLayout( 
+    			NMRLayoutManager::GetWindowComponentLayout( 
+    					NMRLayoutManager::EMRLayoutSingleRowDColumnGraphic ) );
+    	AknLayoutUtils::LayoutImage( iLockIcon, rect, iconLayout );
+    	}
+
+    // Layouting label
+    TAknLayoutText viewerLayoutText;
+    if( iLockIcon )
+    	{
+    	viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, 
+    			NMRLayoutManager::EMRTextLayoutSingleRowEditorText );
+    	}
+    else
+    	{
+    	viewerLayoutText = NMRLayoutManager::GetLayoutText( rect, 
+    			NMRLayoutManager::EMRTextLayoutTextEditor );
+    	}
+
+    TRect viewerRect( viewerLayoutText.TextRect() );    
+    iLabel->SetRect( viewerRect );
+
     // Move focus rect so that it's relative to field's position.
-    bgRect.Move( -Position() );
-    SetFocusRect( bgRect );
-    
-    TAknLayoutText labelLayout = 
-        NMRLayoutManager::GetLayoutText( 
-                rect, NMRLayoutManager::EMRTextLayoutTextEditor );
-    iLabel->SetRect( labelLayout.TextRect() );
+    viewerRect.Move( -Position() );
+    SetFocusRect( viewerRect );
+
+    // Setting font also for the label
+    iLabel->SetFont( viewerLayoutText.Font() );
     }
 
 // ---------------------------------------------------------------------------
@@ -228,6 +248,11 @@
         {
         ++count;
         }
+    
+    if ( iLockIcon )
+    	{
+    	++count;
+    	}
     return count;
     }
 
@@ -244,6 +269,8 @@
             return iIcon;
         case 1:
             return iLabel;
+        case 2:
+        	return iLockIcon;
         default:
             return NULL;
         }
@@ -257,14 +284,50 @@
     {
     FUNC_LOG;
     CESMRField::SetOutlineFocusL ( aFocus );
-    
-    iLabel->SetFocus( aFocus );    
 
-    if ( !aFocus )
-        {
-        AknLayoutUtils::OverrideControlColorL ( *iLabel, EColorLabelText,
-                                                 KRgbBlack );
-        }
+    iLabel->SetFocus( aFocus );
     }
 
+// ---------------------------------------------------------------------------
+// CESMRViewerAlarmField::LockL()
+// ---------------------------------------------------------------------------
+//
+void CESMRViewerAlarmField::LockL()
+	{
+	FUNC_LOG;
+	if( IsLocked() )
+		{
+		return;
+		}
+	
+	CESMRField::LockL();
+	
+	delete iLockIcon;
+	iLockIcon = NULL;
+	iLockIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapLockField, ETrue );
+	iLockIcon->SetParent( this );
+	}
+
+// ---------------------------------------------------------------------------
+// CESMRViewerAlarmField::ExecuteGenericCommandL()
+// ---------------------------------------------------------------------------
+//
+TBool CESMRViewerAlarmField::ExecuteGenericCommandL( TInt aCommand )
+	{
+    FUNC_LOG;
+    
+    TBool retValue( EFalse );
+    
+    if( (aCommand == EAknCmdOpen) && IsLocked()  )
+    	{
+		HandleTactileFeedbackL();
+		
+    	CESMRGlobalNote::ExecuteL(
+    			CESMRGlobalNote::EESMRUnableToEdit );
+    	retValue = ETrue;
+    	}
+    
+    return retValue;
+	}
+
 // EOF