--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mpxplugins/viewplugins/views/waitnotedialog/src/mpxwaitnotedialog.cpp Wed Sep 01 12:32:02 2010 +0100
@@ -0,0 +1,515 @@
+/*
+* Copyright (c) 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: Wait note dialog
+*
+*/
+
+
+#include <e32base.h>
+#include <AknIconUtils.h>
+#include <eikimage.h>
+#include <eikenv.h>
+#include <bautils.h>
+#include <AknUtils.h>
+#include <AknsUtils.h>
+#include <aknnotewrappers.h>
+#include <data_caging_path_literals.hrh>
+#include <mpxlog.h>
+#include <mpxcollectionutility.h>
+#include <aknSDData.h>
+#include <AknMediatorFacade.h>
+//#include <S32STRM.H>
+#include <mplayersecondarydisplayapi.h>
+
+#include <mpxwaitnotedialog.rsg>
+#include <mpxuser.h>
+#include "mpxwaitnotedialog.h"
+#include <mpxlog.h>
+
+// CONSTANTS
+_LIT( KMPXWaitNoteRscPath, "mpxwaitnotedialog.rsc" );
+
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// Default constructor
+// ---------------------------------------------------------------------------
+//
+CMPXWaitNoteDialog::CMPXWaitNoteDialog( MMPXWaitNoteObserver* aObs,
+ TWaitNoteType aType,
+ TBool aVisibilityDelayOff )
+ : iObserver( aObs ),
+ iWaitNoteType( aType ),
+ iVisDelayOff( aVisibilityDelayOff ),
+ iResourceOffset(0)
+ {
+
+ }
+
+// ---------------------------------------------------------------------------
+// Base Second Phase Constructor
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::BaseConstructL()
+ {
+ // Collection Utility
+ iCollection = MMPXCollectionUtility::NewL( this );
+
+ // Resource file
+ CEikonEnv* eikEnv = CEikonEnv::Static();
+ TParse parse;
+ parse.Set( KMPXWaitNoteRscPath, &KDC_APP_RESOURCE_DIR, NULL );
+ TFileName resourceFile( parse.FullName() );
+ User::LeaveIfError( MPXUser::CompleteWithDllPath( resourceFile ) );
+ BaflUtils::NearestLanguageFile( eikEnv->FsSession(), resourceFile );
+ iResourceOffset = eikEnv->AddResourceFileL( resourceFile );
+ }
+
+
+// ---------------------------------------------------------------------------
+// Virtual destructor
+// ---------------------------------------------------------------------------
+//
+CMPXWaitNoteDialog::~CMPXWaitNoteDialog()
+ {
+ MPX_DEBUG1("CMPXWaitNoteDialog::~CMPXWaitNoteDialog <---");
+ if( iWaitDialog )
+ {
+ iWaitDialog->SetCallback( NULL );
+ TRAP_IGNORE( iWaitDialog->ProcessFinishedL() );
+ }
+ if( iProcessWaitDialog )
+ {
+ TRAP_IGNORE( iProcessWaitDialog->ProcessFinishedL() );
+ }
+
+ if( iResourceOffset )
+ {
+ CEikonEnv::Static()->DeleteResourceFile( iResourceOffset );
+ }
+
+ // Close any queries, if any
+ TRAP_IGNORE( DismissQueryNoteL() );
+
+ if( iCollection )
+ {
+ iCollection->Close();
+ }
+ MPX_DEBUG1("CMPXWaitNoteDialog::~CMPXWaitNoteDialog --->");
+ }
+
+// ---------------------------------------------------------------------------
+// Execute the wait note
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::ExecuteLD()
+ {
+ MPX_DEBUG1("CMPXWaitNoteDialog::ExecuteLD <--");
+ // Construct the wait note
+ if(iWaitDialog )
+ {
+ MPX_DEBUG1("CMPXWaitNoteDialog::ExecuteLD -- deleting dlg");
+ iWaitDialog->SetCallback( NULL );
+ iWaitDialog->ProcessFinishedL();
+ iWaitDialog = NULL;
+ }
+
+ MPX_DEBUG1("CMPXWaitNoteDialog::ExecuteLD -- new dlg");
+ iWaitDialog = new ( ELeave ) CAknWaitDialog(
+ ( CEikDialog** )&iWaitDialog,
+ iVisDelayOff );
+ TInt dialogIndex = KErrNotFound;
+ switch ( iWaitNoteType )
+ {
+ case EMPXScanningNote:
+ {
+ dialogIndex = EMPlayerNoteCreatingDb;
+ break;
+ }
+
+ case EMPXOpeningNote:
+ {
+ dialogIndex = EMPlayerNoteOpeningDb;
+ break;
+ }
+
+ case EMPXRefreshingNote:
+ {
+ dialogIndex = EMPlayerNoteUpdatingDb;
+ break;
+ }
+
+ case EMPXCorruptScanningNote:
+ {
+ dialogIndex = EMPlayerNoteRebuildingDb;
+ break;
+ }
+
+ case EMPXUsbEventNote:
+ {
+ dialogIndex = EMPlayerUSBConnectionInProgress;
+ break;
+ }
+
+ case EMPXMTPEventNote:
+ {
+ dialogIndex = EMPlayerMTPConnectionInProgress;
+ break;
+ }
+
+ case EMPXFormatScanningNote:
+ {
+ dialogIndex = EMPlayerFormatting;
+ break;
+ }
+
+ case EMPXMediaNotAvailableNote:
+ case EMPXNoteNotDefined:
+ default:
+ break;
+ };
+
+ if ( dialogIndex != KErrNotFound )
+ {
+ iWaitDialog->PublishDialogL(
+ dialogIndex,
+ KMPlayerNoteCategory );
+
+ CAknMediatorFacade* covercl = AknMediatorFacade( iWaitDialog );
+ if ( covercl )
+ {
+ covercl->BufStream().WriteInt32L( 0 );
+ covercl->BufStream().CommitL();
+ }
+ }
+ iWaitDialog->SetCallback( this );
+ iWaitDialog->PrepareLC( R_MPX_GENERIC_WAIT_NOTE );
+
+ PreNoteDisplayHandleL();
+
+ iWaitDialog->RunLD();
+ MPX_DEBUG1("CMPXWaitNoteDialog::ExecuteLD -->");
+ }
+
+// ---------------------------------------------------------------------------
+// Cancel the wait note
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::CancelNoteL()
+ {
+ MPX_DEBUG1("CMPXWaitNoteDialog::CancelNoteL <---");
+ if( iWaitDialog )
+ {
+ iWaitDialog->ProcessFinishedL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Check the destruction status of wait dialog
+// ---------------------------------------------------------------------------
+//
+TBool CMPXWaitNoteDialog::ReadyToDestroy()
+ {
+ // iWaitDialog will be updated by CAknWaitDialog self-destruction mech
+ return iWaitDialog == NULL;
+ }
+
+// ---------------------------------------------------------------------------
+// Do anything after the wait note is dismissed
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::PostNoteHandleL( TInt /*aButtonId*/ )
+ {
+ // Not used
+ }
+
+// ---------------------------------------------------------------------------
+// Set the wait note CBA buttons
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::SetCBAL( TInt aCBAId )
+ {
+ if( iWaitDialog )
+ {
+ MEikButtonGroup* buttonGroup =
+ iWaitDialog->ButtonGroupContainer().ButtonGroup();
+ buttonGroup->SetCommandSetL( aCBAId );
+ buttonGroup->AsControl()->DrawDeferred();
+ }
+ else
+ {
+ User::Leave( KErrNotReady );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Set the wait note CBA text
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::SetTextL( const TDesC& aText )
+ {
+ if( iWaitDialog )
+ {
+ iWaitDialog->SetTextL( aText );
+ }
+ else
+ {
+ User::Leave( KErrNotReady );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Set the wait note Icon
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::SetIconL( TNoteIconInfo& aIconInfo )
+ {
+ if( iWaitDialog )
+ {
+ MAknsSkinInstance* skin( AknsUtils::SkinInstance() );
+
+ CFbsBitmap* bitmap = NULL;
+ CFbsBitmap* mask = NULL;
+
+ AknsUtils::CreateIconLC(
+ skin,
+ KAknsIIDNone,
+ bitmap,
+ mask,
+ aIconInfo.bmpfile,
+ aIconInfo.bitmapId,
+ aIconInfo.maskId );
+
+ CEikImage* icon = new ( ELeave ) CEikImage();
+ CleanupStack::PushL( icon );
+ icon->SetPicture( bitmap, mask );
+ icon->SetPictureOwnedExternally( EFalse );
+ iWaitDialog->SetImageL( icon );
+ CleanupStack::Pop( 3 ); // icon, bitmap, mask
+ }
+ else
+ {
+ User::Leave( KErrNotReady );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// MMPXCollectionObserver
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::HandleCollectionMediaL(const CMPXMedia& /*aMedia*/,
+ TInt /*aError*/)
+ {
+ // Not used
+ }
+
+// ---------------------------------------------------------------------------
+// MMPXCollectionObserver
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::HandleCollectionMessage(
+ CMPXMessage* /*aMessage*/, TInt /*aError*/ )
+ {
+ // Not used
+ }
+
+// ---------------------------------------------------------------------------
+// MMPXCollectionObserver
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::HandleOpenL(const CMPXMedia& /*aEntries*/,
+ TInt /*aIndex*/,TBool /*aComplete*/,TInt /*aError*/)
+ {
+ // Not used
+ }
+
+// ---------------------------------------------------------------------------
+// MMPXCollectionObserver
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::HandleOpenL(const CMPXCollectionPlaylist& /*aPlaylist*/,
+ TInt /*aError*/)
+ {
+ // Not used
+ }
+
+// ---------------------------------------------------------------------------
+// MProgressDialogCallback
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::DialogDismissedL( TInt aButtonId )
+ {
+ // Tell inherited class abut the event
+ PostNoteHandleL( aButtonId );
+
+ // Tell view that wait dialog is finished
+ iObserver->HandleWaitNoteDismissedL();
+ }
+
+// ---------------------------------------------------------------------------
+// Display a confirmation note
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::DisplayConfirmationNoteL( const TDesC& aLabel )
+ {
+ CAknConfirmationNote* note = new ( ELeave ) CAknConfirmationNote();
+ note->ExecuteLD( aLabel );
+ }
+
+// ---------------------------------------------------------------------------
+// Display a information note
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::DisplayInformationNoteL( const TDesC& aLabel )
+ {
+ CAknInformationNote* note = new ( ELeave ) CAknInformationNote();
+ note->ExecuteLD( aLabel );
+ }
+
+// ---------------------------------------------------------------------------
+// Display a query note
+// ---------------------------------------------------------------------------
+//
+TInt CMPXWaitNoteDialog::DisplayQueryNoteL( const TDesC& aQuery )
+ {
+ CAknQueryDialog* query = new( ELeave ) CAknQueryDialog();
+ iQueryDialog = query;
+
+ TInt rtn = query->ExecuteLD( R_MPX_QUERY_YES_NO ,
+ aQuery );
+ iQueryDialog = NULL; // Dialog destroyed
+ return rtn;
+ }
+
+// ---------------------------------------------------------------------------
+// Dismiss the current query note
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::DismissQueryNoteL()
+ {
+ if( iQueryDialog )
+ {
+ iQueryDialog->DismissQueryL();
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Display a generic note dialog
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::DisplayNoteDialogL( TInt aDlgRsc, const TDesC& aLabel,
+ CAknNoteDialog::TTone aTone )
+ {
+ iObserver->NoteDialogL( iNoteDialog, aDlgRsc, aTone );
+ if ( iNoteDialog )
+ {
+ iNoteDialog->SetTextL( aLabel );
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Display a generic note dialog
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::DisplayNoteDialogL( TInt aDlgRsc, TInt aTextRsc,
+ TInt aItemsAdded, const TDesC& aLabel,
+ CAknNoteDialog::TTone aTone )
+ {
+ MPX_DEBUG1("CMPXWaitNoteDialog::DisplayNoteDialogL for COVER DISPLAY--->");
+
+ CAknNoteDialog* note = new ( ELeave ) CAknNoteDialog( aTone );
+ note->PrepareLC( aDlgRsc );
+ note->SetTextL( aLabel );
+ if ( aTextRsc == R_MPX_REFRESHING_DB_STOPPED_TXT )
+ {
+ note->PublishDialogL(
+ EMPlayerNoteDbUpdateStopped,
+ KMPlayerNoteCategory);
+ }
+ else if ( aTextRsc == R_MPX_SCANNING_STOPPED_TXT )
+ {
+ note->PublishDialogL(
+ EMPlayerNoteDbSearchStoppedItemFound,
+ KMPlayerNoteCategory);
+ }
+ else if ( aTextRsc == R_MPX_SCANNING_COMPLETE_TXT )
+ {
+ TInt noteId( EMPlayerNoteDbCreationCompleteEmpty );
+ if ( aItemsAdded > 0 )
+ {
+ noteId = EMPlayerNoteDbCreationComplete;
+ };
+
+ note->PublishDialogL(
+ noteId,
+ KMPlayerNoteCategory);
+ }
+ else if ( aTextRsc == R_MPX_REFRESHING_DB_COMPLETE_TXT )
+ {
+ note->PublishDialogL(
+ EMPlayerNoteDbUpdateComplete,
+ KMPlayerNoteCategory);
+ }
+
+ if ( aTextRsc != KErrNotFound )
+ {
+ CAknMediatorFacade* covercl = AknMediatorFacade( note );
+ if ( covercl )
+ {
+ covercl->BufStream().WriteInt32L( aItemsAdded );
+ covercl->BufStream().CommitL();
+ }
+ }
+
+ note->RunLD();
+ MPX_DEBUG1("<--CMPXWaitNoteDialog::DisplayNoteDialogL for COVER DISPLAY End");
+ }
+
+// ---------------------------------------------------------------------------
+// Display a generic process wait dialog
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::DisplayProcessWaitDialogL( TInt aDlgRsc,
+ const TDesC& aLabel,
+ CAknWaitDialog::TTone aTone )
+ {
+ if(iProcessWaitDialog )
+ {
+ iProcessWaitDialog->ProcessFinishedL();
+ iProcessWaitDialog = NULL;
+ }
+
+ iProcessWaitDialog = new ( ELeave ) CAknWaitDialog(
+ ( CEikDialog** )&iProcessWaitDialog,
+ EFalse );
+
+ iProcessWaitDialog->PrepareLC( aDlgRsc );
+ iProcessWaitDialog->SetTextL( aLabel );
+ iProcessWaitDialog->RunLD();
+ }
+
+// ---------------------------------------------------------------------------
+// Cancel the process wait dialog
+// ---------------------------------------------------------------------------
+//
+void CMPXWaitNoteDialog::CancelProcessWaitDialogL()
+ {
+ if( iProcessWaitDialog )
+ {
+ iProcessWaitDialog->ProcessFinishedL();
+ }
+ }
+// End of file
+