DirectPrint/DirectPrintApp/ui/src/directprintmainview.cpp
author msekine <m.sekine@kthree.co.jp>
Wed, 31 Mar 2010 00:04:55 +0900
branchRCL_3
changeset 11 613a5ff70823
child 19 2275db202402
permissions -rw-r--r--
transfer from SFL repo (sfl/FCL/sf/app/printing/DirectPrint)

/*
* Copyright (c) 2010 Kanrikogaku Kenkyusho, Ltd.
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "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:
* Kanrikogaku Kenkyusho, Ltd. - Initial contribution
*
* Contributors:
*
* Description:
*
*/

#include <aknviewappui.h>
#include <akntoolbar.h>
#include <barsread.h>
#include <DirectPrintApp.rsg>

#include "clog.h"
#include "directprintapp.hrh"
#include "directprintmodel.h"
#include "directprintmainview.h"

CDirectPrintMainView::CDirectPrintMainView()
	{
	iListBox = NULL;
	}

CDirectPrintMainView::~CDirectPrintMainView()
	{
	AppUi()->RemoveFromViewStack(*this, iListBox);
	delete iListBox;
	iItemArray->Reset();
	delete iItemArray;
	}

CDirectPrintMainView* CDirectPrintMainView::NewL()
	{
	CDirectPrintMainView* self = CDirectPrintMainView::NewLC();
	CleanupStack::Pop(self);
	return self;
	}

CDirectPrintMainView* CDirectPrintMainView::NewLC()
	{
	CDirectPrintMainView* self = new(ELeave) CDirectPrintMainView();
	CleanupStack::PushL(self);
	self->ConstructL();
	return self;
	}

void CDirectPrintMainView::ConstructL()
	{
	LOG("CDirectPrintMainView::ConstructL BEGIN");
	BaseConstructL(R_DIRECTPRINT_MAINVIEW);

	iViewId = TUid::Uid(EDirectPrintMainViewId);

	iItemArray = new(ELeave) CDesCArrayFlat(3);
	LOG("CDirectPrintMainView::ConstructL END");
	}

void CDirectPrintMainView::HandleCommandL(TInt aCommand)
	{
	switch (aCommand)
		{
		case EAknSoftkeyBack:
			{
			AppUi()->HandleCommandL(EDirectPrintCmdIdMainViewExit);
			}
			break;
		case EDirectPrintCmdIdMainViewPrinterList:
		case EDirectPrintCmdIdMainViewPrint:
		case EDirectPrintCmdIdMainViewPreview:
		case EDirectPrintCmdIdMainViewPropertySetting:
			{
			AppUi()->HandleCommandL(aCommand);
			}
			break;
		default:
			{
			AppUi()->HandleCommandL(aCommand);
			}
			break;
		}
	}

void CDirectPrintMainView::HandleListIndexL(TInt aIndex)
	{
	switch (aIndex)
		{
		case EItemPrinter:
			{
			AppUi()->HandleCommandL(EDirectPrintCmdIdMainViewPrinterList);
			}
			break;
		case EItemBearer:
			{
			CDirectPrintModel& model = GetModel();
			model.SetSelectPrinter(model.CurrentPrinter());
			AppUi()->HandleCommandL(EDirectPrintCmdIdMainViewPrinterSetting);
			}
			break;
		case EItemSetting:
			{
			AppUi()->HandleCommandL(EDirectPrintCmdIdMainViewPropertySetting);
			}
			break;
		default:
			break;
		}
	}

void CDirectPrintMainView::OfferToolbarEventL(TInt aCommand)
	{
	switch (aCommand)
		{
		case EDirectPrintCmdIdMainViewPrint:
		case EDirectPrintCmdIdMainViewPreview:
		case EDirectPrintCmdIdMainViewPropertySetting:
			{
			AppUi()->HandleCommandL(aCommand);
			}
			break;
		default:
			break;
		}
	}

