diff -r 7858bc6ead78 -r 9d8b04ca6939 usbuis/imageprintui/src/settingsitems.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/usbuis/imageprintui/src/settingsitems.cpp Fri Jun 04 10:27:39 2010 +0100 @@ -0,0 +1,316 @@ +/* +* Copyright (c) 2006, 2007 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: Show capabilities on the screen +* +*/ + + +#include +#include +#include + + +#include "imageprintui.hrh" +#include "settingsitems.h" +#include "settingstables.h" +#include "imageprintuidebug.h" +#include "capabilitymanager.h" +#include "notes.h" + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CSettingsItems* CSettingsItems::NewL( + CCapabilityManager* aManager, CNotes* aNotes ) + { + CSettingsItems* self = + CSettingsItems::NewLC( aManager, aNotes ); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CSettingsItems* CSettingsItems::NewLC( + CCapabilityManager* aManager, CNotes* aNotes + ) + { + CSettingsItems* self = + new ( ELeave ) CSettingsItems( aManager, aNotes ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CSettingsItems::CSettingsItems( + CCapabilityManager* aManager, CNotes* aNotes): + iCapabilityManager( aManager ), iNotes( aNotes) + { + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +CSettingsItems::~CSettingsItems() + { + delete iBuffer; + delete iLayout; + delete iPaperSize; + delete iQuality; + } + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CSettingsItems::ConstructL() + { + iBuffer = HBufC::NewL(KSettingsMaxSize); + iLayout = StringLoader::LoadL(R_USB_PRINT_LAYOUT); + iPaperSize = StringLoader::LoadL(R_USB_PRINT_PAPER_SIZE); + iQuality = StringLoader::LoadL(R_USB_PRINT_QUALITY); + } + +// --------------------------------------------------------------------------- +// From class MDesCArray. +// Return number of items in listbox +// ---------------------------------------------------------------------------- +// +TInt CSettingsItems::MdcaCount() const + { + return KNumberOfSettingsViewItems; + } + +// --------------------------------------------------------------------------- +// Creates the text string for the list box item and returns it +// ---------------------------------------------------------------------------- +// +TPtrC CSettingsItems::MdcaPointL( + TInt aIndex ) const + { + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::MdcaPoint")); + _LIT(KImagePrintUiEmptyFormatString, " \t \t\t "); + TPtr ptr = iBuffer->Des(); + ptr.Zero(); + HBufC* temp; + ptr.Append(KTab); + switch ( aIndex ) + { + case ESettingsListItemLayout: + temp = StringLoader::LoadLC( R_USB_PRINT_LAYOUT ); + ptr.Append(temp->Des()); + CleanupStack::PopAndDestroy(temp); + GetCurrentStringL( EDpsArgLayouts, KLayoutTable, KLayoutTableCount ); + break; + + case ESettingsListItemPaperSize: + temp = StringLoader::LoadLC( R_USB_PRINT_PAPER_SIZE ); + ptr.Append(temp->Des()); + CleanupStack::PopAndDestroy(temp); + GetCurrentStringL( EDpsArgPaperSizes, KPaperSizeTable, KPaperSizeTableCount ); + break; + + case ESettingsListItemPrintQuality: + temp = StringLoader::LoadLC( R_USB_PRINT_QUALITY ); + ptr.Append(temp->Des()); + CleanupStack::PopAndDestroy(temp); + GetCurrentStringL( EDpsArgQualities, KQualityTable, KQualityTableCount ); + break; + + default: + ptr.Append(KImagePrintUiEmptyFormatString); + break; + } + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::MdcaPoint complete")); + + return iBuffer->Des(); + } + +// --------------------------------------------------------------------------- +// Creates the text string for the list box item and returns it +// ---------------------------------------------------------------------------- +// +TPtrC CSettingsItems::MdcaPoint( + TInt aIndex ) const + { + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::MdcaPoint")); + + TRAPD(err, *iBuffer = MdcaPointL(aIndex)); + if(err) + { + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::MdcaPointL error")); + } + else + { + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::MdcaPointL no error")); + } + return iBuffer->Des(); + } + + +// --------------------------------------------------------------------------- +// Creates the text string for the list box item and returns it +// ---------------------------------------------------------------------------- +// + +void CSettingsItems::GetCurrentStringL( TInt aCapability, + const TConversionTable* aTable, const TInt aTableSize ) const +{ + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::GetCurrentStringL START")); + TPtr ptr = iBuffer->Des(); + ptr.Append(KTab); + ptr.Append(KTab); + + TInt value = iCapabilityManager->CurrentPrintSettings( aCapability ); + + HBufC* temp; + for ( TInt i = 0; i < aTableSize; i++ ) + { + if ( value == aTable[i].iCapabilityID ) + { + temp = StringLoader::LoadLC( aTable[i].iResourceID ); + ptr.Append(temp->Des()); + CleanupStack::PopAndDestroy(temp); + break; + } + } + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::GetCurrentString END")); + +} + +// --------------------------------------------------------------------------- +// From class MEikListBoxObserver. +// Handles the list box (enter) events by launching the pop-up list +// ---------------------------------------------------------------------------- +// +void CSettingsItems::HandleListBoxEventL( + CEikListBox* aListBox, + TListBoxEvent aEventType ) + { + if (( aEventType == EEventEnterKeyPressed ) || + ( aEventType == EEventItemDoubleClicked )) //for touch support + { + switch( aListBox->CurrentItemIndex() ) + { + case ESettingsListItemLayout: + HandleEvent(EDpsArgLayouts, KLayoutTable, + KLayoutTableCount, iLayout); + break; + case ESettingsListItemPaperSize: + HandleEvent(EDpsArgPaperSizes, KPaperSizeTable, + KPaperSizeTableCount, iPaperSize); + break; + case ESettingsListItemPrintQuality: + HandleEvent(EDpsArgQualities, KQualityTable, + KQualityTableCount, iQuality); + break; + default: + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::HandleListBoxEventL default switch")); + break; + } + + // Redraw item to the screen + // + aListBox->DrawItem( aListBox->CurrentItemIndex() ); + + } + } + + +// --------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +void CSettingsItems::HandleEventL(TInt aCapability, + const TConversionTable* aTable, const TInt aTableSize, const HBufC* aTitle ) + { + HBufC* item; + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::HandleEvent START")); + RArray capabilityArray = iCapabilityManager->GetCapabilities(aCapability); + TInt currentItemIndex(0); + CDesCArrayFlat* items = new ( ELeave ) CDesCArrayFlat( KDefaultArrayValue ); + CleanupStack::PushL(items); + TInt j(0); + TInt helpValue(0); + TInt currentItem = iCapabilityManager->CurrentPrintSettings(aCapability); + + for(TInt i= 0; i < capabilityArray.Count(); i++ ) + { + if ( capabilityArray[i] == currentItem ) + { + currentItemIndex = i; + } + for (j=0; j< aTableSize; j++ ) + { + if ( capabilityArray[i] == aTable[j].iCapabilityID) + { + helpValue++; + item = StringLoader::LoadL(aTable[j].iResourceID); + CleanupStack::PushL(item); + items->AppendL(*item); + CleanupStack::PopAndDestroy(item); + break; + } + } + } + FTRACE(FPrint(_L("[IMAGEPRINTUI] CSettingsItems::HandleEventL helpValue is %x"), helpValue )); + // Show the setting page + + CAknRadioButtonSettingPage* dlg = + new ( ELeave ) CAknRadioButtonSettingPage( + R_USB_PRINT_MODE_SETTING_PAGE, currentItemIndex, items ); + CleanupStack::PushL(dlg); + dlg->SetSettingTextL(*aTitle); + CleanupStack::Pop(dlg); + + if ( dlg->ExecuteLD( CAknSettingPage::EUpdateWhenChanged ) ) + { + // User has made the selection. Now we need to save it to + // capabilityManager + iCapabilityManager->SetValue( aCapability, capabilityArray[currentItemIndex]); + } + CleanupStack::PopAndDestroy(items); + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::HandleEvent END")); + } + + +// --------------------------------------------------------------------------- +// +// --------------------------------------------------------------------------- +// +void CSettingsItems::HandleEvent(TInt aCapability, + const TConversionTable* aTable, const TInt aTableSize, const HBufC* aTitle ) + { + + TRAPD(err, HandleEventL(aCapability, aTable, aTableSize, aTitle)); + if(err) + { + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::error in HandleEvenL")); + } + else + { + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::HandleEvent successfull")); + } + FLOG(_L("[IMAGEPRINTUI]\t CSettingsItems::HandleEvent END")); + } + +// end of file