diff -r e11368ed4880 -r 4f2773374eff creator/src/enginewrapper.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/creator/src/enginewrapper.cpp Fri May 14 15:53:02 2010 +0300 @@ -0,0 +1,329 @@ +/* +* 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 "creator.hrh" // for command ids +#include "notifications.h" +#include "enginewrapper.h" +#include "engine.h" +#include "mainview.h" + + + +// --------------------------------------------------------------------------- + +EngineWrapper::EngineWrapper() +: iEngine(0), iProgressDialog(0) +{ +} + +// --------------------------------------------------------------------------- + +EngineWrapper::~EngineWrapper() +{ + if (iEngine != 0) { + delete iEngine; + } + if (iProgressDialog != 0) { + delete iProgressDialog; + } +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::init() +{ + TRAPD(err, iEngine = CCreatorEngine::NewL(this)); + if(err != KErrNone) { + return false; + } + else { + return true; + } +} + +// --------------------------------------------------------------------------- + +MemoryDetails EngineWrapper::GetMemoryDetails() +{ + TMemoryDetails tMemoryDetails = iEngine->GetMemoryDetails(); + MemoryDetails memoryDetails; + + // Convert TMemoryDetails to MemoryDetails + memoryDetails.mCFree = QString((QChar*)tMemoryDetails.iCFree.Ptr(), tMemoryDetails.iCFree.Length()); + memoryDetails.mDFree = QString((QChar*)tMemoryDetails.iDFree.Ptr(), tMemoryDetails.iDFree.Length()); + memoryDetails.mEFree = QString((QChar*)tMemoryDetails.iEFree.Ptr(), tMemoryDetails.iEFree.Length()); + memoryDetails.mHFree = QString((QChar*)tMemoryDetails.iHFree.Ptr(), tMemoryDetails.iHFree.Length()); + + memoryDetails.mCSize = QString((QChar*)tMemoryDetails.iCSize.Ptr(), tMemoryDetails.iCSize.Length()); + memoryDetails.mDSize = QString((QChar*)tMemoryDetails.iDSize.Ptr(), tMemoryDetails.iDSize.Length()); + memoryDetails.mHSize = QString((QChar*)tMemoryDetails.iHSize.Ptr(), tMemoryDetails.iHSize.Length()); + + if (tMemoryDetails.iENotAvailable == EFalse) { + memoryDetails.mESize = QString((QChar*)tMemoryDetails.iESize.Ptr(), tMemoryDetails.iESize.Length()); + memoryDetails.mENotAvailable = false; + } + else { + memoryDetails.mENotAvailable = true; + } + return memoryDetails; +} + + +// --------------------------------------------------------------------------- + +void EngineWrapper::ShowErrorMessage(const TDesC& aErrorMessage) +{ + QString errorMessage((QChar*)aErrorMessage.Ptr(),aErrorMessage.Length()); + Notifications::error(errorMessage); + +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::ShowNote(const TDesC& aNoteMessage, TInt aResourceId) +{ + QString note((QChar*)aNoteMessage.Ptr(),aNoteMessage.Length()); + Notifications::showGlobalNote(note, HbMessageBox::MessageTypeInformation, HbPopup::ConfirmationNoteTimeout); +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::ShowProgressBar(const TDesC& aPrompt, int aMax) +{ + QString text((QChar*)aPrompt.Ptr(), aPrompt.Length()); + iProgressDialog = Notifications::showProgressBar(text, aMax); + connect(iProgressDialog, SIGNAL(cancelled()), this, SLOT(ProgressDialogCancelled())); +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::IncrementProgressbarValue() +{ + iProgressDialog->setProgressValue(iProgressDialog->progressValue() + 1); +} + +// --------------------------------------------------------------------------- + +void EngineWrapper::CloseProgressbar() +{ + delete iProgressDialog; + iProgressDialog = 0; +} + +// --------------------------------------------------------------------------- + +TBool EngineWrapper::EntriesQueryDialog(TInt& aNumberOfEntries, const TDesC& aPrompt, TBool aAcceptsZero) + { + QString text((QChar*)aPrompt.Ptr(), aPrompt.Length()); + bool err = Notifications::entriesQueryDialog(aNumberOfEntries, text, aAcceptsZero); + return err; + } + +// --------------------------------------------------------------------------- + +TBool EngineWrapper::TimeQueryDialog(TTime aTime, const TDesC& aPrompt) + { + // TTime to QDate + TBuf<20> timeString; + _LIT(KDateString,"%D%M%Y%/0%1%/1%2%/2%3%/3"); + TRAP_IGNORE( aTime.FormatL(timeString, KDateString) ); + QString temp = QString::fromUtf16(timeString.Ptr(), timeString.Length()); + temp.replace(QChar('/'), QChar('-')); + QDate date = QDate::fromString(temp, "dd-MM-yyyy"); + + QString text((QChar*)aPrompt.Ptr(), aPrompt.Length()); + bool err = Notifications::timeQueryDialog(date, text); + return err; + } + +TBool EngineWrapper::YesNoQueryDialog(const TDesC& aPrompt) +{ + QString text((QChar*)aPrompt.Ptr(), aPrompt.Length()); + return Notifications::yesNoQueryDialog(text); +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::ExecuteOptionsMenuCommand(int commandId) +{ + TInt err = KErrNone; + if (commandId == ECmdCreateFromFile) { + TRAP(err, iEngine->RunScriptL()); + } + else if (commandId == ECmdSelectRandomDataFile) { + TFileName filename; + TBool ret = EFalse; + TRAP(err, ret = iEngine->GetRandomDataFilenameL(filename)); + if (err != KErrNone) { + Notifications::error("Error in getting random data."); + return false; + } + if (ret == true) { + TRAP(err, iEngine->GetRandomDataFromFileL(filename)); + } + } + else { + TRAP(err, iEngine->ExecuteOptionsMenuCommandL(commandId)); + } + // error handling + if(err != KErrNone) { + return false; + } + else { + return true; + } +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::PopupListDialog(const TDesC& aPrompt, CDesCArray* aFileNameArray, TInt& aIndex) +{ + QString text((QChar*)aPrompt.Ptr(), aPrompt.Length()); + QStringList itemList; + + for (int i = 0; i < aFileNameArray->Count(); i++) { + itemList.append(QString::fromUtf16( + aFileNameArray->MdcaPoint(i).Ptr(), + aFileNameArray->MdcaPoint(i).Length())); + } + // TODO: HbSelectionDialog handle close & user choice + Notifications::popupListDialog(text, itemList, HbAbstractItemView::SingleSelection); + return false; +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::DirectoryQueryDialog(const TDesC& aPrompt, TFileName& aDirectory) +{ + QString text((QChar*)aPrompt.Ptr(), aPrompt.Length()); + QString directory = QString((QChar*)aDirectory.Ptr(), aDirectory.Length()); + bool ret = Notifications::directoryQueryDialog(text, directory); + if (ret == true) { + aDirectory = TFileName(directory.utf16()); + } + return ret; + +} + + +// --------------------------------------------------------------------------- + +void EngineWrapper::ProgressDialogCancelled() +{ + CloseProgressbar(); + TRAPD(err, iEngine->ProgressDialogCancelledL()); + // error handling + if(err != KErrNone) { + Notifications::error("Error in operation cancel."); + } +} + +// --------------------------------------------------------------------------- + +bool EngineWrapper::ListQueryDialog(const TDesC& aPrompt, TListQueryId aId, TInt& aIndex) +{ + bool ret = false; + QString text((QChar*)aPrompt.Ptr(), aPrompt.Length()); + QStringList itemList; + + switch (aId) { + case R_CONTACT_CREATION_TYPE_QUERY: { + itemList << "Default fields" << "Define..."; + break; + } + case R_GROUP_CREATION_TYPE_QUERY: { + itemList << "Random" << "Define..."; + break; + } + case R_MESSAGE_TYPE_QUERY: { + itemList << "SMS" << "MMS" << "AMS" << "Email" << "Smart Message" << "IR Message" << "BT Message"; + break; + } + case R_FOLDER_TYPE_QUERY: { + itemList << "Inbox" << "Drafts" << "Outbox" << "Sent"; + break; + } + case R_UNREAD_QUERY: { + itemList << "Read" << "New"; + break; + } + case R_ATTACHMENT_MULTI_SELECTION_QUERY: { + Notifications::error("Not supported resource id."); + break; + } + case R_AMS_ATTACHMENT_SINGLE_SELECTION_QUERY: { + itemList << "AMR 20kB"; + break; + } + case R_ATTACHMENT_SINGLE_SELECTION_QUERY: { + itemList << "JPEG 25kB" << "JPEG 300kB" << "JPEG 500kB" << "PNG 15kB" << "GIF 2kB" << "RNG 1kB" + << "MIDI 10kB" << "WAVE 20kB" << "AMR 20kB" << "Excel 15kB" << "Word 20kB" << "PowerPoint 40kB" + << "Text 10kB" << "Text 70kB" << "3GPP 70kB" << "MP3 250kB" << "AAC 100kB" << "RM 95kB"; + break; + } + default: { + Notifications::error("Error in resource id."); + return ret; + } + } + // TODO: HbSelectionDialog handle close & user choice + Notifications::popupListDialog(text, itemList, HbAbstractItemView::SingleSelection); + return false; + +} + +bool EngineWrapper::ListQueryDialog(const TDesC& aPrompt, TListQueryId aId, CArrayFixFlat* aIndexes) +{ + bool ret = false; + QString text((QChar*)aPrompt.Ptr(), aPrompt.Length()); + QStringList itemList; + QList indexes; + if (aId == R_ATTACHMENT_MULTI_SELECTION_QUERY) { + itemList << "None" << "JPEG 25kB" << "JPEG 300kB" << "JPEG 500kB" << "PNG 15kB" << "GIF 2kB" << "RNG 1kB" + << "MIDI 10kB" << "WAVE 20kB" << "AMR 20kB" << "Excel 15kB" << "Word 20kB" << "PowerPoint 40kB" + << "Text 10kB" << "Text 70kB" << "3GPP 70kB" << "MP3 250kB" << "AAC 100kB" << "RM 95kB"; + + //ret = Notifications::popupListDialog(text, itemList, indexes); + // TODO: HbSelectionDialog handle close & user choice + Notifications::popupListDialog(text, itemList, HbAbstractItemView::MultiSelection); + + if (ret == true) { + aIndexes->Reset(); + for (int i = 0; i < indexes.count(); i++) { + aIndexes->AppendL(indexes.at(i)); + } + } + } + return ret; +} + +void EngineWrapper::CloseCreatorApp() +{ + MainView::closeApp(); +}