imstutils/imconversationview/imcvuiapp/src/cimcvappsmileicondialog.cpp
branchRCL_3
changeset 28 3104fc151679
parent 27 2b7283837edb
child 29 9a48e301e94b
--- a/imstutils/imconversationview/imcvuiapp/src/cimcvappsmileicondialog.cpp	Thu Aug 19 09:41:53 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,516 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  Dialog for selecting smile icon.
-*
-*/
-
-
-
-
-// INCLUDE FILES
-
-#include "cimcvappsmileicondialog.h"
-#include "cimcvappsmileicongrid.h"
-#include "imcvappsmileutility.hrh"
-#include <AknDef.h>
-#include <aknappui.h>
-#include <AknUtils.h>
-#include <aknconsts.h>
-#include <aknborders.h>
-#include <AknsDrawUtils.h>
-#include <aknlayoutscalable_avkon.cdl.h>
-#include <aknlists.h> 
-#include <AknUtils.h> 
-#include "imcvlogger.h"
-#include "imcvuiapputils.h"
-
-#include "e32property.h"
-// CONSTANTS
-
-const TInt KAknSctCBaButtonDirections = 3; // bottom, right and left
-
-
-
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::NewL
-// (other items were commented in a header).
-// ---------------------------------------------------------
-CIMCVAppSmileIconDialog* CIMCVAppSmileIconDialog::NewL( 
-            const RPointerArray<CGulIcon>& aIconArray,
-			TInt& aSelectedIconId )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::NewL() start") );
-    CIMCVAppSmileIconDialog* self =
-        new (ELeave) CIMCVAppSmileIconDialog( aIconArray, aSelectedIconId );
-	IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::NewL() end") );
-    return self;
-    }
-
-
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::~CIMCVAppSmileIconDialog
-// ---------------------------------------------------------
-//
-CIMCVAppSmileIconDialog::~CIMCVAppSmileIconDialog()
-    {
-	
-    }
-
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::CIMCVAppSmileIconDialog
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-CIMCVAppSmileIconDialog::CIMCVAppSmileIconDialog( 
-                            const RPointerArray<CGulIcon>& aIconArray,
-							TInt& aSelectedIconId )
-:iIconArray( aIconArray ), iIconId( aSelectedIconId ), iLayoutChanged(EFalse)
-    {
-    
-    }
-
-
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::OfferKeyEventL
-// Handle key event.
-// If key code is other than OK and arrow key, no action.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TKeyResponse CIMCVAppSmileIconDialog::OfferKeyEventL(
-    const TKeyEvent& aKeyEvent, TEventCode aType)
-    {
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::OfferKeyEventL() start") );
-    TKeyResponse response( EKeyWasConsumed );
-    switch( aKeyEvent.iCode )
-        {
-		// fall through
-        case EKeyLeftArrow:
-        case EKeyRightArrow:
-        case EKeyUpArrow:
-        case EKeyDownArrow:
-            {
-            CIMCVAppSmileIconGrid* grid =
-				static_cast< CIMCVAppSmileIconGrid*>(
-				Control( EIMIdSelectSmileGrid ) );
-            grid->MoveCursor( aKeyEvent.iCode );
-            break;
-            }
-        case EKeyEscape: // handle dialog shutdown.
-            {
-			TryExitL( EAknSoftkeyExit );
-            return EKeyWasNotConsumed;
-            }
-        default:
-            {
-            response = CAknDialog::OfferKeyEventL(aKeyEvent, aType);
-            break;
-            }
-        }
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::OfferKeyEventL() end") );
-    return response;
-    }
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::OkToExitL
-// Called when CBA-key or OK-key is pressed.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMCVAppSmileIconDialog::HandleResourceChange( TInt aType )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::HandleResourceChange() start") );
-    if( aType == KEikDynamicLayoutVariantSwitch )
-        {
-		iLayoutChanged = ETrue;
-		SetLayout();
-        } 
-	CAknDialog::HandleResourceChange( aType );
-	IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::HandleResourceChange() end") );
-    }
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::OkToExitL
-// Called when CBA-key or OK-key is pressed.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-TBool CIMCVAppSmileIconDialog::OkToExitL( TInt aButtonId )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::OkToExitL() start") );
-    if( aButtonId == EAknSoftkeySelect ||
-        aButtonId == EEikBidOk )
-        {
-		CIMCVAppSmileIconGrid* grid =
-			static_cast< CIMCVAppSmileIconGrid*>(
-			Control( EIMIdSelectSmileGrid ) );
-		iIconId = grid->SelectedBitmapId();
-        }
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::OkToExitL() end") );
-    return ETrue;
-    }
-
-
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::PreLayoutDynInitL
-// Prepare for drawing dialog.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMCVAppSmileIconDialog::PreLayoutDynInitL()
-    {
-    SetLineNonFocusing( EIMIdSelectSmileLabel );
-    EnableDragEvents();
-    }
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::SetSizeAndPosition
-// Control size is set. This is called just after PreLayoutDynInitL().
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMCVAppSmileIconDialog::SetSizeAndPosition(const TSize& /*aSize*/)
-    {
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::SetSizeAndPosition() start") );
-	SetLayout();
-	IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::SetSizeAndPosition() end") );
-    }
-
-
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::CalculatePopupVariety
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-
-TInt CIMCVAppSmileIconDialog::CalculatePopupVariety()
-    {
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::CalculatePopupVariety() start") );
-
-    TAknLayoutScalableParameterLimits smileyDialogVariety = 
-    	AknLayoutScalable_Avkon::popup_grid_graphic_window_ParamLimits();
-    TInt maxVariety = smileyDialogVariety.LastVariety();
-
-    // CBA location affects popup layout
-    AknLayoutUtils::TAknCbaLocation cbaLocation = AknLayoutUtils::CbaLocation();
-
-    // bottom variety
-    TInt maxVarietyOffset = 0;
-    TInt varietyOffset = maxVariety + 1;
-    // right variety
-    if (cbaLocation == AknLayoutUtils::EAknCbaLocationRight)
-        {
-    	varietyOffset = (maxVariety + 1)/KAknSctCBaButtonDirections;
-    	maxVarietyOffset = varietyOffset;
-        }
-
-    // left variety
-    else if (cbaLocation == AknLayoutUtils::EAknCbaLocationLeft)
-        {
-    	varietyOffset = (maxVariety + 1)/KAknSctCBaButtonDirections;
-    	maxVarietyOffset = varietyOffset + varietyOffset;
-        }
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::CalculatePopupVariety() end") );
-	
-	if ((maxVarietyOffset + varietyOffset)>maxVariety)
-		return maxVariety;
-	else
-    	return maxVarietyOffset + varietyOffset;
-	
-    }
-
-
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::SetLayout
-// Set dialog layout.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-void CIMCVAppSmileIconDialog::SetLayout()
-    {
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::SetLayout() start"));
-    iIsMirrored = AknLayoutUtils::LayoutMirrored();
-    TRect clientRect; 
-    //check LAF docs for constants
-    //AknLayoutUtils::LayoutMetricsRect
-    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EApplicationWindow,
-            clientRect);
-    CIMCVAppSmileIconGrid* grid =
-
-    static_cast<CIMCVAppSmileIconGrid*> (
-
-    Control(EIMIdSelectSmileGrid));
-
-    // Select correct popup layout
-
-    TInt varietyNumber = CalculatePopupVariety();
-    TRect rect = grid->GetFirstCellRect();
-
-    TInt iconCount = iIconArray.Count();
-    // calculating the number of rows required by the icon grid.
-
-    TInt viewableWidth = 0;
-    
-    for (TInt i = varietyNumber; i >= 0; i--)
-        {
-
-        TAknWindowLineLayout popupGridDialogLayout(
-                AknLayoutScalable_Avkon::popup_grid_graphic_window(i)); 
-
-        TAknLayoutRect dialogRect;
-
-        dialogRect.LayoutRect(clientRect, popupGridDialogLayout);
-        
-        viewableWidth = CheckDialog(dialogRect, rect);
-        if (viewableWidth)
-            {
-            varietyNumber = i;
-            break;
-            }
-        }
-    if (viewableWidth)
-        {
-        TAknWindowLineLayout popupGridDialogLayout(
-                AknLayoutScalable_Avkon::popup_grid_graphic_window(
-                        varietyNumber));
-        TAknLayoutRect dialogRect;
-        dialogRect.LayoutRect(clientRect, popupGridDialogLayout);
-        grid->SetViewableWindowWidth(viewableWidth);
-        SetRect(dialogRect.Rect());
-        }
-    // If there is no suitable solution for the smiley dialog layout
-    else
-        {
-        // No variety of the popup_grid_graphic_window has provided sufficient area
-        // for the grid display. Hence selecting 0 variety for displaying the grid
-        // because it has the greatest area.
-        varietyNumber = 0;
-        TAknWindowLineLayout popupGridDialogLayout(
-                AknLayoutScalable_Avkon::popup_grid_graphic_window(
-                        varietyNumber));
-
-        TAknLayoutRect dialogRect;
-
-        dialogRect.LayoutRect(clientRect, popupGridDialogLayout);
-
-        if (!iIsMirrored)
-            {
-            // Right Margin of the top left (top right) icon's X
-            TInt leftMargin = rect.iTl.iX;
-
-            // Use the max viewable width
-            viewableWidth = dialogRect.Rect().iBr.iX
-                    - dialogRect.Rect().iTl.iX - leftMargin;
-            }
-        else
-            {
-            // Left Margin of the top left (top right) icon's X
-            TInt rightMargin = rect.iBr.iX;
-
-            // Use the max viewable width
-            viewableWidth = dialogRect.Rect().iBr.iX
-                    - dialogRect.Rect().iTl.iX + rightMargin;
-            }
-
-        grid->SetViewableWindowWidth(viewableWidth);
-
-        if (!iIsMirrored)
-            SetRect(dialogRect.Rect());
-        // When the Hebrew is the language as well as the Arb languages
-        // The align is not right
-        else
-            {
-            TRect mirroredDialogRect;
-
-            // Align to right.
-            mirroredDialogRect = dialogRect.Rect();
-
-            // Get the rect of the cba pane.
-            TRect controlPaneRect;
-            AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EControlPane,
-                    controlPaneRect);
-
-            TInt cbaWidth = controlPaneRect.iBr.iX - controlPaneRect.iTl.iX;
-
-            mirroredDialogRect.iTl.iX -= cbaWidth;
-            mirroredDialogRect.iBr.iX -= cbaWidth;
-
-            SetRect(mirroredDialogRect);
-            }
-        }
-    }
-
-
-
-// ---------------------------------------------------------
-
-// CIMCVAppSmileIconDialog::CheckDialog
-
-// Check if Dialog is suitable to fit all smile icon
-
-// (other items were commented in a header).
-
-// ---------------------------------------------------------
-
-TInt CIMCVAppSmileIconDialog::CheckDialog(TAknLayoutRect aDialogRect,TRect aRect)
-		{
-        // topMargin is the height of the margin which the smiley grid has 
-        // above its top horizontal line and bottom horizontal line.
-        TInt topMargin = aRect.Height();
-        
-        TRect dialogRect = aDialogRect.Rect();
-        
-        TInt vWidth = 0;
-        TInt vheight = 0;
-        TInt vArea = 0;
-        vheight = dialogRect.iBr.iY - dialogRect.iTl.iY - 2*topMargin;
-        if ( !iIsMirrored )
-            {
-            vWidth = dialogRect.iBr.iX - dialogRect.iTl.iX - 2*aRect.iTl.iX;;
-            }
-        else 
-            {
-			// Patch fix for mirrored layout when mode changes from portrait to
-			// landscape or vice versa the width calculation differs to adjust the correct width
-			if (iLayoutChanged) // mode change like portrait to landscape or vice versa
-				{
-				vWidth = (2*aRect.iBr.iX) - (dialogRect.iBr.iX - dialogRect.iTl.iX);
-				}
-			else
-				{
-				vWidth = dialogRect.iBr.iX - dialogRect.iTl.iX + 2*aRect.iBr.iX;
-				}
-            } 
-		vArea = vWidth*vheight;
-		
-	    TInt iconCount = iIconArray.Count();
-
-	    TInt areaOfIcon = iconCount * aRect.Width() * aRect.Height();
-	    
-	    if(areaOfIcon > vArea)
-		    {
-			return 0;
-		    }
-		else
-			{
-			return vWidth;
-			}
-		}
-
-
-// ---------------------------------------------------------
-// CIMCVAppSmileIconDialog::CreateCustomControlL
-// Create CIMCVAppSmileIconGrid class in order to display
-// icons in grid.
-// This is called when dialog is created.
-// (other items were commented in a header).
-// ---------------------------------------------------------
-//
-SEikControlInfo CIMCVAppSmileIconDialog::CreateCustomControlL(
-										TInt aControlType )
-    {
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::SetLayout() start") );
-    SEikControlInfo controlInfo;
-    controlInfo.iControl = NULL;
-    controlInfo.iTrailerTextId = 0;
-    controlInfo.iFlags = 0;
-    if( aControlType == EIMCtrlSelectSmileGrid )
-        {
-        controlInfo.iControl = CIMCVAppSmileIconGrid::NewL( this, iIconArray );
-
-        static_cast<CIMCVAppSmileIconGrid*>
-
-            (controlInfo.iControl)->SetTapObserver( this, 0 );
-
-        }
-    IM_CV_LOGS(TXT("CIMCVAppSmileIconDialog::SetLayout() end") );
-    return controlInfo;
-    }
-
-
-
-// ---------------------------------------------------------
-
-// CIMCVAppSmileIconDialog::HandleDialogPageEventL
-
-// (other items were commented in a header).
-
-// ---------------------------------------------------------
-
-//
-
-void CIMCVAppSmileIconDialog::HandleDialogPageEventL( TInt aEventID )
-
-    {
-    if( IMCVUiAppUtils::PenEnabled() )
-        {
-        if ( iSmileyPointed &&
-             aEventID == MEikDialogPageObserver::EDialogPageTapped )
-            {        
-            // Exit requested, exit with ok. 
-            TryExitL( EAknSoftkeyOk );
-            }
-         
-         //else keep dialog as it is do not exit.  
-        }
-    }
-
-// ---------------------------------------------------------
-
-// CIMCVAppSmileIconDialog::HandleTapEventL
-
-// (other items were commented in a header).
-
-// ---------------------------------------------------------
-
-//
-
-void CIMCVAppSmileIconDialog::HandleTapEventL( TTapEvent aEvent, 
-
-                                          TUint /*aControlId*/ )
-
-    {
-
-    // User tapped on smiley.
-
-    if( aEvent == MIMCVTapEventObserver::ESingleTap )
-
-        {
-
-        // Smiley was selected but we can't exit directly from here. 
-
-        // Instead we put the flag on and wait for 
-
-        // HandleDialogPageEventL.
-
-        iSmileyPointed = ETrue;
-
-        }
-
-    }
-
-
-
-// End of File