diff -r 48060abbbeaf -r b3cee849fa46 launcher/src/enginewrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/launcher/src/enginewrapper.cpp Tue Aug 31 15:15:20 2010 +0300 @@ -0,0 +1,355 @@ +/* +* Copyright (c) 2010 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 +#include +#include +#include +#include +#include +#include +#include + +#include "launchermainwindow.h" +#include "notifications.h" +#include "enginewrapper.h" + +// --------------------------------------------------------------------------- + +EngineWrapper::EngineWrapper(LauncherMainWindow* mainWindow) +: mEngine(0), + mMainWindow(mainWindow), + mProgressDialog(0), + mWaitDialog(0) +{ +} + +// --------------------------------------------------------------------------- + +EngineWrapper::~EngineWrapper() +{ + if (mEngine != NULL) { + delete mEngine; + mEngine = NULL; + } + if (mProgressDialog != NULL) { + delete mProgressDialog; + mProgressDialog = NULL; + } + if (mWaitDialog != NULL) { + delete mWaitDialog; + mWaitDialog = NULL; + } +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::init() +{ + + // construct engine + TRAPD(error, mEngine = CLauncherEngine::NewL(this)); + if (error != KErrNone) { + return false; + } + + return true; + +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::listOfAllApps(QStringList &allAppsQStringList){ + + // Get application CDesCArray list from engine + CDesCArray* allAppsCDescArray = 0; + TRAPD(error, allAppsCDescArray = mEngine->ListOfAllAppsL()); + if(error != KErrNone) { + return false; + } + + //convert CDesCArray to QStringList + for (int i = 0; i < allAppsCDescArray->Count(); i++) { + allAppsQStringList.append(QString::fromUtf16( + allAppsCDescArray->MdcaPoint(i).Ptr(), + allAppsCDescArray->MdcaPoint(i).Length())); + } + return true; +} + +// --------------------------------------------------------------------------- +bool EngineWrapper::startAppLaunching(const QModelIndexList &qList, bool autoClose) +{ + + // check if used has not selected any files + if (qList.size() == 0) { + Notifications::showErrorNote("Nothing selected"); + return false; + } + + bool retval(true); + CArrayFix* pArrayFix = NULL; + try{ + // Create CArrayFix for application numbers that are launched and Qlist into CArrayFix + QT_TRAP_THROWING( pArrayFix = QModelIndexListToCArrayFixL(qList) ); + + // Start launching applications + QT_TRAP_THROWING(mEngine->StartAppLaunchingL(pArrayFix, autoClose ? ETrue : EFalse)); + } + catch (const std::exception &e){ + qDebug() << "EngineWrapper::startAppLaunching - exception: " << e.what(); + retval = false; + } + + if(pArrayFix) + delete pArrayFix; + + return retval; +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::stopLaunching() +{ + TRAPD(error, mEngine->StopLaunchingL()); + if (error != KErrNone) { + return false; + } + else { + return true; + } +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::sendLog() +{ + ShareUi dialog; + QList fileList; + + if( mEngine->LogFileExists() ) + { + const TDesC& logFilePath = mEngine->LogFilePath(); + fileList.append( QString::fromUtf16( logFilePath.Ptr(), logFilePath.Length() ) ); + } + if( mEngine->BCLogFileExists() ) + { + const TDesC& BCLogFilePath = mEngine->BCLogFilePath(); + fileList.append( QString::fromUtf16( BCLogFilePath.Ptr(), BCLogFilePath.Length() ) ); + } + + if( !fileList.empty()){ + dialog.init(fileList,true); + return true; + } + else{ + return false; + } + +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::deleteLog() +{ + // if log file exists delete it. + if (mEngine->LogFileExists()) { + if (mEngine->DeleteLogFile() != KErrNone) { + return false; + } + } + + //if BC log file exists, delete it. + if (mEngine->BCLogFileExists()) { + if (mEngine->DeleteBCLogFile() != KErrNone) { + return false; + } + } + + return true; + +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::sendListOfDlls() +{ + const TDesC& systemDllsFilePath = mEngine->SystemDllsFilePath(); + + if ( BaflUtils::FileExists( CEikonEnv::Static()->FsSession(), systemDllsFilePath) ){ + ShareUi dialog; + QList fileList; + fileList.append( QString::fromUtf16( systemDllsFilePath.Ptr(), systemDllsFilePath.Length() ) ); + dialog.init(fileList,true); + return true; + } + else{ + Notifications::showErrorNote("DLL list does not exist"); + return false; + } +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::doCompareDlls(HbAction* action) + { + HbInputDialog *dlg = static_cast(sender()); + if( action && !action->text().compare("ok", Qt::CaseInsensitive) ) + { + TFileName fileName( dlg->value().toString().utf16() ); + TRAPD(error, mEngine->AnalyseDLLsL( fileName ) ); + if( error != KErrNone ) + { + HideWaitDialog(); + HideProgressBar(); + Notifications::showErrorNote( QString("Error in analyse: %1").arg( error ) ); + } + } + } + +// --------------------------------------------------------------------------- + +void EngineWrapper::compareDlls() +{ + const TDesC& requiredDllsFileName = mEngine->RequiredDllsFilePath(); + QString fileName = QString::fromUtf16( requiredDllsFileName.Ptr(), requiredDllsFileName.Length() ); + HbInputDialog::getText( "Select input file for BC analysis:", this, SLOT(doCompareDlls(HbAction*)), fileName ); +} + +// --------------------------------------------------------------------------- +void EngineWrapper::ShowProgressBar(const TDesC& descText, TInt minimum, TInt maximum) +{ + QString qStringText = XQConversions::s60DescToQString(descText); + + if(mProgressDialog){ + delete mProgressDialog; + mProgressDialog = NULL; + } + mProgressDialog = new HbProgressDialog( HbProgressDialog::ProgressDialog ); + + if( maximum > 0 ) + mProgressDialog->setRange(minimum, maximum); + //iProgressDialog->setAutoClose(true); + mProgressDialog->setText(qStringText); + connect(mProgressDialog, SIGNAL(cancelled()), this, SLOT(CancelDllBCanalysis())); + mProgressDialog->show(); +} + +// --------------------------------------------------------------------------- +void EngineWrapper::SetProgressBarValue(TInt value) +{ + if (mProgressDialog && value > 0 ){ + mProgressDialog->setProgressValue(value); + } +} + +// --------------------------------------------------------------------------- +void EngineWrapper::HideProgressBar() +{ + if (mProgressDialog != NULL) { + disconnect(mProgressDialog, SIGNAL(cancelled), this, SLOT(CancelDllBCanalysis())); + delete mProgressDialog; + mProgressDialog = NULL; + } +} + +// --------------------------------------------------------------------------- +void EngineWrapper::CancelDllBCanalysis() +{ + mEngine->CancelBCAnalysis(); +} + +// --------------------------------------------------------------------------- +void EngineWrapper::ShowWaitDialog(const TDesC& descText) +{ + QString qStringText = XQConversions::s60DescToQString(descText); + + if(mWaitDialog){ + delete mWaitDialog; + mWaitDialog = NULL; + } + mWaitDialog = Notifications::showWaitDialog(qStringText); +} + +// --------------------------------------------------------------------------- +void EngineWrapper::HideWaitDialog() +{ + if (mWaitDialog != NULL) { + delete mWaitDialog; + mWaitDialog = NULL; + } +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::setSkipHiddenAndEmbedOnly(bool skip) +{ + if(skip) { + mEngine->SetSkipHiddenAndEmbedOnly(ETrue); + } + else { + mEngine->SetSkipHiddenAndEmbedOnly(EFalse); + } +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::ChangeFocusToOutputView() +{ + mMainWindow->openOutputView(); +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::PrintText(const TDesC& descText) +{ + + // Convert the descriptor to QString + QString qStringText = XQConversions::s60DescToQString(descText); + mMainWindow->printText(qStringText); +} + +// --------------------------------------------------------------------------- + +CArrayFix* EngineWrapper::QModelIndexListToCArrayFixL(const QModelIndexList& qlist) +{ + CArrayFix* pArrayFix = new (ELeave) CArrayFixFlat( qlist.size() ); + CleanupStack::PushL(pArrayFix); + for (int j = 0; j < qlist.size(); j++) { + pArrayFix->AppendL(qlist.at(j).row()); + } + CleanupStack::Pop(pArrayFix); + return pArrayFix; +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::ShowErrorMessage(const TDesC& descText) +{ + QString qStringText = XQConversions::s60DescToQString(descText); + Notifications::showErrorNote(qStringText); +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::ShowInfoMessage(const TDesC& descText) +{ + QString qStringText = XQConversions::s60DescToQString(descText); + Notifications::showInformationNote(qStringText); +} + +// End of File