OfferKeyEvent doesn't work....Please Help

Login to reply to this topic.
Tue, 2008-08-05 08:18
Joined: 2008-06-20
Forum posts: 2

I m using Symbian 9.2 edition...

My application is unable to offer key events....

The container and view files are as given below...

-----------------------------------------------------------------------------------------------------------------------
CONTAINER .CPP
-----------------------------------------------------------------------------------------------------------------------

/*
============================================================================
Name : LBiMainContainer.cpp
Author : rafias
Copyright : Your copyright notice
Description : CLBiMainContainer implementation
============================================================================
*/

// INCLUDE FILES
#include
#include
#include "LBiMainContainer.h"
#include "Mark.mbg"
#include
#include
#include
#include
#include
#include

_LIT( KIconFile1, "C:\\LBi\\logo.mbm");
TInt KeyPressStatus = 0;
// ============================ MEMBER FUNCTIONS ===============================
// -----------------------------------------------------------------------------
// CLBiMainContainer::NewL()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CLBiMainContainer* CLBiMainContainer::NewL(const TRect& aRect)
{
CLBiMainContainer* self = CLBiMainContainer::NewLC( aRect );
CleanupStack::Pop(self);
return self;
}
// -----------------------------------------------------------------------------
// CLBiMainContainer::NewLC()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
void CLBiMainContainer::ViewActivatedL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage)
{
ActivateL();
MakeVisible(ETrue);
//CEikAppUi* appUi = iEikonEnv->EikAppUi();
}

void CLBiMainContainer::ViewDeactivated()
{
MakeVisible(EFalse);
}

CLBiMainContainer* CLBiMainContainer::NewLC( const TRect& aRect )
{
CLBiMainContainer* self = new ( ELeave ) CLBiMainContainer;
CleanupStack::PushL( self );
self->ConstructL( aRect );
return self;
}
// -----------------------------------------------------------------------------
// CLBiMainContainer::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CLBiMainContainer::ConstructL(const TRect& aRect)
{
CreateWindowL();

// iInputWindow = CEikEdwin::
// iInputWindow->SetObserver( this );

/*TFileName fname(KIconFile1);
CompleteWithAppPath(fname);
iBitmap = new(ELeave) CFbsBitmap();
User::LeaveIfError(iBitmap->Load(fname,0));//EMbmPicture is define in .hrh file for */
iGifFileDataprovider = new (ELeave) CICLAnimationDataProvider;
iGifFileDataprovider->SetFileL(iEikonEnv->FsSession(),_L("C:\\icon.bmp"));

igifanimationconfig.iFlags = TAnimationConfig::ELoop;
igifanimationconfig.iData = 10000;
TPoint gifpoint = Position();
iGifAnimatior = CBasicAnimation::NewL(iGifFileDataprovider,gifpoint,CEikonEnv::Static()->WsSession(),Window());
iGifAnimatior->Start(igifanimationconfig);

iGifFileDataprovider1 = new (ELeave) CICLAnimationDataProvider;
iGifFileDataprovider1->SetFileL(iEikonEnv->FsSession(),_L("C:\\nokia\\image.gif"));

igifanimationconfig1.iFlags = TAnimationConfig::ELoop;
igifanimationconfig1.iData = 10000;
TPoint gifpoint1 = Position();
iGifAnimatior1 = CBasicAnimation::NewL(iGifFileDataprovider1,TPoint(0,-20),CEikonEnv::Static()->WsSession(),Window());
iGifAnimatior1->Start(igifanimationconfig1);

SetRect( aRect );
MakeVisible(EFalse);
SetComponentsToInheritVisibility();
//ActivateL();

ActivateL();
}
// -----------------------------------------------------------------------------
// CLBiMainContainer::CountComponentControls() const
// returns number of controls inside this container.
// -----------------------------------------------------------------------------
//
TInt CLBiMainContainer::CountComponentControls() const
{
return 0; // return nbr of controls inside this container
}

// -----------------------------------------------------------------------------
// CLBiMainContainer::ComponentControl() const
// returns pointer of controls inside this container
// -----------------------------------------------------------------------------
//
CCoeControl* CLBiMainContainer::ComponentControl( TInt /*aIndex*/ ) const
{
return NULL;
}

