--- a/creator/creator.pro Tue Jun 01 14:40:54 2010 +0300
+++ b/creator/creator.pro Fri Jun 11 17:49:08 2010 +0300
@@ -17,7 +17,7 @@
src/notifications.cpp
symbian: {
-
+ INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
HEADERS += engine/inc/creator.hrh \
engine/inc/creator_accesspoint.h \
engine/inc/creator_browser.h \
--- a/creator/engine/src/creator_message.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/creator/engine/src/creator_message.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -24,6 +24,7 @@
#include "creator_contactsetcache.h"
#include <apgcli.h>
#include <MuiuServiceUtilities.h>
+#include <utf.h>
#include <mmf/common/mmfcontrollerpluginresolver.h> // for CleanupResetAndDestroyPushL
@@ -652,8 +653,8 @@
waiter->StartAndWait();
CleanupStack::PopAndDestroy(waiter);
- HBufC8* tempBuf = HBufC8::NewLC( parameters.iMessageBodyText->Des().Length() );
- tempBuf->Des().Copy( parameters.iMessageBodyText->Des() );
+ HBufC8* tempBuf = CnvUtfConverter::ConvertFromUnicodeToUtf8L( parameters.iMessageBodyText->Des() );
+ CleanupStack::PushL(tempBuf);
textFile.Write( tempBuf->Des() );
textFile.Close();
CleanupStack::PopAndDestroy(); //tempBuf
--- a/creator/engine/src/creator_phonebook.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/creator/engine/src/creator_phonebook.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -1007,7 +1007,10 @@
//QPixmap avatarPix(avatarFile);
- contactAvatar.setAvatar(avatarFile);
+ QUrl imageUrl;
+ imageUrl.setUrl(avatarFile);
+ contactAvatar.setImageUrl(imageUrl);
+ //contactAvatar.setAvatar(avatarFile); //deprecated
//contactAvatar.setPixmap(avatarPix);
return contactAvatar;
--- a/creator/inc/engine.h Tue Jun 01 14:40:54 2010 +0300
+++ b/creator/inc/engine.h Fri Jun 11 17:49:08 2010 +0300
@@ -22,7 +22,7 @@
// INCLUDES
#include <e32std.h>
#include <e32base.h>
-#include <f32file.h>
+#include <e32hal.h>
#include <s32file.h>
#include <s32mem.h>
#include <w32std.h>
--- a/creator/src/notifications.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/creator/src/notifications.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -54,7 +54,7 @@
void Notifications::about()
{
showMessageBox(HbMessageBox::MessageTypeInformation,
- "Version 6.0.0 - April 23rd 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.",
+ "Version 6.0.1 - June 4th 2010. Copyright © 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. Licensed under Eclipse Public License v1.0.",
"About Creator",
HbPopup::NoTimeout
);
--- a/filebrowser/engine/FBFileUtils.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/filebrowser/engine/FBFileUtils.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -25,6 +25,7 @@
#include <textresolver.h>
#include <eikprogi.h>
#include <f32file.h>
+#include <e32svr.h>
#include <eikfutil.h>
#include <apparc.h>
#include <apaid.h>
@@ -1396,8 +1397,9 @@
// update view
RefreshViewL();
- if ( iEngine->Settings().iRememberFolderSelection &&
- iEngine->FileListContainer() && iPrevFolderIndex > KErrNotFound )
+ if (iEngine->Settings().iRememberFolderSelection
+ //&& iEngine->FileListContainer()
+ && iPrevFolderIndex > KErrNotFound )
{
// TInt visibleItems = iEngine->FileListContainer()->ListBox()->Rect().Height() /
--- a/filebrowser/engine/engine.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/filebrowser/engine/engine.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -31,14 +31,6 @@
#include <apaid.h>
#include <s32file.h>
-// hash key selection related includes
-#ifndef __SERIES60_30__
- #include <centralrepository.h>
- #include <AknFepInternalCRKeys.h>
- #include <AvkonInternalCRKeys.h>
- #include <e32property.h>
-#endif
-
// CONSTANTS
// UID of the application
const TUid KUidFileBrowser = { 0x102828D6 };
@@ -90,9 +82,6 @@
TRAP_IGNORE( LoadSettingsL() );
iFileUtils = CFileBrowserFileUtils::NewL(this);
-
- // get hash key selection value
- GetHashKeySelectionStatus();
}
// ---------------------------------------------------------------------------
@@ -101,13 +90,6 @@
{
}
-// --------------------------------------------------------------------------------------------
-
-//void CEngine::SetFileListContainer(CFileBrowserFileListContainer* aFileListContainer)
-// {
-// iFileListContainer = aFileListContainer;
-// }
-
// ---------------------------------------------------------------------------
void CEngine::LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TInt& aValue)
@@ -276,39 +258,6 @@
// --------------------------------------------------------------------------------------------
-void CEngine::GetHashKeySelectionStatus()
- {
- TBool hashKeySelectionInUse(EFalse);
-
-#ifndef __SERIES60_30__
-
- // get hash key selection value
- TRAP_IGNORE(
- CRepository* repository = CRepository::NewLC(KCRUidAknFep);
- repository->Get(KAknFepHashKeySelection, hashKeySelectionInUse);
- CleanupStack::PopAndDestroy();
- );
-
- // even if hash key selection is in use, ignore the value in qwerty mode
- if (hashKeySelectionInUse)
- {
- TBool qwertyMode(EFalse);
- RProperty qwertyModeStatusProperty;
- qwertyModeStatusProperty.Attach(KCRUidAvkon, KAknQwertyInputModeActive);
- qwertyModeStatusProperty.Get(qwertyMode);
- qwertyModeStatusProperty.Close();
-
- if (qwertyMode)
- hashKeySelectionInUse = EFalse;
- }
-
-#endif
-
- iIsHashKeySelectionInUse = hashKeySelectionInUse;
- }
-
-// --------------------------------------------------------------------------------------------
-
TInt CEngine::LaunchSettingsDialogL()
{
TInt retValue = KErrNone;
--- a/filebrowser/engine/engine.h Tue Jun 01 14:40:54 2010 +0300
+++ b/filebrowser/engine/engine.h Fri Jun 11 17:49:08 2010 +0300
@@ -178,7 +178,6 @@
CEngine();
void ConstructL(MFileBrowserUI *aFileBrowserUI);
void LoadSettingsL();
- void GetHashKeySelectionStatus();
void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TInt& aValue);
void LoadDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, TDes& aValue);
void SaveDFSValueL(CDictionaryFileStore* aDicFS, const TUid& aUid, const TInt& aValue);
@@ -188,7 +187,6 @@
void ActivateEngineL();
void DeActivateEngineL();
void SaveSettingsL(TBool aNotifyModules=ETrue);
-// void SetFileListContainer(CFileBrowserFileListContainer* aFileListContainer);
TInt LaunchSettingsDialogL();
inline TFileBrowserSettings& Settings() { return iSettings; }
inline CEikonEnv* EikonEnv() { return iEnv; }
@@ -196,13 +194,10 @@
inline CFileBrowserScreenCapture* ScreenCapture() { return iScreenCapture; }
inline CFileBrowserFileUtils* FileUtils() { return iFileUtils; }
inline MFileBrowserUI* FileBrowserUI() { return iFileBrowserUI; }
- inline CFileBrowserFileListContainer* FileListContainer() { return iFileListContainer; }
- inline TBool IsHashKeySelectionInUse() { return iIsHashKeySelectionInUse; }
void OpenWithApparcL(TFileName aFileName);
void OpenWithDocHandlerL(TFileName aFileName, TBool aEmbed);
// TInt QueryCurrentItemIndex();
-// CArrayFix<TInt> *GetSelectedIndices();
TSearchAttributes GetSearchAttributes();
void ChangeAttributes(TSearchAttributes attributes);
TSearchResults SearchResults();
@@ -211,7 +206,6 @@
private:
MFileBrowserUI *iFileBrowserUI;
- CFileBrowserFileListContainer *iFileListContainer;
CFileBrowserScreenCapture *iScreenCapture;
CFileBrowserFileUtils *iFileUtils;
CEikonEnv* iEnv;
--- a/htiui/HtiAdminQt/mainview.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/HtiAdminQt/mainview.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -23,7 +23,7 @@
#include <hblabel.h>
#include <hbinputdialog.h>
#include <qgraphicslinearlayout.h>
-//#include <HbListDialog.h>
+#include <hbselectiondialog.h>
#include <hbmessagebox.h>
@@ -260,200 +260,231 @@
mEngineWrapper.stopHti();
}
+
// ---------------------------------------------------------------------------
void MainView::enableComm()
{
//Get current selection
-// QString currentComm;
-// mEngineWrapper.getSelectedComm(currentComm);
-// int curSelection = mPluginList.indexOf(currentComm, 0);
-//
-// QStringList selection;
-// bool ok = false;
-// selection = HbListDialog::getStringItems("Select Comm", mPluginList, curSelection, &ok, HbAbstractItemView::SingleSelection);
-//
-// if(ok){
-// if(selection[0] == QString("Bt serial comm")){
-// enableBTComm();
-// }
-// else if(selection[0] == QString("IP comm")){
-// enableIPComm();
-// }
-// else if(selection[0] == QString("SERIAL comm")){
-// enableSerialComm();
-// }
-// else{
-// //All other comm plugins
-// mEngineWrapper.enableOtherComm(selection[0]);
-// }
-// }
+ QString currentComm;
+ mEngineWrapper.getSelectedComm(currentComm);
+ int curSelection = mPluginList.indexOf(currentComm, 0);
+ openListDialog(mPluginList, curSelection, QString("Select Comm"), this, SLOT(doSelectComm(HbAction*)));
}
+void MainView::doSelectComm(HbAction* action)
+{
+ HbSelectionDialog *dlg = static_cast<HbSelectionDialog*>(sender());
+ if(dlg && dlg->selectedModelIndexes().count() &&
+ (!action || action == dlg->actions().at(0)))
+ {
+ int selectionIndex = dlg->selectedModelIndexes().at(0).row();
+
+ if (mPluginList[selectionIndex] == QString("Bt serial comm"))
+ {
+ enableBTComm();
+ }
+ else if (mPluginList[selectionIndex] == QString("IP comm"))
+ {
+ enableIPComm();
+ }
+ else if (mPluginList[selectionIndex] == QString("SERIAL comm"))
+ {
+ enableSerialComm();
+ }
+ else
+ {
+ //All other comm plugins
+ mEngineWrapper.enableOtherComm(mPluginList[selectionIndex]);
+ }
+ }
+}
// ---------------------------------------------------------------------------
void MainView::enableSerialComm()
{
-// bool ok = false;
-// QString str = HbInputDialog::getText(
-// "Set Comm Port number ",
-// "",
-// &ok);
-//
-// if(ok){
-// mEngineWrapper.enableSerial(str);
-// }
+ QString heading = QString("Set Comm Port number");
+ HbInputDialog::getInteger(heading, this, SLOT(doEnableSerialComm(HbAction*)), 0, scene());
}
-
+void MainView::doEnableSerialComm(HbAction* action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (action == dlg->actions().at(0))
+ {
+ QString strPortNumber = dlg->value().toString();
+ mEngineWrapper.enableSerial(strPortNumber);
+ }
+}
// ---------------------------------------------------------------------------
void MainView::enableIPComm()
{
// Get IAPs list
-// QStringList iapsList;
-// mEngineWrapper.listIAPs(iapsList);
-// if(iapsList.count() == 0)
-// {
-// HbMessageBox msg("No IAPs for selection!", HbMessageBox::MessageTypeWarning);
-// msg.exec();
-// return;
-// }
-//
-// // Get current selection
-// QString curIapName;
-// QString param = "IAPName";
-// mEngineWrapper.getIPCfgParam(param, curIapName);
-// int curSelction = iapsList.indexOf(curIapName, 0);
-//
-// QString iap;
-// QStringList selection;
-// bool ok = false;
-// selection = HbListDialog::getStringItems("Select IAP:", iapsList, curSelction, &ok, HbAbstractItemView::SingleSelection);
-//
-// if(ok)
-// {
-// iap = selection[0];
-// }
-// else
-// {
-// return;
-// }
-//
-// QStringList srcList;
-// srcList <<"Listen" <<"Connect";
-//
-// selection = HbListDialog::getStringItems("Select IP Comm", srcList, 0, &ok, HbAbstractItemView::SingleSelection);
-//
-// if(ok){
-// if(selection[0] == srcList[0]){
-// QString port = HbInputDialog::getText(
-// "Local port",
-// "",
-// &ok);
-//
-// if(ok){
-// mEngineWrapper.ipListen(port, iap);
-// }
-//
-// }
-// else{
-// QString host = HbInputDialog::getText(
-// "Remote Host",
-// "",
-// &ok);
-//
-// if(ok){
-// QString port = HbInputDialog::getText(
-// "Remote port",
-// "",
-// &ok);
-//
-// if(ok){
-// mEngineWrapper.ipConnect(host, port, iap);
-// }
-// }
-// }
-//
-// }
+ QStringList iapsList;
+ mEngineWrapper.listIAPs(iapsList);
+ if(iapsList.count() == 0)
+ {
+ HbMessageBox::warning(QString("No IAPs for selection!"));
+ return;
+ }
+
+ // Get current selection
+ QString curIapName;
+ QString param = "IAPName";
+ mEngineWrapper.getIPCfgParam(param, curIapName);
+ int curSelection = iapsList.indexOf(curIapName, 0);
+
+ openListDialog(iapsList, curSelection, QString("Select IAP:"), this, SLOT(doSelectIAP(HbAction*)));
+}
+
+void MainView::doSelectIAP(HbAction* action)
+{
+ HbSelectionDialog *dlg = static_cast<HbSelectionDialog*>(sender());
+ if(dlg && dlg->selectedModelIndexes().count() &&
+ (!action || action == dlg->actions().at(0)))
+ {
+ int selectionIndex = dlg->selectedModelIndexes().at(0).row();
+ mIapSelection = dlg->stringItems()[selectionIndex];
+
+ QStringList items;
+ items <<"Listen" <<"Connect";
+ openListDialog(items, 0, QString("Select IP Comm"), this, SLOT(doSelectIpComm(HbAction*)));
+ }
+}
+
+void MainView::doSelectIpComm(HbAction* action)
+{
+ HbSelectionDialog *dlg = static_cast<HbSelectionDialog*>(sender());
+ if(dlg && dlg->selectedModelIndexes().count() &&
+ (!action || action == dlg->actions().at(0)))
+ {
+ int selectionIndex = dlg->selectedModelIndexes().at(0).row();
+ if(selectionIndex == 0) //Listen
+ {
+ HbInputDialog::getInteger(QString("Local port"), this, SLOT(doListenOnPort(HbAction*)), 0, scene());
+ }
+ else //Connect
+ {
+ openIPAddressDialog(QString("Remote Host"), this, SLOT(doConnectRemoteHost(HbAction*)));
+ }
+ }
+}
+
+void MainView::doListenOnPort(HbAction* action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (action == dlg->actions().at(0))
+ {
+ QString port = dlg->value().toString();
+ mEngineWrapper.ipListen(port, mIapSelection);
+ }
+}
+
+void MainView::doConnectRemoteHost(HbAction* action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (action == dlg->actions().at(0))
+ {
+ QString host = dlg->value(0).toString();
+ QString port = dlg->value(1).toString();
+ mEngineWrapper.ipConnect(host, port, mIapSelection);
+ }
}
// ---------------------------------------------------------------------------
void MainView::enableBTComm()
{
-// QStringList srcList;
-// QStringList selection;
-//
-// srcList <<"BT address" <<"BT name" <<"Search when starting" ;
-//
-// bool ok = false;
-// selection = HbListDialog::getStringItems("", srcList, 0, &ok, HbAbstractItemView::SingleSelection);
-//
-// if(ok){
-// if(selection[0] == srcList[0]){
-// QString address = HbInputDialog::getText(
-// "BT address",
-// "",
-// &ok);
-//
-// if(ok){
-// mEngineWrapper.enableBtByAddress(address);
-// }
-// }
-// else if(selection[0] == srcList[1]){
-// QString name = HbInputDialog::getText(
-// "BT name",
-// "",
-// &ok);
-//
-// if(ok){
-// mEngineWrapper.enableBtByName(name);
-// }
-// }
-// else if(selection[0] == srcList[2]){
-// mEngineWrapper.btSearch();
-// }
-// }
+ QStringList items;
+ items <<"BT address" <<"BT name" <<"Search when starting" ;
+ openListDialog(items, 0, QString("Bluetooth Comm"), this, SLOT(doSelectBTComm(HbAction*)));
}
+void MainView::doSelectBTComm(HbAction* action)
+{
+ HbSelectionDialog *dlg = static_cast<HbSelectionDialog*>(sender());
+ if(dlg && dlg->selectedModelIndexes().count() &&
+ (!action || action == dlg->actions().at(0)))
+ {
+ int selectionIndex = dlg->selectedModelIndexes().at(0).row();
+ if(selectionIndex == 0)
+ {
+ HbInputDialog::getText(QString("BT address"), this, SLOT(doEnableByBTAddress(HbAction*)));
+ }
+ else if(selectionIndex == 1)
+ {
+ HbInputDialog::getText(QString("BT name"), this, SLOT(doEnableByBTName(HbAction*)));
+ }
+ else if(selectionIndex == 2)
+ {
+ mEngineWrapper.btSearch();
+ }
+ }
+}
+
+void MainView::doEnableByBTAddress(HbAction* action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (action == dlg->actions().at(0))
+ {
+ QString address = dlg->value().toString();
+ mEngineWrapper.enableBtByAddress(address);
+ }
+}
+void MainView::doEnableByBTName(HbAction* action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (action == dlg->actions().at(0))
+ {
+ QString name = dlg->value().toString();
+ mEngineWrapper.enableBtByName(name);
+ }
+}
// ---------------------------------------------------------------------------
void MainView::setPriority()
{
// Get current priority
-// bool ok = false;
-// QString curPriority;
-// QString param = "Priority";
-// mEngineWrapper.getHtiCfgParam(param, curPriority);
-// int curSelection = curPriority.toInt(&ok);
-// if(ok){
-// curSelection--;
-// }
-// else{
-// curSelection = 2;
-// }
-//
-// QStringList srcList;
-// QStringList selection;
-//
-// srcList <<"Backgroung" <<"Foregound" <<"High" << "Absolute High";
-//
-//
-// selection = HbListDialog::getStringItems("Select Hti Priority", srcList, curSelection, &ok, HbAbstractItemView::SingleSelection);
-//
-// if(ok){
-// if(selection[0] == srcList[0]){
-// mEngineWrapper.setPriorityBackground();
-// }
-// else if(selection[0] == srcList[1]){
-// mEngineWrapper.setPriorityForeground();
-// }
-// else if(selection[0] == srcList[2]){
-// mEngineWrapper.setPriorityHigh();
-// }
-// else{
-// mEngineWrapper.setPriorityAbsoluteHigh();
-// }
-// }
+ bool ok = false;
+ QString curPriority;
+ QString param = "Priority";
+ mEngineWrapper.getHtiCfgParam(param, curPriority);
+ int curSelection = curPriority.toInt(&ok);
+ if(ok){
+ curSelection--;
+ }
+ else{
+ curSelection = 2;
+ }
+
+ QStringList items;
+ items <<"Backgroung" <<"Foregound" <<"High" << "Absolute High";
+ openListDialog(items, curSelection, QString("Select Hti Priority"),
+ this, SLOT(doSetPriority(HbAction*)));
}
+void MainView::doSetPriority(HbAction* action)
+{
+ HbSelectionDialog *dlg = static_cast<HbSelectionDialog*>(sender());
+ if(dlg && dlg->selectedModelIndexes().count() &&
+ (!action || action == dlg->actions().at(0)))
+ {
+ int selectionIndex = dlg->selectedModelIndexes().at(0).row();
+ if(selectionIndex == 0)
+ {
+ mEngineWrapper.setPriorityBackground();
+ }
+ else if(selectionIndex == 1)
+ {
+ mEngineWrapper.setPriorityForeground();
+ }
+ else if(selectionIndex == 2)
+ {
+ mEngineWrapper.setPriorityHigh();
+ }
+ else
+ {
+ mEngineWrapper.setPriorityAbsoluteHigh();
+ }
+ }
+}
// ---------------------------------------------------------------------------
void MainView::enableAutoStart()
{
@@ -493,62 +524,203 @@
// ---------------------------------------------------------------------------
void MainView::showParamList()
{
-// QStringList srcList;
-// QStringList selection;
-// QString value;
-// QString name;
-// QString cfgSelection;
-// QString paramSelection;
-// QString cfgHti = "Hti.cfg";
-// QString cfgBtComm ="HtiBtComm.cfg";
-// QString cfgSerialComm = "HtiSerialComm.cfg";
-// QString cfgIPComm = "HtiIPComm.cfg";
-//
-// srcList <<cfgHti <<cfgBtComm <<cfgSerialComm << cfgIPComm;
-//
-// bool ok = false;
-// selection = HbListDialog::getStringItems("Select cfg file to modify", srcList, 0, &ok, HbAbstractItemView::SingleSelection);
-//
-// if(ok){
-// cfgSelection = selection[0];
-// srcList.clear();
-// if(cfgSelection == cfgHti){
-// srcList <<"CommPlugin" <<"MaxMsgSize" <<"MaxQueueSize" <<"MaxHeapSize"<<"Priority"
-// <<"ShowConsole"<<"MaxWaitTime"<<"StartUpDelay"<<"EnableHtiWatchDog"
-// <<"EnableHtiAutoStart"<<"ShowErrorDialogs"<<"ReconnectDelay";
-// }
-// else if(cfgSelection == cfgBtComm){
-// srcList <<"BtDeviceName" <<"BtDeviceName";
-// }
-// else if(cfgSelection == cfgSerialComm){
-// srcList <<"CommPort" <<"DataRate"<<"Parity"<<"DataBits"<<"StopBits"<<"SendDelay"<<"Handshake";
-// }
-// else{
-// srcList <<"IAPName"<<"LocalPort"<<"RemoteHost"<<"RemotePort"<<"ConnectTimeout";
-// }
-//
-// selection = HbListDialog::getStringItems("Select a parameter name in" + cfgSelection, srcList, 0, &ok, HbAbstractItemView::SingleSelection);
-// }
-//
-// if(ok){
-// name = selection[0];
-// value = HbInputDialog::getText("Value for paramater " + name, "", &ok);
-// }
-//
-// if(ok){
-// if(cfgSelection == cfgHti){
-// mEngineWrapper.setHtiCfgParam(name, value);
-// }
-// else if(cfgSelection == cfgBtComm){
-// mEngineWrapper.setBtCfgParam(name, value);
-// }
-// else if(cfgSelection == cfgSerialComm){
-// mEngineWrapper.setSerialCfgParam(name, value);
-// }
-// else{
-// mEngineWrapper.setIPCfgParam(name, value);
-// }
-// }
+ QStringList items;
+ items << "Hti.cfg" << "HtiBtComm.cfg" << "HtiSerialComm.cfg" << "HtiIPComm.cfg";
+ openListDialog(items, 0, QString("Select cfg file to modify"),
+ this, SLOT(doSelectCfgFile(HbAction*)));
+}
+
+void MainView::doSelectCfgFile(HbAction* action)
+{
+ HbSelectionDialog *dlg = static_cast<HbSelectionDialog*>(sender());
+ if(dlg && dlg->selectedModelIndexes().count() &&
+ (!action || action == dlg->actions().at(0)))
+ {
+ int selectionIndex = dlg->selectedModelIndexes().at(0).row();
+ QStringList items;
+ if(selectionIndex == 0)
+ {
+ items <<"CommPlugin" <<"MaxMsgSize" <<"MaxQueueSize" <<"MaxHeapSize"<<"Priority"
+ <<"ShowConsole"<<"MaxWaitTime"<<"StartUpDelay"<<"EnableHtiWatchDog"
+ <<"EnableHtiAutoStart"<<"ShowErrorDialogs"<<"ReconnectDelay";
+ openListDialog(items, 0, QString("Hti.cfg"), this, SLOT(doModifyHtiCfgFile(HbAction*)));
+ }
+ else if(selectionIndex == 1)
+ {
+ items <<"BtDeviceName" <<"BtDeviceName";
+ openListDialog(items, 0, QString("HtiBtComm.cfg"), this, SLOT(doModifyBtCfgFile(HbAction*)));
+ }
+ else if(selectionIndex == 2)
+ {
+ items <<"CommPort" <<"DataRate"<<"Parity"<<"DataBits"<<"StopBits"<<"SendDelay"<<"Handshake";
+ openListDialog(items, 0, QString("HtiSerialComm.cfg"), this, SLOT(doModifySerialCfgFile(HbAction*)));
+ }
+ else
+ {
+ items <<"IAPName"<<"LocalPort"<<"RemoteHost"<<"RemotePort"<<"ConnectTimeout";
+ openListDialog(items, 0, QString("HtiIPComm.cfg"), this, SLOT(doModifyIPCfgFile(HbAction*)));
+ }
+ }
+}
+
+void MainView::doModifyHtiCfgFile(HbAction* action)
+{
+ HbSelectionDialog *dlgSelection = static_cast<HbSelectionDialog*>(sender());
+ if(dlgSelection && dlgSelection->selectedModelIndexes().count() &&
+ (!action || action == dlgSelection->actions().at(0)))
+ {
+ int selectionIndex = dlgSelection->selectedModelIndexes().at(0).row();
+ HbInputDialog* dlgInput = new HbInputDialog();
+ dlgInput->setAttribute(Qt::WA_DeleteOnClose);
+ dlgInput->setPromptText(dlgSelection->stringItems()[selectionIndex]);
+ dlgInput->setInputMode(HbInputDialog::TextInput);
+
+ HbLabel *title = new HbLabel(dlgInput);
+ title->setPlainText(QString("Set parameter value"));
+ dlgInput->setHeadingWidget(title);
+
+ dlgInput->open(this, SLOT(doSetHtiCfgParameter(HbAction*)));
+ }
+}
+
+void MainView::doSetHtiCfgParameter(HbAction* action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (action == dlg->actions().at(0))
+ {
+ QString parameter = dlg->promptText();
+ QString value = dlg->value().toString();
+ mEngineWrapper.setHtiCfgParam(parameter, value);
+ }
+}
+
+void MainView::doModifyBtCfgFile(HbAction* action)
+{
+ HbSelectionDialog *dlgSelection = static_cast<HbSelectionDialog*>(sender());
+ if(dlgSelection && dlgSelection->selectedModelIndexes().count() &&
+ (!action || action == dlgSelection->actions().at(0)))
+ {
+ int selectionIndex = dlgSelection->selectedModelIndexes().at(0).row();
+ HbInputDialog* dlgInput = new HbInputDialog();
+ dlgInput->setAttribute(Qt::WA_DeleteOnClose);
+ dlgInput->setPromptText(dlgSelection->stringItems()[selectionIndex]);
+ dlgInput->setInputMode(HbInputDialog::TextInput);
+
+ HbLabel *title = new HbLabel(dlgInput);
+ title->setPlainText(QString("Set parameter value"));
+ dlgInput->setHeadingWidget(title);
+
+ dlgInput->open(this, SLOT(doSetBtCfgParameter(HbAction*)));
+ }
}
+void MainView::doSetBtCfgParameter(HbAction* action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (action == dlg->actions().at(0))
+ {
+ QString parameter = dlg->promptText();
+ QString value = dlg->value().toString();
+ mEngineWrapper.setBtCfgParam(parameter, value);
+ }
+}
+void MainView::doModifySerialCfgFile(HbAction* action)
+{
+ HbSelectionDialog *dlgSelection = static_cast<HbSelectionDialog*>(sender());
+ if(dlgSelection && dlgSelection->selectedModelIndexes().count() &&
+ (!action || action == dlgSelection->actions().at(0)))
+ {
+ int selectionIndex = dlgSelection->selectedModelIndexes().at(0).row();
+ HbInputDialog* dlgInput = new HbInputDialog();
+ dlgInput->setAttribute(Qt::WA_DeleteOnClose);
+ dlgInput->setPromptText(dlgSelection->stringItems()[selectionIndex]);
+ dlgInput->setInputMode(HbInputDialog::TextInput);
+
+ HbLabel *title = new HbLabel(dlgInput);
+ title->setPlainText(QString("Set parameter value"));
+ dlgInput->setHeadingWidget(title);
+
+ dlgInput->open(this, SLOT(doSetSerialCfgParameter(HbAction*)));
+ }
+}
+
+void MainView::doSetSerialCfgParameter(HbAction* action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (action == dlg->actions().at(0))
+ {
+ QString parameter = dlg->promptText();
+ QString value = dlg->value().toString();
+ mEngineWrapper.setSerialCfgParam(parameter, value);
+ }
+}
+
+void MainView::doModifyIPCfgFile(HbAction* action)
+{
+ HbSelectionDialog *dlgSelection = static_cast<HbSelectionDialog*>(sender());
+ if(dlgSelection && dlgSelection->selectedModelIndexes().count() &&
+ (!action || action == dlgSelection->actions().at(0)))
+ {
+ int selectionIndex = dlgSelection->selectedModelIndexes().at(0).row();
+ HbInputDialog* dlgInput = new HbInputDialog();
+ dlgInput->setAttribute(Qt::WA_DeleteOnClose);
+ dlgInput->setPromptText(dlgSelection->stringItems()[selectionIndex]);
+ dlgInput->setInputMode(HbInputDialog::TextInput);
+
+ HbLabel *title = new HbLabel(dlgInput);
+ title->setPlainText(QString("Set parameter value"));
+ dlgInput->setHeadingWidget(title);
+
+ dlgInput->open(this, SLOT(doSetIPCfgParameter(HbAction*)));
+ }
+}
+
+void MainView::doSetIPCfgParameter(HbAction* action)
+{
+ HbInputDialog *dlg = static_cast<HbInputDialog*>(sender());
+ if (action == dlg->actions().at(0))
+ {
+ QString parameter = dlg->promptText();
+ QString value = dlg->value().toString();
+ mEngineWrapper.setIPCfgParam(parameter, value);
+ }
+}
+
+void MainView::openListDialog(const QStringList& items, const int currentSelection,
+ const QString &titleText, QObject* receiver, const char* member)
+{
+ // Create a list and some simple content for it
+ HbSelectionDialog *dlg = new HbSelectionDialog();
+ dlg->setAttribute(Qt::WA_DeleteOnClose);
+ // Set items to be popup's content
+ dlg->setStringItems(items);
+ dlg->setSelectionMode(HbAbstractItemView::SingleSelection);
+ QList<QVariant> current;
+ current.append(QVariant(currentSelection));
+ dlg->setSelectedItems(current);
+
+ HbLabel *title = new HbLabel(dlg);
+ title->setPlainText(titleText);
+ dlg->setHeadingWidget(title);
+
+ // Launch popup and handle the user response:
+ dlg->open(receiver, member);
+}
+
+void MainView::openIPAddressDialog(const QString &titleText, QObject* receiver, const char* member)
+{
+ HbInputDialog* dlg = new HbInputDialog();
+ dlg->setAttribute(Qt::WA_DeleteOnClose);
+ dlg->setAdditionalRowVisible(true);
+ dlg->setPromptText(QString("IP Address:"), 0);
+ dlg->setInputMode(HbInputDialog::IpInput, 0);
+ dlg->setPromptText(QString("Port:"), 1);
+ dlg->setInputMode(HbInputDialog::IntInput, 1);
+
+ HbLabel *title = new HbLabel(dlg);
+ title->setPlainText(titleText);
+ dlg->setHeadingWidget(title);
+
+ dlg->open(receiver, member);
+}
--- a/htiui/HtiAdminQt/mainview.h Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/HtiAdminQt/mainview.h Fri Jun 11 17:49:08 2010 +0300
@@ -84,8 +84,26 @@
void enableConsole();
void disableConsole();
void showParamList ();
-
+ void doSelectComm(HbAction*);
+ void doEnableSerialComm(HbAction* );
+ void doSelectIAP(HbAction* );
+ void doSelectIpComm(HbAction* );
+ void doListenOnPort(HbAction* );
+ void doConnectRemoteHost(HbAction*);
+ void doSelectBTComm(HbAction*);
+ void doEnableByBTAddress(HbAction*);
+ void doEnableByBTName(HbAction*);
+ void doSetPriority(HbAction*);
+ void doSelectCfgFile(HbAction*);
+ void doModifyHtiCfgFile(HbAction*);
+ void doModifyBtCfgFile(HbAction*);
+ void doModifySerialCfgFile(HbAction*);
+ void doModifyIPCfgFile(HbAction*);
+ void doSetHtiCfgParameter(HbAction*);
+ void doSetBtCfgParameter(HbAction*);
+ void doSetSerialCfgParameter(HbAction*);
+ void doSetIPCfgParameter(HbAction*);
private:
/**
@@ -99,6 +117,10 @@
void createToolbar();
void createTexts();
+
+ void openListDialog(const QStringList& items, const int currentSelection,
+ const QString &titleText, QObject* receiver, const char* member);
+ void openIPAddressDialog(const QString &titleText, QObject* receiver, const char* member);
public:
@@ -130,6 +152,8 @@
HbLabel* mCommDetailsTxt;
QStringList mPluginList;
+
+ QString mIapSelection;
};
--- a/htiui/HtiServicePlugins/HtiAppServicePlugin/group/HtiAppControl.mmp Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/HtiServicePlugins/HtiAppServicePlugin/group/HtiAppControl.mmp Fri Jun 11 17:49:08 2010 +0300
@@ -43,7 +43,12 @@
LIBRARY apparc.lib
LIBRARY apmime.lib
LIBRARY ws32.lib
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
LIBRARY swinstcli.lib
+#else
+LIBRARY sif.lib // USIF
+LIBRARY scrclient.lib // SCR
+#endif
LIBRARY sisregistryclient.lib
LIBRARY javaregistryclient.lib
LIBRARY widgetregistryclient.lib
--- a/htiui/HtiServicePlugins/HtiAppServicePlugin/inc/HtiAppControl.h Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/HtiServicePlugins/HtiAppServicePlugin/inc/HtiAppControl.h Fri Jun 11 17:49:08 2010 +0300
@@ -22,11 +22,17 @@
#define HTIAPPSERVICEPLUGIN_H__
// INCLUDES
+#include "../../../symbian_version.hrh"
+
#include <e32base.h>
#include <apgcli.h>
#include <w32std.h>
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
#include <SWInstDefs.h>
#include <swi/sisregistryentry.h>
+#else
+#include <usif/usifcommon.h>
+#endif
#include <HtiServicePluginInterface.h>
// CONSTANTS
@@ -155,8 +161,14 @@
TInt OpenProcessL( RProcess& aProcess, const TDesC& aMatch );
TInt OpenProcessL( RProcess& aProcess, const TUint32 aProcessId );
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
SwiUI::TPolicy ConvertToPolicy( const TInt8 aValue );
TInt GetPackageUidL( const TDesC& aPackageName, TInt aMimeIndex );
+#else
+ Usif::TSifPolicy ConvertToSifPolicy( const TInt8 aValue );
+ TInt GetComponentIdFromUid(const TInt32 aUid);
+ TInt GetComponentIdFromPackageName(const TDesC& aPackageName);
+#endif
TBool ValidateInstallParams( const TDesC8& aParams, TBool aIsUnicode );
@@ -199,12 +211,14 @@
// possible mimetypes for silent software uninstallation
CDesC8ArrayFlat* iMimeTypes;
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
SwiUI::TInstallOptions iInstOpts;
SwiUI::TInstallOptionsPckg iInstOptsPckg;
SwiUI::TUninstallOptions iUnInstOpts;
SwiUI::TUninstallOptionsPckg iUnInstOptsPckg;
RPointerArray<Swi::CSisRegistryPackage> iAugmentations;
TInt iAugmentationIndex;
+#endif
};
#endif
--- a/htiui/HtiServicePlugins/HtiAppServicePlugin/src/HtiAppControl.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/HtiServicePlugins/HtiAppServicePlugin/src/HtiAppControl.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -17,8 +17,6 @@
// INCLUDE FILES
-#include "../../../symbian_version.hrh"
-
#include <apacmdln.h>
#include <apgtask.h>
#include <apgwgnam.h>
@@ -31,13 +29,27 @@
#include <HtiDispatcherInterface.h>
#include <HtiLogging.h>
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
#include <SWInstApi.h>
#include <swi/sisregistrysession.h>
#include <swi/sisregistrypackage.h>
+#else
+#include <usif/sif/sif.h>
+#include <usif/scr/scr.h> //RSoftwareComponentRegistry
+#endif
#include <javaregistryincludes.h>
#include <WidgetRegistryClient.h>
using namespace Java;
+#if ( SYMBIAN_VERSION_SUPPORT >= SYMBIAN_4 )
+_LIT8( KSisxMimeType, "x-epoc/x-sisx-app" );
+_LIT8( KSisMimeType, "application/vnd.symbian.install" );
+_LIT8( KPipMimeType, "application/x-pip" );
+_LIT8( KJadMIMEType, "text/vnd.sun.j2me.app-descriptor" );
+_LIT8( KJarMIMEType, "application/java-archive" );
+_LIT8( KJavaMIMEType, "application/java");
+_LIT8( KJarxMIMEType, "application/x-java-archive");
+#endif
// CONSTANTS
const static TUid KAppServiceUid = { 0x1020DEC7 }; //This is Uid of AppServiceOS
@@ -57,7 +69,9 @@
_LIT8( KErrDescrFailedInstall, "Failed to install" );
_LIT8( KErrDescrFailedUnInstall, "Failed to uninstall" );
_LIT8( KErrDescrFailedFindPackage, "Failed to find the package" );
-
+#if ( SYMBIAN_VERSION_SUPPORT >= SYMBIAN_4 )
+_LIT8( KErrDescrBadComponentId, "Bad component id");
+#endif
_LIT8( KErrDescrFailedListInstApps, "Failed to list installed apps" );
const static TUint8 KUnicodeMask = 0x01;
@@ -114,7 +128,9 @@
delete iMimeTypes;
}
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
iAugmentations.ResetAndDestroy();
+#endif
HTI_LOG_FUNC_OUT( "~CHtiAppControl" );
}
@@ -124,6 +140,7 @@
{
HTI_LOG_FUNC_IN( "CHtiAppControl::ConstructL" );
iMimeTypes = new (ELeave) CDesC8ArrayFlat( 8 );
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
iMimeTypes->AppendL( SwiUI::KSisxMimeType() );
iMimeTypes->AppendL( SwiUI::KSisMimeType() );
iMimeTypes->AppendL( SwiUI::KPipMimeType() );
@@ -131,8 +148,19 @@
iMimeTypes->AppendL( SwiUI::KJarMIMEType() );
iMimeTypes->AppendL( SwiUI::KJavaMIMEType() );
iMimeTypes->AppendL( SwiUI::KJarxMIMEType() );
+#else
+ iMimeTypes->AppendL( KSisxMimeType() );
+ iMimeTypes->AppendL( KSisMimeType() );
+ iMimeTypes->AppendL( KPipMimeType() );
+ iMimeTypes->AppendL( KJadMIMEType() );
+ iMimeTypes->AppendL( KJarMIMEType() );
+ iMimeTypes->AppendL( KJavaMIMEType() );
+ iMimeTypes->AppendL( KJarxMIMEType() );
+#endif
iMimeTypes->AppendL( KWidgetMime() ); // from widgetregistryconstants.h
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
iAugmentationIndex = 0;
+#endif
TInt err = iAppServer.Connect();
if ( err == KErrNone )
@@ -566,8 +594,10 @@
HTI_LOG_FORMAT( "Unicode flag: %d", unicode );
TFileName path;
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
TBuf<SwiUI::KSWInstMaxPasswordLength> login;
TBuf<SwiUI::KSWInstMaxPasswordLength> password;
+#endif
switch ( aMessage[0] )
{
@@ -584,6 +614,7 @@
if ( offset >= 0)
{
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
iInstOpts = SwiUI::TInstallOptions();
iInstOpts.iUpgrade = ConvertToPolicy( parameters[offset] ); offset++;
@@ -670,6 +701,156 @@
launcher.Close();
SendMessageL( EOk );
+#else
+ HTI_LOG_TEXT( "============RSoftwareInstall::Install=============" );
+ Usif::RSoftwareInstall installer;
+ TInt err = installer.Connect();
+ if(err)
+ {
+ SendErrorMsg( err , KErrDescrFailedConnectSilentInstaller );
+ HTI_LOG_FORMAT("cannot connect to SIF server, err %d", err);
+ User::Leave(err);
+ }
+ CleanupClosePushL(installer);
+ TRequestStatus status;
+ Usif::COpaqueNamedParams *arguments = Usif::COpaqueNamedParams::NewL();
+ CleanupStack::PushL(arguments);
+ Usif::COpaqueNamedParams *results = Usif::COpaqueNamedParams::NewL();
+ CleanupStack::PushL(results);
+
+ arguments->AddIntL(Usif::KSifInParam_InstallSilently, ETrue);
+
+ TInt intValue = ConvertToSifPolicy(parameters[offset]); offset++;
+ if(intValue != Usif::EAllowed)
+ arguments->AddIntL(Usif::KSifInParam_AllowUpgrade, intValue);
+ HTI_LOG_FORMAT( "iUpgrade: %d", intValue );
+ intValue = ConvertToSifPolicy(parameters[offset]); offset++;
+ if(intValue != Usif::EAllowed)
+ arguments->AddIntL(Usif::KSifInParam_InstallOptionalItems, intValue);
+ HTI_LOG_FORMAT( "iOptionalItems: %d", intValue );
+ intValue = ConvertToSifPolicy(parameters[offset]); offset++;
+ if(intValue != Usif::EAllowed)
+ arguments->AddIntL(Usif::KSifInParam_PerformOCSP, intValue);
+ HTI_LOG_FORMAT( "iOCSP: %d", intValue );
+ intValue = ConvertToSifPolicy(parameters[offset]); offset++;
+ if(intValue != Usif::EAllowed)
+ arguments->AddIntL(Usif::KSifInParam_IgnoreOCSPWarnings, intValue);
+ HTI_LOG_FORMAT( "iIgnoreOCSPWarnings: %d", intValue );
+ intValue = ConvertToSifPolicy(parameters[offset]); offset++;
+ if(intValue != Usif::ENotAllowed)
+ arguments->AddIntL(Usif::KSifInParam_AllowUntrusted, intValue);
+ HTI_LOG_FORMAT( "iUntrusted: %d", intValue );
+ intValue = ConvertToSifPolicy(parameters[offset]); offset++;
+ if(intValue != Usif::EAllowed)
+ arguments->AddIntL(Usif::KSifInParam_PackageInfo, intValue);
+ HTI_LOG_FORMAT( "iPackageInfo: %d", intValue );
+ intValue = ConvertToSifPolicy(parameters[offset]); offset++;
+ if(intValue != Usif::EAllowed)
+ arguments->AddIntL(Usif::KSifInParam_GrantCapabilities,intValue);
+ HTI_LOG_FORMAT( "iCapabilities: %d", intValue );
+ intValue = ConvertToSifPolicy(parameters[offset]); offset++;
+ if(intValue != Usif::EAllowed)
+ arguments->AddIntL(Usif::KSifInParam_AllowAppShutdown,intValue);
+ HTI_LOG_FORMAT( "iKillApp: %d", intValue );
+ intValue = ConvertToSifPolicy(parameters[offset]); offset++;
+ if(intValue != Usif::EAllowed)
+ arguments->AddIntL(Usif::KSifInParam_AllowOverwrite,intValue);
+ HTI_LOG_FORMAT( "iOverwrite: %d", intValue );
+ intValue = ConvertToSifPolicy(parameters[offset]); offset++;
+ if(intValue != Usif::EAllowed)
+ arguments->AddIntL(Usif::KSifInParam_AllowDownload, intValue);
+ HTI_LOG_FORMAT( "iDownload: %d", intValue );
+
+ TBuf<32> login;
+ offset = ParseString( parameters, offset, unicode, login );
+ HTI_LOG_FORMAT( "login length: %d", login.Length() );
+ if(login != KNullDesC)
+ {
+ arguments->AddStringL(Usif::KSifInParam_UserName, login);
+ }
+ HTI_LOG_TEXT( "Parsed login:" );
+ HTI_LOG_DES( login )
+
+ TBuf<32> password;
+ offset = ParseString( parameters, offset, unicode, password );
+ HTI_LOG_FORMAT( "password length: %d", password.Length() );
+ if(password != KNullDesC)
+ {
+ arguments->AddStringL(Usif::KSifInParam_Password, password );
+ }
+ HTI_LOG_TEXT( "Parsed password:" );
+ HTI_LOG_DES( password )
+
+ TChar driver = (TChar) parameters[offset]; offset++;
+ if(driver >= 'A' && driver <= 'Z')
+ {
+ intValue = driver - (TChar)'A';
+ arguments->AddIntL(Usif::KSifInParam_Drive, intValue);
+ HTI_LOG_FORMAT( "iDrive: %c", intValue + 'a' );
+ }
+ else if(driver >= 'a' && driver <= 'z')
+ {
+ intValue = driver - (TChar)'a';
+ arguments->AddIntL(Usif::KSifInParam_Drive, intValue);
+ HTI_LOG_FORMAT( "iDrive: %c", intValue + 'a' );
+ }
+
+ TLanguage oldFormatLanuage = (TLanguage)parameters[offset]; offset++;
+
+ TBool usePhoneLang = (TBool)parameters[offset]; offset++;
+ HTI_LOG_FORMAT( "iUsePhoneLang: %d", usePhoneLang );
+
+ intValue = ConvertToSifPolicy( parameters[offset] );offset++;
+ /*if(intValue != Usif::EAllowed)
+ arguments->AddIntL(Usif::KSifInParam_AllowUpgrade, intValue);*/
+ HTI_LOG_FORMAT( "iUpgradeData: %d", intValue );
+
+ HTI_LOG_FORMAT( "parameters length: %d", parameters.Length());
+ HTI_LOG_FORMAT( "next offset: %d", offset);
+
+ if(usePhoneLang == EFalse)
+ {
+ if(parameters.Length() > offset)
+ {
+ TLanguage language = ELangTest;
+ if (parameters.Length() == offset+2)
+ {
+ language = (TLanguage)(parameters[offset] + (parameters[offset+1]<<8));
+ }
+ else if (parameters.Length() == offset+1)
+ {
+ language = (TLanguage)(parameters[offset]);
+ }
+ if ((language > ELangTest) && (language < ELangMaximum))
+ {
+ arguments->AddIntL(Usif::KSifInParam_Languages, language);
+ HTI_LOG_FORMAT( "iLang: %d", language );
+ }
+ }
+ else
+ {
+ arguments->AddIntL(Usif::KSifInParam_Languages, oldFormatLanuage);
+ HTI_LOG_FORMAT( "iLang0: %d", oldFormatLanuage );
+ }
+ }
+
+ installer.Install(path, *arguments, *results, status);
+ User::WaitForRequest(status);
+ HTI_LOG_FORMAT("install status: %d", status.Int());
+ TInt componentId = 0;
+ TBool idExisted = results->GetIntByNameL(Usif::KSifOutParam_ComponentId, componentId);
+ if ( idExisted )
+ {
+ HTI_LOG_FORMAT( "componentId:%d", componentId);
+ }
+ CleanupStack::PopAndDestroy(3);
+ if (status != KErrNone)
+ {
+ SendErrorMsg( status.Int(), KErrDescrFailedInstall );
+ break;
+ }
+ SendMessageL( EOk );
+#endif
}
else
{
@@ -704,11 +885,39 @@
TInt offset = 0;
TInt32 uid = KErrNotFound;
HBufC* packageName = NULL;
+#if ( SYMBIAN_VERSION_SUPPORT >= SYMBIAN_4 )
+ Usif::TComponentId cid = KErrNotFound;
+ HTI_LOG_TEXT( "============RSoftwareInstall::Uninstall=============" );
+ Usif::RSoftwareInstall installer;
+ TInt err = installer.Connect();
+ if(err)
+ {
+ SendErrorMsg( err , KErrDescrFailedConnectSilentInstaller );
+ HTI_LOG_FORMAT("cannot connect to SIF server, err %d", err);
+ User::Leave(err);
+ }
+ CleanupClosePushL(installer);
+ TRequestStatus status;
+ Usif::COpaqueNamedParams *arguments = Usif::COpaqueNamedParams::NewL();
+ CleanupStack::PushL(arguments);
+ Usif::COpaqueNamedParams *results = Usif::COpaqueNamedParams::NewL();
+ CleanupStack::PushL(results);
+#endif
if ( aMessage[0] == EUnInstall )
{
uid = Parse32<TInt32>( parameters );
offset += 4;
HTI_LOG_FORMAT( "Uninstall by uid: %d", uid );
+#if ( SYMBIAN_VERSION_SUPPORT >= SYMBIAN_4 )
+ cid = GetComponentIdFromUid(uid);
+ if ( cid == KErrNotFound )
+ {
+ HTI_LOG_FORMAT( "cid: %d", cid );
+ SendErrorMsg( KErrNotFound, KErrDescrBadComponentId );
+ CleanupStack::PopAndDestroy(3); //results, arguments, installer
+ break;
+ }
+#endif
}
else
{
@@ -716,7 +925,19 @@
TPtr namePtr = packageName->Des();
offset = ParseString( parameters, offset, unicode, namePtr );
HTI_LOG_FORMAT( "Uninstall by name: %S", packageName );
+#if ( SYMBIAN_VERSION_SUPPORT >= SYMBIAN_4 )
+ cid = GetComponentIdFromPackageName(*packageName);
+ CleanupStack::PopAndDestroy(); // packageName
+ if ( cid == KErrNotFound )
+ {
+ HTI_LOG_FORMAT( "cid: %d", cid );
+ SendErrorMsg( KErrNotFound, KErrDescrFailedFindPackage );
+ CleanupStack::PopAndDestroy(3); //results, arguments, installer
+ break;
+ }
+#endif
}
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
iUnInstOpts = SwiUI::TUninstallOptions();
iUnInstOpts.iKillApp = ConvertToPolicy( parameters[offset] );
offset++;
@@ -788,6 +1009,48 @@
}
launcher.Close();
+#else
+
+ TInt intValue = ConvertToSifPolicy( parameters[offset] );
+ offset++;
+ arguments->AddIntL(Usif::KSifInParam_AllowAppShutdown, intValue);
+ HTI_LOG_FORMAT( "iKillApp: %d", intValue );
+ intValue = ConvertToSifPolicy( parameters[offset] );
+ offset++;
+ arguments->AddIntL(Usif::KSifInParam_AllowAppBreakDependency, intValue);
+ HTI_LOG_FORMAT( "iBreakDependency: %d", intValue );
+
+ TInt mimeIndex = parameters[offset];
+ if ( mimeIndex > iMimeTypes->Count() - 1 )
+ {
+ HTI_LOG_FORMAT( "Invalid mime type: %d", mimeIndex );
+ SendErrorMsg( KErrArgument, KErrDescrInvalidCmd );
+ break;
+ }
+
+ HTI_LOG_TEXT( "Uninstall mime type:" );
+ HTI_LOG_DES( (*iMimeTypes)[mimeIndex] );
+
+ HBufC* buf = HBufC::NewLC((*iMimeTypes)[mimeIndex].Length());
+ TPtr ptr = buf->Des();
+ ptr.Copy((*iMimeTypes)[mimeIndex]);
+ arguments->AddStringL(Usif::KSifInParam_MimeType, *buf);
+ CleanupStack::PopAndDestroy(); // buf
+
+ HTI_LOG_FORMAT( "Component ID = %d", cid );
+
+ arguments->AddIntL(Usif::KSifInParam_InstallSilently, ETrue);
+
+ installer.Uninstall(cid, *arguments, *results, status, EFalse);
+ User::WaitForRequest(status);
+ HTI_LOG_FORMAT("uninstall status:%d", status.Int());
+ CleanupStack::PopAndDestroy(3); //results, arguments, installer
+ if (status != KErrNone)
+ {
+ SendErrorMsg(status.Int(), KErrDescrFailedUnInstall);
+ break;
+ }
+#endif
SendMessageL( EOk );
}
break;
@@ -1524,15 +1787,25 @@
KAppServiceUid );
}
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
SwiUI::TPolicy CHtiAppControl::ConvertToPolicy( const TInt8 aValue )
{
if ( aValue == 0 ) return SwiUI::EPolicyNotAllowed;
return SwiUI::EPolicyAllowed;
}
+#else
+Usif::TSifPolicy CHtiAppControl::ConvertToSifPolicy( const TInt8 aValue )
+ {
+ if ( aValue == 0 ) return Usif::ENotAllowed;
+
+ return Usif::EAllowed;
+ }
+#endif
TBool CHtiAppControl::ValidateInstallParams( const TDesC8& aParams, TBool aIsUnicode )
{
+ HTI_LOG_FORMAT( "ValidateInstallParams => length: %d", aParams.Length() );
if ( aParams.Length() > 0 )
{
TInt offset = 0;
@@ -1589,6 +1862,7 @@
return EFalse;
}
+#if ( SYMBIAN_VERSION_SUPPORT < SYMBIAN_4 )
TInt CHtiAppControl::GetPackageUidL( const TDesC& aPackageName,
TInt aMimeIndex )
{
@@ -1733,6 +2007,88 @@
return KErrNone; // never returns from here
}
-
+#else
+TInt CHtiAppControl::GetComponentIdFromUid(const TInt32 aUid)
+ {
+ TInt cid = KErrNotFound;
+ Usif::RSoftwareComponentRegistry registry;
+ User::LeaveIfError(registry.Connect());
+ CleanupClosePushL(registry);
+ RArray<TUid> uidList;
+ CleanupClosePushL(uidList);
+ RArray<Usif::TComponentId> componentIdList;
+ CleanupClosePushL(componentIdList);
+ registry.GetComponentIdsL(componentIdList);
+ for(TInt i = 0; i < componentIdList.Count(); i++)
+ {
+ Usif::TComponentId compId = componentIdList[i];
+ Usif::CComponentEntry *compEntry = Usif::CComponentEntry::NewLC();
+ if(registry.GetComponentL(compId, *compEntry))
+ {
+ /*if(compEntry->IsRemovable() &&
+ compEntry->SoftwareType() == Usif::KSoftwareTypeNative)*/
+ if(compEntry->IsRemovable())
+ {
+ _LIT(KCompUid, "CompUid");
+ Usif::CPropertyEntry *property =
+ registry.GetComponentPropertyL(compId, KCompUid);
+ CleanupStack::PushL(property);
+ Usif::CIntPropertyEntry* intProperty =
+ dynamic_cast<Usif::CIntPropertyEntry*>(property);
+ uidList.AppendL(TUid::Uid(intProperty->IntValue()));
+ CleanupStack::PopAndDestroy(property);
+ }
+ else
+ {
+ uidList.AppendL(KNullUid);
+ }
+ }
+ CleanupStack::PopAndDestroy( compEntry );
+ }
+ TUid tuid(TUid::Uid(aUid));
+ if(tuid != KNullUid)
+ {
+ TInt index = uidList.Find(tuid);
+ if(index >= 0 && index < componentIdList.Count())
+ {
+ cid = componentIdList[index];
+ }
+ }
+ CleanupStack::PopAndDestroy( 3, ®istry );// componentIdList, uidList, registry
+ return cid;
+ }
+TInt CHtiAppControl::GetComponentIdFromPackageName(const TDesC& aPackageName)
+ {
+ TInt cid = KErrNotFound;
+ Usif::RSoftwareComponentRegistry registry;
+ User::LeaveIfError(registry.Connect());
+ CleanupClosePushL(registry);
+ RArray<Usif::TComponentId> componentIdList;
+ CleanupClosePushL(componentIdList);
+ registry.GetComponentIdsL(componentIdList);
+ TInt count = componentIdList.Count();
+ for(TInt i = 0; i < count; i++)
+ {
+ Usif::TComponentId compId = componentIdList[i];
+ Usif::CComponentEntry *compEntry = Usif::CComponentEntry::NewLC();
+ if(registry.GetComponentL(compId, *compEntry))
+ {
+ if(compEntry->IsRemovable())
+ {
+ if ( aPackageName.Compare( compEntry->Name() ) == 0 )
+ {
+ cid = compId;
+ CleanupStack::PopAndDestroy( compEntry );
+ break;
+ }
+ }
+ }
+ CleanupStack::PopAndDestroy( compEntry );
+ }
+ CleanupStack::PopAndDestroy( 2, ®istry );// componentIdList, registry
+ return cid;
+ }
+
+#endif
// End of File
--- a/htiui/HtiServicePlugins/HtiCameraServicePlugin/src/HtiCameraServicePlugin.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/HtiServicePlugins/HtiCameraServicePlugin/src/HtiCameraServicePlugin.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -515,6 +515,7 @@
{
HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroInitComplete" );
HTI_LOG_FORMAT("aError = %d", aError);
+ iError = aError;
iWaiter->AsyncStop();
HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroInitComplete" );
}
@@ -523,6 +524,7 @@
{
HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroVideoPrepareComplete" );
HTI_LOG_FORMAT("aError = %d", aError);
+ iError = aError;
iWaiter->AsyncStop();
HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroVideoPrepareComplete" );
}
@@ -531,6 +533,7 @@
{
HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroVideoRecordingOn" );
HTI_LOG_FORMAT("aError = %d", aError);
+ iError = aError;
HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroVideoRecordingOn" );
}
@@ -538,6 +541,7 @@
{
HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroVideoRecordingPaused" );
HTI_LOG_FORMAT("aError = %d", aError);
+ iError = aError;
HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroVideoRecordingPaused" );
}
@@ -545,6 +549,7 @@
{
HTI_LOG_FUNC_IN( "CHtiCameraServicePlugin::MevroVideoRecordingComplete" );
HTI_LOG_FORMAT("aError = %d", aError);
+ iError = aError;
HTI_LOG_FUNC_OUT( "CHtiCameraServicePlugin::MevroVideoRecordingComplete" );
}
// End of File
--- a/htiui/sis/HTI_S60-10_1.pkg Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/sis/HTI_S60-10_1.pkg Fri Jun 11 17:49:08 2010 +0300
@@ -18,7 +18,7 @@
&EN
; Using UID of HtiFramework project
-#{"HTI"},(0x1020DEB6),2,23,0
+#{"HTI"},(0x1020DEB6),2,24,0
; Series60 product id for S60 5.2
[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
--- a/htiui/sis/HTI_S60-52.pkg Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/sis/HTI_S60-52.pkg Fri Jun 11 17:49:08 2010 +0300
@@ -18,7 +18,7 @@
&EN
; Using UID of HtiFramework project
-#{"HTI"},(0x1020DEB6),2,23,0
+#{"HTI"},(0x1020DEB6),2,24,0
; Series60 product id for S60 5.2
[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
--- a/htiui/sis/HTI_S60_Upgrade-10_1.pkg Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/sis/HTI_S60_Upgrade-10_1.pkg Fri Jun 11 17:49:08 2010 +0300
@@ -18,7 +18,7 @@
&EN
; Using UID of HtiFramework project
-#{"HTI"},(0x1020DEB6),2,23,0,TYPE=SA,RU
+#{"HTI"},(0x1020DEB6),2,24,0,TYPE=SA,RU
; Series60 product id for S60 5.2
[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
--- a/htiui/sis/HTI_S60_Upgrade-52.pkg Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/sis/HTI_S60_Upgrade-52.pkg Fri Jun 11 17:49:08 2010 +0300
@@ -18,7 +18,7 @@
&EN
; Using UID of HtiFramework project
-#{"HTI"},(0x1020DEB6),2,23,0,TYPE=SA,RU
+#{"HTI"},(0x1020DEB6),2,24,0,TYPE=SA,RU
; Series60 product id for S60 5.2
[0x20022E6D], 0, 0, 0, {"Series60ProductID"}
--- a/htiui/sis/HTI_stub.pkg Tue Jun 01 14:40:54 2010 +0300
+++ b/htiui/sis/HTI_stub.pkg Fri Jun 11 17:49:08 2010 +0300
@@ -18,7 +18,7 @@
&EN
; Using UID of HtiFramework project
-#{"HTI"},(0x1020DEB6),2,23,0
+#{"HTI"},(0x1020DEB6),2,24,0
; Localised Vendor name
%{"Nokia"}
--- a/launcher/engine/inc/e32image.h Tue Jun 01 14:40:54 2010 +0300
+++ b/launcher/engine/inc/e32image.h Fri Jun 11 17:49:08 2010 +0300
@@ -24,6 +24,7 @@
#include <e32base.h>
#include <badesca.h>
#include <eikenv.h>
+#include <e32ldr_private.h>
class E32ImageHeader;
class E32ImportSection;
--- a/launcher/engine/inc/launcherengine.h Tue Jun 01 14:40:54 2010 +0300
+++ b/launcher/engine/inc/launcherengine.h Fri Jun 11 17:49:08 2010 +0300
@@ -21,7 +21,8 @@
#include <e32base.h>
#include <apgcli.h>
#include <w32std.h>
-#include <e32std.h>
+#include <e32std.h>
+#include <e32hal.h>
#include "launcherparserobserver.h"
--- a/layers.sysdef.xml Tue Jun 01 14:40:54 2010 +0300
+++ b/layers.sysdef.xml Fri Jun 11 17:49:08 2010 +0300
@@ -34,7 +34,7 @@
<unit unitID="tools.piprofilerui" mrp="" bldFile="&layer_real_source_path;/piprofilerui" name="piprofilerui" proFile="piprofilerui.pro" />
</module>
<module name="stifui">
- <unit unitID="tools.stifui" mrp="" bldFile="&layer_real_source_path;/stifui/avkon/group" name="stifui"/>
+ <unit unitID="tools.stifui" mrp="" bldFile="&layer_real_source_path;/stifui/qt/" name="stifui" proFile="stifqtui.pro"/>
</module>
</layer>
</systemModel>
--- a/loadgen/engine/inc/loadgen_memoryeat.h Tue Jun 01 14:40:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_memoryeat.h Fri Jun 11 17:49:08 2010 +0300
@@ -23,6 +23,7 @@
#include <e32std.h>
#include <e32base.h>
#include <f32file.h>
+#include <e32hal.h>
#include "loadgen_loadbase.h"
#include "loadgen_loadattributes.h"
--- a/loadgen/engine/inc/loadgen_pointerevent.h Tue Jun 01 14:40:54 2010 +0300
+++ b/loadgen/engine/inc/loadgen_pointerevent.h Fri Jun 11 17:49:08 2010 +0300
@@ -23,7 +23,7 @@
#include <e32std.h>
#include <e32base.h>
#include <w32std.h>
-
+#include <e32svr.h>
#include "loadgen_loadbase.h"
#include "loadgen_loadattributes.h"
--- a/loadgen/rom/loadgen.iby Tue Jun 01 14:40:54 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-/*
-* 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:
-*
-*/
-
-
-#ifndef __LOADGEN_IBY__
-#define __LOADGEN_IBY__
-
-S60_APP_EXE(LoadGen)
-S60_APP_AIF_ICONS(LoadGen)
-S60_APP_RESOURCE(LoadGen)
-SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,LoadGen_ExtraIcons)
-#ifdef S60_UPGRADABLE_APP_REG_RSC
- S60_UPGRADABLE_APP_REG_RSC(LoadGen)
-#else
- S60_APP_AIF_RSC(LoadGen)
-#endif
-
-data=ZPRIVATE\20011384\backup_registration.xml private\20011384\backup_registration.xml
-data=ZSYSTEM\Install\LoadGen_stub.sis \system\install\LoadGen_stub.sis
-
-#endif // __LOADGEN_IBY__
--- a/loadgen/sis/LoadGen_stub.pkg Tue Jun 01 14:40:54 2010 +0300
+++ b/loadgen/sis/LoadGen_stub.pkg Fri Jun 11 17:49:08 2010 +0300
@@ -29,6 +29,7 @@
; normal stuff:
""-"z:\sys\bin\LoadGen.exe"
+""-"z:\Resource\Apps\LoadGen.mif"
""-"z:\Resource\Apps\LoadGen_aif.mif"
""-"z:\Resource\Apps\LoadGen_ExtraIcons.mif"
""-"z:\Resource\Apps\LoadGen.rsc"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/loadgen/ui/avkon/rom/loadgen.iby Fri Jun 11 17:49:08 2010 +0300
@@ -0,0 +1,35 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#ifndef __LOADGEN_IBY__
+#define __LOADGEN_IBY__
+
+S60_APP_EXE(LoadGen)
+S60_APP_AIF_ICONS(LoadGen)
+S60_APP_RESOURCE(LoadGen)
+SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,LoadGen_ExtraIcons)
+#ifdef S60_UPGRADABLE_APP_REG_RSC
+ S60_UPGRADABLE_APP_REG_RSC(LoadGen)
+#else
+ S60_APP_AIF_RSC(LoadGen)
+#endif
+
+data=ZPRIVATE\20011384\backup_registration.xml private\20011384\backup_registration.xml
+data=ZSYSTEM\Install\LoadGen_stub.sis \system\install\LoadGen_stub.sis
+
+#endif // __LOADGEN_IBY__
--- a/loadgen/ui/hb/hb.pro Tue Jun 01 14:40:54 2010 +0300
+++ b/loadgen/ui/hb/hb.pro Fri Jun 11 17:49:08 2010 +0300
@@ -23,18 +23,6 @@
INCLUDEPATH += . /inc
INCLUDEPATH += ./inc \
../../engine/inc \
- /epoc32/include \
- /epoc32/include/mw \
- /epoc32/include/platform/mw \
- /epoc32/include/platform \
- /epoc32/include/app \
- /epoc32/include/platform/app \
- /epoc32/include/platform/loc \
- /epoc32/include/platform/mw/loc \
- /epoc32/include/platform/app/loc \
- /epoc32/include/platform/loc/sc \
- /epoc32/include/platform/mw/loc/sc \
- /epoc32/include/platform/app/loc/sc
load(hb.prf)
symbian:CONFIG -= symbian_i18n
@@ -44,10 +32,15 @@
RESOURCES += loadgen.qrc
symbian: {
+ MMP_RULES -= PAGED
+ MMP_RULES *= UNPAGED
+
BLD_INF_RULES.prj_exports += "./rom/loadgen.iby CORE_IBY_EXPORT_PATH(tools,loadgen.iby)"
-
- HEADERS += inc/engine.h \
- inc/enginewrapper.h
+
+ INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
+
+ HEADERS += inc/engine.h \
+ inc/enginewrapper.h
SOURCES += src/engine.cpp \
src/enginewrapper.cpp \
../../engine/src/loadgen_utils.cpp \
--- a/loadgen/ui/hb/src/enginewrapper.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/loadgen/ui/hb/src/enginewrapper.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -19,6 +19,7 @@
#include <hbmainwindow.h>
//#include <hbcommonnote.h>
#include <hbpopup.h>
+#include <hbaction.h>
#include <QString>
#include <QStringList>
@@ -136,8 +137,7 @@
void EngineWrapper::StopLoadYesNoDialogClosed(HbAction *action)
{
- HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
- if(action == dlg->primaryAction()){
+ if( action && !action->text().compare("yes", Qt::CaseInsensitive) ){
const CArrayFix<TInt>* selectionIndexes = NULL;
try{
QT_TRAP_THROWING( selectionIndexes = QueryListSelectedIndexesOrCurrentItemL() );
--- a/perfmon/ui/hb/app/app.pro Tue Jun 01 14:40:54 2010 +0300
+++ b/perfmon/ui/hb/app/app.pro Fri Jun 11 17:49:08 2010 +0300
@@ -46,6 +46,7 @@
RESOURCES +=
symbian: {
+ INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
INCLUDEPATH += ../../../engine/inc
HEADERS += ../../../engine/inc/perfmon_engine.h
--- a/perfmon/ui/hb/datapopup/datapopup.pro Tue Jun 01 14:40:54 2010 +0300
+++ b/perfmon/ui/hb/datapopup/datapopup.pro Fri Jun 11 17:49:08 2010 +0300
@@ -32,6 +32,7 @@
SOURCES += src/perfmondatapopupwidget.cpp
symbian {
+ INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
TARGET.EPOCALLOWDLLDATA = 1
TARGET.CAPABILITY = CAP_GENERAL_DLL
TARGET.UID3 = 0x2002E6B0
--- a/stifui/avkon/group/ReleaseNote.txt Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/avkon/group/ReleaseNote.txt Fri Jun 11 17:49:08 2010 +0300
@@ -1,5 +1,5 @@
========================================================================
-RELEASE NOTE FOR STIF UI - STIF_201020 (7.3.33)
+RELEASE NOTE FOR STIF UI - STIF_201022 (7.3.34)
SUPPORTING SERIES 60 3.0 ->
========================================================================
Binary file stifui/avkon/sis/Stifui_31.sis has changed
--- a/stifui/avkon/stifui/inc/version.h Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/avkon/stifui/inc/version.h Fri Jun 11 17:49:08 2010 +0300
@@ -20,9 +20,9 @@
#define STIFUI_MAJOR_VERSION 7
#define STIFUI_MINOR_VERSION 3
-#define STIFUI_BUILD_VERSION 33
+#define STIFUI_BUILD_VERSION 34
-#define STIFUI_REL_DATE "18th May 2010"
+#define STIFUI_REL_DATE "1st June 2010"
#define TO_UNICODE(text) _L(text)
--- a/stifui/qt/ReleaseNote.txt Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/qt/ReleaseNote.txt Fri Jun 11 17:49:08 2010 +0300
@@ -1,5 +1,5 @@
========================================================================
-RELEASE NOTE FOR STFUI_201020 (7.3.33)
+RELEASE NOTE FOR STFUI_201022 (7.3.34)
========================================================================
Product Description:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/stifui/qt/inc/dlgrepeatrun.h Fri Jun 11 17:49:08 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2009 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: QT C++ based Class.
+*/
+
+#ifndef DLGREPEATRUN_H_
+#define DLGREPEATRUN_H_
+#include <QDialog>
+#include <QLineEdit>
+
+QT_BEGIN_NAMESPACE
+class QTabWidget;
+class QGridLayout;
+class QRadioButton;
+class QPushButton;
+QT_END_NAMESPACE
+
+class DlgRepeatRun : public QDialog {
+ Q_OBJECT
+
+public:
+ DlgRepeatRun(QWidget *parent = 0);
+ inline bool isRepeatInfinitely() {return isInfinite;};
+ inline int GetLoopTimes() {return loopTimes;};
+
+
+private:
+ void SetupUI();
+
+private:
+ QPushButton* btnOk;
+ QPushButton* btnCancel;
+ QLineEdit* lineEdit;
+ QRadioButton* rdoLoopInfinitely;
+ QRadioButton* rdoGiveLoopTimes;
+
+ int loopTimes;
+ bool isInfinite;
+
+private slots:
+ //on button clicked
+ void on_btnOk_clicked();
+ void on_btnCancel_clicked();
+
+ //on check box state changed
+ void on_rdoLoopInfinitely_stateChanged(bool checked);
+ void on_rdoGiveLoopTimes_stateChanged(bool checked);
+
+ };
+
+#endif /* DLGREPEATRUN_H_ */
--- a/stifui/qt/inc/frmmain.h Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/qt/inc/frmmain.h Fri Jun 11 17:49:08 2010 +0300
@@ -28,6 +28,7 @@
#include "dlgsetting.h"
#include "dlgsetselector.h"
#include "uiversion.h"
+#include "dlgrepeatrun.h"
QT_BEGIN_NAMESPACE
class QAction;
@@ -86,6 +87,7 @@
void reloadStatisticItem(QString name, QTreeWidgetItem* item, TSTFCaseStatusType type);
void setSetting();
void startRunning();
+ void setItemClicked(QTreeWidgetItem* item);
private:
IStfQtUIController* controller;
@@ -93,6 +95,7 @@
DlgOutput* dlgOutput;
UiSetting* uiSetting;
bool layoutType;
+ QTreeWidgetItem* lastItemSelected;
private: //UI Components
QWidget* centerWidget;
@@ -140,6 +143,7 @@
QAction *actOpenFile;
QAction *actRunCaseSeq;
QAction *actRunCasePar;
+ QAction *actReapeatRunSeq;
QAction *actAddtoSet;
QAction *actSelectAll;
QAction *actExpandAll;
@@ -167,6 +171,7 @@
void on_actOpenFile_triggered();
void on_actRunCaseSeq_triggered();
void on_actRunCasePar_triggered();
+ void on_actReapeatRunSeq_triggered();
void on_actAddtoSet_triggered();
void on_actSelectAll_triggered();
void on_actExpandAll_triggered();
--- a/stifui/qt/inc/istfqtuicontroller.h Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/qt/inc/istfqtuicontroller.h Fri Jun 11 17:49:08 2010 +0300
@@ -48,6 +48,7 @@
virtual QList<QString> GetCaseListByModule(const QString& moduleName) = 0;
virtual CSTFCase GetCase(const QString& moduleName, const int index) = 0;
virtual void RunCases(const QList<CSTFCase>& caseList, const TSTFCaseRunningType& type) = 0;
+ virtual void RepeatRunCases(const QList<CSTFCase>& aCaseList, const bool aIsLoopInfinitely, const int aLoopTimes = 1) = 0;
virtual bool AddCaseToSet(const QList<CSTFCase>& aCase, const QString& setName) = 0;
//for set
@@ -72,6 +73,9 @@
virtual void AddStfEventListener(IStfEventListener* listener) = 0;
virtual void RemoveStfEventListener(IStfEventListener* listener) = 0;
+ //for repeat execution setting
+ virtual void InitRepeatSetting(const bool aIsLoopInfinitely, const int aLoopTimes) = 0;
+ virtual void ResetRepeatSetting() = 0;
};
--- a/stifui/qt/inc/stfqtuicontroller.h Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/qt/inc/stfqtuicontroller.h Fri Jun 11 17:49:08 2010 +0300
@@ -35,6 +35,7 @@
QList<QString> GetCaseListByModule(const QString& moduleName);
CSTFCase GetCase(const QString& moduleName, const int index);
void RunCases(const QList<CSTFCase>& caseList, const TSTFCaseRunningType& type);
+ void RepeatRunCases(const QList<CSTFCase>& aCaseList, const bool aIsLoopInfinitely, const int aLoopTimes = 1);
bool AddCaseToSet(const QList<CSTFCase>& aCase, const QString& setName);
//for set
@@ -58,6 +59,10 @@
//listener
void AddStfEventListener(IStfEventListener* listener);
void RemoveStfEventListener(IStfEventListener* listener);
+
+ //for repeat execution setting
+ void InitRepeatSetting(const bool aIsLoopInfinitely, const int aLoopTimes);
+ void ResetRepeatSetting();
public://implement IStifCaseUpdateListener
void OnGetCaseUpdated(CStartedTestCase* aCase, CSTFCase& stfcase, int flags);
@@ -68,8 +73,11 @@
void FireOnSetListChanged();
void FireOnCaseOutputChanged(IStfEventListener::CaseOutputCommand cmd, int index, QString msg);
-private://help methods
+private:
+ // help methods
CSTFModule GetModuleByName(const QString& moduleName);
+ // Repeat execution cases
+ void Execution();
private:
CStifExecutor* executor;
@@ -77,8 +85,16 @@
QList<IStfEventListener*> listenerList;
bool isShowOutput;
+ // repeat run case related member
+ // repeat execution case list
+ QList<CSTFCase> repeatRunCaseList;
+ // current position of the case list
+ int iCurrentRunPos;
+ // is loop infinitely
+ bool isLoopInfinitely;
+ // loop times
+ int loopTimes;
-
};
--- a/stifui/qt/inc/version.h Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/qt/inc/version.h Fri Jun 11 17:49:08 2010 +0300
@@ -18,11 +18,11 @@
#ifndef VERSION_H_
#define VERSION_H_
-#define STIF_MAJOR_VERSION 1
-#define STIF_MINOR_VERSION 0
-#define STIF_BUILD_VERSION 0
+#define STIF_MAJOR_VERSION 7
+#define STIF_MINOR_VERSION 3
+#define STIF_BUILD_VERSION 34
-#define STIF_REL_DATE "1st Mar 2010"
+#define STIF_REL_DATE "1st June 2010"
#define TO_UNICODE(text) _L(text)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/stifui/qt/rom/stfui.iby Fri Jun 11 17:49:08 2010 +0300
@@ -0,0 +1,33 @@
+/*
+* Copyright (c) 2009 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: Stifui.iby file specifies needed STIF and STIF UI
+* and UITetsServerstarter components for ROM image
+*
+*/
+
+#ifndef __STIF_UI_IBY__
+#define __STIF_UI_IBY__
+
+S60_APP_EXE(Stifqtui)
+
+#ifdef S60_UPGRADABLE_APP_REG_RSC
+ S60_UPGRADABLE_APP_REG_RSC(Stifqtui)
+#else
+ S60_APP_AIF_RSC(Stifqtui)
+#endif
+
+S60_APP_RESOURCE(Stifqtui)
+
+#endif
+// End of File
\ No newline at end of file
--- a/stifui/qt/sis/StfQtUI.pkg Tue Jun 01 14:40:54 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-; StfQtUI_template.pkg generated by qmake at 2010-02-08T13:37:27
-; This file is generated by qmake and should not be modified by the user
-;
-
-; Language
-&EN
-
-; SIS header: name, uid, version
-#{"STFUI"},(0x2002BCA0),1,0,0
-
-; Localised Vendor name
-%{"Vendor"}
-
-; Unique Vendor name
-:"Vendor"
-
-; Manual PKG pre-rules from PRO files
-; Default HW/platform dependencies
-[0x101F7961],0,0,0,{"S60ProductID"}
-[0x102032BE],0,0,0,{"S60ProductID"}
-[0x102752AE],0,0,0,{"S60ProductID"}
-[0x1028315F],0,0,0,{"S60ProductID"}
-
-; Default dependency to Qt libraries
-;(0x2001E61C), , , , {"Qt"}
-
-; Executable and default resource files
-"/epoc32/release/armv5/urel/StfUI.exe" - "!:\sys\bin\StfUI.exe"
-"/epoc32/data/z/resource/apps/StfQtUI.rsc" - "!:\resource\apps\StfQtUI.rsc"
-"/epoc32/data/z/private/10003a3f/import/apps/StfQtUI_reg.rsc" - "!:\private\10003a3f\import\apps\StfQtUI_reg.rsc"
-
-; Manual PKG post-rules from PRO files
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/stifui/qt/sis/stifqtui.pkg Fri Jun 11 17:49:08 2010 +0300
@@ -0,0 +1,27 @@
+; stifqtui_armv5_urel.pkg generated by qmake at 2010-05-31T09:56:39
+; This file is generated by qmake and should not be modified by the user
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"STFUI"},(0x2002BCA0),1,0,0
+
+; Localised Vendor name
+%{"Nokia, Qt Software"}
+
+; Unique Vendor name
+:"Nokia, Qt Software"
+
+; Dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x102032BE],0,0,0,{"S60ProductID"}
+[0x102752AE],0,0,0,{"S60ProductID"}
+[0x1028315F],0,0,0,{"S60ProductID"}
+(0x2001E61C), 4, 5, 2, {"QtLibs pre-release"}
+
+; Executable and default resource files
+"/S60/non_public/S60_5_0_200906/epoc32/release/armv5/urel/STFUI.exe" - "!:\sys\bin\STFUI.exe"
+"/S60/non_public/S60_5_0_200906/epoc32/data/z/resource/apps/STFUI.rsc" - "!:\resource\apps\STFUI.rsc"
+"/S60/non_public/S60_5_0_200906/epoc32/data/z/private/10003a3f/import/apps/STFUI_reg.rsc" - "!:\private\10003a3f\import\apps\STFUI_reg.rsc"
Binary file stifui/qt/sis/stifqtui.sis has changed
Binary file stifui/qt/sis/stifqtui.sisx has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/stifui/qt/src/dlgrepeatrun.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -0,0 +1,131 @@
+/*
+ * Copyright (c) 2009 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: QT C++ based Class.
+ *
+ */
+
+#include "dlgrepeatrun.h"
+#include <QtGui>
+
+DlgRepeatRun::DlgRepeatRun(QWidget *parent)
+ : QDialog(parent),
+ loopTimes(0),
+ isInfinite(true)
+ {
+ SetupUI();
+ }
+
+void DlgRepeatRun::SetupUI()
+ {
+ this->setContextMenuPolicy(Qt::NoContextMenu);
+ QGridLayout *mainLayout = new QGridLayout(this);
+ this->setLayout(mainLayout);
+
+ //nullWidget is just place holder for better looking.
+ QWidget *nullWidget = new QWidget(this);
+ nullWidget->setMinimumHeight(30);
+ mainLayout->addWidget(nullWidget, 0, 0);
+
+ // check box LoopInfinitely
+ rdoLoopInfinitely = new QRadioButton(this);
+ rdoLoopInfinitely->setMinimumHeight(40);
+ rdoLoopInfinitely->setText(tr("Repeat infinitely."));
+ rdoLoopInfinitely->setChecked(Qt::Checked);
+ QObject::connect(rdoLoopInfinitely, SIGNAL(clicked(bool)), this,
+ SLOT(on_rdoLoopInfinitely_stateChanged(bool)));
+
+
+ // check box LoopTime
+ rdoGiveLoopTimes = new QRadioButton(this);
+ rdoGiveLoopTimes->setMinimumHeight(40);
+ rdoGiveLoopTimes->setText(tr("Give loop times:"));
+ rdoGiveLoopTimes->setChecked(Qt::Unchecked);
+ QObject::connect(rdoGiveLoopTimes, SIGNAL(clicked(bool)), this,
+ SLOT(on_rdoGiveLoopTimes_stateChanged(bool)));
+
+ // lineEdit,
+ QValidator *validator = new QIntValidator(1, 999999, this);
+ lineEdit = new QLineEdit(this);
+ lineEdit->setValidator(validator);
+ lineEdit->setMinimumHeight(40);
+ lineEdit->setMaxLength(6);
+ lineEdit->setMaximumWidth(60);
+ lineEdit->setEchoMode(QLineEdit::NoEcho);
+ lineEdit->setReadOnly(true);
+
+ // add check box and lineEdit to layout.
+ QWidget *toolWidgetForLoopTimes = new QWidget(this);
+ QGridLayout *toolLayoutForLoopTimes = new QGridLayout(this);
+ toolWidgetForLoopTimes->setLayout(toolLayoutForLoopTimes);
+ toolLayoutForLoopTimes->addWidget(rdoLoopInfinitely, 0, 0);
+ toolLayoutForLoopTimes->addWidget(rdoGiveLoopTimes, 1, 0);
+ toolLayoutForLoopTimes->addWidget(lineEdit, 1, 1);
+ mainLayout->addWidget(toolWidgetForLoopTimes, 1, 0);
+
+ // add button
+ QWidget *toolWidgetForButtons = new QWidget(this);
+ QGridLayout *toolLayoutForButtons = new QGridLayout(this);
+ toolWidgetForButtons->setLayout(toolLayoutForButtons);
+ btnOk = new QPushButton(tr("Ok"), toolWidgetForButtons);
+ QObject::connect(btnOk, SIGNAL(clicked()), this,
+ SLOT(on_btnOk_clicked()));
+ btnCancel = new QPushButton(tr("Cancel"), toolWidgetForButtons);
+ QObject::connect(btnCancel, SIGNAL(clicked()), this,
+ SLOT(on_btnCancel_clicked()));
+ toolLayoutForButtons->addWidget(btnOk, 0, 0);
+ toolLayoutForButtons->addWidget(btnCancel, 0, 1);
+ mainLayout->addWidget(toolWidgetForButtons, 2, 0);
+ }
+
+void DlgRepeatRun::on_btnOk_clicked()
+ {
+ if(!isRepeatInfinitely())
+ {
+ loopTimes = lineEdit->text().toInt();
+ if (loopTimes < 0)
+ {
+ loopTimes = 0;
+ }
+ }
+ else
+ {
+ loopTimes = 0;
+ }
+ this->accept();
+ }
+
+void DlgRepeatRun::on_btnCancel_clicked()
+ {
+ this->reject();
+ }
+
+void DlgRepeatRun::on_rdoLoopInfinitely_stateChanged(bool checked)
+ {
+ if(checked)
+ {
+ isInfinite = true;
+ lineEdit->setEchoMode(QLineEdit::NoEcho);
+ lineEdit->setReadOnly(true);
+ }
+ }
+
+void DlgRepeatRun::on_rdoGiveLoopTimes_stateChanged(bool checked)
+ {
+ if(checked)
+ {
+ isInfinite = false;
+ lineEdit->setEchoMode(QLineEdit::Normal);
+ lineEdit->setReadOnly(false);
+ }
+ }
--- a/stifui/qt/src/dlgsetselector.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/qt/src/dlgsetselector.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -19,7 +19,7 @@
#include <QtGui>
DlgSetSelector::DlgSetSelector(QList<QString> list, QWidget* parent):
- QDialog(parent), setList(list), selectName("")
+ QDialog(parent), selectName(""), setList(list)
{
SetupUI();
}
@@ -72,7 +72,7 @@
this->showMaximized();
}
-void DlgSetSelector::on_radio1Selection_Changed(bool checked)
+void DlgSetSelector::on_radio1Selection_Changed(bool /* checked */)
{
lstSet->setEnabled(false);
}
--- a/stifui/qt/src/frmmain.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/qt/src/frmmain.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -28,6 +28,7 @@
FrmMain::FrmMain()
{
+ lastItemSelected = NULL;
uiSetting = new UiSetting();
createMenus();
load();
@@ -56,6 +57,8 @@
controller->RemoveStfEventListener(this);
model->RemoveStifModelEventListener(this);
+ //lastItemSelected does not own any memory, don't need to delete.
+ lastItemSelected = NULL;
delete uiSetting;
delete dlgOutput;
delete controller;
@@ -179,6 +182,11 @@
connect(actRunCasePar, SIGNAL(triggered()), this,
SLOT(on_actRunCasePar_triggered()));
+ ////////////////////
+ actReapeatRunSeq = new QAction(tr("Repeat run sequentially"), this);
+ connect(actReapeatRunSeq, SIGNAL(triggered()), this,
+ SLOT(on_actReapeatRunSeq_triggered()));
+
actAddtoSet = new QAction(tr("Add cases to Set"), this);
connect(actAddtoSet, SIGNAL(triggered()), this,
SLOT(on_actAddtoSet_triggered()));
@@ -505,6 +513,7 @@
menuBar()->addMenu(menuRunCase);
menuRunCase->addAction(actRunCaseSeq);
menuRunCase->addAction(actRunCasePar);
+ menuBar()->addAction(actReapeatRunSeq);
menuBar()->addSeparator();
menuBar()->addAction(actAddtoSet);
menuBar()->addSeparator();
@@ -687,9 +696,26 @@
controller->RunCases(getSelectedCases(), Parallel);
}
+void FrmMain::on_actReapeatRunSeq_triggered()
+ {
+ DlgRepeatRun dlgRepeatRun(this);
+ int result = dlgRepeatRun.exec();
+ if(result == QDialog::Accepted)
+ {
+ QList<CSTFCase> selectedCases = getSelectedCases();
+ if(selectedCases.count() > 0)
+ {
+ startRunning();
+ controller->RepeatRunCases( selectedCases,
+ dlgRepeatRun.isRepeatInfinitely(),
+ dlgRepeatRun.GetLoopTimes() );
+ }
+
+ }
+ }
+
void FrmMain::on_actAddtoSet_triggered()
{
-
QList<CSTFCase> list = getSelectedCases();
if (list.size() == 0)
{
@@ -912,6 +938,96 @@
void FrmMain::on_treeModuleList_itemClicked(QTreeWidgetItem* item, int /*column*/)
{
+ //Check if shift key is pressed
+ bool isShiftPressed = false;
+ Qt::KeyboardModifiers keyMod = QApplication::keyboardModifiers();
+ isShiftPressed=keyMod.testFlag(Qt::ShiftModifier);
+
+ //Handle shift key.
+ //Shift not pressed.
+ if(!isShiftPressed)
+ {
+ setItemClicked(item);
+ }
+ //Shift pressed.
+ else
+ {
+ enum Direction
+ {
+ Item_NoDirection,
+ Item_Above,
+ Item_Below
+ };
+ Direction direction = Item_NoDirection;
+ QTreeWidgetItem* tempItem = item;
+ //check direction of last selected item comparing current one.
+ while(tempItem)
+ {
+ tempItem = treeModuleList->itemAbove(tempItem);
+ if(tempItem == lastItemSelected)
+ {
+ direction = Item_Above;
+ break;
+ }
+ }
+ if (direction != Item_Above)
+ {
+ tempItem = item;
+ while(tempItem)
+ {
+ tempItem = treeModuleList->itemBelow(tempItem);
+ if(tempItem == lastItemSelected)
+ {
+ direction = Item_Below;
+ break;
+ }
+ }
+ }
+
+ // Select all items between current item and last selected item.
+ tempItem = item;
+ if(direction != Item_NoDirection)
+ {
+ while(tempItem)
+ {
+ //check if this item been selected.
+ bool isItemSelected = false;
+ if ( tempItem->text(0).left(3).compare(SELECTITEMHEADER)==0 )
+ {
+ isItemSelected = true;
+ }
+ // If not selected, set to selected.
+ if (!isItemSelected )
+ {
+ setItemClicked(tempItem);
+ }
+
+ //Go above/below
+ if (direction == Item_Above)
+ {
+ tempItem = treeModuleList->itemAbove(tempItem);
+ }
+ if (direction == Item_Below)
+ {
+ tempItem = treeModuleList->itemBelow(tempItem);
+ }
+
+ if (tempItem == lastItemSelected)
+ {
+ break;
+ }
+ }
+ }
+ }
+
+ // Set current clicked item to last selected item.
+ lastItemSelected = item;
+
+
+ }
+
+void FrmMain::setItemClicked(QTreeWidgetItem* item)
+ {
QString header = UNSELECTITEMHEADER;
if(item->text(0).startsWith(UNSELECTITEMHEADER))
{
--- a/stifui/qt/src/stfqtuicontroller.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/qt/src/stfqtuicontroller.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -26,7 +26,12 @@
StfQtUIController::StfQtUIController(IStfQtUIModel* aModel) :
- model(aModel), isShowOutput(false)
+ model(aModel),
+ isShowOutput(false),
+ iCurrentRunPos(0),
+ isLoopInfinitely(false),
+ loopTimes(0)
+
{
executor = new CStifExecutor();
executor->OpenIniFile(DEFAULTINI);
@@ -135,6 +140,51 @@
}
}
+// run cases repeatly.
+// By default, loopTimes = -1 means loop infinitely util user stop it.
+void StfQtUIController::RepeatRunCases(const QList<CSTFCase>& aCaseList, const bool aIsLoopInfinitely, const int aLoopTimes)
+ {
+ InitRepeatSetting(aIsLoopInfinitely, aLoopTimes);
+ repeatRunCaseList = aCaseList;
+
+ Execution();
+
+ }
+
+void StfQtUIController::InitRepeatSetting(const bool aIsLoopInfinitely, const int aLoopTimes)
+ {
+ loopTimes = aLoopTimes;
+ isLoopInfinitely = aIsLoopInfinitely;
+ iCurrentRunPos = 0;
+ }
+
+void StfQtUIController::ResetRepeatSetting()
+ {
+ iCurrentRunPos = 0;
+ isLoopInfinitely = false;
+ loopTimes = 0;
+ }
+
+// Repeat execution cases
+void StfQtUIController::Execution()
+ {
+ if(loopTimes > 0 || isLoopInfinitely)
+ {
+ int count = repeatRunCaseList.count();
+ CSTFCase aCase = repeatRunCaseList.at(iCurrentRunPos);
+ QString msg = "Start execute case:" + aCase.Name();
+ FireOnGetOutput(msg);
+ executor->ExecuteSingleCase(aCase.ModuleName(), aCase.Index());
+
+ iCurrentRunPos++;
+ if( iCurrentRunPos >= count )
+ {
+ iCurrentRunPos = 0;
+ loopTimes --;
+ }
+ }
+ }
+
bool StfQtUIController::AddCaseToSet(const QList<CSTFCase>& caseList,
const QString& setName)
{
@@ -283,6 +333,9 @@
model->RemoveRunningCase(aCase);
model->AddCaseByStatus(EStatusAborted, stfcase);
msg += "aborted";
+
+ //reset repeat execution information
+ ResetRepeatSetting();
}
else if (flags & CUIStoreIf::EStatusExecuted)
@@ -306,7 +359,12 @@
model->AddCaseByStatus(EStatusPassed, stfcase);
msg += "passed";
}
-
+
+ // if repeat execution is choosed, start to execution again.
+ if(loopTimes > 0 || isLoopInfinitely)
+ {
+ Execution();
+ }
}
else
{
--- a/stifui/qt/src/stifexecutor.cpp Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/qt/src/stifexecutor.cpp Fri Jun 11 17:49:08 2010 +0300
@@ -268,7 +268,7 @@
TPtrC name = QString2TPtrC(setName);
TFileName testSetName;
testSetName.Copy(name);
- TInt ret = UIStore().SaveTestSet2(testSetName);
+ TInt ret = UIStore().SaveTestSet(testSetName);
setName = TDesC2QString(testSetName);
return LogResult(ret, "SaveSet");
}
--- a/stifui/qt/stifqtui.pro Tue Jun 01 14:40:54 2010 +0300
+++ b/stifui/qt/stifqtui.pro Fri Jun 11 17:49:08 2010 +0300
@@ -9,7 +9,8 @@
# Contributors:
# Description: QT project file.
TARGET = STFUI
-HEADERS += inc/dlgsetselector.h \
+HEADERS += inc/dlgrepeatrun.h \
+ inc/dlgsetselector.h \
inc\version.h \
inc\frmmain.h \
inc\istfqtuicontroller.h \
@@ -22,7 +23,8 @@
inc\uisetting.h \
inc\dlgsetting.h \
inc\uiversion.h
-SOURCES += src\dlgsetselector.cpp \
+SOURCES += src/dlgrepeatrun.cpp \
+ src\dlgsetselector.cpp \
src\frmmain.cpp \
src\main.cpp \
src\stfqtuimodel.cpp \
@@ -49,8 +51,4 @@
# Export headers to SDK Epoc32/include directory
deploy.path = $$EPOCROOT
- #exportheaders.sources = $$PUBLIC_HEADERS
- #exportheaders.path = epoc32/include
- #for(header, exportheaders.sources)
- #:BLD_INF_RULES.prj_exports += "$$header $$deploy.path$$exportheaders.path/$$basename(header)"
}