idlehomescreen/exths/inc/pluginif/extrstandbyscrutil.inl
changeset 0 f72a12da539e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/exths/inc/pluginif/extrstandbyscrutil.inl	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2005-2007 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:  Define the Util API for a external standby screen
+*
+*/
+
+
+
+// INCLUDES
+#include <aknlayout.cdl.h>
+#include <skinlayout.cdl.h>
+
+// -----------------------------------------------------------------------------
+// CExtrStandbyScr::Draw
+// -----------------------------------------------------------------------------
+//
+inline void CExtrStandbyScr::Draw(const TRect& /*aRect*/) const
+     {
+     if (IsDimmed())
+        {
+        return ;
+        }
+
+    TRect rect( Rect() );
+
+    CWindowGc& gc = SystemGc();
+
+    MAknsControlContext* cc = AknsDrawUtils::ControlContext( this );
+    MAknsSkinInstance* aknsInst = AknsUtils::SkinInstance();
+
+    // draw(clear) background
+    //AknsDrawUtils::Background( aknsInst, cc, gc, rect );
+    // Draw background starting from correct offset. May cause flicker if derived class
+    // has not registered control position with AknsUtils::RegisterControlPosition
+    AknsDrawUtils::Background( aknsInst, cc, this, gc, rect );
+
+    if( IsFocused() )
+        {
+        // draw highlight
+        TAknLayoutRect highlightParentRect;
+        highlightParentRect.LayoutRect( rect,
+                                        AknLayout::Highlight_for_other_Active_Idle_items_Line_1( rect ) );
+
+        TAknLayoutRect highlightRectCenter;
+        highlightRectCenter.LayoutRect( highlightParentRect.Rect(),
+                                        SkinLayout::List_highlight_skin_placing__general__Line_1( highlightParentRect.Rect() ) );
+
+        TAknLayoutRect highlightRectTl;
+        highlightRectTl.LayoutRect( highlightParentRect.Rect(),
+                                    SkinLayout::List_highlight_skin_placing__general__Line_2() );
+
+        TAknLayoutRect highlightRectBr;
+        highlightRectBr.LayoutRect( highlightParentRect.Rect(),
+                                    SkinLayout::List_highlight_skin_placing__general__Line_5() );
+
+        TRect highlightRect( highlightRectTl.Rect().iTl, highlightRectBr.Rect().iBr );
+
+        if( !AknsDrawUtils::DrawFrame( aknsInst,
+                                       gc,
+                                       highlightRect,
+                                       highlightRectCenter.Rect(),
+                                       KAknsIIDQsnFrList,
+                                       KAknsIIDQsnFrListCenter ) )
+            {
+            // no skin - draw normal list pane highlight
+            TAknLayoutRect highlighRect;
+
+            // shadow
+            highlighRect.LayoutRect( highlightParentRect.Rect(),
+                                     AknLayout::List_pane_highlight_graphics__various__Line_1( highlightParentRect.Rect() ) );
+            highlighRect.DrawRect( gc );
+
+            // highlight
+            highlighRect.LayoutRect( highlightParentRect.Rect(),
+                                     AknLayout::List_pane_highlight_graphics__various__Line_2( highlightParentRect.Rect() ) );
+            highlighRect.DrawRect( gc );
+            }
+        }
+
+    TAknLayoutRect separatorRect;
+    separatorRect.LayoutRect( rect, AknLayout::First_general_event_elements_Line_1() );
+
+    TRgb lineColour( separatorRect.Color() );
+
+    AknsUtils::GetCachedColor( aknsInst,
+                               lineColour,
+                               KAknsIIDQsnLineColors,
+                               EAknsCIQsnLineColorsCG6 /* column separator lines */ );
+
+    gc.SetPenColor( lineColour );
+    gc.SetPenStyle( CWindowGc::ESolidPen );
+
+    TInt separatorWidth( separatorRect.Rect().Width() -1 );
+    TPoint dot( separatorRect.Rect().iTl );
+
+    for( ; dot.iX < separatorWidth; dot.iX+=2 )
+        {
+        // draw the dots
+        gc.Plot( dot );
+        }
+    }