//-----------------------------------------------------------------------------
// CLBiMainContainer::Draw() const
// Draws the display
// -----------------------------------------------------------------------------
//
void CLBiMainContainer::Draw( const TRect& aRect ) const
{
// Get the standard graphics context
CWindowGc& gc = SystemGc();
gc.SetPenStyle( CGraphicsContext::ENullPen );/*RESPONSIBLE FOR THE COLOR*/
gc.SetBrushColor( KRgbSymbianBlue );
gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
//gc.SetRect(0,0,15,16);
gc.DrawRect( aRect );
TRect drawRect( Rect());
if(KeyPressStatus==0)
{
iGifAnimatior->Draw(gc);
iGifAnimatior1->Draw(gc);
}
else
{
iGifAnimatior1->Draw(gc);
}
// gc.DrawBitmap(aRect, iBitmap);
}

// ---------------------------------------------------------
// CLBiMainContainer::HandleResourceChange()
// Called by framework when layout is changed.
// ---------------------------------------------------------
//
void CLBiMainContainer::HandleResourceChange(TInt aType)
{
CCoeControl::HandleResourceChange(aType);

// ADDED FOR SCALABLE UI SUPPORT
// *****************************
if ( aType==KEikDynamicLayoutVariantSwitch )
{
TRect rect;
//
AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane,rect);
SetRect(rect);
}
}



void CLBiMainContainer::SizeChanged()
{
//iItemList->SetExtent(KListPosition, iItemList->MinimumSize());
CCoeControl::SizeChanged();
}


TKeyResponse CLBiMainContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType )
{


if ( ( aType == EEventKey ) && ( aKeyEvent.iCode == EKeyUpArrow ) )
{
CAknInformationNote* informationNote;

informationNote = new ( ELeave ) CAknInformationNote;

// Show the information Note with
// textResource loaded with StringLoader.
informationNote->ExecuteLD( _L("Hello"));
return EKeyWasConsumed;
}

else if ( ( aType == EEventKey ) && ( aKeyEvent.iCode == EKeyDownArrow ) )
{

return EKeyWasConsumed;
}
else
{
return EKeyWasNotConsumed;
}
// return EKeyWasNotConsumed;
}



void CLBiMainContainer::HandleControlEventL( CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/ )
{
}

// End of File
===========================================================
CONTAINER .H FILE
============================================================================
/*
============================================================================
Name : LBiMainContainer.h
Author : rafias
Copyright : Your copyright notice
Description : Declares container class for the main view.
============================================================================
*/

#ifndef LBIMAINCONTAINER_H_
#define LBIMAINCONTAINER_H_

// INCLUDES
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
//#include
#include
#include
// CLASS DECLARATION
/**
* CLBiMainContainer class
* Container class for Main view
*
*/
class CEikEdwin;
class CLBiMainContainer : public CCoeControl,MCoeControlObserver

{
public:
static CLBiMainContainer* NewL( const TRect& aRect );
static CLBiMainContainer* NewLC( const TRect& aRect );
void ConstructL( const TRect& aRect );

public:

TKeyResponse OfferKeyEventL( const TKeyEvent& aKeyEvent,TEventCode aType );
TInt CountComponentControls() const;
CCoeControl* ComponentControl( TInt aIndex ) const;
void Draw( const TRect& aRect ) const;
void SizeChanged();
void ViewActivatedL(const TVwsViewId& aPrevViewId, TUid aCustomMessageId, const TDesC8& aCustomMessage);

void ViewDeactivated();
void HandleControlEventL( CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/ );
//void HandleControlEventL( CCoeControl* aControl, TCoeEvent aEventType );
private:
void HandleResourceChange(TInt aType); // handles layout changes

private:
CICLAnimationDataProvider *iGifFileDataprovider,*iGifFileDataprovider1;
CBasicAnimation *iGifAnimatior,*iGifAnimatior1;
TAnimationConfig igifanimationconfig,igifanimationconfig1;
CFbsBitmap * iBitmap;
CEikEdwin *iInputWindow;
};

#endif /*LBIMAINCONTAINER_H_*/

// End of File
/*
=============================================================
VIEW.CPP
============================================================*/

// INCLUDE FILES

#include
#include "Sample.rsg"
#include
#include
#include
#include
#include
#include "Sample.hrh"
#include "LBiMainContainer.h"
#include "LBiMainView.h"

// ========================= MEMBER FUNCTIONS ==================================
// -----------------------------------------------------------------------------
// CLBiMainView::CLBiMainView()
// C++ default constructor can NOT contain any code, that might leave.
// -----------------------------------------------------------------------------
//
CLBiMainView::CLBiMainView()
{
}

