--- a/uifw/AvKon/src/aknpopuplayout.cpp Thu Aug 19 10:11:06 2010 +0300
+++ b/uifw/AvKon/src/aknpopuplayout.cpp Tue Aug 31 15:28:30 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002 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"
@@ -21,6 +21,7 @@
#include <eiklbx.h>
#include <aknPopupHeadingPane.h>
#include <AknPanic.h>
+#include <AknLayout.lag>
#include <aknenv.h>
#include <AknUtils.h>
@@ -33,6 +34,8 @@
#include <aknmessagequerycontrol.h>
#include <aknsfld.h>
+#include <skinlayout.cdl.h>
+
#include <AknLayout2ScalableDef.h>
#include <aknlayoutscalable_avkon.cdl.h>
#include <layoutmetadata.cdl.h>
@@ -41,8 +44,6 @@
#include <touchfeedback.h>
#include <aknlists.h>
-const AknLayoutUtils::SAknLayoutRect KEmptyLayout =
- { ELayoutEmpty, 0, 0, 0, 0, ELayoutEmpty, ELayoutEmpty };
static CCoeControl *FindControl(TAknPopupLayoutsNode *aNode, TInt aId)
{
@@ -57,15 +58,37 @@
return NULL;
}
+static TInt GetMaxListHeight()
+ {
+ TAknLayoutRect temp, layout;
-static TInt GetMaxListHeight( const TRect& aClientRect )
- {
- TBool isLandscape( Layout_Meta_Data::IsLandscapeOrientation() );
+ TRect mainPane;
+ TRect statusPane;
+ TRect controlPane;
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EPopupParent, mainPane );
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EStatusPane, statusPane );
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EControlPane, controlPane );
+
+ // in landscape orientation popuplist can't go on top of statuspane
+ if ( !Layout_Meta_Data::IsLandscapeOrientation() )
+ {
+ mainPane.iTl.iY -= statusPane.Height();
+ }
+
+ // treat mainpane+statuspane area as popup window
+ // too bad we can't use this, because e.g. QVGA landscape has border-size 7
+ // in avkon layout and border-size 9 in skin drawing...
+ /*temp.LayoutRect( mainPane, AknLayoutScalable_Avkon::listscroll_menu_pane(0));
+ layout.LayoutRect( temp.Rect(), AknLayoutScalable_Avkon::list_menu_pane(0));
+ return layout.Rect().Height();*/
+
+ // shadow
+ TInt varietyIndex = Layout_Meta_Data::IsLandscapeOrientation();
TAknLayoutRect insideArea;
insideArea.LayoutRect(
- aClientRect,
- AknLayoutScalable_Avkon::bg_popup_window_pane_g1( isLandscape ) );
+ mainPane,
+ AknLayoutScalable_Avkon::bg_popup_window_pane_g1(varietyIndex) );
return insideArea.Rect().Height();
}
@@ -86,83 +109,65 @@
EXPORT_C
-void AknPopupLayouts::HandleSizeChanged( TAknPopupWindowLayoutDef& aDef,
+void AknPopupLayouts::HandleSizeChanged( TAknPopupWindowLayoutDef &aDef,
TAknPopupLayouts aLayout_1,
- TAknPopupLayoutsNode* aNode )
+ TAknPopupLayoutsNode *aNode)
{
- CAknPopupHeadingPane* heading =
- static_cast<CAknPopupHeadingPane*>(
- FindControl( aNode, EHeadingNode ) );
-
- CEikListBox* listBox =
- static_cast<CEikListBox*>( FindControl( aNode, EListNode ) );
+ CAknPopupHeadingPane *aHeading = (CAknPopupHeadingPane*)FindControl(aNode, EHeadingNode);
+ CEikListBox *aListBox = (CEikListBox*)FindControl(aNode, EListNode);
+ CCoeControl *aWindowOwningControl = FindControl(aNode, EWindowOwningNode);
+ CAknMessageQueryControl *aMsgQueryCtrl = (CAknMessageQueryControl*)FindControl(aNode, EMessageBoxNode);
+
+ TInt aLayout = aLayout_1;
+ TInt numofitems = aListBox->Model()->NumberOfItems();
- CCoeControl* windowOwningControl = FindControl( aNode, EWindowOwningNode );
+ aListBox->View()->ItemDrawer()->SetSkinEnabledL(ETrue);
+
+ TInt maxListHeight = GetMaxListHeight();
- CAknMessageQueryControl* msgQueryCtrl =
- static_cast<CAknMessageQueryControl*>(
- FindControl( aNode, EMessageBoxNode ) );
-
- TInt layoutFlags = aLayout_1;
- TInt numofitems = listBox->Model()->NumberOfItems();
-
- // Position popup window's bottom correctly.
+ // position popup window's bottom correctly
TRect clientRect;
- AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EPopupParent,
- clientRect );
-
- TInt maxListHeight = GetMaxListHeight( clientRect );
-
- TRect nullRect( 0, 0, 0, 0 );
-
- TBool isLandscape = Layout_Meta_Data::IsLandscapeOrientation();
+ AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EPopupParent, clientRect);
+ // set windowrect to minimum size - this will be adjusted later
+ TAknLayoutRect windowRect;
+ windowRect.LayoutRect( clientRect, AknLayoutScalable_Avkon::popup_menu_window(8));
+ aDef.iWindowRect = windowRect.Rect();
+ TRAP_IGNORE( aListBox->View()->ItemDrawer()->SetSkinEnabledL(ETrue) );
- // Set windowRect to minimum size - this will be adjusted later.
- TAknLayoutRect windowRectLayout;
- windowRectLayout.LayoutRect(
- clientRect,
- AknLayoutScalable_Avkon::popup_menu_window( isLandscape ? 19 : 8 ) );
- aDef.iWindowRect = windowRectLayout.Rect();
-
- TRAP_IGNORE( listBox->View()->ItemDrawer()->SetSkinEnabledL( ETrue ) );
-
- // Popup window when the size does not change based on the number of items.
+ // Popup window when the size does not change based on
+ // the number of items.
TBool fixedWindowSize = EFalse;
- if ( layoutFlags & EAknPopupLayoutsDynamic ||
- numofitems == 0 ||
- layoutFlags & EAknPopupLayoutsFind )
+ if ( (aLayout & EAknPopupLayoutsDynamic) || numofitems == 0 ||
+ (aLayout & EAknPopupLayoutsFind) )
{
- layoutFlags &= ~EAknPopupLayoutsDynamic;
+ aLayout &= ~EAknPopupLayoutsDynamic;
fixedWindowSize = ETrue;
}
// heading =============================================================
TInt spaceForHeading = 0;
- if ( heading )
+ if (aHeading)
{
- heading->SetLayout( CAknPopupHeadingPane::EListHeadingPane );
+ aHeading->SetLayout( CAknPopupHeadingPane::EListHeadingPane );
TAknLayoutRect tempHeadingRect;
- tempHeadingRect.LayoutRect(
- clientRect,
- AknLayoutScalable_Avkon::heading_pane( 0 ) );
+ tempHeadingRect.LayoutRect(clientRect,
+ AknLayoutScalable_Avkon::heading_pane(0));
spaceForHeading = tempHeadingRect.Rect().Height();
maxListHeight -= spaceForHeading;
}
- aDef.iPopupMenuWindowOffset.SetXY( 0, spaceForHeading );
+ aDef.iPopupMenuWindowOffset=TPoint(0,spaceForHeading);
// findbox =============================================================
TBool windowSizeFind = EFalse;
TInt spaceForFind = 0;
- if ( layoutFlags & EAknPopupLayoutsFind )
+ if (aLayout & EAknPopupLayoutsFind)
{
- layoutFlags &= ~EAknPopupLayoutsFind;
+ aLayout &= ~EAknPopupLayoutsFind;
windowSizeFind = ETrue;
- // Calculate space needed for find box.
+ // calculate space needed for find
TAknLayoutRect tempFindRect;
- tempFindRect.LayoutRect(
- clientRect,
- AknLayoutScalable_Avkon::find_popup_pane_cp2( 0 ) );
+ tempFindRect.LayoutRect(clientRect,AknLayoutScalable_Avkon::find_popup_pane_cp2(0));
spaceForFind = tempFindRect.Rect().Height();
maxListHeight -= spaceForFind;
}
@@ -170,282 +175,321 @@
// messagebox ==========================================================
TRect messageRect;
TInt messageNumOfLines = 0;
- TInt messageBoxItemVariety = 0;
TBool messageBox = EFalse;
- TAknWindowComponentLayout messageBoxItemLayout;
- if ( msgQueryCtrl && msgQueryCtrl->Lines() > 0 )
+ if (aMsgQueryCtrl && aMsgQueryCtrl->Lines() > 0)
{
messageBox = ETrue;
- messageNumOfLines = msgQueryCtrl->Lines();
-
- switch ( messageNumOfLines )
+ messageNumOfLines = aMsgQueryCtrl->Lines();
+ TInt varietyIndex = 0;
+ switch(messageNumOfLines)
{
- case 0:
- case 1:
- {
- messageBoxItemVariety = 0;
- break;
- }
- case 2:
- {
- messageBoxItemVariety = 1;
- break;
- }
- default:
- {
- messageBoxItemVariety = 2;
- break;
- }
+ case (0):
+ case (1): varietyIndex = 0;
+ break;
+ case (2): varietyIndex = 1;
+ break;
+ default : varietyIndex = 2;
}
-
- messageBoxItemLayout =
- AknLayoutScalable_Apps::loc_type_pane( messageBoxItemVariety );
-
- TAknLayoutRect layoutRect;
- layoutRect.LayoutRect( nullRect, messageBoxItemLayout );
- messageRect = layoutRect.Rect();
+ TAknWindowLineLayout lay = AknLayoutScalable_Apps::loc_type_pane(varietyIndex).LayoutLine();
+ TAknLayoutRect layout;
+ layout.LayoutRect( TRect(0,0,0,0), lay );
+ messageRect = layout.Rect();
maxListHeight -= messageRect.Height();
}
TInt minItems = 1;
- TRect scrollBarRect( nullRect );
+ TRect scrollBarRect(0,0,0,0);
TAknWindowLineLayout listLayout;
TAknLayoutScalableParameterLimits listLimits;
- switch ( layoutFlags )
+ switch(aLayout)
{
case EPopupSNotePopupWindow:
case EMenuUnknownColumnWindow:
case EMenuUnknownFormattedCellWindow:
case EMenuWindow:
{
- minItems = heading ? 5 : 6;
- listLayout = AknLayoutScalable_Avkon::list_single_pane_cp2( 0 );
+ minItems = aHeading ? 5 : 6;
+ listLayout = AknLayoutScalable_Avkon::list_single_pane_cp2(0);
listLimits = AknLayoutScalable_Avkon::list_single_pane_cp2_ParamLimits();
break;
}
case EMenuGraphicWindow:
{
minItems = 5;
- listLayout = AknLayoutScalable_Avkon::list_single_graphic_pane_cp2( 0 );
+ listLayout = AknLayoutScalable_Avkon::list_single_graphic_pane_cp2(0);
listLimits = AknLayoutScalable_Avkon::list_single_graphic_pane_cp2_ParamLimits();
break;
}
case EMenuGraphicHeadingWindow:
{
minItems = 5;
- listLayout = AknLayoutScalable_Avkon::list_single_graphic_heading_pane_cp2( 0 );
+ listLayout = AknLayoutScalable_Avkon::list_single_graphic_heading_pane_cp2(0);
listLimits = AknLayoutScalable_Avkon::list_single_graphic_heading_pane_cp2_ParamLimits();
break;
}
case EMenuDoubleWindow:
{
minItems = 3;
- listLayout = AknLayoutScalable_Avkon::list_double_pane_cp2( 0 );
+ listLayout = AknLayoutScalable_Avkon::list_double_pane_cp2(0);
listLimits = AknLayoutScalable_Avkon::list_double_pane_cp2_ParamLimits();
break;
}
case EMenuDoubleLargeGraphicWindow:
{
minItems = 3;
- listLayout = AknLayoutScalable_Avkon::list_double_large_graphic_pane_cp2( 0 );
+ listLayout = AknLayoutScalable_Avkon::list_double_large_graphic_pane_cp2(0);
listLimits = AknLayoutScalable_Avkon::list_double_large_graphic_pane_cp2_ParamLimits();
break;
}
- default:
- {
- break;
- }
}
- if ( !fixedWindowSize )
+ if (!fixedWindowSize)
{
minItems = 1;
}
- // Last row is a zero based index, we need num items which is 1 based.
- TInt maxLayoutItems = listLimits.LastRow() + 1;
+ TInt maxLayoutItems = listLimits.LastRow() + 1; // last row is a zero based index, we need num items which is 1 based
+
+ //aDef.iVertLineExt1.LayoutRect(TRect(1,1,1,1), 0, 0,0, ELayoutEmpty, ELayoutEmpty, 0,0);
+ //aDef.iVertLineExt2.LayoutRect(TRect(1,1,1,1), 0, 0,0, ELayoutEmpty, ELayoutEmpty, 0,0);
TAknLayoutRect listItemRect;
- listItemRect.LayoutRect( aDef.iWindowRect, listLayout );
+ listItemRect.LayoutRect( aDef.iWindowRect, listLayout);
TInt listItemHeight = listItemRect.Rect().Height();
TInt maxItems = maxListHeight / listItemHeight;
-
// minItems == 1 only if the popuplist is dynamically changeable
- if ( ( numofitems > 1 ) && ( minItems == 1 ) )
+ if ( (numofitems > 1) && (minItems == 1) )
{
minItems = numofitems;
}
-
- if ( minItems > maxItems )
+ if (minItems > maxItems)
{
minItems = maxItems;
}
-
- // maxItems might be greater than max items from layout ->
- // use layout's maximum.
- if ( minItems > maxLayoutItems )
+ // maxItems might be greater than max items from layout -> use layout's maximum
+ if (minItems > maxLayoutItems)
{
minItems = maxLayoutItems;
}
- TRect windowRect( AknPopupLayouts::MenuRect( aDef ) );
+ TRect window_rect = AknPopupLayouts::MenuRect(aDef);
- TAknLayoutRect temp;
- TAknLayoutRect layout;
+ TAknLayoutRect temp, layout;
TRect screenRect;
AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
- TAknWindowLineLayout lineLayout(
- AknLayoutScalable_Avkon::listscroll_menu_pane( 0 ).LayoutLine() );
+ TAknWindowLineLayout lineLayout = AknLayoutScalable_Avkon::listscroll_menu_pane(0).LayoutLine();
- temp.LayoutRect( windowRect, lineLayout );
+ // Layout data of listscroll_menu_pane are changed for CR 417-35260.
+ // The change is just for QHD landscape model.
+ // The CR makes listscroll_menu_pane's ir or il bigger than normal,
+ // so that width of list item is smaller than needs. Then, first cell
+ // of list item can not be drawn on proper position.
+ // Adjustment of layout is a solution for this problem. This is not a perfect idea, but
+ // creating a new layout for popuplist is too complex to do that. Adjustment is a must.
+ if(Layout_Meta_Data::IsLandscapeOrientation())
+ {
+ TInt offset = AknListBoxLayouts::AdjustPopupLayoutData( screenRect );
+ if (!AknLayoutUtils::LayoutMirrored())
+ {
+ lineLayout.ir -= offset;
+ }
+ else
+ {
+ lineLayout.il -= offset;
+ }
+ }
+ temp.LayoutRect( window_rect, lineLayout);
- layout.LayoutRect( temp.Rect(),
- AknLayoutScalable_Avkon::list_menu_pane( 0 ) );
-
- // This is list's rect for the whole window.
- TRect tempListRect( layout.Rect() );
+ layout.LayoutRect( temp.Rect(), AknLayoutScalable_Avkon::list_menu_pane(0));
+ TRect tempListRect = layout.Rect(); // this is list's rect for the whole window
- // Subtract heading, find box and message box from tempListRect.
+ // subtract heading, findbox and messagebox from tempListRect
tempListRect.iBr.iY -= spaceForFind;
tempListRect.iTl.iY += spaceForHeading;
tempListRect.iTl.iY += messageRect.Height();
- // We really don't want parent relative list layout here because find box
- // will be overwritten. Just calculate list height and use that.
- listLayout.iH = (TInt16)( minItems * listItemHeight );
+ // We really don't want parent relative list layout here because findbox will be overwritten.
+ // Just calculate list height and use that.
+ TRect nullRect(0,0,0,0);
+ listLayout.iH = (TInt16)(minItems * listItemHeight);
listLayout.ib = ELayoutEmpty;
- aDef.iListRect.LayoutRect( tempListRect, listLayout );
+ aDef.iListRect.LayoutRect(tempListRect,
+ listLayout);
- // We have to scale iWindowRect to list rect - layout is not (yet) correct.
+ // we have to scale iWindowRect to list rect - layout is not (yet) correct
TInt usedHeight = aDef.iListRect.Rect().Height()
+ spaceForFind
+ spaceForHeading
+ messageRect.Height();
+
+ // popupwindow's inside area
+ TInt varietyIndex = Layout_Meta_Data::IsLandscapeOrientation();
+
+ TAknLayoutRect insideArea;
+ insideArea.LayoutRect(
+ window_rect,
+ AknLayoutScalable_Avkon::bg_popup_window_pane_g1(varietyIndex) );
- if ( layout.Rect().Height() < usedHeight )
+ if (layout.Rect().Height() < usedHeight)
{
- aDef.iWindowRect.iTl.iY -= (usedHeight - layout.Rect().Height() );
+ aDef.iWindowRect.iTl.iY -= (usedHeight - layout.Rect().Height());
}
AknLayoutUtils::TAknCbaLocation cbaLocation = AknLayoutUtils::CbaLocation();
- // In landscape we have to center (on y-axis) popup window
- // (but not with bottom CBA).
- if ( isLandscape &&
- cbaLocation != AknLayoutUtils::EAknCbaLocationBottom )
+ // In landscape we have to center (on y-axis) popup window (but not with bottom CBA)
+ if (varietyIndex == 1 && cbaLocation != AknLayoutUtils::EAknCbaLocationBottom)
{
- TInt diff = ( clientRect.Height() - aDef.iWindowRect.Height() ) / 2;
+ TRect mainPane;
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EPopupParent, mainPane );
+ TInt diff = (mainPane.Height()-aDef.iWindowRect.Height()) / 2;
aDef.iWindowRect.iTl.iY -= diff;
aDef.iWindowRect.iBr.iY -= diff;
- // With right CBA, move window to the right side of the screen.
- if ( cbaLocation == AknLayoutUtils::EAknCbaLocationRight )
+ // with right CBA, move window to the right side of the screen
+ if (cbaLocation == AknLayoutUtils::EAknCbaLocationRight)
{
- TInt offset = clientRect.Width() - aDef.iWindowRect.iBr.iX;
+ TInt offset = mainPane.Width()-aDef.iWindowRect.iBr.iX;
aDef.iWindowRect.iTl.iX += offset;
aDef.iWindowRect.iBr.iX += offset;
+ }
+
+ //should this be uncommented??
+ // If we have left CBA, we move window to left side of screen (on x-axis).
+ /*else if (cbaLocation == AknLayoutUtils::EAknCbaLocationLeft)
+ {
+ TInt xOffset = aDef.iWindowRect.iTl.iX;
+ if ( xOffset > 0 )
+ {
+ aDef.iWindowRect.iTl.iX = 0;
+ aDef.iWindowRect.iBr.iX -= xOffset;
+ }
+ }*/
+ }
+
+ TRect screen;
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screen );
+
+ TAknLayoutRect cbaRect;
+ cbaRect.LayoutRect( screen,
+ AknLayoutScalable_Avkon::popup_sk_window( 0 ).LayoutLine() );
+
+ if ( AknLayoutUtils::PenEnabled() )
+ {
+ TSize size( aDef.iWindowRect.Size() );
+ // add softkey height
+ size.iHeight += cbaRect.Rect().Height();
+
+ // Reduce listbox's and popup's height if total height is more than
+ // screen height.
+ if ( size.iHeight > screen.Height() )
+ {
+ listLayout.iH -= ( size.iHeight - screen.Height() );
+ aDef.iListRect.LayoutRect( tempListRect, listLayout );
+
+ size.iHeight = screen.Height();
}
+
+ aDef.iWindowRect.SetRect( AknPopupUtils::Position( size, ETrue ), size );
}
- TAknLayoutRect cbaRect;
- cbaRect.LayoutRect(
- screenRect,
- AknLayoutScalable_Avkon::popup_sk_window( 0 ).LayoutLine() );
-
- TSize size( aDef.iWindowRect.Size() );
+ // now we finally know the window rect: first setup heading
+ if (aHeading)
+ {
+ aDef.iHeadingRect.LayoutRect(AknPopupLayouts::MenuRect(aDef),
+ AknLayoutScalable_Avkon::heading_pane(0));
+ }
+
+ MenuPopupWindowGraphics(aDef);
+ aWindowOwningControl->SetRect(WindowRect(aDef));
+ HandleSizeAndPositionOfComponents(aDef, aListBox, aHeading);
- // Add softkey height.
- size.iHeight += cbaRect.Rect().Height();
-
- // Reduce listbox's and popup's height if total height is more than
- // screen height.
- if ( size.iHeight > screenRect.Height() )
+ layout.LayoutRect(MenuRect(aDef), lineLayout);
+ TRect scrollBarClientRect(layout.Rect());
+
+ if ( AknLayoutUtils::PenEnabled() )
{
- listLayout.iH -= ( size.iHeight - screenRect.Height() );
- aDef.iListRect.LayoutRect( tempListRect, listLayout );
-
- size.iHeight = screenRect.Height();
+ // remove softkey height that was added earlier so that
+ // scroll bar doesn't get behind the softkey
+ scrollBarClientRect.iBr.iY -= cbaRect.Rect().Height();
}
- aDef.iWindowRect.SetRect( AknPopupUtils::Position( size, ETrue ), size );
-
- // Now we finally know the window rect: first setup heading.
- if ( heading )
- {
- aDef.iHeadingRect.LayoutRect(
- AknPopupLayouts::MenuRect( aDef ),
- AknLayoutScalable_Avkon::heading_pane( 0 ) );
- }
-
- MenuPopupWindowGraphics( aDef );
- windowOwningControl->SetRect( WindowRect( aDef ) );
- HandleSizeAndPositionOfComponents( aDef, listBox, heading );
-
- layout.LayoutRect( MenuRect( aDef ), lineLayout );
- TRect scrollBarClientRect( layout.Rect() );
-
- // Remove softkey height that was added earlier so that
- // scroll bar doesn't get behind the softkey.
- scrollBarClientRect.iBr.iY -= cbaRect.Rect().Height();
-
- if ( heading )
+ if (aHeading)
{
scrollBarClientRect.iTl.iY += spaceForHeading;
}
- if ( windowSizeFind )
+ if (windowSizeFind)
{
scrollBarClientRect.iBr.iY -= spaceForFind;
}
- if ( messageBox )
+ if (messageBox)
{
scrollBarClientRect.iTl.iY += messageRect.Height();
}
-
+ varietyIndex = 0;
AknLayoutUtils::LayoutVerticalScrollBar(
- listBox->ScrollBarFrame(),
+ aListBox->ScrollBarFrame(),
scrollBarClientRect,
- AknLayoutScalable_Avkon::scroll_pane_cp25( 0 ).LayoutLine() );
+ AknLayoutScalable_Avkon::scroll_pane_cp25(varietyIndex).LayoutLine() ) ;
- if ( messageBox )
+ if (messageBox)
{
TAknLayoutRect msgQuery;
- msgQuery.LayoutRect( AknPopupLayouts::MenuRect( aDef ),
- messageBoxItemLayout );
- msgQueryCtrl->SetRect( msgQuery.Rect() );
+
+ TInt varietyIndex = 0;
+ switch(messageNumOfLines)
+ {
+ case (0):
+ case (1): varietyIndex = 0;
+ break;
+ case (2): varietyIndex = 1;
+ break;
+ default : varietyIndex = 2;
+ }
+ msgQuery.LayoutRect( AknPopupLayouts::MenuRect(aDef),
+ AknLayoutScalable_Apps::loc_type_pane(varietyIndex).LayoutLine() );
+ aMsgQueryCtrl->SetRect(msgQuery.Rect());
}
- windowRect = WindowRect( aDef );
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( listBox );
+ window_rect = WindowRect(aDef);
+ MAknsControlContext *cc = AknsDrawUtils::ControlContext( aListBox );
TBool defaultContext = EFalse;
- if ( !cc )
+ if (!cc)
{
- cc = listBox->View()->ItemDrawer()->SkinBackgroundControlContext();
+ cc = aListBox->View()->ItemDrawer()->SkinBackgroundControlContext();
defaultContext = ETrue;
}
- if ( cc )
+ if (cc)
{
- CAknsBasicBackgroundControlContext* bcc =
- static_cast<CAknsBasicBackgroundControlContext*>( cc );
- bcc->SetBitmap( KAknsIIDQsnFrPopupCenter );
-
- if ( defaultContext )
- {
- bcc->SetRect( windowRect );
- bcc->SetParentPos( TPoint( 0, 0 ) );
- }
- else
- {
- bcc->SetParentPos( windowOwningControl->PositionRelativeToScreen() );
- }
+ CAknsBasicBackgroundControlContext *bcc = (CAknsBasicBackgroundControlContext*)cc;
+ TAknLayoutRect popupBgRect;
+ popupBgRect.LayoutRect(window_rect,
+ SkinLayout::Popup_windows_skin_placing__background_slice__Line_1(window_rect));
+ bcc->SetBitmap(KAknsIIDQsnFrPopupCenter);
+ if (defaultContext) bcc->SetRect(popupBgRect.Rect());
+ bcc->SetParentPos(aWindowOwningControl->PositionRelativeToScreen());
+ if (defaultContext)
+ bcc->SetParentPos(TPoint(0,0));
}
- }
-
+// handled in CFormattedCellListBoxDataExtension, since listbox does not always cover whole
+// window rect (listquery/popup list), especially when items are added after construction
+/*
+ // note, that cleanup is done in ~CFormattedCellListBoxData()
+ // or ( shudder ) in ~CColumnListBoxData()
+ MTouchFeedback* feedback = MTouchFeedback::Instance();
+ if( feedback )
+ {
+ feedback->SetFeedbackArea( aListBox, 0, aListBox->Rect(),
+ ETouchFeedbackBasic, ETouchEventStylusDown );
+ }
+*/
+}
EXPORT_C void AknPopupLayouts::HandleSizeAndPositionOfComponents(const TAknPopupWindowLayoutDef &aDef,
CCoeControl *aContent,
@@ -469,25 +513,19 @@
if (aValue < aMin) aValue = aMin;
}
-
// Disable "unreferenced formal parameter" for when aEikEnv is not used in the AKN_LAF_COLOR_ENV macro.
#pragma warning(disable : 4100)
-EXPORT_C void AknPopupLayouts::HandleDraw( CEikonEnv* /*aEikEnv*/,
- CWindowGc& aGc,
- const TAknPopupWindowLayoutDef& aDef,
- CEikListBox* aListBox,
- CAknPopupHeadingPane* aHeading )
+EXPORT_C void AknPopupLayouts::HandleDraw(CEikonEnv* /*aEikEnv*/,
+ CWindowGc &aGc,
+ const TAknPopupWindowLayoutDef &aDef,
+ CEikListBox* aListBox,
+ CAknPopupHeadingPane* aHeading)
{
- TRect windowRect(
- MenuRect( const_cast<TAknPopupWindowLayoutDef&>( aDef ) ) );
- MAknsSkinInstance* skin = AknsUtils::SkinInstance();
- MAknsControlContext* cc = AknsDrawUtils::ControlContext( aListBox );
+ TRect windowRect = MenuRect(const_cast<TAknPopupWindowLayoutDef&>(aDef));
+ MAknsSkinInstance *skin = AknsUtils::SkinInstance();
+ MAknsControlContext *cc = AknsDrawUtils::ControlContext( aListBox );
TBool windowFrameDrawn = EFalse;
-
- if ( !cc )
- {
- cc = aListBox->View()->ItemDrawer()->SkinBackgroundControlContext();
- }
+ if (!cc) cc = aListBox->View()->ItemDrawer()->SkinBackgroundControlContext();
TRegionFix<5> dontDrawRegion;
TRegionFix<22> drawRegion;
@@ -498,114 +536,77 @@
// If there are scroll bars and they draw their own background, take
// them out of clipping region
CEikScrollBarFrame* scrollBarFrame = aListBox->ScrollBarFrame();
- if ( scrollBarFrame )
+ if (scrollBarFrame)
{
CEikScrollBar* hBar = scrollBarFrame->GetScrollBarHandle(
- CEikScrollBar::EHorizontal );
+ CEikScrollBar::EHorizontal);
CEikScrollBar* vBar = scrollBarFrame->GetScrollBarHandle(
- CEikScrollBar::EVertical );
+ CEikScrollBar::EVertical);
TBool drawHorizontal = ETrue;
TBool drawVertical = ETrue;
- scrollBarFrame->DrawBackgroundState( drawHorizontal, drawVertical );
+ scrollBarFrame->DrawBackgroundState(drawHorizontal, drawVertical);
drawHorizontal = drawHorizontal && hBar && hBar->IsVisible();
drawVertical = drawVertical && vBar && vBar->IsVisible();
-
- if ( drawHorizontal )
+ if (drawHorizontal)
{
- TRect scrollBarRect( hBar->Rect() );
- if ( hBar->OwnsWindow() )
+ TRect scrollBarRect(hBar->Rect());
+ if (hBar->OwnsWindow())
{
- TPoint windowPos( aDef.iWindowRect.iTl );
- TPoint scrollBarPos( hBar->PositionRelativeToScreen() );
- scrollBarRect.Move( scrollBarPos - windowPos );
+ TPoint windowPos = aDef.iWindowRect.iTl;
+ TPoint scrollBarPos = hBar->PositionRelativeToScreen();
+ scrollBarRect.Move(scrollBarPos - windowPos);
}
- dontDrawRegion.AddRect( scrollBarRect );
+ dontDrawRegion.AddRect(scrollBarRect);
}
-
- if ( drawVertical )
+ if (drawVertical)
{
- TRect scrollBarRect( vBar->Rect() );
- if ( vBar->OwnsWindow() )
+ TRect scrollBarRect(vBar->Rect());
+ if (vBar->OwnsWindow())
{
- TPoint windowPos( aDef.iWindowRect.iTl );
- TPoint scrollBarPos( vBar->PositionRelativeToScreen() );
- scrollBarRect.Move( scrollBarPos - windowPos );
+ TPoint windowPos = aDef.iWindowRect.iTl;
+ TPoint scrollBarPos = vBar->PositionRelativeToScreen();
+ scrollBarRect.Move(scrollBarPos - windowPos);
}
-
- dontDrawRegion.AddRect( scrollBarRect );
+ dontDrawRegion.AddRect(scrollBarRect);
}
}
}
-
if ( aHeading )
{
dontDrawRegion.AddRect( aHeading->Rect() );
}
-
drawRegion.AddRect( windowRect );
drawRegion.SubRegion( dontDrawRegion );
-
- if ( cc )
+ if (cc)
{
- const TAknsItemID* popupBgId = &KAknsIIDQsnBgPopupBackground;
- AknsDrawUtils::DrawCachedImage( skin, aGc, windowRect, *popupBgId );
+ const TAknsItemID *popupBgId = &KAknsIIDQsnBgPopupBackground;
+ TAknLayoutRect popupBgRect;
+ popupBgRect.LayoutRect(windowRect, SkinLayout::Popup_windows_skin_placing__background_slice__Line_1(windowRect));
+ AknsDrawUtils::DrawCachedImage(skin, aGc, popupBgRect.Rect(), *popupBgId);
- const TAknsItemID* sliceId = &KAknsIIDQsnBgSlicePopup;
+ const TAknsItemID *sliceId = &KAknsIIDQsnBgSlicePopup;
TAknLayoutRect sliceRect;
- sliceRect.LayoutRect( windowRect,
- AknLayoutScalable_Avkon::bg_list_pane_g5( 0 ) );
- AknsDrawUtils::DrawCachedImage( skin, aGc, sliceRect.Rect(), *sliceId );
-
- TAknWindowComponentLayout popupBgLayout(
- AknLayoutScalable_Avkon::bg_popup_window_pane( 0 ) );
-
- TAknWindowComponentLayout popupBgInnerLayout(
- AknLayoutScalable_Avkon::bg_popup_window_pane_g1(
- Layout_Meta_Data::IsLandscapeOrientation() ) );
-
+ sliceRect.LayoutRect(windowRect, SkinLayout::Popup_windows_skin_placing__background_slice__Line_2());
+ AknsDrawUtils::DrawCachedImage(skin, aGc, sliceRect.Rect(), *sliceId);
+
TAknLayoutRect topLeft;
- topLeft.LayoutRect(
- windowRect,
- TAknWindowComponentLayout::Compose(
- popupBgLayout,
- TAknWindowComponentLayout::Split( popupBgInnerLayout, 0 ) ) );
- TRect topLeftRect( topLeft.Rect() );
+ topLeft.LayoutRect(windowRect, SkinLayout::Popup_windows_skin_placing__frame_general__Line_2());
TAknLayoutRect bottomRight;
- bottomRight.LayoutRect(
- windowRect,
- TAknWindowComponentLayout::Compose(
- popupBgLayout,
- TAknWindowComponentLayout::Split( popupBgInnerLayout, 8 ) ) );
- TRect bottomRightRect( bottomRight.Rect() );
-
- TRect outerRect( topLeftRect.iTl, bottomRightRect.iBr );
- TRect innerRect( topLeftRect.iBr, bottomRightRect.iTl );
-
- aGc.SetPenStyle( CGraphicsContext::ENullPen );
+ bottomRight.LayoutRect(windowRect, SkinLayout::Popup_windows_skin_placing__frame_general__Line_5());
- const TAknsItemID* frameId = &KAknsIIDQsnFrPopup;
- const TAknsItemID* frameCenterId = &KAknsIIDQsnFrPopupCenter;
-
+ TRect outerRect = TRect(topLeft.Rect().iTl, bottomRight.Rect().iBr);
+ TRect innerRect = TRect(topLeft.Rect().iBr, bottomRight.Rect().iTl);
+ aGc.SetPenStyle(CGraphicsContext::ENullPen);
+ const TAknsItemID *frameId = &KAknsIIDQsnFrPopup;
+ const TAknsItemID *frameCenterId = &KAknsIIDQsnFrPopupCenter;
aGc.SetClippingRegion( drawRegion );
-
- windowFrameDrawn = AknsDrawUtils::DrawFrame( skin,
- aGc,
- outerRect,
- innerRect,
- *frameId,
- *frameCenterId );
+ windowFrameDrawn = AknsDrawUtils::DrawFrame(skin, aGc, outerRect, innerRect, *frameId, *frameCenterId);
aGc.CancelClippingRegion();
}
-
- if ( !windowFrameDrawn )
+ if (!windowFrameDrawn)
{
- AknDraw::DrawWindowShadow( aGc,
- aDef.iCover,
- aDef.iSecond,
- aDef.iFirst,
- aDef.iOutline,
- aDef.iInside );
+ AknDraw::DrawWindowShadow(aGc, aDef.iCover, aDef.iSecond, aDef.iFirst, aDef.iOutline, aDef.iInside);
}
}
#pragma warning(default : 4100)
@@ -617,288 +618,308 @@
}
-EXPORT_C void AknPopupLayouts::MenuPopupWindowGraphics(
- TAknPopupWindowLayoutDef& aDef )
+EXPORT_C void AknPopupLayouts::MenuPopupWindowGraphics(TAknPopupWindowLayoutDef &aDef)
{
- TRect windowRect( AknPopupLayouts::MenuRect( aDef ) );
+ TRect window_rect = AknPopupLayouts::MenuRect(aDef);
+ TAknWindowLineLayout s0 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_graphics_Line_1(window_rect);
+ TAknWindowLineLayout s1 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_graphics_Line_2(window_rect);
+ TAknWindowLineLayout s2 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_graphics_Line_3(window_rect);
+ TAknWindowLineLayout s3 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_graphics_Line_4(window_rect);
+ TAknWindowLineLayout s4 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_graphics_Line_5(window_rect);
+
+ aDef.iCover.LayoutRect( window_rect, s0);
+ aDef.iSecond.LayoutRect( window_rect, s1);
+ aDef.iFirst.LayoutRect( window_rect, s2);
+ aDef.iOutline.LayoutRect(window_rect, s3);
+ aDef.iInside.LayoutRect( window_rect, s4);
+}
- aDef.iCover.LayoutRect(
- windowRect, AknLayoutScalable_Avkon::bg_popup_window_pane_cp2( 0 ) );
- aDef.iSecond.LayoutRect( windowRect, KEmptyLayout );
- aDef.iFirst.LayoutRect( windowRect, KEmptyLayout );
- aDef.iOutline.LayoutRect(
- windowRect, AknLayoutScalable_Avkon::listscroll_menu_pane( 0 ) );
- aDef.iInside.LayoutRect(
- windowRect, AknLayoutScalable_Avkon::list_menu_pane( 0 ) );
+EXPORT_C void AknPopupLayouts::SetupMenuPopupWindow(TAknPopupWindowLayoutDef &aDef, TInt num, TBool heading)
+ {
+ SetupDefaults(aDef);
+ TRect window_rect = AknPopupLayouts::MenuRect(aDef);
+ TAknWindowLineLayout listLayout = AKN_LAYOUT_WINDOW_list_menu_pane(heading?1:0, num-1);
+ // We really don't want parent relative list layout here because findbox will be overwritten.
+ // Just calculate list height and use that.
+ TRect nullRect(0,0,0,0);
+ TRect listItemRect = RectFromLayout(nullRect, AknLayoutScalable_Avkon::list_single_number_heading_pane_cp2(0));
+ listLayout.iH = (TInt16)(num * listItemRect.Height());
+ listLayout.ib = ELayoutEmpty;
+
+ aDef.iListRect.LayoutRect(window_rect, listLayout);
+
+ //aDef.iListRect.LayoutRect(window_rect, AKN_LAYOUT_WINDOW_list_menu_pane(heading?1:0, num-1));
+
+ TAknWindowLineLayout part1 = AKN_LAYOUT_WINDOW_Pop_up_window_list_pane_descendants_Line_8;
+ TAknWindowLineLayout part2 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_descendants_Line_2;
+
+ // Combine two layouts togeher.
+ if (part2.iC != ELayoutEmpty) part1.iC = part2.iC;
+ if (part2.il != ELayoutEmpty) part1.il = part2.il;
+ if (part2.it != ELayoutEmpty) part1.it = part2.it;
+ if (part2.ir != ELayoutEmpty) part1.ir = part2.ir;
+ if (part2.ib != ELayoutEmpty) part1.ib = part2.ib;
+ if (part2.iW != ELayoutEmpty) part1.iW = part2.iW;
+ if (part2.iH != ELayoutEmpty) part1.iH = part2.iH;
+
+ aDef.iHeadingRect.LayoutRect(window_rect, part1);
+
+ //MenuPopupWindowGraphics(aDef);
}
-
-EXPORT_C void AknPopupLayouts::SetupMenuPopupWindow( TAknPopupWindowLayoutDef& aDef,
- TInt aNum,
- TBool aHeading )
+EXPORT_C void AknPopupLayouts::SetupPopupMenuGraphicWindow(TAknPopupWindowLayoutDef &aDef, TInt num, TBool heading)
{
- SetupDefaults( aDef );
-
- CommonSetup( aDef,
- AknLayoutScalable_Avkon::list_single_number_heading_pane_cp2( 0 ),
- aNum,
- aHeading,
- ETrue );
- }
+ SetupDefaults(aDef);
+ TRect window_rect = AknPopupLayouts::MenuRect(aDef);
+ TAknWindowLineLayout listLayout = AKN_LAYOUT_WINDOW_list_menu_graphic_pane(heading?1:0, num-1);
+ // We really don't want parent relative list layout here because findbox will be overwritten.
+ // Just calculate list height and use that.
+ TRect nullRect(0,0,0,0);
+ TRect listItemRect = RectFromLayout(nullRect, AknLayoutScalable_Avkon::list_single_graphic_heading_pane_cp2(0));
+ listLayout.iH = (TInt16)(num * listItemRect.Height());
+ listLayout.ib = ELayoutEmpty;
+
+ aDef.iListRect.LayoutRect(window_rect, listLayout);
+ //aDef.iListRect.LayoutRect(window_rect, AKN_LAYOUT_WINDOW_list_menu_graphic_pane(heading?1:0, num-1));
+ TAknWindowLineLayout part1 = AKN_LAYOUT_WINDOW_Pop_up_window_list_pane_descendants_Line_8;
+ TAknWindowLineLayout part2 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_descendants_Line_2;
-EXPORT_C void AknPopupLayouts::SetupPopupMenuGraphicWindow(
- TAknPopupWindowLayoutDef &aDef,
- TInt aNum,
- TBool aHeading )
- {
- SetupDefaults( aDef );
-
- CommonSetup( aDef,
- AknLayoutScalable_Avkon::list_single_graphic_heading_pane_cp2( 0 ),
- aNum,
- aHeading,
- ETrue );
+ // Combine two layouts togeher.
+ if (part2.iC != ELayoutEmpty) part1.iC = part2.iC;
+ if (part2.il != ELayoutEmpty) part1.il = part2.il;
+ if (part2.it != ELayoutEmpty) part1.it = part2.it;
+ if (part2.ir != ELayoutEmpty) part1.ir = part2.ir;
+ if (part2.ib != ELayoutEmpty) part1.ib = part2.ib;
+ if (part2.iW != ELayoutEmpty) part1.iW = part2.iW;
+ if (part2.iH != ELayoutEmpty) part1.iH = part2.iH;
+
+ aDef.iHeadingRect.LayoutRect(window_rect, part1);
+
+ //MenuPopupWindowGraphics(aDef);
}
-
-EXPORT_C void AknPopupLayouts::SetupPopupMenuGraphicHeadingWindow(
- TAknPopupWindowLayoutDef &aDef,
- TInt aNum,
- TBool aHeading )
+EXPORT_C void AknPopupLayouts::SetupPopupMenuGraphicHeadingWindow(TAknPopupWindowLayoutDef &aDef, TInt num, TBool heading)
{
- CommonSetup( aDef,
- AknLayoutScalable_Avkon::list_single_graphic_heading_pane_cp2( 0 ),
- aNum,
- aHeading,
- EFalse );
+ TRect window_rect = AknPopupLayouts::MenuRect(aDef);
+ TAknWindowLineLayout listLayout = AKN_LAYOUT_WINDOW_list_menu_graphic_heading_pane(heading?1:0, num-1);
+ // We really don't want parent relative list layout here because findbox will be overwritten.
+ // Just calculate list height and use that.
+ TRect nullRect(0,0,0,0);
+ TRect listItemRect = RectFromLayout(nullRect, AknLayoutScalable_Avkon::list_single_graphic_heading_pane_cp2(0));
+ listLayout.iH = (TInt16)(num * listItemRect.Height());
+ listLayout.ib = ELayoutEmpty;
+
+ aDef.iListRect.LayoutRect(window_rect, listLayout);
- TRect windowRect( AknPopupLayouts::MenuRect( aDef ) );
- aDef.iHeadingRect.LayoutRect( windowRect,
- AknLayoutScalable_Avkon::heading_pane( 0 ) );
+ TAknWindowLineLayout part1 = AKN_LAYOUT_WINDOW_Pop_up_window_list_pane_descendants_Line_8;
+ TAknWindowLineLayout part2 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_descendants_and_elements__single_graphic_heading__Line_2;
+ // Combine two layouts togeher.
+ if (part2.iC != ELayoutEmpty) part1.iC = part2.iC;
+ if (part2.il != ELayoutEmpty) part1.il = part2.il;
+ if (part2.it != ELayoutEmpty) part1.it = part2.it;
+ if (part2.ir != ELayoutEmpty) part1.ir = part2.ir;
+ if (part2.ib != ELayoutEmpty) part1.ib = part2.ib;
+ if (part2.iW != ELayoutEmpty) part1.iW = part2.iW;
+ if (part2.iH != ELayoutEmpty) part1.iH = part2.iH;
+
+ aDef.iHeadingRect.LayoutRect(window_rect, part1);
+
+ //MenuPopupWindowGraphics(aDef);
+
+ const TAknWindowLineLayout lines[] =
+ {
+ AKN_LAYOUT_WINDOW_Menu_pop_up_window_descendants_and_elements__single_graphic_heading__Line_3(heading?1:0),
+ AKN_LAYOUT_WINDOW_Menu_pop_up_window_descendants_and_elements__single_graphic_heading__Line_3(1)
+ };
+ TRect inner_rect = window_rect;
+ aDef.iVertLineExt1.LayoutRect( inner_rect, lines[0]);
+ aDef.iVertLineExt2.LayoutRect( inner_rect, lines[1]);
}
-
-EXPORT_C void AknPopupLayouts::SetupPopupMenuDoubleWindow(
- TAknPopupWindowLayoutDef& aDef,
- TInt aNum,
- TBool aHeading )
+EXPORT_C void AknPopupLayouts::SetupPopupMenuDoubleWindow(TAknPopupWindowLayoutDef &aDef, TInt num, TBool heading)
{
- SetupDefaults( aDef );
-
- CommonSetup( aDef,
- AknLayoutScalable_Avkon::list_double2_graphic_pane_cp2( 0 ),
- aNum,
- aHeading,
- EFalse );
+ SetupDefaults(aDef);
+ TRect window_rect = AknPopupLayouts::MenuRect(aDef);
+ TAknWindowLineLayout listLayout = AKN_LAYOUT_WINDOW_list_menu_double_pane_list_menu_double2_pane(heading?1:0, num-1);
+ // We really don't want parent relative list layout here because findbox will be overwritten.
+ // Just calculate list height and use that.
+ TRect nullRect(0,0,0,0);
+ TRect listItemRect = RectFromLayout(nullRect, AknLayoutScalable_Avkon::list_double2_graphic_pane_cp2(0));
+ listLayout.iH = (TInt16)(num * listItemRect.Height());
+ listLayout.ib = ELayoutEmpty;
+
+ aDef.iListRect.LayoutRect(window_rect, listLayout);
- TRect windowRect( AknPopupLayouts::MenuRect( aDef ) );
- aDef.iHeadingRect.LayoutRect( windowRect,
- AknLayoutScalable_Avkon::heading_pane( 0 ) );
+ //aDef.iListRect.LayoutRect(window_rect, AKN_LAYOUT_WINDOW_list_menu_double_pane_list_menu_double2_pane(heading?1:0, num-1 ));
+ TAknWindowLineLayout part1 = AKN_LAYOUT_WINDOW_Pop_up_window_list_pane_descendants_Line_8;
+ TAknWindowLineLayout part2 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_descendants__double__Line_2;
+ // Combine two layouts togeher.
+ if (part2.iC != ELayoutEmpty) part1.iC = part2.iC;
+ if (part2.il != ELayoutEmpty) part1.il = part2.il;
+ if (part2.it != ELayoutEmpty) part1.it = part2.it;
+ if (part2.ir != ELayoutEmpty) part1.ir = part2.ir;
+ if (part2.ib != ELayoutEmpty) part1.ib = part2.ib;
+ if (part2.iW != ELayoutEmpty) part1.iW = part2.iW;
+ if (part2.iH != ELayoutEmpty) part1.iH = part2.iH;
+
+ aDef.iHeadingRect.LayoutRect(window_rect, part1);
+
+ //MenuPopupWindowGraphics(aDef);
}
-
+
+EXPORT_C void AknPopupLayouts::SetupImageSelectionMenuPopupWindow(TAknPopupWindowLayoutDef &aDef, TInt num, TBool heading)
+ {
+ SetupDefaults(aDef);
+ TRect window_rect = AknPopupLayouts::MenuRect(aDef);
+ TAknWindowLineLayout listLayout = AKN_LAYOUT_WINDOW_list_menu_double_large_graphic_pane(heading?1:0, num-1);
+ // We really don't want parent relative list layout here because findbox will be overwritten.
+ // Just calculate list height and use that.
+ TRect nullRect(0,0,0,0);
+ TRect listItemRect = RectFromLayout(nullRect, AknLayoutScalable_Avkon::list_double_large_graphic_pane_cp2(0));
+ listLayout.iH = (TInt16)(num * listItemRect.Height());
+ listLayout.ib = ELayoutEmpty;
-EXPORT_C void AknPopupLayouts::SetupImageSelectionMenuPopupWindow(
- TAknPopupWindowLayoutDef& aDef,
- TInt aNum,
- TBool aHeading )
- {
- SetupDefaults( aDef );
+ aDef.iListRect.LayoutRect(window_rect, listLayout);
- CommonSetup( aDef,
- AknLayoutScalable_Avkon::list_double_large_graphic_pane_cp2( 0 ),
- aNum,
- aHeading,
- EFalse );
-
- TRect windowRect( AknPopupLayouts::MenuRect( aDef ) );
- aDef.iHeadingRect.LayoutRect( windowRect,
- AknLayoutScalable_Avkon::heading_pane( 0 ) );
+ //aDef.iListRect.LayoutRect(window_rect, AKN_LAYOUT_WINDOW_list_menu_double_large_graphic_pane(heading?1:0, num-1));
+
+ TAknWindowLineLayout part1 = AKN_LAYOUT_WINDOW_Pop_up_window_list_pane_descendants_Line_8;
+ TAknWindowLineLayout part2 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_descendants__double__Line_2;
+
+ // Combine two layouts togeher.
+ if (part2.iC != ELayoutEmpty) part1.iC = part2.iC;
+ if (part2.il != ELayoutEmpty) part1.il = part2.il;
+ if (part2.it != ELayoutEmpty) part1.it = part2.it;
+ if (part2.ir != ELayoutEmpty) part1.ir = part2.ir;
+ if (part2.ib != ELayoutEmpty) part1.ib = part2.ib;
+ if (part2.iW != ELayoutEmpty) part1.iW = part2.iW;
+ if (part2.iH != ELayoutEmpty) part1.iH = part2.iH;
+ aDef.iHeadingRect.LayoutRect(window_rect, part1);
+
+ //MenuPopupWindowGraphics(aDef);
}
-EXPORT_C void AknPopupLayouts::SetupPopupSNoteGroupWindow(
- TAknPopupWindowLayoutDef &aDef,
- TInt aNum,
- TBool /*aHeading*/ )
+EXPORT_C void AknPopupLayouts::SetupPopupSNoteGroupWindow(TAknPopupWindowLayoutDef &aDef, TInt num, TBool /*heading*/)
{
- // Not used (at least by AvKon) - no need to remove magic numbers.
- SetupDefaults( aDef );
- TRect windowRect( AknPopupLayouts::MenuRect( aDef ) );
- aDef.iListRect.LayoutRect( windowRect,
- 0,
- 3,
- 11,
- ELayoutEmpty,
- ELayoutEmpty,
- 168,
- 38 + ( 57 - 38 ) * ( aNum - 2 ) );
-
- TAknWindowLineLayout part1(
- AknLayoutScalable_Avkon::heading_pane( 0 ).LayoutLine() );
+ // not used (at least by AvKon) - no need to remove magic numbers
+ SetupDefaults(aDef);
+ TRect window_rect = AknPopupLayouts::MenuRect(aDef);
+ aDef.iListRect.LayoutRect(window_rect, 0, 3, 11, ELayoutEmpty, ELayoutEmpty, 168, 38+(57-38)*(num-2) );
+ TAknWindowLineLayout part1 = AKN_LAYOUT_WINDOW_Pop_up_window_list_pane_descendants_Line_8;
+ TAknWindowLineLayout part2 = AKN_LAYOUT_WINDOW_Menu_pop_up_window_descendants_Line_2;
- TAknWindowLineLayout part2(
- TAknWindowComponentLayout::Compose(
- TAknWindowComponentLayout::Compose(
- TAknWindowComponentLayout::SiblingAsChild(
- AknLayoutScalable_Avkon::popup_window_general( 1 ),
- AknLayoutScalable_Avkon::popup_window_general( 0 ) ),
- AknLayoutScalable_Avkon::listscroll_menu_pane( 0 ) ),
- AknLayoutScalable_Avkon::list_menu_pane( 0 ) ).LayoutLine() );
-
// Combine two layouts togeher.
- if ( part2.iC != ELayoutEmpty ) part1.iC = part2.iC;
- if ( part2.il != ELayoutEmpty ) part1.il = part2.il;
- if ( part2.it != ELayoutEmpty ) part1.it = part2.it;
- if ( part2.ir != ELayoutEmpty ) part1.ir = part2.ir;
- if ( part2.ib != ELayoutEmpty ) part1.ib = part2.ib;
- if ( part2.iW != ELayoutEmpty ) part1.iW = part2.iW;
- if ( part2.iH != ELayoutEmpty ) part1.iH = part2.iH;
+ if (part2.iC != ELayoutEmpty) part1.iC = part2.iC;
+ if (part2.il != ELayoutEmpty) part1.il = part2.il;
+ if (part2.it != ELayoutEmpty) part1.it = part2.it;
+ if (part2.ir != ELayoutEmpty) part1.ir = part2.ir;
+ if (part2.ib != ELayoutEmpty) part1.ib = part2.ib;
+ if (part2.iW != ELayoutEmpty) part1.iW = part2.iW;
+ if (part2.iH != ELayoutEmpty) part1.iH = part2.iH;
- aDef.iHeadingRect.LayoutRect( windowRect, part1 );
+ aDef.iHeadingRect.LayoutRect(window_rect, part1);
- TInt p = windowRect.Size().iHeight;
+ TInt p = window_rect.Size().iHeight;
const AknLayoutUtils::SAknLayoutRect shadow[] =
{
- { 0, 0, 0, ELayoutEmpty, ELayoutEmpty, 176, p },
- { 86, 7, 12, ELayoutEmpty, ELayoutEmpty, 167, p - 16 },
- { 221, 4, 10, ELayoutEmpty, ELayoutEmpty, 169, p - 15 },
- { 215, 2, 8, ELayoutEmpty, ELayoutEmpty, 170, p - 14 },
- { 0, 3, 9, ELayoutEmpty, ELayoutEmpty, 168, p - 16 }
+ { 0,0,0,ELayoutEmpty, ELayoutEmpty, 176, p },
+ { 86,7,12,ELayoutEmpty, ELayoutEmpty, 167, p -16 },
+ { 221,4,10,ELayoutEmpty, ELayoutEmpty, 169, p -15 },
+ { 215,2,8,ELayoutEmpty, ELayoutEmpty, 170, p -14 },
+ { 0,3,9,ELayoutEmpty, ELayoutEmpty, 168, p -16 }
};
- aDef.iCover.LayoutRect( windowRect, shadow[0] );
- aDef.iSecond.LayoutRect( windowRect, shadow[1] );
- aDef.iFirst.LayoutRect( windowRect, shadow[2] );
- aDef.iOutline.LayoutRect(windowRect, shadow[3] );
- aDef.iInside.LayoutRect( windowRect, shadow[4] );
+ aDef.iCover.LayoutRect( window_rect, shadow[0]);
+ aDef.iSecond.LayoutRect( window_rect, shadow[1]);
+ aDef.iFirst.LayoutRect( window_rect, shadow[2]);
+ aDef.iOutline.LayoutRect(window_rect, shadow[3]);
+ aDef.iInside.LayoutRect( window_rect, shadow[4]);
}
-EXPORT_C void AknPopupLayouts::CalcPopupMenuWindow(
- TAknPopupWindowLayoutDef& aDef,
- TRect aRect,
- TInt aNum )
+
+EXPORT_C void AknPopupLayouts::CalcPopupMenuWindow(TAknPopupWindowLayoutDef &aDef,TRect aRect, TInt num)
+ {
+ TAknLayoutRect popup_menu_window;
+ popup_menu_window.LayoutRect(aRect, AKN_LAYOUT_WINDOW_popup_menu_window(num-1));
+ aDef.iWindowRect = popup_menu_window.Rect();
+ aDef.iPopupMenuWindowOffset=TPoint(0,0);
+ }
+EXPORT_C void AknPopupLayouts::CalcPopupMenuGraphicWindow(TAknPopupWindowLayoutDef &aDef,TRect aRect, TInt num)
{
- TInt variety;
- if ( Layout_Meta_Data::IsLandscapeOrientation() )
- {
- // Popup menu window is wider in landscape orientation.
- variety = ( aNum < 7 ) ? 20 - aNum : 43;
- }
- else
- {
- variety = 7 + aNum;
- }
-
- TAknLayoutRect popupMenuWindow;
- popupMenuWindow.LayoutRect(
- aRect,
- AknLayoutScalable_Avkon::popup_menu_window( variety ) );
- aDef.iWindowRect = popupMenuWindow.Rect();
- aDef.iPopupMenuWindowOffset.SetXY( 0, 0 );
+ TAknLayoutRect popup_menu_graphic_window;
+ popup_menu_graphic_window.LayoutRect(aRect, AKN_LAYOUT_WINDOW_popup_menu_graphic_window(num-1));
+ aDef.iWindowRect = popup_menu_graphic_window.Rect();
+ aDef.iPopupMenuWindowOffset=TPoint(0,0);
+ }
+EXPORT_C void AknPopupLayouts::CalcPopupMenuGraphicHeadingWindow(TAknPopupWindowLayoutDef &aDef,TRect aRect, TInt num)
+ {
+ TAknLayoutRect popup_menu_graphic_heading_window;
+ popup_menu_graphic_heading_window.LayoutRect(aRect,AKN_LAYOUT_WINDOW_popup_menu_graphic_heading_window(num-1));
+ aDef.iWindowRect = popup_menu_graphic_heading_window.Rect();
+ aDef.iPopupMenuWindowOffset=TPoint(0,0);
+ }
+EXPORT_C void AknPopupLayouts::CalcPopupMenuDoubleWindow(TAknPopupWindowLayoutDef &aDef,TRect aRect, TInt num)
+ {
+ TAknLayoutRect popup_menu_double_window;
+ TInt items = 2;
+ if (num == 2) items = 1;
+ if (num == 1) items = 0;
+ popup_menu_double_window.LayoutRect(aRect, AKN_LAYOUT_WINDOW_popup_menu_double_window(items));
+ aDef.iWindowRect = popup_menu_double_window.Rect();
+ aDef.iPopupMenuWindowOffset=TPoint(0,0);
}
-
-EXPORT_C void AknPopupLayouts::CalcPopupMenuGraphicWindow(
- TAknPopupWindowLayoutDef& aDef,
- TRect aRect,
- TInt aNum )
+EXPORT_C void AknPopupLayouts::CalcPopupMenuDoubleLargeGraphicWindow(TAknPopupWindowLayoutDef &aDef,TRect aRect, TInt num)
{
- CalcPopupMenuWindow( aDef, aRect, aNum );
- }
-
-
-EXPORT_C void AknPopupLayouts::CalcPopupMenuGraphicHeadingWindow(
- TAknPopupWindowLayoutDef& aDef,
- TRect aRect,
- TInt aNum )
- {
- CalcPopupMenuWindow( aDef, aRect, aNum );
- }
+ TAknLayoutRect popup_menu_double_large_graphic_window;
+ TInt items = 2;
+ if (num == 2) items = 1;
+ if (num == 1) items = 0;
+ popup_menu_double_large_graphic_window.LayoutRect(aRect, AKN_LAYOUT_WINDOW_popup_menu_double_large_graphic_window(items));
+ aDef.iWindowRect = popup_menu_double_large_graphic_window.Rect();
+ aDef.iPopupMenuWindowOffset=TPoint(0,0);
+ }
-EXPORT_C void AknPopupLayouts::CalcPopupMenuDoubleWindow(
- TAknPopupWindowLayoutDef& aDef,
- TRect aRect,
- TInt aNum )
+EXPORT_C void AknPopupLayouts::CalcPopupSNoteGroupWindow(TAknPopupWindowLayoutDef &aDef,TRect aRect, TInt num)
{
- TBool isLandscape( Layout_Meta_Data::IsLandscapeOrientation() );
-
- TInt variety = isLandscape ? 26 : 2;
- if ( aNum == 2 )
- {
- variety = isLandscape ? 25 : 1;
- }
- else if ( aNum == 1 )
- {
- variety = isLandscape ? 24 : 0;
- }
-
- TAknLayoutRect popupMenuDoubleWindow;
- popupMenuDoubleWindow.LayoutRect(
- aRect, AknLayoutScalable_Avkon::popup_menu_window( variety ) );
- aDef.iWindowRect = popupMenuDoubleWindow.Rect();
- aDef.iPopupMenuWindowOffset.SetXY( 0, 0 );
- }
-
-
-EXPORT_C void AknPopupLayouts::CalcPopupMenuDoubleLargeGraphicWindow(
- TAknPopupWindowLayoutDef& aDef,
- TRect aRect,
- TInt aNum )
- {
- CalcPopupMenuDoubleWindow( aDef, aRect, aNum );
- }
-
-
-EXPORT_C void AknPopupLayouts::CalcPopupSNoteGroupWindow(
- TAknPopupWindowLayoutDef& aDef,
- TRect aRect,
- TInt /*aNum*/ )
- {
- // Layout for this isn't specified in the layout data,
- // use the provided rect.
- aDef.iWindowRect = aRect;
- aDef.iPopupMenuWindowOffset.SetXY( 0, 0 );
+ TAknLayoutRect popup_menu_snote_window;
+ if (num-2 < 0) { num = 2; }
+ popup_menu_snote_window.LayoutRect(aRect, AKN_LAYOUT_WINDOW_popup_snote_group_window(num-2));
+ aDef.iWindowRect = popup_menu_snote_window.Rect();
+ aDef.iPopupMenuWindowOffset=TPoint(0,0);
}
EXPORT_C TRect AknPopupLayouts::WindowRect(TAknPopupWindowLayoutDef &aDef) {return aDef.iWindowRect; }
-
-EXPORT_C void AknPopupLayouts::ModifyWindowGraphicForHeading(
- TAknPopupWindowLayoutDef& aDef )
+EXPORT_C void AknPopupLayouts::ModifyWindowGraphicForHeading(TAknPopupWindowLayoutDef &aDef)
{
- TRect nullRect( 0, 0, 0, 0 );
+ TRect nullRect(0,0,0,0);
TAknLayoutRect nullHeadingRect;
-
- TAknWindowComponentLayout popupWindowLayout(
- TAknWindowComponentLayout::SiblingAsChild(
- AknLayoutScalable_Avkon::popup_window_general( 0 ),
- AknLayoutScalable_Avkon::popup_window_general( 1 ) ) );
-
- // Find out how much space is needed for heading.
- nullHeadingRect.LayoutRect( nullRect, popupWindowLayout );
+ // find out, how much space is needed for heading (spaceForHeading was 23)
+ nullHeadingRect.LayoutRect(nullRect,AKN_LAYOUT_WINDOW_Pop_up_menu_with_heading_window_graphics_Line_1(nullRect));
TInt spaceForHeading = nullHeadingRect.Rect().Height();
- // This is necessary to position it correctly.
- aDef.iWindowRect.iTl.iY -= spaceForHeading;
- // this is because b=0 in parent of coverrect and because
- // parent's height is used in the child...
- TRect windowRect( aDef.iWindowRect );
+ aDef.iWindowRect.iTl.iY -= spaceForHeading; // This is necessary to position it correctly
+ // this is because b=0 in parent of coverrect and because
+ // parent's height is used in the child...
+
+ TRect window_rect = aDef.iWindowRect;
- aDef.iCover.LayoutRect( windowRect, popupWindowLayout );
- aDef.iSecond.LayoutRect( windowRect, KEmptyLayout );
- aDef.iFirst.LayoutRect( windowRect, KEmptyLayout );
- aDef.iOutline.LayoutRect( windowRect, KEmptyLayout );
- aDef.iInside.LayoutRect( windowRect, KEmptyLayout );
+ aDef.iCover.LayoutRect( window_rect, AKN_LAYOUT_WINDOW_Pop_up_menu_with_heading_window_graphics_Line_1(window_rect));
+ aDef.iSecond.LayoutRect( window_rect, AKN_LAYOUT_WINDOW_Pop_up_menu_with_heading_window_graphics_Line_2(window_rect));
+ aDef.iFirst.LayoutRect( window_rect, AKN_LAYOUT_WINDOW_Pop_up_menu_with_heading_window_graphics_Line_3(window_rect));
+ aDef.iOutline.LayoutRect(window_rect, AKN_LAYOUT_WINDOW_Pop_up_menu_with_heading_window_graphics_Line_4(window_rect));
+ aDef.iInside.LayoutRect( window_rect, AKN_LAYOUT_WINDOW_Pop_up_menu_with_heading_window_graphics_Line_5(window_rect));
- aDef.iPopupMenuWindowOffset.SetXY( 0, spaceForHeading );
+ aDef.iPopupMenuWindowOffset=TPoint(0,spaceForHeading);
}
-
EXPORT_C void AknPopupLayouts::ModifyWindowGraphicForMessageBox(TAknPopupWindowLayoutDef &aDef, TInt aNumberOfLines)
{
TInt varietyIndex = 0;
@@ -938,59 +959,4 @@
return layoutRect.Rect();
}
-
-void AknPopupLayouts::CommonSetup( TAknPopupWindowLayoutDef& aDef,
- const TAknWindowComponentLayout& aItemLayout,
- TInt aNum,
- TBool aHeading,
- TBool aLayoutHeading )
- {
- TRect windowRect( AknPopupLayouts::MenuRect( aDef ) );
-
- TAknWindowLineLayout listWithHeadingLayout(
- TAknWindowComponentLayout::Compose(
- TAknWindowComponentLayout::Compose(
- TAknWindowComponentLayout::SiblingAsChild(
- AknLayoutScalable_Avkon::popup_window_general( 1 ),
- AknLayoutScalable_Avkon::popup_window_general( 0 ) ),
- AknLayoutScalable_Avkon::listscroll_menu_pane( 0 ) ),
- AknLayoutScalable_Avkon::list_menu_pane( 0 ) ).LayoutLine() );
-
- TAknWindowLineLayout listLayout( listWithHeadingLayout );
-
- if ( !aHeading )
- {
- listLayout = TAknWindowComponentLayout::Compose(
- AknLayoutScalable_Avkon::listscroll_menu_pane( 0 ),
- AknLayoutScalable_Avkon::list_menu_pane( 0 ) ).LayoutLine();
- }
-
- // We really don't want parent relative list layout here because findbox
- // will be overwritten. Just calculate list height and use that.
- TRect nullRect( 0, 0, 0, 0 );
- TRect listItemRect( RectFromLayout( nullRect, aItemLayout ) );
- listLayout.iH = (TInt16)( aNum * listItemRect.Height() );
- listLayout.ib = ELayoutEmpty;
-
- aDef.iListRect.LayoutRect( windowRect, listLayout );
-
- if ( aLayoutHeading )
- {
- TAknWindowLineLayout part1(
- AknLayoutScalable_Avkon::heading_pane( 0 ).LayoutLine() );
- TAknWindowLineLayout part2( listWithHeadingLayout );
-
- // Combine two layouts togeher.
- if ( part2.iC != ELayoutEmpty ) part1.iC = part2.iC;
- if ( part2.il != ELayoutEmpty ) part1.il = part2.il;
- if ( part2.it != ELayoutEmpty ) part1.it = part2.it;
- if ( part2.ir != ELayoutEmpty ) part1.ir = part2.ir;
- if ( part2.ib != ELayoutEmpty ) part1.ib = part2.ib;
- if ( part2.iW != ELayoutEmpty ) part1.iW = part2.iW;
- if ( part2.iH != ELayoutEmpty ) part1.iH = part2.iH;
-
- aDef.iHeadingRect.LayoutRect( windowRect, part1 );
- }
- }
-
// End of File