diff -r 08cc4cc059d4 -r 59ea2209bb67 ImagePrint/ImagePrintUI/imageprinteng/src/clistcapability.cpp --- a/ImagePrint/ImagePrintUI/imageprinteng/src/clistcapability.cpp Fri Jun 11 16:24:10 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,213 +0,0 @@ -/* -* Copyright (c) 2004-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: -* -*/ - - -#include -#include -#include -#include -#include - -#include "clistcapability.h" -#include "crealfactory.h" -#include "mprintsettings.h" -#include "tprinter.h" -#include "mdiscoveryobserver.h" -#include "printcapabilitycodes.h" - -const TInt KArrayGranularity( 4 ); -const TInt KTwoPaperSizeAvailable( 2 ); -const TInt KTemplateSize = 16; -const TInt KTemplates[] = {1554,1552,1565,1555,1501,1553,1551,1558,1502,1504,1564,1506,1509,1512,1513,1516}; - -CListCapability::CListCapability( CRealFactory* aFactory ) : - iFactory( aFactory ) - { - } - -// Destructor -CListCapability::~CListCapability() - { - iEnumIDs.Close(); - iTexts.ResetAndDestroy(); - } - -// Creates text string for the settings list box -HBufC* CListCapability::ListBoxTextL() - { - CDesCArrayFlat* strings = - new ( ELeave ) CDesCArrayFlat( KArrayGranularity ); - CleanupStack::PushL( strings ); - strings->AppendL( iTitle ); - - TInt i( 0 ); - TInt num( iEnumIDs.Count() ); - TBool found( EFalse ); - // Find the matching text based on the enumeration value - for ( i = 0; i < num && !found; i++ ) - { - if ( iEnumIDs[i] == iValue ) - { - strings->AppendL( iTexts[i]->Des() ); - found = ETrue; - } - } - - if ( !found ) - { - User::Leave( KErrNotFound ); - } - - HBufC* buf = StringLoader::LoadL( R_QTN_LBOX_FORMAT, *strings ); - CleanupStack::PopAndDestroy(); // strings - - return buf; - } - -// Displays pop-up list for changing the active TInt value -TBool CListCapability::LaunchPopupListL() - { - // Create value array and sets it up - CAknQueryValueTextArray* queryTextArray = CAknQueryValueTextArray::NewL(); - CleanupStack::PushL( queryTextArray ); - - CDesCArrayFlat* array = new ( ELeave ) CDesCArrayFlat( KArrayGranularity ); - CleanupStack::PushL( array ); - TInt i( 0 ); - TInt num( iTexts.Count() ); - for ( i = 0; i < num; i++ ) - { - array->AppendL( iTexts[i]->Des() ); - } - queryTextArray->SetArray( *array ); - - CAknQueryValueText* queryValue = CAknQueryValueText::NewL(); - CleanupStack::PushL( queryValue ); - queryValue->SetArrayL( queryTextArray ); - - TInt found( KErrNotFound ); - num = iEnumIDs.Count(); - for ( i = 0; i < num && found == KErrNotFound; i++ ) - { - if ( iEnumIDs[i] == iValue ) - { - found = KErrNone; - } - } - i--; - User::LeaveIfError( found ); - queryValue->SetCurrentValueIndex( i ); - - TBool changed = EFalse; - if( array->MdcaCount() > KTwoPaperSizeAvailable ) - { - // Create popup setting page and show it - CAknPopupSettingPage* page = new ( ELeave ) CAknPopupSettingPage( - &iTitle, EAknSettingPageNoOrdinalDisplayed, EAknCtPopupSettingList, - R_EMPTY_SETTING_LIST, R_SETTING_GENERIC_PAGE, *queryValue ); - CleanupStack::PushL( page ); - page->ConstructL(); - CleanupStack::Pop(); // page - - changed = page->ExecuteLD(); - // Save new value if needed - if ( changed ) - { - iValue = iEnumIDs[queryValue->CurrentValueIndex()]; - } - } - // If there are only two paper sizes available, another one is automaticly changed - else if( array->MdcaCount() == KTwoPaperSizeAvailable ) - { - if ( i == 0 ) - { - iValue = iEnumIDs[1]; - } - else - { - iValue = iEnumIDs[0]; - } - changed = ETrue; - } - // Do nothing - else - { - } - - CleanupStack::PopAndDestroy( 3 ); // queryTextArray, array, queryArray - return changed; - } - -// Clones itself -CBaseCapability* CListCapability::CloneL() - { - CListCapability* clone = new ( ELeave ) CListCapability( iFactory ); - CleanupStack::PushL( clone ); - - clone->iValue = iValue; - clone->iIndexOnList = iIndexOnList; - clone->iTitle = iTitle; - clone->iUid = iUid; - - TInt num( iEnumIDs.Count() ); - if ( iUid != EPrintCapabLayout ) - { - for ( TInt j = 0; j < num; j++ ) - { - User::LeaveIfError( clone->iEnumIDs.Append( iEnumIDs[j] ) ); - User::LeaveIfError( clone->iTexts.Append( iTexts[j]->AllocLC() ) ); - CleanupStack::Pop(); // clone->iTexts - } - } - else - { - // - // has to be done here, i.e. remove not-supported templates - TBool dropTemplates = EFalse; - if ( iFactory ) - { - if( ( iFactory->SettingsIF()->GetCurrentPrinterProtocol() == MDiscoveryObserver::EWLAN ) || - ( iFactory->SettingsIF()->GetCurrentPrinterProtocol() == MDiscoveryObserver::EBPP ) || - ( iFactory->SettingsIF()->GetCurrentPrinterProtocol() == MDiscoveryObserver::EUSB ) || - ( iFactory->SettingsIF()->GetCurrentPrinterProtocol() == MDiscoveryObserver::EMMC ) ) - { - dropTemplates = ETrue; - } - } - // Also sort the print layout templates to "standard" order - for ( TInt i = 0; i < KTemplateSize; i++ ) - { - for ( TInt j = 0; j < num; j++ ) - { - if ( KTemplates[i] == iEnumIDs[j] ) - { - if ( (dropTemplates && (iEnumIDs[j] == EPrintCapabLayout1UpBorderless || iEnumIDs[j] == EPrintCapabLayout1UpBorder || iEnumIDs[j] == EPrintCapabLayout1Up) ) || !dropTemplates ) - { - User::LeaveIfError( clone->iEnumIDs.Append( iEnumIDs[j] ) ); - User::LeaveIfError( clone->iTexts.Append( iTexts[j]->AllocLC() ) ); - CleanupStack::Pop(); // clone->iTexts - } - } - } - } - } - - CleanupStack::Pop(); // clone - return clone; - } - -// End of File