--- /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 <xqconversions.h>
+#include <hbinputdialog.h>
+#include <bautils.h>
+#include <shareuidialog.h>
+#include <eikenv.h>
+#include <hbprogressdialog.h>
+#include <hbaction.h>
+#include <QDebug>
+
+#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<TInt>* 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<QVariant> 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<QVariant> 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<HbInputDialog*>(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<TInt>* EngineWrapper::QModelIndexListToCArrayFixL(const QModelIndexList& qlist)
+{
+ CArrayFix<TInt>* pArrayFix = new (ELeave) CArrayFixFlat<TInt>( 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