--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/basiclocationinfodisplay/blid/ui/src/CBlidBaseContainer.cpp Tue Feb 02 00:16:03 2010 +0200
@@ -0,0 +1,328 @@
+/*
+* Copyright (c) 2005 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 request container class methods.
+*
+*/
+
+
+// INCLUDE FILES
+#include <akncontext.h>
+#include <aknnavide.h>
+#include <eikspane.h>
+#include <barsread.h>
+#include <akntabgrp.h>
+#include <AknIconArray.h>
+#include <gulicon.h>
+#include <StringLoader.h>
+#include <akntitle.h>
+#include <eiklbx.h>
+#include <avkon.hrh>
+#include <coehelp.h>
+#include <AknsUtils.h>
+#include <akntabgrp.h>
+#include <blid.mbg>
+#include "CBlidBaseContainer.h"
+#include "MKeyProcessor.h"
+#include "BlidUID.h"
+#include "bliduiconsts.h"
+#include "Blidutils.h"
+#include "Blid.hrh"
+#include "CBlidAppUi.h"
+
+TBool CBlidBaseContainer::iGPSAvailability = EFalse;
+// ================= MEMBER FUNCTIONS =======================
+// ----------------------------------------------------
+// CBlidBaseContainer::CBlidBaseContainer
+// First phase constructor, can not leave
+// ----------------------------------------------------
+//
+CBlidBaseContainer::CBlidBaseContainer(
+ MKeyProcessor& aKeyProcessor,
+ const TDesC& aHelpContext )
+ :iKeyProcessor(aKeyProcessor)
+ {
+ iContextName = aHelpContext;
+ }
+
+// ----------------------------------------------------
+// CBlidBaseContainer::~CBlidBaseContainer
+// Destructor, frees allocated resources
+// ----------------------------------------------------
+//
+CBlidBaseContainer::~CBlidBaseContainer()
+ {
+ }
+
+// ----------------------------------------------------
+// CBlidBaseContainer::ActivateTabL
+// Activates a tab specified bt tab id
+// ----------------------------------------------------
+//
+void CBlidBaseContainer::ActivateTabL(
+ CAknNavigationDecorator& aNaviDecorator,
+ TInt aTabId )
+ {
+ CEikStatusPane* sp = iEikonEnv->AppUiFactory()->StatusPane();
+ CAknNavigationControlContainer* naviPane =
+ static_cast<CAknNavigationControlContainer*>(
+ sp->ControlL(TUid::Uid(EEikStatusPaneUidNavi)));
+ CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>(
+ aNaviDecorator.DecoratedControl() );
+ tabGroup->SetActiveTabById( aTabId );
+ naviPane->PushL( aNaviDecorator );
+ }
+
+
+// ----------------------------------------------------
+// CBlidBaseContainer::GetHelpContext
+// Get the help context for the application
+// ----------------------------------------------------
+//
+void CBlidBaseContainer::GetHelpContext( TCoeHelpContext& aContext ) const
+ {
+ aContext.iContext = iContextName;
+ aContext.iMajor = TUid::Uid(KBLIDUID3);
+ }
+
+// ----------------------------------------------------
+// CBlidBaseContainer::OfferKeyEventL
+// Handles the key event
+// ----------------------------------------------------
+//
+TKeyResponse CBlidBaseContainer::OfferKeyEventL(
+ const TKeyEvent& aKeyEvent,
+ TEventCode aType)
+ {
+ CEikStatusPane* sp = StatusPane();
+ // Fetch pointer to the default navi pane control
+ CAknNavigationControlContainer* naviPane =
+ static_cast<CAknNavigationControlContainer*>(sp->ControlL(
+ TUid::Uid(EEikStatusPaneUidNavi)));
+ CAknNavigationDecorator* naviDecorator = naviPane->Top();
+
+ // Check if navigation pane controls exists, because decorator does
+ // not exist in every cases. E.g. after contact fetch in "new rule"
+ // command operation naviDecorator is null.
+ if ( naviDecorator && naviDecorator->ControlType() ==
+ CAknNavigationDecorator::ETabGroup )
+ {
+ if ( naviDecorator->DecoratedControl()->OfferKeyEventL(
+ aKeyEvent, aType ) == EKeyWasConsumed )
+ {
+ return EKeyWasConsumed;
+ }
+ }
+
+ if ( iKeyProcessor.ProcessKeyEventL( aKeyEvent, aType ) ==
+ EKeyWasConsumed )
+ {
+ return EKeyWasConsumed;
+ }
+
+ for ( TInt i = 0; i < CountComponentControls(); i++ )
+ {
+ if ( ComponentControl(i)->OfferKeyEventL( aKeyEvent, aType ) ==
+ EKeyWasConsumed )
+ {
+ return EKeyWasConsumed;
+ }
+ }
+
+ return EKeyWasNotConsumed;
+ }
+
+// ----------------------------------------------------
+// CBlidBaseContainer::HandleResourceChange
+// Handles the change in app resource
+// ----------------------------------------------------
+//
+void CBlidBaseContainer::HandleResourceChange(TInt aType)
+ {
+ CCoeControl::HandleResourceChange(aType);
+ if( aType == KAknsMessageSkinChange )
+ {
+ static_cast<CBlidAppUi*>(iCoeEnv->AppUi())->SkinChange();
+ }
+ }
+
+// ----------------------------------------------------
+// CBlidBaseContainer::CreateNaviPaneL
+// Creates the navigation pane
+// ----------------------------------------------------
+//
+CAknNavigationDecorator* CBlidBaseContainer::CreateNaviPaneL(
+ TBool aDefaultNaviPane )
+ {
+ CEikStatusPane* sp = StatusPane();
+ if( !sp )
+ {
+ User::Leave( KErrGeneral );
+ }
+ // Fetch pointer to the default navi pane control
+ CAknNavigationControlContainer* naviPane =
+ static_cast<CAknNavigationControlContainer*>(sp->ControlL(
+ TUid::Uid(EEikStatusPaneUidNavi)));
+ if( !naviPane )
+ {
+ User::Leave( KErrGeneral );
+ }
+ CAknNavigationDecorator* decorator = NULL;
+ if ( aDefaultNaviPane ) // dummy tab
+ {
+ naviPane->PushDefaultL(EFalse);
+ }
+ else
+ {
+ decorator = naviPane->CreateTabGroupL(iKeyProcessor.TabObserver());
+ decorator->SetControlType( CAknNavigationDecorator::ETabGroup );
+ CAknTabGroup* tabGroup =
+ static_cast< CAknTabGroup* > ( decorator->DecoratedControl() );
+ AddTabsL( *tabGroup );
+ }
+ return decorator;
+ }
+
+// ----------------------------------------------------
+// CBlidBaseContainer::AddIconL
+// Add icon
+// ----------------------------------------------------
+//
+void CBlidBaseContainer::AddIconL
+ ( CAknIconArray* aIcons,
+ const TAknsItemID aSkinID,
+ const TDesC& aIconFileWithPath,
+ TInt aIconGraphicsIndex,
+ TInt aIconGraphicsMaskIndex )
+ {
+ CFbsBitmap *bitmap = NULL;
+ CFbsBitmap* mask = NULL;
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ AknsUtils::CreateIconLC( skin,
+ aSkinID,
+ bitmap,
+ mask,
+ aIconFileWithPath,
+ aIconGraphicsIndex,
+ aIconGraphicsMaskIndex );
+
+ // Append it to icons array
+ CGulIcon* icon = CGulIcon::NewL( bitmap, mask );
+ CleanupStack::Pop( 2 ); // mask, bitmap. icon has now ownership
+ CleanupStack::PushL( icon );
+ aIcons->AppendL( icon );
+ CleanupStack::Pop( ); // icon
+
+ }
+
+// ----------------------------------------------------
+// CBlidBaseContainer::MakeTitleL
+// Sets the title to text specified by a resource
+// ----------------------------------------------------
+//
+void CBlidBaseContainer::MakeTitleL( TInt aResourceText )
+ {
+ HBufC* buf = StringLoader::LoadLC(aResourceText);
+ CAknTitlePane* title = static_cast<CAknTitlePane*>( StatusPane()->
+ ControlL( TUid::Uid( EEikStatusPaneUidTitle ) ) );
+ CleanupStack::Pop(); //buf
+ title->SetText(buf); // Takes ownership of buf
+ }
+
+// ----------------------------------------------------
+// CBlidBaseContainer::MakeEmptyTextListBoxL
+//
+// ----------------------------------------------------
+//
+void CBlidBaseContainer::MakeEmptyTextListBoxL(
+ CEikListBox* aListBox,
+ TInt aResourceText )
+ {
+ HBufC* textFromResourceFile;
+ textFromResourceFile =
+ StringLoader::LoadLC( aResourceText, iCoeEnv );
+ aListBox->View()->SetListEmptyTextL( *textFromResourceFile );
+ CleanupStack::PopAndDestroy(); // textFromResourceFile.
+ }
+
+// ----------------------------------------------------
+// CBlidBaseContainer::StatusPane
+// Returns the status pane
+// ----------------------------------------------------
+//
+CEikStatusPane* CBlidBaseContainer::StatusPane()
+ {
+ return iEikonEnv->AppUiFactory()->StatusPane();
+ }
+
+// ----------------------------------------------------
+// CBlidBaseContainer::AddTabsL
+// Adds the tabs
+// ----------------------------------------------------
+//
+void CBlidBaseContainer::AddTabsL(CAknTabGroup& aTabGroup)
+ {
+ aTabGroup.SetTabFixedWidthL(EAknTabWidthWithTwoTabs);
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ HBufC* filename = BlidUtils::GetBitmapFilenameLC();
+ CFbsBitmap* bitmap = NULL;
+ CFbsBitmap* bitmapMask = NULL;
+
+ //Add tab icon 1
+ AknsUtils::CreateIconLC( skin,
+ KAknsIIDQgnPropBlidNavigationTab3,
+ bitmap,
+ bitmapMask,
+ *filename,
+ EMbmBlidQgn_prop_blid_navigation_tab3,
+ EMbmBlidQgn_prop_blid_navigation_tab3_mask );
+ aTabGroup.AddTabL( EBlidNavigationView, bitmap, bitmapMask );
+ CleanupStack::Pop(2); //bitmap, bitmapmask
+
+ //Add tab icon 2
+ AknsUtils::CreateIconLC( skin,
+ KAknsIIDQgnPropBlidTripTab3,
+ bitmap,
+ bitmapMask,
+ *filename,
+ EMbmBlidQgn_prop_blid_trip_tab3,
+ EMbmBlidQgn_prop_blid_trip_tab3_mask );
+ aTabGroup.AddTabL( EBlidTripMeterView, bitmap, bitmapMask );
+ CleanupStack::Pop(2); //bitmap, bitmapmask
+
+
+
+ CleanupStack::PopAndDestroy(); //filename
+ }
+
+// ---------------------------------------------------------
+// CBlidBaseContainer::SetGPSAvailability
+// Sets the GPS availability to ETrue or EFalse
+// ---------------------------------------------------------
+//
+void CBlidBaseContainer::SetGPSAvailability(const TBool aAvailability)
+ {
+ iGPSAvailability = aAvailability;
+ }
+
+// ---------------------------------------------------------
+// CBlidBaseContainer::IsGPSAvailable
+// Checks if GPS is available
+// ---------------------------------------------------------
+//
+TBool CBlidBaseContainer::IsGPSAvailable()
+ {
+ return iGPSAvailability;
+ }
+
+// End of File