mulwidgets/mulcoverflowwidget/src/mulcoverflowcontrol.cpp
branchRCL_3
changeset 21 125793e17004
parent 20 03228bb411ae
--- a/mulwidgets/mulcoverflowwidget/src/mulcoverflowcontrol.cpp	Tue May 11 16:42:11 2010 +0300
+++ b/mulwidgets/mulcoverflowwidget/src/mulcoverflowcontrol.cpp	Tue May 25 13:16:14 2010 +0300
@@ -795,7 +795,15 @@
 void MulCoverFlowControl::HandleLessItemsUpdate(int aIndex)
 	{
 	MUL_LOG_ENTRY_EXIT("MUL:MulCoverFlowControl::HandleLessItemsUpdate");
-	if(aIndex == mData->mHighlightIndex)
+
+	int highlight = mData->mHighlightIndex;
+    IMulModelAccessor* accessor = static_cast<IMulModelAccessor*>(widget()->model());
+    if(accessor)
+        {
+        highlight = accessor->Highlight();
+        }
+    
+	if(aIndex == highlight)
 		{
 		UpdateCoverflowItem(aIndex,mData->mNumVisibleItem);
 		if(mData->mNumVisibleItem != 1 && TotalModelCount() == 3)	
@@ -817,11 +825,11 @@
 			// 2d template landscape mode
 			if(TotalModelCount() == 2)
 				{
-				UpdateCoverflowItem(aIndex,mData->mNumVisibleItem+(aIndex - mData->mHighlightIndex));	
+				UpdateCoverflowItem(aIndex,mData->mNumVisibleItem+(aIndex - highlight));	
 				}
 			else
 				{
-				int relativeIndex = (aIndex - mData->mHighlightIndex) + mData->mNumVisibleItem;
+				int relativeIndex = (aIndex - highlight) + mData->mNumVisibleItem;
 				if(relativeIndex >= 0 && relativeIndex < 2*mData->mNumVisibleItem+1)
 					{
 					UpdateCoverflowItem(aIndex,relativeIndex);						
@@ -832,7 +840,7 @@
 					UpdateCoverflowItem(aIndex,relativeIndex);	
 					}
 								
-				relativeIndex = mData->mNumVisibleItem - (TotalModelCount() - aIndex + mData->mHighlightIndex);
+				relativeIndex = mData->mNumVisibleItem - (TotalModelCount() - aIndex + highlight);
 				if(relativeIndex >= 0 && relativeIndex < 2*mData->mNumVisibleItem+1)
 					{
 					UpdateCoverflowItem(aIndex,relativeIndex);					
@@ -858,23 +866,29 @@
 	int totalVisual = TotalModelCount();
     int noOfVisuals = mData->mNumVisibleItem; 
     int highlightRelativeIndex = mData->mNumVisibleItem;
-    	
-	int leftIndex = mData->mHighlightIndex - noOfVisuals;
-	int rightIndex = mData->mHighlightIndex + noOfVisuals;
+    int highlight = mData->mHighlightIndex;
+    IMulModelAccessor* accessor = static_cast<IMulModelAccessor*>(widget()->model());
+    if(accessor)
+        {
+        highlight = accessor->Highlight();
+        }
+
+	int leftIndex = highlight - noOfVisuals;
+	int rightIndex = highlight + noOfVisuals;
     
  	if (leftIndex >= 0)
 	 	{
-	 	if ((aIndex <= mData->mHighlightIndex) && (aIndex >= leftIndex))
+	 	if ((aIndex <= highlight) && (aIndex >= leftIndex))
 		 	{
-		 	aRelativeIndex = highlightRelativeIndex - (mData->mHighlightIndex - aIndex);
+		 	aRelativeIndex = highlightRelativeIndex - (highlight - aIndex);
 		 	return true;	
 		 	}
 	 	}
 	else
 		{
-		if (aIndex <= mData->mHighlightIndex)
+		if (aIndex <= highlight)
 			{
-			aRelativeIndex = highlightRelativeIndex - (mData->mHighlightIndex - aIndex);
+			aRelativeIndex = highlightRelativeIndex - (highlight - aIndex);
 			return true;	
 			}
 		else
@@ -890,17 +904,17 @@
  
  	if (rightIndex < totalVisual)
 	 	{
-	 	if ((aIndex >= mData->mHighlightIndex) && (aIndex <= rightIndex))
+	 	if ((aIndex >= highlight) && (aIndex <= rightIndex))
 		 	{
-		 	aRelativeIndex = highlightRelativeIndex + (aIndex - mData->mHighlightIndex);
+		 	aRelativeIndex = highlightRelativeIndex + (aIndex - highlight);
 		 	return true;	
 		 	}
 	 	}
 	else
 		{
-		if (aIndex >= mData->mHighlightIndex)
+		if (aIndex >= highlight)
 			{
-			aRelativeIndex = highlightRelativeIndex + (aIndex - mData->mHighlightIndex);
+			aRelativeIndex = highlightRelativeIndex + (aIndex - highlight);
 			return true;	
 			}
 		rightIndex = rightIndex - totalVisual;
@@ -925,6 +939,14 @@
     int highlightRelativeIndex = mData->mNumVisibleItem;
     int absolute = -1;
     int totalVisuals = TotalModelCount();
+    
+    int highlight = mData->mHighlightIndex;
+    IMulModelAccessor* accessor = static_cast<IMulModelAccessor*>(widget()->model());
+    if(accessor)
+        {
+        highlight = accessor->Highlight();
+        }
+    
     if(totalVisuals <= 0)
 	    {
 	    // absolute index is always -1, so no need of any calculations
@@ -933,7 +955,7 @@
 	    {
 	    if(aRelativeIndex == highlightRelativeIndex)
 			{
-			absolute = 	mData->mHighlightIndex;
+			absolute = 	highlight;
 			}
 		else
 			{
@@ -945,7 +967,7 @@
 				    }
 				else if(totalVisuals == 2)
 					{
-					absolute = mData->mHighlightIndex + 1;
+					absolute = highlight + 1;
 					absolute = absolute >= totalVisuals ? 0 : absolute;
 					}
 				}
@@ -957,18 +979,18 @@
 				    }
 				else if(totalVisuals == 2)
 					{
-					absolute = mData->mHighlightIndex + (aRelativeIndex - highlightRelativeIndex);
+					absolute = highlight + (aRelativeIndex - highlightRelativeIndex);
 					absolute = absolute >= totalVisuals ? -1 : absolute;
 					}
 				else // totalvisuals > 3
 					{
 					if(aRelativeIndex - highlightRelativeIndex > 0)
 						{
-						absolute = mData->mHighlightIndex + aRelativeIndex - highlightRelativeIndex;	
+						absolute = highlight + aRelativeIndex - highlightRelativeIndex;	
 						}
 					else
 						{
-						absolute = mData->mHighlightIndex + aRelativeIndex - highlightRelativeIndex
+						absolute = highlight + aRelativeIndex - highlightRelativeIndex
 							+ TotalModelCount();	
 						}					
 					absolute = absolute >= totalVisuals ? absolute - totalVisuals : absolute;
@@ -980,16 +1002,16 @@
 		{
 		if(aRelativeIndex == highlightRelativeIndex)
 			{
-			absolute = 	mData->mHighlightIndex;
+			absolute = highlight;
 			}
 		else if (aRelativeIndex > highlightRelativeIndex)
 		    {
-		    absolute = mData->mHighlightIndex + (aRelativeIndex - highlightRelativeIndex);
+		    absolute = highlight + (aRelativeIndex - highlightRelativeIndex);
 		    absolute = absolute >= totalVisuals ? (absolute - totalVisuals) : absolute;	
 		    }
 		else
 			{
-		    absolute = mData->mHighlightIndex - (highlightRelativeIndex - aRelativeIndex);
+		    absolute = highlight - (highlightRelativeIndex - aRelativeIndex);
 		    absolute = absolute <0 ? (totalVisuals + absolute) : absolute;
 		    absolute = absolute > totalVisuals - 1 ? -1 : absolute;	    
 			}	
@@ -1059,8 +1081,9 @@
 	mData->mHighlightIndex = aAccessor->Highlight();
 
 	CAlfLayout* main = (CAlfLayout*) mData->mBaseElement->findVisual( KMainLayoutIndex );
-	int width = main->Size().Target().AsSize().iWidth;
-	int height = main->Size().Target().AsSize().iHeight;
+	TSize mainSize = main->Size().Target().AsSize();
+	int width = mainSize.iWidth;
+	int height = mainSize.iHeight;
 
 	if( width == 0 && height == 0 )
 		{