launcher/src/enginewrapper.cpp
branchRCL_3
changeset 19 b3cee849fa46
--- /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