localconnectivityservice/obexserviceman/utils/src/obexutilsdialog.cpp
branchRCL_3
changeset 40 52a167391590
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/localconnectivityservice/obexserviceman/utils/src/obexutilsdialog.cpp	Wed Sep 01 12:20:40 2010 +0100
@@ -0,0 +1,359 @@
+/*
+* Copyright (c) 2002 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: 
+*
+*/
+
+
+// INCLUDE FILES
+#include    "obexutilsdialog.h"
+#include    "obexutilsdialogtimer.h"
+#include    "obexutilsuilayer.h"
+#include    <SecondaryDisplay/obexutilssecondarydisplayapi.h>
+#include    <aknnotewrappers.h>
+#include    <eikprogi.h>
+#include    <Obexutils.rsg>
+#include    <e32def.h>
+#include    <bautils.h>
+#include    <StringLoader.h>
+#include    <featmgr.h>
+#include    "obexutilsdebug.h"
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+CObexUtilsDialog::CObexUtilsDialog( MObexUtilsDialogObserver* aObserverPtr ) : 
+    iDialogObserverPtr( aObserverPtr )
+    {
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::NewL
+// -----------------------------------------------------------------------------
+EXPORT_C CObexUtilsDialog* CObexUtilsDialog::NewL( MObexUtilsDialogObserver* aObserverPtr )
+    {
+    CObexUtilsDialog* self = new ( ELeave ) CObexUtilsDialog( aObserverPtr );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return( self );
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::NewLC
+// -----------------------------------------------------------------------------
+EXPORT_C CObexUtilsDialog* CObexUtilsDialog::NewLC( MObexUtilsDialogObserver* aObserverPtr )
+    {
+    CObexUtilsDialog* self = new ( ELeave ) CObexUtilsDialog( aObserverPtr );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return( self );
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::ConstructL
+// Symbian OS default constructor can leave.
+// -----------------------------------------------------------------------------
+void CObexUtilsDialog::ConstructL()
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::ConstructL()"));
+
+    if (!iDialogObserverPtr)
+        {
+        // The observer pointer was not given as an argument.
+        //
+        User::Leave(KErrArgument);
+        }
+  
+    TFileName fileName;
+    fileName += KObexUtilsFileDrive;
+    fileName += KDC_RESOURCE_FILES_DIR;
+    fileName += KObexUtilsResourceFileName;
+    BaflUtils::NearestLanguageFile( CCoeEnv::Static()->FsSession(), fileName );
+    iResourceFileId = CCoeEnv::Static()->AddResourceFileL( fileName );
+
+    iCoverDisplayEnabled = IsCoverDisplayL();
+
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::ConstructL() completed"));
+    } 
+
+// -----------------------------------------------------------------------------
+// Destructor
+// -----------------------------------------------------------------------------
+CObexUtilsDialog::~CObexUtilsDialog()
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::~CObexUtilsDialog()"));
+
+    CCoeEnv::Static()->DeleteResourceFile( iResourceFileId );
+    delete iObexDialogTimer;
+
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::~CObexUtilsDialog() completed"));
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::LaunchProgressDialogL
+// -----------------------------------------------------------------------------
+EXPORT_C void CObexUtilsDialog::LaunchProgressDialogL( 
+    MObexUtilsProgressObserver* aObserverPtr, TInt aFinalValue, 
+    TInt aResId, TInt aTimeoutValue )
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchProgressDialogL()"));
+
+    if ( aObserverPtr )
+        {
+        // The observerPtr was given, so store it and start a timer
+        //
+        iProgressObserverPtr = aObserverPtr;
+
+        if ( iObexDialogTimer )
+            {
+            iObexDialogTimer->Cancel();
+            delete iObexDialogTimer;
+            iObexDialogTimer = NULL;
+            }
+
+        iObexDialogTimer = CObexUtilsDialogTimer::NewL( this );
+        iObexDialogTimer->SetTimeout( aTimeoutValue );
+        }
+
+    iProgressDialogResId = aResId;
+   
+    iProgressDialog = new( ELeave ) CAknProgressDialog( 
+        ( reinterpret_cast<CEikDialog**>( &iProgressDialog ) ), ETrue );
+    PrepareDialogExecuteL( aResId, iProgressDialog );
+    iProgressDialog->ExecuteLD( R_SENDING_PROGRESS_NOTE );
+    
+    HBufC* buf = StringLoader::LoadLC( aResId );
+    iProgressDialog->SetTextL( buf->Des() );
+    CleanupStack::PopAndDestroy( buf );
+
+    iProgressDialog->GetProgressInfoL()->SetFinalValue( aFinalValue );
+    iProgressDialog->SetCallback( this );
+    if ( iProgressObserverPtr )
+        {
+        iObexDialogTimer->Tickle();
+        }
+
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchProgressDialogL() completed"));
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::LaunchWaitDialogL
+// -----------------------------------------------------------------------------
+EXPORT_C void CObexUtilsDialog::LaunchWaitDialogL( TInt aResId )
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchWaitDialogL()"));
+
+    if ( iWaitDialog || iProgressDialog )
+        {
+        // Allow only one dialog at a time
+        //
+        User::Leave( KErrInUse );
+        }
+
+    iWaitDialog = new( ELeave ) CAknWaitDialog(
+            ( reinterpret_cast<CEikDialog**>( &iWaitDialog ) ), EFalse );
+    
+    iWaitDialog->SetCallback( this );
+    PrepareDialogExecuteL( aResId, iWaitDialog );
+    iWaitDialog->ExecuteLD( aResId );
+
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchWaitDialogL() completed"));
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::CancelWaitDialogL
+// -----------------------------------------------------------------------------
+EXPORT_C void CObexUtilsDialog::CancelWaitDialogL()
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::CancelWaitDialogL()"));
+
+    if( iWaitDialog )
+        {
+        iWaitDialog->SetCallback(NULL);
+        iWaitDialog->ProcessFinishedL();
+        iWaitDialog = NULL;
+        }
+
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::CancelWaitDialogL() completed"));
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::CancelProgressDialogL
+// -----------------------------------------------------------------------------
+EXPORT_C void CObexUtilsDialog::CancelProgressDialogL()
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::CancelProgressDialogL()"));
+
+    if( iProgressDialog )
+        {        
+        iProgressDialog->SetCallback(NULL);
+        iProgressDialog->ProcessFinishedL();
+        iProgressDialog = NULL;
+
+        if ( iObexDialogTimer )
+            {
+            iObexDialogTimer->Cancel();
+            delete iObexDialogTimer;
+            iObexDialogTimer = NULL;
+            }
+        }  
+        
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::CancelProgressDialogL() completed"));  
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::UpdateProgressDialogL
+// -----------------------------------------------------------------------------
+EXPORT_C void CObexUtilsDialog::UpdateProgressDialogL( TInt aValue, TInt aResId  )
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::UpdateProgressDialogL()"));
+
+    if ( iProgressDialog )
+        {
+        iProgressDialog->GetProgressInfoL()->SetAndDraw( aValue );
+        
+        HBufC* buf = StringLoader::LoadLC( aResId );
+        iProgressDialog->SetTextL( buf->Des() );
+        iProgressDialog->LayoutAndDraw();
+        CleanupStack::PopAndDestroy( buf );
+        }
+
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::UpdateProgressDialogL() completed"));
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::DialogDismissedL
+// -----------------------------------------------------------------------------
+void CObexUtilsDialog::DialogDismissedL( TInt aButtonId )
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::DialogDismissedL()"));
+
+    // The dialog has already been deleted by UI framework.
+    //
+    if( aButtonId == EAknSoftkeyCancel )
+        {
+        if ( iDialogObserverPtr )
+            {
+            iDialogObserverPtr->DialogDismissed( aButtonId );
+            }
+
+        if ( iObexDialogTimer )
+            {
+            iObexDialogTimer->Cancel();
+            delete iObexDialogTimer;
+            iObexDialogTimer = NULL;
+            }
+        }
+
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::DialogDismissedL() completed"));
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::UpdateProgressDialog
+// -----------------------------------------------------------------------------
+void CObexUtilsDialog::UpdateProgressDialog()
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::UpdateProgressDialog()"));
+
+    TRAPD( ignoredError, UpdateProgressDialogL( 
+        iProgressObserverPtr->GetProgressStatus(), iProgressDialogResId ) );
+        
+    if (ignoredError != KErrNone)
+        {
+        FLOG(_L("Ignore this error"));
+        }
+
+    if ( iObexDialogTimer )
+        {
+        iObexDialogTimer->Tickle();
+        }
+
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::UpdateProgressDialog() completed"));
+    }
+    
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::LaunchQueryDialogL
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CObexUtilsDialog::LaunchQueryDialogL( const TInt& aResourceID )
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::LaunchQueryDialogL()"));
+    
+    CAknQueryDialog* dlg = CAknQueryDialog::NewL();
+    CleanupStack::PushL( dlg );
+    PrepareDialogExecuteL( aResourceID, dlg );
+    CleanupStack::Pop( dlg );
+    TInt keypress = dlg->ExecuteLD( aResourceID );
+    
+    return keypress;
+    }
+    
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::ShowNumberOfSendFileL
+// -----------------------------------------------------------------------------
+//  
+    
+EXPORT_C void CObexUtilsDialog::ShowNumberOfSendFileL( TInt aSentNum, TInt aTotalNum )
+    {
+    FLOG(_L("[OBEXUTILS]\t CObexUtilsDialog::ShowNumberOfSendFile()"));
+    
+    CAknInformationNote* myNote = new (ELeave) CAknInformationNote();
+
+    CArrayFix<TInt>* nums = new( ELeave ) CArrayFixFlat<TInt>(3);
+    CleanupStack::PushL(nums);
+    nums->AppendL(aSentNum);  
+    nums->AppendL(aTotalNum);
+    CleanupStack::Pop(nums);
+
+    HBufC* stringholder = StringLoader::LoadLC( R_BT_SENT_IMAGE_NUMBER, *nums); 
+    PrepareDialogExecuteL( R_BT_SENT_IMAGE_NUMBER, myNote );
+    myNote->ExecuteLD( *stringholder );
+    CleanupStack::PopAndDestroy( stringholder );
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::PrepareDialogExecuteL
+// -----------------------------------------------------------------------------
+//
+void CObexUtilsDialog::PrepareDialogExecuteL( const TInt& aResourceID, CEikDialog* aDialog )
+    {
+    if (iCoverDisplayEnabled)
+        {
+        TInt dialogIndex =
+            ((aResourceID & KResourceNumberMask) - KFirstResourceOffset) + KEnumStart;
+        aDialog->PublishDialogL( dialogIndex, KObexUtilsCategory );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CObexUtilsDialog::IsCoverDisplayL()
+// -----------------------------------------------------------------------------
+//
+TBool CObexUtilsDialog::IsCoverDisplayL()
+    {
+    TBool coverDisplay = EFalse;
+	FeatureManager::InitializeLibL();
+	if ( FeatureManager::FeatureSupported( KFeatureIdCoverDisplay ) )
+		{
+		coverDisplay = ETrue;
+		}
+	FeatureManager::UnInitializeLib();
+    return coverDisplay;
+    }
+
+//  End of File