mpxplugins/viewplugins/views/upnpplaybackdialog/src/mpxupnpplaybackdialoglayout.cpp
changeset 0 ff3acec5bc43
child 21 a1247965635c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mpxplugins/viewplugins/views/upnpplaybackdialog/src/mpxupnpplaybackdialoglayout.cpp	Thu Dec 17 08:45:05 2009 +0200
@@ -0,0 +1,257 @@
+/*
+* Copyright (c) 2006 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:  Layout and graphic factory for Upnp Playback Dialog
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <AknsUtils.h>
+#include <AknUtils.h>
+#include <barsread.h>
+#include <gulicon.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <data_caging_path_literals.hrh>
+#include <centralrepository.h>
+#include <mpxcommonplaybackview.mbg>
+#include <mpxcommonplaybackview.rsg>
+#include <mpxupnpplaybackview.rsg>
+#include <mpxinternalcrkeys.h>
+#include <mpxlbxextendedfeatures.h>
+#include <mpxuser.h>
+
+#include "mpxupnpplaybackdialoglayout.h"
+#include "mpxlog.h"
+
+using namespace AknLayoutScalable_Apps;
+
+
+// CONSTANTS
+_LIT(KMPXUpnpPlaybackDialogIconFile, "mpxcommonplaybackview.mbm");
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CMPXUPnPPlaybackDialogLayout* CMPXUPnPPlaybackDialogLayout::NewL()
+    {
+    CMPXUPnPPlaybackDialogLayout* self = CMPXUPnPPlaybackDialogLayout::NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CMPXUPnPPlaybackDialogLayout* CMPXUPnPPlaybackDialogLayout::NewLC()
+    {
+    CMPXUPnPPlaybackDialogLayout* self = new ( ELeave ) CMPXUPnPPlaybackDialogLayout();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CMPXUPnPPlaybackDialogLayout::~CMPXUPnPPlaybackDialogLayout()
+    {
+    // Do nothing
+    }
+
+// ---------------------------------------------------------------------------
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// ---------------------------------------------------------------------------
+//
+CMPXUPnPPlaybackDialogLayout::CMPXUPnPPlaybackDialogLayout()
+    {
+    // Do nothing
+    }
+
+// ---------------------------------------------------------------------------
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
+void CMPXUPnPPlaybackDialogLayout::ConstructL()
+    {
+    MPX_FUNC( "CMPXUPnPPlaybackDialogLayout::ConstructL" );
+    }
+
+// ---------------------------------------------------------------------------
+// Get layout data for an graphical indicator.
+// ---------------------------------------------------------------------------
+//
+TRect CMPXUPnPPlaybackDialogLayout::IndicatorLayout(
+    const TRect& aParentRect,
+    TMPXPbvIndicator aIndicator )
+    {
+    TInt resId(KErrNotFound);
+
+    // Get Rocker mapping support flag
+    TInt flags( 0 );
+    CRepository* repository( NULL );
+    MPX_TRAPD( err, repository = CRepository::NewL( KCRUidMPXMPFeatures ));
+    if ( KErrNone == err )
+        {
+        repository->Get( KMPXMPLocalVariation, flags );
+        delete repository;
+        repository = NULL;
+        }
+
+    TBool enableButton( flags & KMPXRockerMappingSupport );
+    const TSize screenSize( CCoeEnv::Static()->ScreenDevice()->SizeInPixels() );
+
+    if ( screenSize == TSize( 176,208 ))    //lowest portrait
+        {
+        switch ( aIndicator )
+            {
+            case EIconRemotePlayer:
+                {
+                if ( enableButton )
+                    {
+                    resId = R_MPX_PBV_REMOTE_INDI_LAYOUT;
+                    }
+                else
+                    {
+                    resId = R_MPX_PBV_REMOTE_INDI_LAYOUT_WITHOUT_ROCKER;
+                    }
+                break;
+                }
+            default:
+                {
+                break;
+                }
+            }
+        }
+    else if ( screenSize == TSize( 352,416 ))
+        {
+        switch ( aIndicator )
+            {
+            case EIconRemotePlayer:
+                {
+                resId = R_MPX_PBV_REMOTE_INDI_LAYOUT_DOUBLE_PORTRAIT;
+                break;
+                }
+            default:
+                {
+                break;
+                }
+            }
+        }
+    else if ( screenSize == TSize( 240,320 ))
+        {
+        switch ( aIndicator )
+            {
+            case EIconRemotePlayer:
+                {
+                if ( enableButton )
+                    {
+                    resId = R_MPX_PBV_REMOTE_INDI_LAYOUT_QVGA_PORTRAIT;
+                    }
+                else
+                    {
+                    resId = R_MPX_PBV_REMOTE_INDI_LAYOUT_QVGA_PORTRAIT_WITHOUT_ROCKER;
+                    }
+                break;
+                }
+            default:
+                {
+                break;
+                }
+            }
+        }
+    else if ( screenSize == TSize( 320,240 )) // QVGA landscape
+        {
+        switch ( aIndicator )
+            {
+            case EIconRemotePlayer:
+                {
+                if ( enableButton )
+                    {
+                    resId = R_MPX_PBV_REMOTE_INDI_LAYOUT_QVGA_LANDSCAPE;
+                    }
+                else
+                    {
+                    resId = R_MPX_PBV_REMOTE_INDI_LAYOUT_QVGA_LANDSCAPE_WITHOUT_ROCKER;
+                    }
+                break;
+                }
+            default:
+                {
+                break;
+                }
+            }
+        }
+
+    TRect rect;
+    if ( resId != KErrNotFound )
+        {
+        TAknLayoutRect res;
+        res.LayoutRect( aParentRect, resId );
+        rect = res.Rect();
+        }
+    else
+        {
+        rect = CMPXCommonPlaybackViewLayout::IndicatorLayout( aParentRect, aIndicator );
+        }
+
+    return rect;
+    }
+
+// ---------------------------------------------------------------------------
+// Get the bitmap and mask for a given indicator.
+// ---------------------------------------------------------------------------
+//
+CGulIcon* CMPXUPnPPlaybackDialogLayout::GetIndicatorIconMaskL(
+    TMPXPbvIndicator aIndicator )
+    {
+
+    TParse parse;
+    parse.Set( KMPXUpnpPlaybackDialogIconFile, &KDC_APP_RESOURCE_DIR, NULL );
+    TFileName iconFile( parse.FullName() );
+    User::LeaveIfError( MPXUser::CompleteWithDllPath( iconFile ) );
+
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+
+    switch ( aIndicator )
+        {
+        case EIconRemotePlayer:
+            {
+            return CreateColorIconL(
+                skin,
+                KAknsIIDQgnIndiMupRandom,
+                KAknsIIDQsnIconColors,
+                EAknsCIQsnIconColorsCG26,
+                iconFile,
+                EMbmMpxcommonplaybackviewQgn_graf_mup_icon_upnp_remote,
+                EMbmMpxcommonplaybackviewQgn_graf_mup_icon_upnp_remote_mask );
+            }
+        default:
+            {
+            break;
+            }
+        }
+
+    return CMPXCommonPlaybackViewLayout::GetIndicatorIconMaskL( aIndicator );
+    }
+
+//  End of File