calendarui/commonutils/src/calencustomnavilabel.cpp
branchRCL_3
changeset 48 bf573002ff72
child 60 96907930389d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/calendarui/commonutils/src/calencustomnavilabel.cpp	Mon Jun 21 15:38:59 2010 +0300
@@ -0,0 +1,209 @@
+/*
+* Copyright (c) 2002, 2003 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:  Navi decorated control for eventview
+ *
+*/
+
+#include "calencustomnavilabel.h"
+#include "calendarui_debug.h"
+
+#include <aknlayoutscalable_apps.cdl.h>
+#include <eikapp.h>
+#include <eikappui.h>
+#include <AknUtils.h>
+#include <calendar.mbg>
+#include <AknIconUtils.h>
+#include <debug.h>
+#include <aknsutils.h>
+
+
+// ----------------------------------------------------------------------------
+// CCustomNaviControl::NewL
+// First stage construction
+// ----------------------------------------------------------------------------
+CCustomNaviControl* CCustomNaviControl::NewL(const TDesC& aName, const TRgb aColor)
+    {
+    TRACE_ENTRY_POINT;
+    CCustomNaviControl* self = new(ELeave)CCustomNaviControl();
+    CleanupStack::PushL(self);
+    self->ConstructL( aName, aColor );
+    CleanupStack::Pop(self);
+    TRACE_EXIT_POINT;
+    return self;
+    }
+
+// ----------------------------------------------------------------------------
+// CCustomNaviControl::~CCustomNaviControl
+// Destructor
+// ----------------------------------------------------------------------------
+CCustomNaviControl::~CCustomNaviControl()
+    {
+    TRACE_ENTRY_POINT;
+    if(iBitmap)
+        {
+        delete iBitmap;
+        iBitmap = NULL;
+        }
+    if(iMask)
+        {
+        delete iMask;
+        iMask = NULL;
+        }
+
+    if(iCalendarName)
+        {
+        delete iCalendarName;
+        }
+    TRACE_EXIT_POINT;
+    }
+    
+// ----------------------------------------------------------------------------
+// CCustomNaviControl::SetCalendarNameAndColor
+// Sets the Calendar name and Color.
+// ----------------------------------------------------------------------------    
+void CCustomNaviControl::SetCalendarNameAndColor(const TDesC& aName, const TRgb aColor)
+    {
+    TRACE_ENTRY_POINT;
+    delete iCalendarName;
+    iCalendarColor = aColor;
+    iCalendarName = aName.AllocL();
+    TRACE_EXIT_POINT;
+    }
+    
+// ----------------------------------------------------------------------------
+// CCustomNaviControl::CCustomNaviControl
+// Constructor
+// ----------------------------------------------------------------------------    
+CCustomNaviControl::CCustomNaviControl()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCustomNaviControl::ConstructL
+// Second stage construction
+// ----------------------------------------------------------------------------
+void CCustomNaviControl::ConstructL(const TDesC& aName, const TRgb aColor)
+    {
+    TRACE_ENTRY_POINT;
+    iCalendarColor = aColor;
+    iCalendarName = aName.AllocL();
+    CreateWindowL();
+    iBgContext = CAknsBasicBackgroundControlContext::NewL( KAknsIIDQsnBgNavipaneSolid,
+                                                           Rect(),
+                                                           ETrue );
+    // Create an icon
+    TFileName IconFile;
+    IconFile = ((CEikAppUi*)CCoeEnv::Static()->AppUi())->Application()->BitmapStoreName();
+    AknIconUtils::CreateIconL(iBitmap, iMask,IconFile,
+            EMbmCalendarQgn_indi_navi_color,
+            EMbmCalendarQgn_indi_navi_color_mask);
+    TRect naviPane;
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::ENaviPane, naviPane );
+    SetRect(naviPane);
+    ActivateL();
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCustomNaviControl::Draw
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+void CCustomNaviControl::Draw(const TRect& /*aRect*/) const
+    {
+    TRACE_ENTRY_POINT;
+    
+    TSize navi_pane_size;
+    AknLayoutUtils::LayoutMetricsSize (AknLayoutUtils::ENaviPane, navi_pane_size);
+    TRect navi_pane(navi_pane_size);
+    TAknLayoutRect navi_cale_icon_pane;
+    navi_cale_icon_pane.LayoutRect(navi_pane, 
+                        AknLayoutScalable_Apps::navi_pane_bcale_mc_g1().LayoutLine() );
+    TRect navi_cale_icon_ev2_pane = navi_cale_icon_pane.Rect();
+    
+    CWindowGc& gc = SystemGc();
+    AknIconUtils::SetSize(iBitmap, navi_cale_icon_ev2_pane.Size());
+    AknIconUtils::SetIconColor(iBitmap,iCalendarColor);
+    gc.BitBlt(navi_cale_icon_ev2_pane.iTl,iBitmap);
+    TAknTextLineLayout navi_cale_text_pane_t1 = 
+                        AknLayoutScalable_Apps::navi_pane_bcale_mc_t1(0).LayoutLine();
+
+    // Get heading layout properties
+    // from field_cale_ev2_pane_t1 with list_cale_ev2_pane as parent
+    TAknLayoutText headingTextLayout;
+    headingTextLayout.LayoutText(navi_pane, navi_cale_text_pane_t1);
+    
+    const CFont* font = CCoeEnv::Static()->NormalFont();
+    gc.UseFont(font);
+    // If you see bright red text, the skins api is broken!
+    TRgb textColourFromSkin(255,0,0);
+    // Does not transfer ownership.
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    AknsUtils::GetCachedColor(skin, 
+                     textColourFromSkin, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG2);
+    TCharFormat charFormat;
+    TCharFormatMask charFormatMask;
+    // Set the text colour we found.
+    charFormat.iFontPresentation.iTextColor = TLogicalRgb(textColourFromSkin);
+    charFormatMask.SetAttrib(EAttColor);
+    gc.SetPenColor(charFormat.iFontPresentation.iTextColor);
+    gc.DrawText(*(iCalendarName),TPoint(headingTextLayout.TextRect().iTl.iX, 
+                                              headingTextLayout.TextRect().iBr.iY));
+    gc.DiscardFont();
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCustomNaviControl::Sizechanged
+// Child control was resized.
+// (other items were commented in a header)
+// ----------------------------------------------------------------------------
+//
+void CCustomNaviControl::SizeChanged()
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    }
+
+// ----------------------------------------------------------------------------
+// CCustomNaviControl::CountComponentControls
+// Return child control count.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+TInt CCustomNaviControl::CountComponentControls() const
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    
+    return 0;
+    }
+
+// ----------------------------------------------------------------------------
+// CCustomNaviControl::ComponentControl
+// Return child control pointer.
+// (other items were commented in a header).
+// ----------------------------------------------------------------------------
+//
+CCoeControl* CCustomNaviControl::ComponentControl(TInt /*aIndex*/) const
+    {
+    TRACE_ENTRY_POINT;
+    TRACE_EXIT_POINT;
+    
+    return NULL;
+    }
+
+// end of file