// -----------------------------------------------------------------------------
// CLBiMainView::NewL()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CLBiMainView* CLBiMainView::NewL()
{
CLBiMainView* self = CLBiMainView::NewLC();
CleanupStack::Pop(self);
return self;
}

// -----------------------------------------------------------------------------
// CLBiMainView::NewLC()
// Two-phased constructor.
// -----------------------------------------------------------------------------
//
CLBiMainView* CLBiMainView::NewLC()
{
CLBiMainView* self = new ( ELeave ) CLBiMainView();
CleanupStack::PushL( self );
self->ConstructL();
return self;
}

// -----------------------------------------------------------------------------
// CLBiMainView::ConstructL()
// Symbian 2nd phase constructor can leave.
// -----------------------------------------------------------------------------
//
void CLBiMainView::ConstructL()
{
BaseConstructL( R_LBI_MAINVIEW );
}

// -----------------------------------------------------------------------------
// CLBiMainView::~CLBiMainView()
// Destructor.
// -----------------------------------------------------------------------------
//
CLBiMainView::~CLBiMainView()
{
// No implementation required
}

// -----------------------------------------------------------------------------
// CLBiMainView::Id()
// Returns View's ID.
// -----------------------------------------------------------------------------
//
TUid CLBiMainView::Id() const
{
return TUid::Uid( EMainViewId );
}

// -----------------------------------------------------------------------------
// CLBiMainView::DoActivateL()
// Activate an View1
// -----------------------------------------------------------------------------
//
void CLBiMainView::DoActivateL( const TVwsViewId& ,
TUid ,
const TDesC8& )
{
iMainContainer = CLBiMainContainer::NewL( ClientRect() );
//SetupStatusPaneL();
}

// -----------------------------------------------------------------------------
// CLBiMainView::DoDeactivate()
// DeActivate an MainView
// -----------------------------------------------------------------------------
//
void CLBiMainView::DoDeactivate()
{
if ( iMainContainer )
{
// Remove View's container form controllStack
AppUi()->RemoveFromStack( iMainContainer );
delete iMainContainer;
iMainContainer = NULL;
}
}

// -----------------------------------------------------------------------------
// CLBiMainView::HandleCommandL()
// Takes care of Command handling.
// -----------------------------------------------------------------------------
//
void CLBiMainView::HandleCommandL( TInt aCommand )
{
switch (aCommand)
{

case ESwitchToOptionsView :
{

//AppUi()->ActivateLocalViewL( TUid::Uid(EOptionsViewId ) );

}
break;
}
}
// -----------------------------------------------------------------------------
// CLBiMainView::SetupStatusPaneL()
// Status pane message display
// -----------------------------------------------------------------------------
//
//
/*
void CLBiMainView::SetupStatusPaneL()
{
// setup the title pane
}
// End of File

Please can anyone tell what the problem actually is.....


Tue, 2008-08-05 10:20
Joined: 2007-06-16
Forum posts: 52
Re: OfferKeyEvent doesn't work....Please Help


Hi..
If overriding OfferKeyEventL(), the implementation must include a base call to CCoeControl's OfferKeyEventL().

Regards
Viajy


ready to face

Tue, 2008-08-05 10:32
Joined: 2004-08-17
Forum posts: 9
Re: OfferKeyEvent doesn't work....Please Help

For me it seems you never add the container to the control stack which would explain why its OfferKeyEventL doesn't get called. You seem to remove it, though. Try and add call for AppUi()-> AddToViewStackL(*this, iMainContainer) to CLBiMainView::DoActivateL

Wed, 2008-08-06 09:23
Joined: 2007-02-12
Forum posts: 27
Re: OfferKeyEvent doesn't work....Please Help

To get OfferKeyEventL work, you need to add your view to stack

AddToStackL(iAppView);


Regards,
Pankaj.

The best place to find the helping hand is at the end of your arm!!!

Wed, 2008-08-06 12:51
Joined: 2008-06-20
Forum posts: 2
Re: OfferKeyEvent doesn't work....Please Help

is it necessary to have some controls in our application to use offerKeyEvent ??

Thu, 2008-08-07 08:38
Joined: 2007-06-16
Forum posts: 52
Re: OfferKeyEvent doesn't work....Please Help

No its not required..


ready to face

  • Login to reply to this topic.