diff -r acc370d7f2f6 -r 2275db202402 DirectPrint/DirectPrintApp/ui/src/directprintsearchresultview.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DirectPrint/DirectPrintApp/ui/src/directprintsearchresultview.cpp Tue May 11 14:10:02 2010 +0800 @@ -0,0 +1,255 @@ +/* +* 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 +#include +#include +#include +#include // StringLoader + +#include "clog.h" +#include "directprintapp.hrh" +#include "directprintsearchresultview.h" + +CDirectPrintSearchResultView::CDirectPrintSearchResultView() + { + iListBox = NULL; + } + +CDirectPrintSearchResultView::~CDirectPrintSearchResultView() + { + AppUi()->RemoveFromViewStack(*this, iListBox); + + if (iPeriodic) + { + iPeriodic->Cancel(); + delete iPeriodic; + iPeriodic = NULL; + } + + if (iProgressDialog) + { + TRAP_IGNORE(iProgressDialog->ProcessFinishedL()); + delete iProgressDialog; + iProgressDialog = NULL; + } + if (iProgressMessage) + { + delete iProgressMessage; + iProgressMessage = NULL; + } + + delete iListBox; + delete iItemArray; + } + +CDirectPrintSearchResultView* CDirectPrintSearchResultView::NewL() + { + CDirectPrintSearchResultView* self = CDirectPrintSearchResultView::NewLC(); + CleanupStack::Pop(self); + return self; + } + +CDirectPrintSearchResultView* CDirectPrintSearchResultView::NewLC() + { + CDirectPrintSearchResultView* self = new(ELeave) CDirectPrintSearchResultView(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +void CDirectPrintSearchResultView::ConstructL() + { + LOG("CDirectPrintSearchResultView::ConstructL BEGIN"); + BaseConstructL(R_DIRECTPRINT_SEARCHRESULT_VIEW); + + iViewId = TUid::Uid(EDirectPrintSearchResultViewId); + + iItemArray = new(ELeave) CDesCArrayFlat(3); + LOG("CDirectPrintSearchResultView::ConstructL END"); + } + +void CDirectPrintSearchResultView::HandleCommandL(TInt aCommand) + { + switch (aCommand) + { + case EAknSoftkeyCancel: + { + AppUi()->HandleCommandL(EDirectPrintCmdIdSearchResultViewCancel); + } + break; + case EDirectPrintCmdIdSearchResultViewSearch: + { + AppUi()->HandleCommandL(aCommand); + } + break; + default: + { + AppUi()->HandleCommandL(aCommand); + } + break; + } + } + +void CDirectPrintSearchResultView::HandleListIndexL(TInt /*aIndex*/) + { + AppUi()->HandleCommandL(EDirectPrintCmdIdSearchResultViewSelect); + } + +void CDirectPrintSearchResultView::OfferToolbarEventL(TInt aCommand) + { + switch (aCommand) + { + case EDirectPrintCmdIdPrinterListViewEdit: + { + AppUi()->HandleCommandL(aCommand); + } + break; + default: + break; + } + } + +void CDirectPrintSearchResultView::DoActivateL(const TVwsViewId& /*aPrevViewId*/, TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/) + { + LOG("CDirectPrintSearchResultView::DoActivateL BEGIN"); + CAknToolbar* toolbar = AppUi()->CurrentFixedToolbar(); + toolbar->SetToolbarObserver(this); + + // Create list box + if (!iListBox) + { + iListBox = CDirectPrintListBox::NewL(ClientRect(), iItemArray); + iListBox->SetMopParent(this); + iListBox->SetListObserver(this); + } + AppUi()->AddToStackL(*this, iListBox); + iListBox->MakeVisible(ETrue); + + // set the title pane + SetActiveTitleL(R_DIRECTPRINT_PRINTERSEARCH_TITLE); + + StartSearchL(); + LOG("CDirectPrintSearchResultView::DoActivateL END"); + } + +void CDirectPrintSearchResultView::DoDeactivate() + { + LOG("CDirectPrintSearchResultView::DoDeactivate BEGIN"); + iListBox->MakeVisible(EFalse); + AppUi()->RemoveFromViewStack(*this, iListBox); + LOG("CDirectPrintSearchResultView::DoDeactivate END"); + } + +void CDirectPrintSearchResultView::StartSearchProgressNoteL() + { + // Delete possible previous CAknProgressDialog. + if (iProgressDialog) + { + delete iProgressDialog; + iProgressDialog = NULL; + } + + if (!iProgressMessage) + { + // read progress message + iProgressMessage = StringLoader::LoadL( R_DIRECTPRINT_MSG_SEARCHING_PROGRESS ); + } + + // Create new CAknProgressDialog. + iProgressDialog = new ( ELeave ) CAknProgressDialog( reinterpret_cast + + ( &iProgressDialog ) ); + iProgressDialog->SetCallback( this ); + iProgressDialog->PrepareLC( R_DIRECTPRINT_SEARCH_PROGRESS_NOTE ); + //iProgressInfo = iProgressDialog->GetProgressInfoL(); + //iProgressInfo->SetFinalValue( 1 ); + + iProgressDialog->SetTextL(*iProgressMessage); + iProgressDialog->RunLD(); + } + +void CDirectPrintSearchResultView::EndProgressNoteL() + { + if (iProgressDialog) + { + iProgressDialog->ProcessFinishedL(); + if (iProgressDialog) + { + delete iProgressDialog; + iProgressDialog = NULL; + } + } + } + +void CDirectPrintSearchResultView::StartSearchL() + { + const TInt KSearchTimeoutTime(10000000); // 10 sec + + if (iPeriodic) + { + iPeriodic->Cancel(); + } + else + { + iPeriodic = CPeriodic::NewL(CActive::EPriorityIdle); + } + iPeriodic->Start(KSearchTimeoutTime, KSearchTimeoutTime, TCallBack(HandleTimeout, this)); + StartSearchProgressNoteL(); + } + +TInt CDirectPrintSearchResultView::HandleTimeout(TAny* aAny) + { + // Setting size button back to up state + + CDirectPrintSearchResultView* self = static_cast( aAny ); + // Cancel timer + TRAPD( err, self->HandleTimeoutL()); + return err; + } + +void CDirectPrintSearchResultView::HandleTimeoutL() + { + iTimeoutCount++; + if (iTimeoutCount == 1) + { + // for test + TBuf<50> buf; + buf.Copy(_L("\tCanon MP640_000XXX\t")); + iItemArray->AppendL(buf); + iListBox->DrawNow(); + } + else if (iTimeoutCount > 1) + { + EndProgressNoteL(); + if (iPeriodic) + { + iPeriodic->Cancel(); + delete iPeriodic; + iPeriodic = NULL; + } + iTimeoutCount = 0; + } + } + +void CDirectPrintSearchResultView::DialogDismissedL( TInt aButtonId ) + { + //TInt button = aButtonId; + } + + +// End of file