diff -r 9c5b1510919f -r bf573002ff72 calendarui/commonutils/src/calencustomnavilabel.cpp --- /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 +#include +#include +#include +#include +#include +#include +#include + + +// ---------------------------------------------------------------------------- +// 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