/*
* Copyright (c) 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 the CAknFepUiSpellContainer methods.
*
*/
// INCLUDE FILES
#include <eikgted.h> // for CEikGlobalTextEditor
#include <eiktxlbm.h> // for CTextListBoxModel
#include <eikclbd.h> // for CColumnListBoxData
#include <eikbtgpc.h> // for CEikButtonGroupContainer
#include <barsread.h> // for TResourceReader
#include <eikclb.h> // for CEikColumnListBox
#include <aknnotewrappers.h> // for CAknInformationNote
#include <appapaclayout.cdl.h> // for Layout stuff
#include <StringLoader.h>
#include <aknlayoutscalable_apps.cdl.h>
#include <layoutmetadata.cdl.h>
#include "aknfepuispellcontainer.h"
#include "aknfepuispellinputpane.h"
// CONSTANTS
const TInt KNumberOfContainerControl = 1;
// Enumarations
enum TControls
{
EInputPane
};
// ================= MEMBER FUNCTIONS ======================
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::CAknFepUiSpellContainer
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
CAknFepUiSpellContainer::CAknFepUiSpellContainer()
:iInputPane( NULL )
{
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::InputPane
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
CAknFepUiSpellInputPane* CAknFepUiSpellContainer::InputPane()
{
return iInputPane;
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::SetInputWinObserver
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
void CAknFepUiSpellContainer::SetInputWinObserver( MEikEdwinObserver* aObserver )
{
iInputPane->SetInputWinObserver(aObserver);
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::SetInputWinFocus
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
void CAknFepUiSpellContainer::SetInputWinFocus( TBool aFocus )
{
if ( IsFocused() == aFocus )
{
if ( !aFocus )
{
iEikonEnv->EikAppUi()->RemoveFromStack( this );
}
return;
}
// When release focus, remove from stack.
if( aFocus )
{
TRAP_IGNORE(iEikonEnv->EikAppUi()->AddToStackL( this, ECoeStackPriorityDialog ));
}
else
{
SetFocus( EFalse );
iEikonEnv->EikAppUi()->RemoveFromStack( this );
}
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::ConstructL
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
void CAknFepUiSpellContainer::ConstructL(const TInt aEditorFlag,
const TInt aEditorCase, const TInt aEditorSCTResID, const TBool aIsSplitEditor )
{
CreateWindowL();
iInputPane = CAknFepUiSpellInputPane::NewL( this, aEditorFlag, aEditorCase,
aEditorSCTResID, aIsSplitEditor );
iInputPane->SetMopParent(this);
iInputPane->SetFocus( ETrue );
SetContainerRect();
iEikonEnv->EikAppUi()->AddToStackL(this,ECoeStackPriorityDialog);
ActivateL();
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::NewL
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
CAknFepUiSpellContainer* CAknFepUiSpellContainer::NewL(const TInt aEditorFlag,
const TInt aEditorCase, const TInt aEditorSCTResID, const TBool aSplitEditor )
{
CAknFepUiSpellContainer* self = new ( ELeave ) CAknFepUiSpellContainer();
CleanupStack::PushL( self );
self->SetMopParent(CEikonEnv::Static()->EikAppUi());
self->ConstructL(aEditorFlag, aEditorCase, aEditorSCTResID, aSplitEditor );
CleanupStack::Pop();
return self;
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::~CAknFepUiSpellContainer
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
CAknFepUiSpellContainer::~CAknFepUiSpellContainer()
{
iEikonEnv->EikAppUi()->RemoveFromStack(this);
delete iInputPane;
iInputPane = NULL;
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::CountComponentControls
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
TInt CAknFepUiSpellContainer::CountComponentControls() const
{
return KNumberOfContainerControl;
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::ComponentControl
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
CCoeControl* CAknFepUiSpellContainer::ComponentControl( TInt aIndex ) const
{
switch ( aIndex )
{
case EInputPane:
{
return iInputPane;
}
default:
{
return NULL;
}
}
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::Draw
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
void CAknFepUiSpellContainer::Draw( const TRect& /*aRect*/ ) const
{
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::InputCapabilities
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
TCoeInputCapabilities CAknFepUiSpellContainer::InputCapabilities() const
{
if ( iInputPane && iInputPane->IsFocused())
{
return iInputPane->InputCapabilities();
}
return ENone;
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::OfferKeyEventL
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
TKeyResponse CAknFepUiSpellContainer::OfferKeyEventL(
const TKeyEvent& aKeyEvent, TEventCode aType )
{
if ( iInputPane && iInputPane->IsFocused())
{
return iInputPane->OfferKeyEventL( aKeyEvent, aType );
}
return EKeyWasNotConsumed;
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::SizeChanged
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
void CAknFepUiSpellContainer::SizeChanged()
{
iInputPane->SetRect(Rect());
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::SetContainerRect
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
void CAknFepUiSpellContainer::FocusChanged(TDrawNow aDrawNow)
{
TBool bFocused = IsFocused() ? ETrue : EFalse;
if ( ComponentControl( 0 ) )
{
ComponentControl( 0 )->SetFocus( bFocused, aDrawNow );
}
}
// ---------------------------------------------------------------------------
// CAknFepUiSpellContainer::SetContainerRect
// (other items were commented in a header)
// ---------------------------------------------------------------------------
//
void CAknFepUiSpellContainer::SetContainerRect()
{
TAknWindowLineLayout appWnd = AknLayoutScalable_Apps::application_window().LayoutLine();
TAknWindowLineLayout mainPane;
if ( Layout_Meta_Data::IsLandscapeOrientation())
{
mainPane = AknLayoutScalable_Apps::main_pane(4).LayoutLine();
}
else
{
mainPane = AknLayoutScalable_Apps::main_pane(0).LayoutLine();
}
TAknLayoutRect mainPaneRect;
mainPaneRect.LayoutRect(appWnd.Rect(), mainPane);
mainPaneRect.Rect();
TInt ay = mainPaneRect.Rect().iTl.iY +
((mainPaneRect.Rect().iBr.iY - mainPaneRect.Rect().iTl.iY) / 5)*4;
TRect containerRect(0, ay, mainPaneRect.Rect().iBr.iX, mainPaneRect.Rect().iBr.iY);
TRect tempRect = TRect(0,0,1,1);
SetRect(tempRect);
}
// End of File