void CDirectPrintMainView::DoActivateL(const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/)
	{
	LOG("CDirectPrintMainView::DoActivateL BEGIN");
	CAknToolbar* toolbar = AppUi()->CurrentFixedToolbar();
	toolbar->SetToolbarObserver(this);

	iItemArray->Reset();
	LoadListDataL();

	// Create list box
	if (!iListBox)
		{
		iListBox = CDirectPrintListBox::NewL(ClientRect(), iItemArray);
		iListBox->SetMopParent(this);
		iListBox->SetListObserver(this);
		}
	AppUi()->AddToStackL(*this, iListBox);
	iListBox->MakeVisible(ETrue);
	iListBox->RedrawListL();

	// set the title pane
	SetActiveTitleL(R_DIRECTPRINT_MAINVIEW_TITLE);
	LOG("CDirectPrintMainView::DoActivateL END");
	}

void CDirectPrintMainView::DoDeactivate()
	{
	LOG("CDirectPrintMainView::DoDeactivate BEGIN");
	iListBox->MakeVisible(EFalse);
	AppUi()->RemoveFromViewStack(*this, iListBox);
	LOG("CDirectPrintMainView::DoDeactivate END");
	}

void CDirectPrintMainView::LoadListDataL()
	{
	CDirectPrintModel& model = GetModel();

	if (model.PrinterCount() > 0)
		{
		TBuf<50> buf;
		TBuf<25> itemTitle;

		TDirectPrintPrinterData printerData;
		model.GetPrinterDataL(0, printerData);
		CEikonEnv::Static()->ReadResource(itemTitle, R_DIRECTPRINT_MAINVIEW_ITEM_PRINTERNAME);
		buf.Format(_L("\t%S\t%S"), &itemTitle, &printerData.iPrinterName);
		iItemArray->AppendL(buf);

		TDirectPrintBearerData bearerData;
		model.GetCurrentBearerDataL(bearerData);
		CEikonEnv::Static()->ReadResource(itemTitle, R_DIRECTPRINT_MAINVIEW_ITEM_BEARER);
		buf.Format(_L("\t%S\t%S"), &itemTitle, &bearerData.iBearerName);
		iItemArray->AppendL(buf);

		TBuf<25> property;
		MakePropertyStringL(property);
		CEikonEnv::Static()->ReadResource(itemTitle, R_DIRECTPRINT_MAINVIEW_ITEM_PROPERTYSETTINGS);
		buf.Format(_L("\t%S\t%S"), &itemTitle, &property);
		iItemArray->AppendL(buf);
		}
	else
		{
		TBuf<50> buf;
		TBuf<30> itemTitle;
		CEikonEnv::Static()->ReadResource(itemTitle, R_DIRECTPRINT_MAINVIEW_ITEM_PRINTERNAME);
		buf.Format(_L("\t%S\t"), &itemTitle);
		iItemArray->AppendL(buf);
		CEikonEnv::Static()->ReadResource(itemTitle, R_DIRECTPRINT_MAINVIEW_ITEM_BEARER);
		buf.Format(_L("\t%S\t"), &itemTitle);
		iItemArray->AppendL(buf);
		CEikonEnv::Static()->ReadResource(itemTitle, R_DIRECTPRINT_MAINVIEW_ITEM_PROPERTYSETTINGS);
		buf.Format(_L("\t%S\t"), &itemTitle);
		iItemArray->AppendL(buf);
		}
	}

void CDirectPrintMainView::MakePropertyStringL(TDes& aProperty)
	{
	CDirectPrintModel& model = GetModel();
	CPrinterProperty* property = model.GetCurrentPrinterPropertyL(TUid::Uid(0));

	if (property)
		{
		TInt paperSize(0), orientation(0), copy(0);
		TInt count = property->iPropertyItems.Count();
		for (TInt i=0; i<count; i++)
			{
			if (property->iPropertyItems[i].iItemType == EDirectPrintPageSettingTab)
				{
				switch (property->iPropertyItems[i].iItemId)
					{
					case EDirectPrintPaperPaperSize:
						{
						paperSize = property->iPropertyItems[i].iItemValue;
						}
						break;
					case EDirectPrintPaperOrientation:
						{
						orientation = property->iPropertyItems[i].iItemValue;
						}
						break;
					case EDirectPrintPageCopy:
						{
						copy = property->iPropertyItems[i].iItemValue;
						}
						break;
					default:
						break;
					}
				}
			}

		//aProperty.Format(_L("%S/%S/%d"), paperSize, orientation, copy);
		aProperty.Format(_L("%d/%d/%d"), paperSize, orientation, copy);
		}
	}