localconnectivityservice/obexserviceman/utils/src/obexutilsglobalprogressdialog.cpp
changeset 0 c3e98f10fcf4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/localconnectivityservice/obexserviceman/utils/src/obexutilsglobalprogressdialog.cpp	Mon Jan 18 21:03:15 2010 +0200
@@ -0,0 +1,272 @@
+/*
+* 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:  Handles the global progress dialog 
+*
+*/
+
+
+
+
+
+// INCLUDE FILES
+#include <AknGlobalProgressDialog.h>
+#include "obexutilsglobalprogressdialog.h"
+#include "obexutilsuilayer.h"
+#include <StringLoader.h>
+#include <AknIconUtils.h>
+#include <avkon.mbg>
+#include <avkon.rsg>
+#include <bautils.h>
+#include <BtuiViewResources.rsg>     // Compiled resource ids
+#include <e32math.h>
+
+#include <StringLoader.h>            // Localisation stringloader
+#include <eikenv.h>
+
+#include "obexutilsdebug.h"
+
+const TInt KMaxDisplayFileName = 17;    // used while showing receiving filename. 
+                                        // If the filename is longer than 20 bytes, we make it show only 20 bytes.
+
+// ================= MEMBER FUNCTIONS =======================
+
+// C++ default constructor can NOT contain any code, that
+// might leave.
+//
+CGlobalProgressDialog::CGlobalProgressDialog() : CActive(EPriorityNormal)
+   {
+   CActiveScheduler::Add( this );
+   }
+
+
+// Symbian default constructor can leave.
+void CGlobalProgressDialog::ConstructL(MGlobalProgressCallback* aObserver)
+   {
+    iProgressDialog = CAknGlobalProgressDialog::NewL();
+    iKeyCallback = aObserver;
+   }
+
+
+// Two-phased constructor.
+EXPORT_C CGlobalProgressDialog* CGlobalProgressDialog::NewL(MGlobalProgressCallback* aObserver)
+   {
+   CGlobalProgressDialog* self = NewLC(aObserver);
+   CleanupStack::Pop();
+   return self;
+   }
+
+// Two-phased constructor.- stack version
+EXPORT_C CGlobalProgressDialog* CGlobalProgressDialog::NewLC(MGlobalProgressCallback* aObserver)
+   {
+   CGlobalProgressDialog* self=new (ELeave) CGlobalProgressDialog();
+   CleanupStack::PushL(self);
+   self->ConstructL(aObserver);
+   return self;
+   }
+
+
+// Destructor
+CGlobalProgressDialog::~CGlobalProgressDialog()
+   {
+   Cancel();
+   delete iProgressDialog;  
+   delete iStringResourceReader;
+   }
+
+
+
+// ---------------------------------------------------------
+// CGlobalProgressDialog::DoCancel
+// Active object cancel
+// ---------------------------------------------------------
+//
+void CGlobalProgressDialog::DoCancel()
+   {
+   if ( iProgressDialog )
+      {
+      iProgressDialog->CancelProgressDialog();
+      }
+
+    if(iStringResourceReader)
+    {
+        delete iStringResourceReader;
+        iStringResourceReader = NULL;
+    }
+   }
+
+// ---------------------------------------------------------
+// CGlobalProgressDialog::RunL
+// Active object RunL
+// ---------------------------------------------------------
+//
+void CGlobalProgressDialog::RunL()
+    {
+    if ( iKeyCallback != NULL )
+        {
+        iKeyCallback->HandleGlobalProgressDialogL(iStatus.Int());
+        }
+    }
+
+// ---------------------------------------------------------
+// CGlobalProgressDialog::SetIconL
+// Set icon on the dialog
+// ---------------------------------------------------------
+//
+void CGlobalProgressDialog::SetIconL( const TDesC& aIconText, const TDesC& aIconFile,
+                                TInt aIconId, TInt aIconMaskId )
+   {
+   iProgressDialog->SetIconL(aIconText, aIconFile, aIconId, aIconMaskId );
+   }
+
+// ---------------------------------------------------------
+// CGlobalProgressDialog::SetImageL
+// Set image on the dialog
+// ---------------------------------------------------------
+//
+void CGlobalProgressDialog::SetImageL( const TDesC& aImageFile, TInt aImageId,
+                                 TInt aImageMaskId )
+   {
+   iProgressDialog->SetImageL(aImageFile, aImageId, aImageMaskId);
+   }
+
+
+// ---------------------------------------------------------
+// CGlobalProgressDialog::ShowProgressDialogL
+// Shows progress dialog and sets active object active
+// ---------------------------------------------------------
+//
+EXPORT_C void CGlobalProgressDialog::ShowProgressDialogL(TInt aStringId)
+    {
+    TFileName fileName;
+    fileName += KObexUtilsFileDrive;
+    fileName += KDC_RESOURCE_FILES_DIR;
+    fileName += KObexUtilsResourceFileName;
+
+    if(!iStringResourceReader)
+    {
+        iStringResourceReader= CStringResourceReader::NewL( fileName );
+    }
+    TPtrC buf;
+    //buf.Set(iStringResourceReader-> ReadResourceString(R_BT_RECEIVING_DATA));   
+    buf.Set(iStringResourceReader-> ReadResourceString(aStringId));   
+    iProgressDialog->ShowProgressDialogL( iStatus, buf, R_AVKON_SOFTKEYS_HIDE_CANCEL__HIDE );   
+    //iProgressDialog->ShowProgressDialogL( iStatus, buf, R_BTUI_SOFTKEYS_OPTIONS_EXIT__CHANGE ); //R_OBEXUTILS_SOFTKEYS_HIDE_CANCEL );   
+    SetActive();    
+    }
+
+// ---------------------------------------------------------
+// CGlobalProgressDialog::ShowProgressDialogNameSizeL
+// Shows progress dialog and sets active object active
+// ---------------------------------------------------------
+//
+EXPORT_C void CGlobalProgressDialog::ShowProgressDialogNameSizeL(
+    TDesC& aFileName, 
+    TInt64 aFileSize)
+    {
+    TFileName fileName;
+    fileName += KObexUtilsFileDrive;
+    fileName += KDC_RESOURCE_FILES_DIR;
+    fileName += KObexUtilsResourceFileName;
+
+    if(!iStringResourceReader)
+        {
+        iStringResourceReader= CStringResourceReader::NewL( fileName );
+        }
+    TPtrC buf;
+   
+    
+    TBuf<20> sizeInString;
+    sizeInString.Zero();
+    
+    if ( aFileSize >> 20 )    // size in MB
+        {       
+        TReal sizeInMB = 0;
+        sizeInMB = ((TReal)aFileSize ) / (1024*1024);
+        _LIT16(KFormatTwoDecimal,"%4.2f");  // keep 2 decimals
+        sizeInString.Format(KFormatTwoDecimal,sizeInMB); 
+        buf.Set(iStringResourceReader-> ReadResourceString(R_BT_IR_RECEIVING_DATA_SIZE_MB));
+        }
+    else if( aFileSize >> 10 )        // size in KB
+        {
+        TInt64 sizeInKB = 0;
+        sizeInKB = aFileSize >> 10;
+        sizeInString.AppendNum(sizeInKB); 
+        buf.Set(iStringResourceReader-> ReadResourceString(R_BT_IR_RECEIVING_DATA_SIZE_KB));
+        }
+   else                              // size is unknown or less than 1K
+        {
+        buf.Set(iStringResourceReader-> ReadResourceString(R_BT_IR_RECEIVING_DATA_NO_SIZE));
+        }
+    
+    
+    TBuf<100> tbuf;
+    tbuf.Zero();
+    tbuf.Append(buf);
+    _LIT(KPrefix,"[");
+    _LIT(Ksuffix,"]");
+    TInt prefixPos = tbuf.Find(KPrefix); 
+    if (prefixPos!= KErrNotFound)
+        {
+        TInt keyLength = 0;
+        TInt suffixPos = tbuf.Find(Ksuffix); 
+        keyLength =(tbuf.Mid(prefixPos)).Length()-(tbuf.Mid(suffixPos)).Length()+1;
+        tbuf.Delete(prefixPos, keyLength);  
+        }
+    _LIT(KString,"%U");
+    
+
+        
+    if ( aFileName.Length() > KMaxDisplayFileName )   
+        {
+        // Filename is too long, 
+        // We make it shorter. Hiding the chars in the middle part of filename.       
+        //
+        TFileName shortname;
+        shortname = aFileName.Mid(0,KMaxDisplayFileName/2);
+        shortname.Append(_L("..."));
+        shortname.Append(aFileName.Mid(aFileName.Length() - KMaxDisplayFileName/2, KMaxDisplayFileName/2));
+        tbuf.Replace(tbuf.Find(KString) , 2, shortname);
+        }
+    else
+        {
+        tbuf.Replace(tbuf.Find(KString) , 2, aFileName);
+        }
+    _LIT(KInt, "%N");
+    if ( sizeInString.Length() > 0 )
+        {
+        tbuf.Replace(tbuf.Find(KInt) , 2, sizeInString);
+        }
+    
+    iProgressDialog->ShowProgressDialogL( iStatus, tbuf, R_AVKON_SOFTKEYS_HIDE_CANCEL__HIDE );
+    SetActive();
+    }
+// ---------------------------------------------------------
+// CGlobalProgressDialog::UpdateProgressDialog
+// Updates the progress dialog
+// ---------------------------------------------------------
+//
+EXPORT_C void CGlobalProgressDialog::UpdateProgressDialog(TInt aValue, TInt aFinalValue)
+   {
+   iProgressDialog->UpdateProgressDialog(aValue, aFinalValue);   
+   }
+
+// ---------------------------------------------------------
+// CGlobalProgressDialog::ProcessFinished
+// Stops the progress dialog
+// ---------------------------------------------------------
+//
+EXPORT_C void CGlobalProgressDialog::ProcessFinished()
+   {
+   iProgressDialog->ProcessFinished();
+   }