usbuis/imageprintui/src/settingsitems.cpp
changeset 35 9d8b04ca6939
child 57 62e6d990246c
--- /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 <StringLoader.h>
+#include <eiklbx.h>
+#include <aknradiobuttonsettingpage.h>
+
+
+#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<TUint> 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