ImagePrint/ImagePrintUI/imageprinteng/src/ctemplatesettings.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:30:38 +0100
branchRCL_3
changeset 21 d59c248c9d36
parent 0 d11fb78c4374
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201031 Kit: 201035

/*
* 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 "ctemplatesettings.h"

#include "ctemplatedata.h"
#include "tprinter.h"
#include "mdiscoveryobserver.h"
#include "crealfactory.h"
#include "mprintsettings.h"
#include "clog.h"

// BT Template ID's
const TInt KOneUpBorderless( 1554 );	
const TInt KOneUpBorder( 1555 );	
const TInt KOneUpStick( 1565 );	
const TInt KFourUpStick( 1564 );	
const TInt KSixteenUpStick( 1516 );		
const TInt KOneUp( 1501 );			


//  CONSTRUCTION
CTemplateSettings* CTemplateSettings::NewL( CRealFactory* aFactory )
    {    
    CTemplateSettings* self = CTemplateSettings::NewLC( aFactory );
    CleanupStack::Pop();   // self 
    return self;
    }

CTemplateSettings* CTemplateSettings::NewLC( CRealFactory* aFactory )
    {
    CTemplateSettings* self = new ( ELeave ) CTemplateSettings( aFactory );
    CleanupStack::PushL( self );
    return self;
    }

// Default constructor
CTemplateSettings::CTemplateSettings( CRealFactory* aFactory )
    {
    iActiveTemplateUid = KMaxTUint32;
    iFactory = aFactory;
    }

// Destructor
CTemplateSettings::~CTemplateSettings()
    {
    iTemplates.ResetAndDestroy();
    }

// Clones current template settings
CTemplateSettings* CTemplateSettings::CloneL()
    {
    TBool dropTemplates = EFalse;
    CTemplateSettings* self = CTemplateSettings::NewLC( iFactory );

    self->iActiveTemplateUid = iActiveTemplateUid;
    TInt num( iTemplates.Count() );
    TInt templateID;

    if( (iFactory->SettingsIF()->GetCurrentPrinterProtocol() == MDiscoveryObserver::EWLAN)  ||
        (iFactory->SettingsIF()->GetCurrentPrinterProtocol() == MDiscoveryObserver::EBPP)   ||
        (iFactory->SettingsIF()->GetCurrentPrinterProtocol() == MDiscoveryObserver::EMMC)   ||
        (iFactory->SettingsIF()->GetCurrentPrinterProtocol() == MDiscoveryObserver::EUSB) )
        {
        LOG("[CTemplateSettings] Templates dropped");
        dropTemplates = ETrue;
        }
    
    LOG1("CTemplateSettings: Number of templates received from engine: %d",num);
    
    for ( TInt i( 0 ); i < num; i++ )
        {
        templateID = iTemplates[i]->iUid;
      
        
        if( (dropTemplates &&  (templateID == KOneUpBorderless || templateID == KOneUpBorder || templateID == KOneUpStick || templateID == KFourUpStick || templateID == KSixteenUpStick || templateID == KOneUp )) || !dropTemplates)
            {
            LOG1("CTemplateSettings: Template ID: %d ADDED", templateID);    
            User::LeaveIfError( self->iTemplates.Append( iTemplates[i]->CloneL() ) );       
            }
        else
            {
            LOG1("CTemplateSettings: Template ID: %d SKIPPED",templateID);    
            }        
        }

    CleanupStack::Pop();	// self
    return self;
    }

// Sets the new active template
void CTemplateSettings::SetActiveTemplateL( 
    TInt aUid )
    {
    LOG1( "CTemplateSettings:SetActiveTemplateL || aUid = %d", aUid );
    TInt err( KErrNotFound );

    TInt num( iTemplates.Count() );
    for ( TInt i( 0 ); i < num && err != KErrNone; i++ )
        {        
        if ( aUid == iTemplates[i]->iUid )
            {
            iActiveTemplateUid = aUid;
            err = KErrNone;            
            }
        }
	LOG2( "CTemplateSettings:SetActiveTemplateL uid: %d, err: %d", aUid, err );
    // Leave when not found
    User::LeaveIfError( err );
    }

//  End of File