DirectPrint/DirectPrintApp/ui/src/directprintmainview.cpp
changeset 19 2275db202402
parent 11 613a5ff70823
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DirectPrint/DirectPrintApp/ui/src/directprintmainview.cpp	Tue May 11 14:10:02 2010 +0800
@@ -0,0 +1,250 @@
+/*
+* 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);
+		}
+	}
+