basiclocationinfodisplay/blid/ui/src/CBlidMainControl.cpp
branchRCL_3
changeset 18 870918037e16
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/basiclocationinfodisplay/blid/ui/src/CBlidMainControl.cpp	Wed Sep 01 12:31:27 2010 +0100
@@ -0,0 +1,726 @@
+/*
+ * 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:  Provides blid startup view class methods.
+ *
+ */
+
+// SYSTEM INCLUDES
+#include <aknmessagequerydialog.h> //CAknMessageQueryDialog
+#include <StringLoader.h>
+#include <aknconsts.h>
+#include <blid.rsg>
+#include <akntitle.h> 
+#include <aknnavide.h>
+#include <eikspane.h>
+#include <aknlayoutscalable_apps.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <blid.mbg>
+
+// HTK includes
+#include <alf/alfenv.h>
+#include <alf/alfanchorlayout.h>
+#include <alf/alftextvisual.h>
+#include <alf/alftextstyle.h>
+#include <alf/alfborderbrush.h>
+#include <alf/alfbrusharray.h>
+#include <alf/alfevent.h>
+#include <alf/alftransformation.h>
+#include <alf/alftexture.h>
+#include <alf/alfdecklayout.h>
+#include <alf/alfutil.h>
+#include <alf/alfimageloaderutil.h>
+#include <alf/alfimagevisual.h>
+
+#include "Blid.hrh"
+
+// USER INCLUDES
+#include "CBlidMainControl.h"
+#include "CBlidEng.h"
+#include "CBlidDocument.h"
+#include "MBlidLocation.h"
+#include "CBlidBaseView.h"
+#include "CBlidBaseContainer.h"
+#include "bliduiconsts.h"
+#include "BlidNotes.h"
+#include "CBlidLocSettingLauncher.h"
+#include "Debug.h"
+
+TInt CBlidMainControl::iPSYTimeoutCount = 0;
+
+TInt MessageQueryCallBack(TAny* aPtr);
+
+const TInt KTimerValue = 200000;
+
+// ================= MEMBER FUNCTIONS =======================
+// ---------------------------------------------------------
+// CBlidMainControl::NewL()
+// Two phased constructor
+// ---------------------------------------------------------
+//
+CBlidMainControl* CBlidMainControl::NewL(CAlfEnv& aEnv, const TRect& aRect,
+        CBlidBaseView& aView)
+    {
+    CBlidMainControl* self = new (ELeave) CBlidMainControl(aEnv, aView);
+    CleanupStack::PushL(self);
+    self->ConstructL(aRect);
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------
+//CBlidMainControl::CBlidMainControl()
+// First phase constructor, can not leave
+// ---------------------------------------------------------
+//
+CBlidMainControl::CBlidMainControl(CAlfEnv& aEnv, CBlidBaseView& aView) :
+    CAlfControl(), iEnv(aEnv), iView(aView), isAccessoryRequired(EFalse)
+    {
+    iOnlineMode = EFalse;
+    }
+
+// ---------------------------------------------------------
+// CBlidMainControl::ConstructL()
+// Second phase constructor, may leave
+// ---------------------------------------------------------
+//
+void CBlidMainControl::ConstructL(const TRect& /*aRect*/)
+    {
+    CAlfControl::ConstructL(iEnv);
+
+    iMainLayout = CAlfAnchorLayout::AddNewL(*this);
+    iSearchTextVisual = CAlfTextVisual::AddNewL(*this, iMainLayout);
+    iAnimationVisual = CAlfImageVisual::AddNewL(*this, iMainLayout);
+
+    iDisplayIcon = 1;
+    iPeriodic = CPeriodic::NewL(0); // neutral priority 
+    if (!iPeriodic->IsActive())
+        {
+        iPeriodic->Start(TTimeIntervalMicroSeconds32(KTimerValue),
+                TTimeIntervalMicroSeconds32(KTimerValue), TCallBack(Tick,
+                        this));
+        }
+
+    UpdateDisplayLayoutL();
+    CreateSearchingTextL();
+    CreateAnimationL();
+    UpdateAnimation();
+
+    iLauncher = NULL;
+    isSettingsLaunched = EFalse;
+
+    //start requesting
+    CBlidEng* engine = iView.BlidDocument()->Engine();
+    iLocation = engine->LocationModel();
+    }
+
+// ---------------------------------------------------------
+// CBlidMainControl::Tick()
+// Timer callback function, to update image in animation
+// ---------------------------------------------------------
+//
+TInt CBlidMainControl::Tick(TAny* aObject)
+    {
+    ((CBlidMainControl*) aObject)->UpdateAnimation(); // cast, and call non-static function
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------
+// CBlidMainControl::CreateSearchingTextL()
+// Function to create search text visual
+// ---------------------------------------------------------
+//
+void CBlidMainControl::CreateSearchingTextL()
+    {
+    /* Layout Hierarchy
+     main_blid2_pane -> blid2_search_pane -> blid2_search_pane_t1
+     */
+
+    // Get the text font
+
+    TInt typefaceStyleId = iEnv.TextStyleManager().CreatePlatformTextStyleL(
+            EAknLogicalFontPrimarySmallFont, EAlfTextStyleNormal);
+    CAlfTextStyle* style1 =
+            iEnv.TextStyleManager().TextStyle(typefaceStyleId);
+    style1->SetBold(ETrue);
+    // Set the text font size in pixel
+    style1->SetTextPaneHeightInPixels(26, ETrue);
+
+    TRgb rgb;
+    // Fetch the skin color 
+    AknsUtils::GetCachedColor(AknsUtils::SkinInstance(), rgb,
+            KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG1);
+
+    iSearchTextVisual->SetColor(rgb);
+    HBufC* noteText = StringLoader::LoadLC(R_BLID_NOTE_SEARCHING_ANIMATION,
+            CEikonEnv::Static());
+    iSearchTextVisual->SetTextL(*noteText);
+    iSearchTextVisual->SetTextStyle(style1->Id());
+    iSearchTextVisual->SetAlign(EAlfAlignHCenter, EAlfAlignVCenter);
+    CleanupStack::PopAndDestroy(noteText); //noteText
+
+    }
+
+// ---------------------------------------------------------
+// CBlidMainControl::CreateAnimationL()
+// Creates image visuals for animation
+// ---------------------------------------------------------
+//
+void CBlidMainControl::CreateAnimationL()
+    {
+    /* Layout Hierarchy
+     main_blid2_pane -> blid2_search_pane -> blid2_search_pane_g1
+     */
+
+    // code to load svg icon
+    MAlfBitmapProvider* provider = NULL;
+
+    // first creste the image loader utils and then call SetSize.	
+    iView.ImageLoaderUtils()->SetSize(iAnimationRect.Size());
+
+    // then create the bitmap provider  
+    provider = iView.ImageLoaderUtils()->CreateImageLoaderL(
+            KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
+            iView.ImagePathName(), // mif file name with path.
+            EMbmBlidQgn_graf_blid_startup_01, // bitmap id defiened in mbg file
+            EMbmBlidQgn_graf_blid_startup_01_mask); // bitmap mask id defiened in mbg file
+    // now using that bitmap provider create the texture.
+    CAlfTexture & texture1 = iEnv.TextureManager().CreateTextureL(
+            KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault);
+    iTextures.Append(&texture1);
+
+    // then create the bitmap provider  
+    provider = iView.ImageLoaderUtils()->CreateImageLoaderL(
+            KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
+            iView.ImagePathName(), // mif file name with path.
+            EMbmBlidQgn_graf_blid_startup_02, // bitmap id defiened in mbg file
+            EMbmBlidQgn_graf_blid_startup_02_mask); // bitmap mask id defiened in mbg file
+    // now using that bitmap provider create the texture.
+    CAlfTexture & texture2 = iEnv.TextureManager().CreateTextureL(
+            KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault);
+    iTextures.Append(&texture2);
+
+    // then create the bitmap provider  
+    provider = iView.ImageLoaderUtils()->CreateImageLoaderL(
+            KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
+            iView.ImagePathName(), // mif file name with path.
+            EMbmBlidQgn_graf_blid_startup_03, // bitmap id defiened in mbg file
+            EMbmBlidQgn_graf_blid_startup_03_mask); // bitmap mask id defiened in mbg file
+    // now using that bitmap provider create the texture.
+    CAlfTexture & texture3 = iEnv.TextureManager().CreateTextureL(
+            KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault);
+    iTextures.Append(&texture3);
+
+    // then create the bitmap provider  
+    provider = iView.ImageLoaderUtils()->CreateImageLoaderL(
+            KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
+            iView.ImagePathName(), // mif file name with path.
+            EMbmBlidQgn_graf_blid_startup_04, // bitmap id defiened in mbg file
+            EMbmBlidQgn_graf_blid_startup_04_mask); // bitmap mask id defiened in mbg file
+    // now using that bitmap provider create the texture.
+    CAlfTexture & texture4 = iEnv.TextureManager().CreateTextureL(
+            KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault);
+    iTextures.Append(&texture4);
+
+    // then create the bitmap provider  
+    provider = iView.ImageLoaderUtils()->CreateImageLoaderL(
+            KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
+            iView.ImagePathName(), // mif file name with path.
+            EMbmBlidQgn_graf_blid_startup_05, // bitmap id defiened in mbg file
+            EMbmBlidQgn_graf_blid_startup_05_mask); // bitmap mask id defiened in mbg file
+    // now using that bitmap provider create the texture.
+    CAlfTexture & texture5 = iEnv.TextureManager().CreateTextureL(
+            KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault);
+    iTextures.Append(&texture5);
+
+    // then create the bitmap provider  
+    provider = iView.ImageLoaderUtils()->CreateImageLoaderL(
+            KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
+            iView.ImagePathName(), // mif file name with path.
+            EMbmBlidQgn_graf_blid_startup_06, // bitmap id defiened in mbg file
+            EMbmBlidQgn_graf_blid_startup_06_mask); // bitmap mask id defiened in mbg file
+    // now using that bitmap provider create the texture.
+    CAlfTexture & texture6 = iEnv.TextureManager().CreateTextureL(
+            KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault);
+    iTextures.Append(&texture6);
+
+    // then create the bitmap provider  
+    provider = iView.ImageLoaderUtils()->CreateImageLoaderL(
+            KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
+            iView.ImagePathName(), // mif file name with path.
+            EMbmBlidQgn_graf_blid_startup_07, // bitmap id defiened in mbg file
+            EMbmBlidQgn_graf_blid_startup_07_mask); // bitmap mask id defiened in mbg file
+    // now using that bitmap provider create the texture.
+    CAlfTexture & texture7 = iEnv.TextureManager().CreateTextureL(
+            KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault);
+    iTextures.Append(&texture7);
+
+    // then create the bitmap provider  
+    provider = iView.ImageLoaderUtils()->CreateImageLoaderL(
+            KAknsIIDQgnGrafBlidStartup, // svg icon skin constant id defiened in Aknsconstant.h file
+            iView.ImagePathName(), // mif file name with path.
+            EMbmBlidQgn_graf_blid_startup_08, // bitmap id defiened in mbg file
+            EMbmBlidQgn_graf_blid_startup_08_mask); // bitmap mask id defiened in mbg file
+    // now using that bitmap provider create the texture.
+    CAlfTexture & texture8 = iEnv.TextureManager().CreateTextureL(
+            KAlfAutoGeneratedTextureId, provider, EAlfTextureFlagDefault);
+    iTextures.Append(&texture8);
+
+    }
+
+// ---------------------------------------------------------
+// CBlidMainControl::UpdateAnimation
+// updates the animation image
+// ---------------------------------------------------------
+//
+void CBlidMainControl::UpdateAnimation()
+    {
+    if (KNumOfStartUpIcon > iDisplayIcon)
+        {
+        iDisplayIcon++;
+        }
+    else
+        {
+        iDisplayIcon = 1;
+        }
+    iAnimationVisual->SetImage(TAlfImage(*iTextures[iDisplayIcon - 1]));//N   
+    }
+
+// ----------------------------------------------------
+// CBlidMainControl::~CBlidMainControl
+// Destructor
+// Frees reserved resources
+// ----------------------------------------------------
+//
+CBlidMainControl::~CBlidMainControl()
+    {
+    iTextures.Reset();
+    iTextures.Close();
+    delete iLauncher;
+    delete iHeadPaneText;
+    delete iMsgQueryText;
+    delete iLinkText;
+    delete iMsgQText;
+    delete iPeriodic;
+    }
+
+// ---------------------------------------------------------
+// CBlidMainControl::UpdateL
+// Updates the view after getting update from location model
+// ---------------------------------------------------------
+//
+void CBlidMainControl::UpdateL()
+    {
+    TInt result = 0;
+    DEBUG1(" CBlidMainControl::UpdateL iErrorCode ::%d", iErrorCode );
+
+    if (!iView.IsSatViewActive() && iOnlineMode)
+        {
+
+        if (iView.IsForeGroundApp())
+            {
+            iView.ActivateSatelliteViewL();
+            }
+        }
+    TInt retVal = iLocation->CheckGPSAvailability();
+    // Check GPS device availability
+    DEBUG1(" CBlidMainControl::CheckGPSAvailability code ::%d", retVal );
+    switch (iErrorCode)
+        {
+        case KErrTimedOut:
+            {
+            if (retVal == 1)
+                {
+                /* 
+                 GPS device connected but position information
+                 available but not of good quality
+                 */
+                if (iView.IsForeGroundApp())
+                    {
+                    iView.ActivateSatelliteViewL();
+                    }
+                }
+            break;
+            }
+        case KErrNotFound:
+            // No module (PSY) selected or invalid PSY
+                {
+                iOnlineMode = EFalse;
+                if (iView.IsForeGroundApp())
+                    {
+                    iLocation->StopRequesting();
+                    TCallBack callback(MessageQueryCallBack, this);
+                    result
+                            = DispMsgQueryWithLinkL(R_BLID_NOGPS_FOUND,
+                                    R_BLID_NOGPS_FOUND_TEXT,
+                                    R_BLID_SELECT_POSITIONING_METHOD, ETrue,
+                                    callback);
+                    if (result == EBlidSoftkeyRetry)
+                        {
+                        iLocation->StartRequesting();
+                        }
+                    else if (result == EAknSoftkeyOk)
+                        {
+                        iView.ExitMainApplicationL(EEikCmdExit);
+                        }
+                    }
+                break;
+                }
+            case KPositionPartialUpdate:
+                {
+                if (iView.IsForeGroundApp())
+                    {
+                    iView.ActivateSatelliteViewL();
+                    }
+                break;
+                }
+            case KErrArgument:
+            // The positioning module is unable to support the requested type
+            default:
+                {
+                iOnlineMode = EFalse;
+
+                if (retVal == 0)
+                    {
+                    if (iLocation->IsSatCapablePsyAvailable())
+                        {
+                        iLocation->StopRequesting();
+                        iOnlineMode = EFalse;
+                        TCallBack callback(MessageQueryCallBack, this);
+                        result = DispMsgQueryWithLinkL(R_BLID_NOPSY_ENABLED,
+                                R_BLID_ERROR_NO_PSY,
+                                R_BLID_SELECT_POSITIONING_METHOD, ETrue,
+                                callback);
+                        if (result == EBlidSoftkeyRetry)
+                            {
+                            iLocation->StartRequesting();
+                            }
+                        else if (result == EAknSoftkeyOk)
+                            {
+                            iView.ExitMainApplicationL(EEikCmdExit);
+                            }
+                        }
+                    // no GPS device note
+                    // GPS un-available
+                    else if (iView.IsForeGroundApp())
+                        {
+                        iLocation->StopRequesting();
+                        TCallBack callback(MessageQueryCallBack, this);
+                        isAccessoryRequired = ETrue;
+                        result = DispMsgQueryWithLinkL(R_BLID_NOGPS_FOUND,
+                                R_BLID_NOGPS_AVAILABLE_TEXT,
+                                R_BLID_SELECT_POSITIONING_METHOD, EFalse,
+                                callback);
+                        if (result == EAknSoftkeyOk)
+                            {
+                            iView.ExitMainApplicationL(EEikCmdExit);
+                            }
+                        }
+                    else
+                        {
+                        BlidNotes::iGPSUnavailableDisplayed = ETrue;
+                        }
+                    CBlidBaseContainer::SetGPSAvailability(EFalse);
+                    }
+                break;
+
+            }
+        }
+    }
+
+// ----------------------------------------------------
+// CBlidMainControl::MakeTitleL
+// Sets the title to string represented by resource
+// ----------------------------------------------------
+//
+void CBlidMainControl::MakeTitleL(TInt aResourceText)
+    {
+    HBufC* buffer = StringLoader::LoadLC(aResourceText);
+    CAknTitlePane* title =
+            static_cast<CAknTitlePane*> (StatusPane()-> ControlL(TUid::Uid(
+                    EEikStatusPaneUidTitle)));
+    CleanupStack::Pop(); //buffer
+    title->SetText(buffer); // Takes ownership of buf
+    }
+
+// ----------------------------------------------------
+// CBlidMainControl::StatusPane
+// Returns the status pane
+// ----------------------------------------------------
+//
+CEikStatusPane* CBlidMainControl::StatusPane() const
+    {
+    return CEikonEnv::Static()->AppUiFactory()->StatusPane();
+    }
+
+// ----------------------------------------------------
+// CBlidMainControl::SetErrorCode
+// Sets the error code
+// ----------------------------------------------------
+//
+void CBlidMainControl::SetErrorCode(const TInt aErrorCode)
+    {
+    iErrorCode = aErrorCode;
+    }
+
+// ----------------------------------------------------
+// CBlidMainControl::SetOnlineMode
+// Sets the online mode
+// ----------------------------------------------------
+//
+void CBlidMainControl::SetOnlineMode(const TBool aOnlineMode)
+    {
+    iOnlineMode = aOnlineMode;
+    }
+
+// ----------------------------------------------------
+// CBlidMainControl::DispMsgQueryWithLinkL()
+// Displays the message query with a link
+// ----------------------------------------------------
+//
+TInt CBlidMainControl::DispMsgQueryWithLinkL(TInt aHeadingText,
+        TInt aMsgQueryText, TInt aLinkText, TBool aLinkShow,
+        TCallBack aCallBack)
+    {
+    CEikonEnv* env = CEikonEnv::Static();
+    if (!iHeadPaneText)
+        {
+        iHeadPaneText = env->AllocReadResourceL(aHeadingText);
+        }
+
+    if (!iMsgQueryText)
+        {
+        iMsgQueryText = env->AllocReadResourceL(aMsgQueryText);
+        }
+
+    if (!iLinkText)
+        {
+        iLinkText = env->AllocReadResourceL(aLinkText);
+        }
+    if (!iMsgQText)
+        {
+        if (aLinkShow != EFalse)
+            {
+            iMsgQText = HBufC::NewL(iMsgQueryText->Length()
+                    + KNewLine().Length() + KOpeningLinkTag().Length()
+                    + iLinkText->Length() + KClosingLinkTag().Length());
+            }
+        else
+            {
+            iMsgQText = HBufC::NewL(iMsgQueryText->Length()
+                    + KNewLine().Length() + KOpeningLinkTag().Length());
+            }
+        }
+
+    iMsgQText->Des().Copy(*iMsgQueryText);
+    iMsgQText->Des().Append(KNewLine);
+    if (!isAccessoryRequired)
+        {
+        iMsgQText->Des().Append(KOpeningLinkTag);
+        iMsgQText->Des().Append(*iLinkText);
+        iMsgQText->Des().Append(KClosingLinkTag);
+        }
+    else
+        {
+        iMsgQText->Des().Append(_L( " "));
+        }
+    //////////////////////////////////////////////////////
+    CAknMessageQueryDialog* msgDlg = CAknMessageQueryDialog::NewL(*iMsgQText);
+
+    // if we remove this if part it will give CONE8 panic
+    if (iDialog)
+        {
+        delete iDialog;
+        iDialog = NULL;
+        }
+
+    iDialog = msgDlg;
+
+    msgDlg->PrepareLC(R_BLID_MESSAGE_QUERY_DIALOG); // Pushed dialog is popped inside RunLD
+
+    msgDlg->Heading()->SetTextL(*iHeadPaneText);
+
+    msgDlg->SetLink(aCallBack);
+
+    if (!isAccessoryRequired)
+        {
+        msgDlg->ButtonGroupContainer().SetCommandSetL(
+                R_BLID_INFOPOPUP_SOFTKEYS_RETRY__EXIT);
+        }
+    else
+        {
+        msgDlg->ButtonGroupContainer().SetCommandSetL(
+                R_BLID_INFOPOPUP_SOFTKEYS_EXIT);
+        }
+    isDialogLaunched = ETrue;
+    TInt retval = msgDlg->RunLD();
+    if (isDialogLaunched)
+        {
+        msgDlg = NULL;
+        iDialog = NULL;
+        isDialogLaunched = EFalse;
+        return retval;
+        }
+    return -1;
+    }
+
+// ----------------------------------------------------
+// CBlidMainControl::CreateNaviPaneL
+// Creates navigation pane
+// ----------------------------------------------------
+//
+void CBlidMainControl::CreateNaviPaneL()
+    {
+    CEikStatusPane* sp = CEikonEnv::Static()->AppUiFactory()->StatusPane();
+    // Fetch pointer to the default navi pane control
+    CAknNavigationControlContainer* naviPane =
+            static_cast<CAknNavigationControlContainer*> (sp->ControlL(
+                    TUid::Uid(EEikStatusPaneUidNavi)));
+
+    naviPane->PushDefaultL(EFalse);
+    }
+
+// ----------------------------------------------------
+// CBlidMainControl::LaunchPositioningSettingsViewL
+// Launches positioning settings view
+// ----------------------------------------------------
+//
+void CBlidMainControl::LaunchPositioningSettingsViewL()
+    {
+    if (!iLauncher)
+        {
+        iLauncher = CBlidLocSettingsLauncher::NewL();
+        }
+    iLauncher->SetControl(this);
+    isSettingsLaunched = ETrue;
+    iLauncher->LaunchL();
+    }
+
+// ----------------------------------------------------
+// CBlidMainControl::DeleteDialogResource
+// Seletes the dialog resources
+// ----------------------------------------------------
+//
+void CBlidMainControl::DeleteDialogResource()
+    {
+    if (isSettingsLaunched)
+        {
+        delete iHeadPaneText;
+        iHeadPaneText = NULL;
+
+        delete iMsgQueryText;
+        iMsgQueryText = NULL;
+
+        delete iLinkText;
+        iLinkText = NULL;
+
+        delete iMsgQText;
+        iMsgQText = NULL;
+        }
+    }
+
+// ----------------------------------------------------
+// CBlidMainControl::UpdateDisplayLayoutL
+// Updates the display layout in response to a change in app resource
+// ----------------------------------------------------
+//
+void CBlidMainControl::UpdateDisplayLayoutL()
+    {
+    /* Layout Hierarchy
+     main_blid2_pane -> blid2_search_pane -> blid2_search_pane_t1
+     
+     main_blid2_pane -> blid2_search_pane -> blid2_search_pane_g1
+     */
+
+    TAknLayoutRect mainBlid2Pane;
+    TAknLayoutRect blid2SearchPane;
+    TAknLayoutRect blid2SearchPaneG1;
+    TAknLayoutText blid2SearchPaneT1;
+    //TRect animationRect;	
+    TInt variety;
+
+    if (Layout_Meta_Data::IsLandscapeOrientation())
+        {
+        variety = 1;
+        }
+    else
+        {
+        variety = 0;
+        }
+    /////////////// recalculate text rect /////////////////////////
+    TRect rect;
+    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect);
+    mainBlid2Pane.LayoutRect(rect,
+            AknLayoutScalable_Apps::main_blid2_pane().LayoutLine());
+
+    blid2SearchPane.LayoutRect(mainBlid2Pane.Rect(),
+            AknLayoutScalable_Apps::blid2_search_pane(variety).LayoutLine());
+
+    blid2SearchPaneT1.LayoutText(
+            blid2SearchPane.Rect(),
+            AknLayoutScalable_Apps::blid2_search_pane_t1(variety).LayoutLine());
+
+    /////////////// recalculate animation rect /////////////////////////
+    blid2SearchPaneG1.LayoutRect(
+            blid2SearchPane.Rect(),
+            AknLayoutScalable_Apps::blid2_search_pane_g1(variety).LayoutLine());
+    iAnimationRect = blid2SearchPaneG1.Rect();
+
+    TAlfRealPoint topTextPoint(blid2SearchPaneT1.TextRect().iTl);
+    TAlfRealPoint bottomTextPoint(blid2SearchPaneT1.TextRect().iBr);
+
+    //Anchor for searching Text	
+    iMainLayout->SetAnchor(EAlfAnchorTopLeft, 0, EAlfAnchorOriginLeft,
+            EAlfAnchorOriginTop, EAlfAnchorMetricAbsolute,
+            EAlfAnchorMetricAbsolute, TAlfTimedPoint(topTextPoint.iX,
+                    topTextPoint.iY));
+    iMainLayout->SetAnchor(EAlfAnchorBottomRight, 0, EAlfAnchorOriginLeft,
+            EAlfAnchorOriginTop, EAlfAnchorMetricAbsolute,
+            EAlfAnchorMetricAbsolute, TAlfTimedPoint(bottomTextPoint.iX,
+                    bottomTextPoint.iY));
+
+    TAlfRealPoint topAnimationPoint(iAnimationRect.iTl);
+    TAlfRealPoint bottomAnimationPoint(iAnimationRect.iBr);
+
+    //Anchor for animation	
+    iMainLayout->SetAnchor(EAlfAnchorTopLeft, 1, EAlfAnchorOriginLeft,
+            EAlfAnchorOriginTop, EAlfAnchorMetricAbsolute,
+            EAlfAnchorMetricAbsolute, TAlfTimedPoint(topAnimationPoint.iX,
+                    topAnimationPoint.iY));
+    iMainLayout->SetAnchor(EAlfAnchorBottomRight, 1, EAlfAnchorOriginLeft,
+            EAlfAnchorOriginTop, EAlfAnchorMetricAbsolute,
+            EAlfAnchorMetricAbsolute, TAlfTimedPoint(bottomAnimationPoint.iX,
+                    bottomAnimationPoint.iY));
+
+    }
+
+// -----------------------------------------------------------------------------
+// CBlidMainControl::MessageQueryCallBack()
+// Called when link is clicked on message query dialog
+// -----------------------------------------------------------------------------
+//
+TInt MessageQueryCallBack(TAny* aPtr)
+    {
+    CBlidMainControl* ptr = static_cast<CBlidMainControl*> (aPtr);
+    if (ptr)
+        {
+        TRAP_IGNORE( ptr->LaunchPositioningSettingsViewL() );
+        if (ptr->iDialog)
+            {
+            TRAP_IGNORE( ptr->iDialog->ProcessCommandL( 3001 ) );
+            }
+        }
+    return KErrNone;
+    }
+//End Of File
+