photosgallery/viewframework/views/gridview/src/glxgridviewcontainer.cpp
branchRCL_3
changeset 9 6b87b143d312
parent 3 9a9c174934f5
child 14 ce1c7ad1f18b
--- a/photosgallery/viewframework/views/gridview/src/glxgridviewcontainer.cpp	Tue Feb 02 10:12:14 2010 +0200
+++ b/photosgallery/viewframework/views/gridview/src/glxgridviewcontainer.cpp	Fri Feb 19 22:51:01 2010 +0200
@@ -19,7 +19,7 @@
 #include <StringLoader.h>
 #include <AknsBasicBackgroundControlContext.h>
 #include <caf/caferr.h>
-
+#include <eikcolib.h> 
 // Ganes Headers
 #include <gulicon.h>                                    // Gul Icons
 #include <ganes/HgItem.h>                               // HG Items
@@ -55,10 +55,10 @@
 //
 CGlxGridViewContainer* CGlxGridViewContainer::NewL(MGlxMediaList *aMediaList,
 														CGlxUiUtility* aUiUtility,
-																	MGlxGridEventObserver& aObserver)
+																	MGlxGridEventObserver& aObserver,CAknToolbar* aToolbar)
 	{
 	TRACER("CGlxGridViewContainer::NewL");
-	CGlxGridViewContainer* self = CGlxGridViewContainer::NewLC(aMediaList,aUiUtility,aObserver) ;
+	CGlxGridViewContainer* self = CGlxGridViewContainer::NewLC(aMediaList,aUiUtility,aObserver,aToolbar) ;
 	CleanupStack::Pop(self) ;
 	return self ;
 	}
@@ -69,10 +69,10 @@
 //
 CGlxGridViewContainer* CGlxGridViewContainer::NewLC(MGlxMediaList *aMediaList,
 														CGlxUiUtility* aUiUtility,
-																	MGlxGridEventObserver& aObserver)
+																	MGlxGridEventObserver& aObserver,CAknToolbar* aToolbar)
 	{
 	TRACER("CGlxGridViewContainer::NewLC");
-	CGlxGridViewContainer* self = new(ELeave) CGlxGridViewContainer(aMediaList,aUiUtility,aObserver);
+	CGlxGridViewContainer* self = new(ELeave) CGlxGridViewContainer(aMediaList,aUiUtility,aObserver,aToolbar);
 	CleanupStack::PushL(self ) ;
 	self->ConstructL() ;
 	return self ;
@@ -122,8 +122,8 @@
 // ---------------------------------------------------------------------------
 //
 CGlxGridViewContainer::CGlxGridViewContainer(MGlxMediaList *aMediaList,CGlxUiUtility* aUiUtility,
-																MGlxGridEventObserver& aObserver)
-					: iMediaList(aMediaList),iUiUtility(aUiUtility),iGlxGridViewObserver(aObserver)
+																MGlxGridEventObserver& aObserver,CAknToolbar* aToolbar)
+					: iMediaList(aMediaList),iUiUtility(aUiUtility),iGlxGridViewObserver(aObserver),iToolbar(aToolbar)
 		{
 		TRACER("CGlxGridViewContainer::CGlxGridViewContainer");
 		}
@@ -380,9 +380,8 @@
 		CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile,
 				EMbmGlxiconsQgn_prop_image_notcreated);
         AknIconUtils::SetSize(bitmap, tnSize);
-		TRect rect = iEikonEnv->EikAppUi()->ClientRect();
 		// Create Hg grid object
-		iHgGrid = CHgGrid::NewL (rect,mediaCount,CGulIcon::NewL(bitmap));
+		iHgGrid = CHgGrid::NewL (GetHgGridRect(),mediaCount,CGulIcon::NewL(bitmap));
 		}
 
 	// Setting to MopParent to update background skin
@@ -404,7 +403,33 @@
 	 * note: don't push hggrid to the control stack
 	 */
 	}
-
+// ---------------------------------------------------------------------------
+// GetHgGridRect
+// ---------------------------------------------------------------------------
+//
+TRect CGlxGridViewContainer::GetHgGridRect()
+    {
+    TRACER("CGlxGridViewContainer::GetHgGridRect()");
+    
+    TRect clientrect = iEikonEnv->EikAppUi()->ClientRect();
+    TRect apprect = iEikonEnv->EikAppUi()->ApplicationRect();	
+    if(apprect.Height()>apprect.Width())
+        {
+        //portrait:
+        //height : apprect height - (status pane height + toolbar height + cba height)
+        //width remains 360.
+        clientrect.SetHeight(apprect.Height() - ((clientrect.iTl.iY) + (iToolbar->Size().iHeight) + (iEikonEnv->AppUiFactory()->Cba()->Rect().Height())));
+        }
+    else
+        {
+        //Landscape:
+        //height : apprect - (status pane height + cba height)
+        //width  : apprect width - toolbarwidth.
+        clientrect.SetHeight(apprect.Height() - ((clientrect.iTl.iY) + (iEikonEnv->AppUiFactory()->Cba()->Rect().Height())));
+        clientrect.SetWidth(apprect.Width() - iToolbar->Size().iWidth);
+        }        
+    return clientrect;
+    }
 // ---------------------------------------------------------------------------
 // CreateGridL
 // ---------------------------------------------------------------------------
