meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsyncfield.cpp
branchRCL_3
changeset 33 da5135c61bad
parent 0 8466d47a6819
child 17 8592a65ad3fb
--- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsyncfield.cpp	Mon Mar 15 12:39:10 2010 +0200
+++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cesmrsyncfield.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"
@@ -15,55 +15,58 @@
  *
 */
 
-#include "emailtrace.h"
 #include "cesmrsyncfield.h"
+#include "cmrimage.h"
+#include "cmrlabel.h"
+#include "cesmrtextitem.h"
+#include "cesmrlistquery.h"
+#include "nmrlayoutmanager.h"
 
-#include <eiklabel.h>
 #include <esmrgui.rsg>
-#include <StringLoader.h>
+#include <stringloader.h>
 #include <barsread.h>
 #include <avkon.hrh>
-#include <AknsConstants.h>
-#include <AknUtils.h>
-
-#include "cesmrsync.h"
-#include "cesmrlistquery.h"
+#include <aknutils.h>
 #include <calentry.h>
+// DEBUG
+#include "emailtrace.h"
 
 // Unnamed namespace for local definitions and functions
-namespace{ // codescanner::namespace
-
-CCalEntry::TReplicationStatus MapToReplicationStatus(
-        TESMRSyncValue aSyncValue )
-    {
-    CCalEntry::TReplicationStatus ret;
-    switch ( aSyncValue )
+namespace // codescanner::namespace
+    { 
+    CCalEntry::TReplicationStatus MapToReplicationStatus(
+            TESMRSyncValue aSyncValue )
         {
-        case ESyncNone:
+        CCalEntry::TReplicationStatus ret;
+        switch ( aSyncValue )
             {
-            ret = CCalEntry::ERestricted;
-            break;
+            case ESyncNone:
+                {
+                ret = CCalEntry::ERestricted;
+                break;
+                }
+            case ESyncPrivate:
+                {
+                ret = CCalEntry::EPrivate;
+                break;
+                }
+            case ESyncPublic:
+                {
+                ret = CCalEntry::EOpen;
+                break;
+                }
+            default:
+                {
+                ret = CCalEntry::ERestricted;
+                }
             }
-        case ESyncPrivate:
-            {
-            ret = CCalEntry::EPrivate;
-            break;
-            }
-        case ESyncPublic:
-            {
-            ret = CCalEntry::EOpen;
-            break;
-            }
-        default:
-            {
-            ret = CCalEntry::ERestricted;
-            }
+    
+        return ret;
         }
 
-    return ret;
-    }
-
-} // namespace
+    // Field's component count, icon and label
+    const TInt KComponentCount( 2 );
+    } // namespace
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -90,21 +93,8 @@
     FUNC_LOG;
     iArray.ResetAndDestroy ( );
     iArray.Close ( );
-    }
-
-// ---------------------------------------------------------------------------
-// CESMRSyncField::InitializeL
-// ---------------------------------------------------------------------------
-//
-void CESMRSyncField::InitializeL()
-    {
-    FUNC_LOG;
-    iSync->SetFont( iLayout->Font( iCoeEnv, iFieldId ) );
-    iSync->SetLabelAlignment( CESMRLayoutManager::IsMirrored()
-                              ? ELayoutAlignRight : ELayoutAlignLeft );
-    AknLayoutUtils::OverrideControlColorL(*iSync,
-                                           EColorLabelText,
-                                           iLayout->GeneralListAreaTextColor() );
+    
+    delete iIcon;
     }
 
 // ---------------------------------------------------------------------------
