diff -r f5050f1da672 -r 04becd199f91 javamanager/javasettings/appmngrplugin/src/appmngr2midletsettingscontainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javamanager/javasettings/appmngrplugin/src/appmngr2midletsettingscontainer.cpp Tue Apr 27 16:30:29 2010 +0300 @@ -0,0 +1,452 @@ +/* +* Copyright (c) 2003-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: CAppMngr2MidletSettingsContainer implementation +* +*/ + + +// INCLUDE FILES +#include // CAknSettingStyleListBox +#include "javaapplicationsettings.hlp.hrh" + +#include "appmngr2midletsettingscontainer.h" // CAppMngr2MidletSettingsContainer +#include "appmngr2midletsettingsview.h" // CAppMngr2MidletSettingsView +#include "javaapplicationsettings.hrh" // Midlet command IDs + +#include "logger.h" // LOG + +// LOCAL CONSTANTS AND MACROS +// UID of the application +const TUid KOwnUid = { 0x20016BF7 }; // Own Uid, used with help + +using namespace std; + +// ================= MEMBER FUNCTIONS ======================= + +// --------------------------------------------------------------------------- +// C++ constructor +// --------------------------------------------------------------------------- +CAppMngr2MidletSettingsContainer::CAppMngr2MidletSettingsContainer( + CAppMngr2MidletSettingsView& aView) : iView(aView), iListbox(NULL) +{ + LOG(EJavaAppMngrPlugin, EInfo, "CAppMngr2MidletSettingsContainer::CAppMngr2MidletSettingsContainer"); + iListBoxContent.clear(); +} + +// --------------------------------------------------------- +// CAppMngr2MidletSettingsContainer::ConstructL(const TRect& aRect) +// Symbian OS two phased constructor +// Creates new window and listbox +// --------------------------------------------------------- +// +void CAppMngr2MidletSettingsContainer::ConstructL(const TRect& aRect) +{ + LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletSettingsContainer::ConstructL "); + CreateWindowL(); + + iListbox = new(ELeave) CAknSettingStyleListBox; + + iListbox->SetContainerWindowL(*this); + iListbox->ConstructL(this,EAknListBoxSelectionList | EAknListBoxItemSpecificMenuDisabled); + + // set up the listbox + iListbox->CreateScrollBarFrameL(ETrue); + iListbox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOn, + CEikScrollBarFrame::EAuto); + + iListbox->SetRect(aRect.Size()); + iListbox->ActivateL(); + + SetRect(aRect); + ActivateL(); + + iListbox->SetCurrentItemIndex(0); + + LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletSettingsContainer::ConstructL "); +} + +// Destructor +CAppMngr2MidletSettingsContainer::~CAppMngr2MidletSettingsContainer() +{ + LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletSettingsContainer::~CAppMngr2MidletSettingsContainer "); + if (iListbox) + { + iListbox->Reset(); + delete iListbox; + } + iListBoxContent.clear(); + LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletSettingsContainer::~CAppMngr2MidletSettingsContainer "); +} + + +// --------------------------------------------------------------------------- +// CAppMngr2MidletSettingsContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType) +// This handles the scrolling the list by arrows and the clear key and OK key +// --------------------------------------------------------------------------- +// +TKeyResponse CAppMngr2MidletSettingsContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent, + TEventCode aType) +{ + LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletSettingsContainer::OfferKeyEventL "); + TKeyResponse retval = EKeyWasNotConsumed; + + switch (aKeyEvent.iCode) + { + case EKeyOK: + // This key event is handeled by main view as a command. + iView.HandleCommandL(EAknSoftkeyChange); + break; + + case EKeyUpArrow: // fallthrough + case EKeyDownArrow: + default: + retval = iListbox->OfferKeyEventL(aKeyEvent, aType); + break; + } + + LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletSettingsContainer::OfferKeyEventL "); + return retval; +} + + +// --------------------------------------------------------- +// CAppMngr2MidletSettingsContainer::SizeChanged() +// Called by framework when the view size is changed +// --------------------------------------------------------- +// +void CAppMngr2MidletSettingsContainer::SizeChanged() +{ + LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletSettingsContainer::SizeChanged "); + iListbox->SetRect(Rect()); +} + +// --------------------------------------------------------- +// CAppMngr2MidletSettingsContainer::CountComponentControls() const +// --------------------------------------------------------- +// +TInt CAppMngr2MidletSettingsContainer::CountComponentControls() const +{ + LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletSettingsContainer::CountComponentControls "); + return iListbox ? 1 : 0; +} + +// --------------------------------------------------------- +// CAppMngr2MidletSettingsContainer::ComponentControl(TInt aIndex) const +// --------------------------------------------------------- +// +CCoeControl* CAppMngr2MidletSettingsContainer::ComponentControl(TInt aIndex) const +{ + LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletSettingsContainer::ComponentControl "); + switch (aIndex) + { + case 0: + return iListbox; + default: + return NULL; + } +} + +void CAppMngr2MidletSettingsContainer::RefreshListBoxContentL(int aListBoxContentIndex, int aSelectedItemIndex, bool aAllEnabled) +{ + // refresh the rest + TInt lastListBoxPos = iListbox->CurrentItemIndex(); + TInt lastListBoxTopPos = iListbox->TopItemIndex(); + + // refresh the current item + RefreshListBoxContentL(aListBoxContentIndex, aSelectedItemIndex); + + MDesCArray* itemList = iListbox->Model()->ItemTextArray(); + CDesCArray* itemArray = static_cast(itemList); + + HBufC* itemValue = HBufC::NewLC(KMaxDataTypeLength); + TPtr itemPtr = itemValue->Des(); + + for (int i=(aListBoxContentIndex+1); iNormalFont(), NULL); + itemPtr += _L("\t"); + itemPtr += _L("\t"); + // add value + wstring value = iListBoxContent[i].getValue().getValue(); + ptr.Set((unsigned short*)value.c_str(), value.size(), value.size()); + ptr.SetLength(value.size()); + itemPtr += AknTextUtils::ChooseScalableText(ptr,*iCoeEnv->NormalFont(), NULL); + itemArray->AppendL(itemPtr); + } + else + { + itemArray->Delete(lastListBoxPos + 1); + } + } + + CleanupStack::PopAndDestroy(itemValue); + + // Handle content changes + iListbox->Reset(); + // set indexes + if (lastListBoxPos != -1) + { + iListbox->SetCurrentItemIndex(lastListBoxPos); + iListbox->SetTopItemIndex(lastListBoxTopPos); + } + // Draw it + iListbox->DrawDeferred(); +} +void CAppMngr2MidletSettingsContainer::RefreshListBoxContentL(int aListBoxContentIndex, int aSelectedItemIndex, const ListItem& aListItem) +{ + MDesCArray* itemList = iListbox->Model()->ItemTextArray(); + CDesCArray* itemArray = static_cast(itemList); + + TInt lastListBoxPos = iListbox->CurrentItemIndex(); + TInt lastListBoxTopPos = iListbox->TopItemIndex(); + + HBufC* itemValue = HBufC::NewLC(KMaxDataTypeLength); + TPtr itemPtr = itemValue->Des(); + // add name + iListBoxContent[aListBoxContentIndex] = aListItem; + wstring name = aListItem.getName().getValue(); + itemPtr.Zero(); + itemPtr += _L("\t"); + TPtr ptr((unsigned short*)name.c_str(), name.size()); + ptr.SetLength(name.size()); + itemPtr += AknTextUtils::ChooseScalableText(ptr,*iCoeEnv->NormalFont(), NULL); + itemPtr += _L("\t"); + itemPtr += _L("\t"); + // add value + wstring value = aListItem.getValue(aSelectedItemIndex).getValue(); + ptr.Set((unsigned short*)value.c_str(), value.size(), value.size()); + ptr.SetLength(value.size()); + itemPtr += AknTextUtils::ChooseScalableText(ptr,*iCoeEnv->NormalFont(), NULL); + itemArray->Delete(lastListBoxPos); + itemArray->InsertL(lastListBoxPos, itemPtr); + + CleanupStack::PopAndDestroy(itemValue); + + // Handle content changes + iListbox->Reset(); + // set indexes + if (lastListBoxPos != -1) + { + iListbox->SetCurrentItemIndex(lastListBoxPos); + iListbox->SetTopItemIndex(lastListBoxTopPos); + } + // Draw it + iListbox->DrawDeferred(); +} + +void CAppMngr2MidletSettingsContainer::RefreshListBoxContentL(int aListBoxContentIndex ,int aSelectedItemIndex) +{ + RefreshListBoxContentL(aListBoxContentIndex ,aSelectedItemIndex, iListBoxContent[aListBoxContentIndex]); +} + +void CAppMngr2MidletSettingsContainer::RefreshListBoxContentL(const ListItem& aOldItem, const ListItem& aNewItem) +{ + for (int i=0; iModel()->ItemTextArray(); + CDesCArray* itemArray = static_cast(itemList); + + int count = itemArray->Count(); + + TPtr newValue((unsigned short*)aOldItem.getName().getValue().c_str(), aOldItem.getName().getValue().size()); + newValue.SetLength(aOldItem.getName().getValue().size()); + + for (int i=0; i 0) + { + TInt lastListBoxPos = iListbox->CurrentItemIndex(); + TInt lastListBoxTopPos = iListbox->TopItemIndex(); + + HBufC* itemValue = HBufC::NewLC(KMaxDataTypeLength); + TPtr itemPtr = itemValue->Des(); + // add name + wstring name = aNewItem.getName().getValue(); + itemPtr.Zero(); + itemPtr += _L("\t"); + TPtr ptr((unsigned short*)name.c_str(), name.size()); + ptr.SetLength(name.size()); + itemPtr += AknTextUtils::ChooseScalableText(ptr,*iCoeEnv->NormalFont(), NULL); + itemPtr += _L("\t"); + itemPtr += _L("\t"); + // add value + wstring value = aNewItem.getValue().getValue(); + ptr.Set((unsigned short*)value.c_str(), value.size(), value.size()); + ptr.SetLength(value.size()); + itemPtr += AknTextUtils::ChooseScalableText(ptr,*iCoeEnv->NormalFont(), NULL); + + itemArray->Delete(i); + itemArray->InsertL(i, itemPtr); + + CleanupStack::PopAndDestroy(itemValue); + + // Handle content changes + iListbox->Reset(); + // set indexes + if (lastListBoxPos != -1) + { + iListbox->SetCurrentItemIndex(lastListBoxPos); + iListbox->SetTopItemIndex(lastListBoxTopPos); + } + // Draw it + iListbox->DrawDeferred(); + + break; + } + } + + break; + } + } +} + +// --------------------------------------------------------------------------- +// CAppMngr2MidletSettingsContainer::UpdateListBoxContentL +// +// --------------------------------------------------------------------------- +// +void CAppMngr2MidletSettingsContainer::InitListBoxContentL(const vector& aListItems) +{ + LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletSettingsContainer::UpdateListBoxContentL "); + iListBoxContent = aListItems; + + TInt lastListBoxPos = iListbox->CurrentItemIndex(); + TInt lastListBoxTopPos = iListbox->TopItemIndex(); + + MDesCArray* itemList = iListbox->Model()->ItemTextArray(); + CDesCArray* itemArray = static_cast(itemList); + itemArray->Reset(); + + HBufC* itemValue = HBufC::NewLC(KMaxDataTypeLength); + TPtr itemPtr = itemValue->Des(); + + for (int i=0; iNormalFont(), NULL); + itemPtr += _L("\t"); + itemPtr += _L("\t"); + // add value + wstring value = aListItems[i].getValue().getValue(); + ptr.Set((unsigned short*)value.c_str(), value.size(), value.size()); + ptr.SetLength(value.size()); + itemPtr += AknTextUtils::ChooseScalableText(ptr,*iCoeEnv->NormalFont(), NULL); + itemArray->AppendL(itemPtr); + } + + CleanupStack::PopAndDestroy(itemValue); + + // Handle content changes + iListbox->Reset(); + // set indexes + if (lastListBoxPos != -1) + { + iListbox->SetCurrentItemIndex(lastListBoxPos); + iListbox->SetTopItemIndex(lastListBoxTopPos); + } + // Draw it + iListbox->DrawDeferred(); + + LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletSettingsContainer::UpdateListBoxContentL "); +} + +const ListItem& CAppMngr2MidletSettingsContainer::GetListBoxItem(int aListBoxItemIndex) +{ + return iListBoxContent[aListBoxItemIndex]; +} + +void CAppMngr2MidletSettingsContainer::SetListBoxItemValue(int aListBoxItemIndex, int aValue) +{ + iListBoxContent[aListBoxItemIndex].setCurrentValue(aValue); +} + +// --------------------------------------------------------------------------- +// CAppMngr2MidletSettingsContainer::GetHelpContext(TCoeHelpContext& aContext) +// Gives the help context to be displayed +// --------------------------------------------------------------------------- +// +void CAppMngr2MidletSettingsContainer::GetHelpContext(TCoeHelpContext& aContext) const +{ + LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletSettingsContainer::GetHelpContext "); + aContext.iMajor = KOwnUid; + aContext.iContext = HLP_JAVA_APPLICATION_SETTINGS; + LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletSettingsContainer::GetHelpContext "); +} + + +// --------------------------------------------------------- +// CAppMngr2MidletSettingsContainer::HandleResourceChange +// Handles a resource relative event +// --------------------------------------------------------- +// +void CAppMngr2MidletSettingsContainer::HandleResourceChange(TInt aType) +{ + LOG(EJavaAppMngrPlugin, EInfo, " + CAppMngr2MidletSettingsContainer::HandleResourceChange "); + CCoeControl::HandleResourceChange(aType); + + if (aType == KEikDynamicLayoutVariantSwitch) //Handle change in layout orientation + { + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + SetRect(mainPaneRect); + DrawNow(); + } + + LOG(EJavaAppMngrPlugin, EInfo, " - CAppMngr2MidletSettingsContainer::HandleResourceChange "); +} + + +// ----------------------------------------------------------------------------- +// CAppMngr2MidletSettingsContainer::FocusChanged +// ----------------------------------------------------------------------------- +// +void CAppMngr2MidletSettingsContainer::FocusChanged(TDrawNow aDrawNow) +{ + LOG(EJavaAppMngrPlugin, EInfo, " CAppMngr2MidletSettingsContainer::FocusChanged "); + if (iListbox) + { + iListbox->SetFocus(IsFocused(), aDrawNow); + } +} + +// End of File