@@ -522,24 +547,20 @@
 		iHgGrid->ItemL(index).SetIcon(CGulIcon::NewL(bitmap));
 		GLX_LOG_INFO1("### CGlxGridViewContainer::SetIconsL speedTn-Index is %d",index);
 		}
-	else if ( KErrNone != tnError && KErrNotSupported != tnError && KErrCANoRights !=tnError)
+	else if ((KErrCANoRights ==tnError) || (KErrDiskFull ==tnError))
 		{
-		GLX_LOG_INFO2("CGlxGridViewContainer::SetIconsL - image_corrupted tnError(%d), i(%d)",
-				tnError, index);
-		CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile,
-				EMbmGlxiconsQgn_prop_image_corrupted);
-		AknIconUtils::SetSize(bitmap, setSize);
-		iHgGrid->ItemL(index).SetIcon(CGulIcon::NewL(bitmap));
-		}
-	else if (KErrCANoRights ==tnError)
-		{
-		/*fix for EABI-7RKHDG
+		/*
 		 * this is a safe code added to show default
 		 * TNM returns -17452 in case SD DRM files
 		 * this code is added as coming from other view to
 		 * gridview,it draws broken TN then the callback goes to
 		 * glxgridviewobserver and redraws a not-created TN.
 		 * with this part of code that TN swich will not be visible
+		 * 
+		 * The same thing is needs to be done for the case when there is no 
+		 * disk space for the thumbnails to be created. 
+		 * In such a case we need to show default thumbnails instead of corrupted. 
+		 * 
 		 */
 		GLX_LOG_INFO2("CGlxGridViewContainer::SetIconsL - image_defaultthumbnail tnError(%d), i(%d)",
 				tnError, index);
@@ -548,15 +569,16 @@
 		AknIconUtils::SetSize(bitmap, setSize);
 		iHgGrid->ItemL(index).SetIcon(CGulIcon::NewL(bitmap));
 		}
-	else if(KErrNotSupported == tnError)
-		{
-		GLX_LOG_INFO2("CGlxGridViewContainer::SetIconsL - image_defaultthumbnail tnError(%d), i(%d)",
-				tnError, index);
-		CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile,
-				EMbmGlxiconsQgn_prop_image_corrupted);
-		AknIconUtils::SetSize(bitmap, setSize);
-		iHgGrid->ItemL(index).SetIcon(CGulIcon::NewL(bitmap));
-		}
+   else if(KErrNone != tnError)
+        {
+        GLX_LOG_INFO2("CGlxGridViewContainer::SetIconsL - image_corrupted tnError(%d), i(%d)",
+                tnError, index);
+        CFbsBitmap* bitmap = AknIconUtils::CreateIconL(resFile,
+                EMbmGlxiconsQgn_prop_image_corrupted);
+        AknIconUtils::SetSize(bitmap, setSize);
+        iHgGrid->ItemL(index).SetIcon(CGulIcon::NewL(bitmap));
+        }
+
 
 	if (item.IsDrmProtected())
 		{
@@ -854,7 +876,7 @@
 			//@ fix for ESLM-7VRGKH
 			if(iHgGrid)
 				{
-				iHgGrid->InitScreenL(iEikonEnv->EikAppUi()->ClientRect());
+				iHgGrid->InitScreenL(GetHgGridRect());
 				}
 			retVal = ETrue;
 			break;
@@ -875,14 +897,23 @@
 	{
 	TRACER("CGlxGridViewContainer::HandleResourceChange()");
 	CCoeControl::HandleResourceChange(aId);
-	if ( iBgContext )
-		{
-		TRect apRect = iEikonEnv->EikAppUi()->ApplicationRect();
-		iBgContext->SetRect( apRect );
-		}
-	if(iHgGrid)
-		{
-		TRAP_IGNORE (iHgGrid->InitScreenL(iEikonEnv->EikAppUi()->ClientRect()); )
-		}
+    switch (aId)
+       {
+        case KEikDynamicLayoutVariantSwitch:
+            {
+            if ( iBgContext )
+                {
+                TRect apRect = iEikonEnv->EikAppUi()->ApplicationRect();
+                iBgContext->SetRect( apRect );
+                }
+            if(iHgGrid)
+                {
+                TRAP_IGNORE (iHgGrid->InitScreenL(GetHgGridRect());)
+                }
+            break;
+            }
+        default:
+        break;
+       }
 	}
 //end of file