@@ -125,12 +115,12 @@
     TInt count = reader.ReadInt16 ( );
     for (TInt i(0); i < count; i++ )
         {
-        CESMRSync* sync = new (ELeave) CESMRSync();
+        CESMRTextItem* sync = new (ELeave) CESMRTextItem();
         CleanupStack::PushL( sync );
         sync->ConstructFromResourceL ( reader );
         iArray.AppendL ( sync );
         CleanupStack::Pop( sync );
-        if ( synchValue == MapToReplicationStatus ( sync->Id ( ) ) )
+        if ( synchValue == MapToReplicationStatus ( static_cast<TESMRSyncValue>( sync->Id ( ) ) ) )
             {
             iIndex = i;
             iSync->SetTextL ( sync->TextL ( ) );
@@ -150,7 +140,7 @@
     if ( iIndex < iArray.Count() )
         {
         CCalEntry::TReplicationStatus
-            repStatus = MapToReplicationStatus ( iArray[iIndex]->Id ( ) );
+            repStatus = MapToReplicationStatus ( static_cast<TESMRSyncValue>( iArray[iIndex]->Id ( ) ) );
         aEntry.Entry().SetReplicationStatusL (repStatus );
         }
     else
@@ -179,14 +169,19 @@
 // CESMRPriorityField::ExecuteGenericCommandL
 // ---------------------------------------------------------------------------
 //
-void CESMRSyncField::ExecuteGenericCommandL( TInt aCommand )
+TBool CESMRSyncField::ExecuteGenericCommandL( TInt aCommand )
     {
     FUNC_LOG;
+    TBool isUsed( EFalse );
     if(aCommand == EESMRCmdOpenSyncQuery ||
        aCommand == EAknCmdOpen )
         {
         ExecuteSyncQueryL();
+        isUsed = ETrue;
+        
+        HandleTactileFeedbackL();
         }
+    return isUsed;
     }
 
 // ---------------------------------------------------------------------------
@@ -255,7 +250,8 @@
     iIndex(0)
     {
     FUNC_LOG;
-    //do nothing
+    SetFieldId( EESMRFieldSync );
+    SetFocusType( EESMRHighlightFocus );
     }
 
 // ---------------------------------------------------------------------------
@@ -265,19 +261,16 @@
 void CESMRSyncField::ConstructL( )
     {
     FUNC_LOG;
-    SetFieldId( EESMRFieldSync );
-
-    iSync = new (ELeave) CEikLabel;
-    iSync->SetTextL( KNullDesC );
+    iSync = CMRLabel::NewL();
+    CESMRField::ConstructL( iSync );
+    iSync->SetTextL( KNullDesC() );
 
     TGulAlignment align;
     align.SetHAlignment( EHLeft );
     align.SetVAlignment( EVCenter );
     iSync->SetAlignment( align );
 
-    CESMRIconField::ConstructL(
-            KAknsIIDQgnFscalIndiSynchronisation,
-            iSync );
+    iIcon = CMRImage::NewL( NMRBitmapManager::EMRBitmapSynchronization );
     }
 
 // ---------------------------------------------------------------------------
@@ -287,10 +280,73 @@
 void CESMRSyncField::UpdateLabelL( TInt aIndex )
     {
     FUNC_LOG;
-    CESMRSync* sync = iArray[ aIndex ];
+    CESMRTextItem* sync = iArray[ aIndex ];
     iSync->SetTextL( sync->TextL() );
     iSync->DrawDeferred();
     }
 
+// ---------------------------------------------------------------------------
+// CESMRSyncField::CountComponentControls
+// ---------------------------------------------------------------------------
+//
+TInt CESMRSyncField::CountComponentControls() const
+    {
+    return KComponentCount;
+    }
+    
+// ---------------------------------------------------------------------------
+// CESMRSyncField::ComponentControl
+// ---------------------------------------------------------------------------
+//    
+CCoeControl* CESMRSyncField::ComponentControl( TInt aIndex ) const
+    {
+    CCoeControl* control = NULL;
+    switch( aIndex )
+        {
+        case 0:
+            {
+            control = iSync;            
+            break;
+            }
+        case 1:
+            {
+            control = iIcon;
+            break;
+            }
+        default:
+            ASSERT( EFalse );
+        }
+    
+    return control;
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRSyncField::SizeChanged
+// ---------------------------------------------------------------------------
+//
+void CESMRSyncField::SizeChanged()
+    {
+    TRect rect( Rect() );
+    TAknLayoutRect iconLayout = 
+        NMRLayoutManager::GetLayoutRect( 
+                rect, NMRLayoutManager::EMRLayoutTextEditorIcon );
+    TRect iconRect( iconLayout.Rect() );
+    iIcon->SetRect( iconRect );
+    
+    TAknLayoutRect bgLayoutRect = 
+        NMRLayoutManager::GetLayoutRect( 
+                rect, NMRLayoutManager::EMRLayoutTextEditorBg );
+    TRect bgRect( bgLayoutRect.Rect() );
+    // Move focus rect so that it's relative to field's position.
+    bgRect.Move( -Position() );
+    SetFocusRect( bgRect );
+    
+    TAknTextComponentLayout editorLayout =
+        NMRLayoutManager::GetTextComponentLayout( 
+                NMRLayoutManager::EMRTextLayoutTextEditor );    
+    
+    AknLayoutUtils::LayoutLabel( iSync, rect, editorLayout );         
+    }
+
 // EOF