diff -r 4096754ee773 -r 52a167391590 localconnectivityservice/obexserviceman/utils/src/obexutilsglobalprogressdialog.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localconnectivityservice/obexserviceman/utils/src/obexutilsglobalprogressdialog.cpp Wed Sep 01 12:20:40 2010 +0100 @@ -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 +#include "obexutilsglobalprogressdialog.h" +#include "obexutilsuilayer.h" +#include +#include +#include +#include +#include +#include // Compiled resource ids +#include + +#include // Localisation stringloader +#include + +#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(); + }