# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1286140661 -10800 # Node ID 6a40edd41841ea5610d7ce41ed0daa867e7a5f99 # Parent e4c884866116873c1913b5443e1b4f30f794cd84 Revision: 201037 Kit: 201039 diff -r e4c884866116 -r 6a40edd41841 logsui/conf/logs.confml Binary file logsui/conf/logs.confml has changed diff -r e4c884866116 -r 6a40edd41841 logsui/conf/logs_101F874E.crml Binary file logsui/conf/logs_101F874E.crml has changed diff -r e4c884866116 -r 6a40edd41841 logsui/inc/logslogger.h --- a/logsui/inc/logslogger.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/inc/logslogger.h Mon Oct 04 00:17:41 2010 +0300 @@ -41,7 +41,6 @@ #else // debug build; logs - const char logsDebugPrefix[] = "Debug: "; const char logsWarningPrefix[] = "Warning: "; const char logsCriticalPrefix[] = "Critical: "; @@ -57,6 +56,8 @@ const char logsLogFile[] = "C:/logs/logsapp/logsappdebug.txt";// Logs application log filename. +#define LOGS_DEBUG_ENABLED + #define LOGS_QDEBUG( a )\ qDebug() << a; @@ -105,20 +106,6 @@ #define LOGS_QDEBUG_EVENT_ARR( arr ) #endif -// File logging can be disabled by commenting definition below. -#define LOGS_FILE_LOGGING_ENABLED - -#if ( defined __WINSCW__ ) || ( defined __WINS__ ) -// No sense to have file logging enabled in wins -#undef LOGS_FILE_LOGGING_ENABLED -#endif - -#ifdef LOGS_FILE_LOGGING_ENABLED -const bool logsFileLoggingEnabled = ETrue; -#else -const bool logsFileLoggingEnabled = EFalse; -#endif - #endif diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/inc/logsapplication.h --- a/logsui/logsapp/inc/logsapplication.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/inc/logsapplication.h Mon Oct 04 00:17:41 2010 +0300 @@ -21,21 +21,22 @@ #include #include +class LogsAppSettings; + class LogsApplication : public HbApplication { Q_OBJECT public: - LogsApplication(int &argc, char *argv[]); + LogsApplication(int &argc, char *argv[], LogsAppSettings& settings); ~LogsApplication(); - - bool logsFeaturePreloadingEnabled(); - bool logsFeatureFakeExitEnabled(); -public slots: // from HbApplication +public slots: void testLogsAppEngineReady(); void testLogsHandleAppViewReady(); + void testLogsResetAppReady(); + signals: /*! * Testing framework support. @@ -47,10 +48,6 @@ bool mViewReady; bool mReadCompleted; - // Temporary "feature" flags, to be replaced by real flags once those are known - bool mFeaturePreloadedEnabled; - bool mFeatureFakeExitEnabled; - friend class UT_LogsApplication; friend class UT_LogsViewManager; }; diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/inc/logsappsettings.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/inc/logsappsettings.h Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,44 @@ +/* +* 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: +* +*/ + +#ifndef LOGSAPPSETTINGS_H +#define LOGSAPPSETTINGS_H + +class LogsAppSettings +{ +public: + LogsAppSettings(int &argc, char *argv[]); + virtual ~LogsAppSettings(); + + bool logsFeaturePreloadingEnabled(); + bool logsFeatureFakeExitEnabled(); + +private: + + static bool isBootupStart(int &argc, char *argv[]); + +private: + + bool mFeaturePreloadedEnabled; + int mFeatureFakeExitEnabledVal; + + friend class UT_LogsApplication; + friend class UT_LogsViewManager; + friend class UT_LogsAppSettings; +}; + +#endif // LOGSAPPSETTINGS_H diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/inc/logsdefs.h --- a/logsui/logsapp/inc/logsdefs.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/inc/logsdefs.h Mon Oct 04 00:17:41 2010 +0300 @@ -104,5 +104,8 @@ const char logsActivityParamDialpadText[] = "dialpad_text"; // val type string const char logsActivityParamInternalViewId[] = "view_id"; // val type int +// Command line args +const char logsBootupStartCmdLineArg[] = "-logsbootup"; + #endif // LOGSDEFS_H diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/inc/logsdetailsview.h --- a/logsui/logsapp/inc/logsdetailsview.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/inc/logsdetailsview.h Mon Oct 04 00:17:41 2010 +0300 @@ -26,6 +26,8 @@ class LogsComponentRepository; class HbAction; class LogsAbstractViewManager; +class QGraphicsLinearLayout; + /** * @@ -86,7 +88,7 @@ class LogsDetailsViewItem : public HbListViewItem { Q_OBJECT - friend class UT_LogsDetailsViewItem; + friend class UT_LogsDetailsView; public: @@ -102,6 +104,14 @@ * overriding the pressStateChanged method to do nothing. */ virtual void pressStateChanged(bool value, bool animate); + + +private slots: + + void groupBoxClicked(bool collapsed); + +private: + QGraphicsLinearLayout* mLayout; }; diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/inc/logsmainwindow.h --- a/logsui/logsapp/inc/logsmainwindow.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/inc/logsmainwindow.h Mon Oct 04 00:17:41 2010 +0300 @@ -50,6 +50,12 @@ void callKeyPressed(); void localeChanged(); void appGainedForeground(); + void appLostForeground(); + +private slots: + + void obscuredCalled(); + void revealedCalled(); private: void startKeyCapture(); diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/inc/logsviewmanager.h --- a/logsui/logsapp/inc/logsviewmanager.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/inc/logsviewmanager.h Mon Oct 04 00:17:41 2010 +0300 @@ -31,6 +31,8 @@ class LogsMainWindow; class HbView; class LogsBaseView; +class LogsAppSettings; +class LogsForegroundWatcher; /** * @@ -50,7 +52,7 @@ * @param service */ LogsViewManager( LogsMainWindow& mainWindow, LogsServiceHandler& service, - LogsServiceHandlerOld& serviceOld ); + LogsServiceHandlerOld& serviceOld, LogsAppSettings& settings ); ~LogsViewManager(); public slots: @@ -77,7 +79,9 @@ void saveActivity(); void closeEmbeddedApplication(); void appGainedForeground(); + void appLostForeground(); void activityRequested(const QString &activityId); + void bgStartupForegroundGained(); private: @@ -90,22 +94,28 @@ void handleFirstActivation(); LogsBaseView* createView(LogsAppViewId viewId); void doFakeExit(); + void endFakeExit(); bool doLoadActivity(const QString& activityId); void clearActivities(); void activateViewViaService( LogsAppViewId viewId, bool showDialpad, const QString& dialpadText, const QVariant& args = QVariant()); + void setTaskSwitcherVisibility(bool visible); + void doExitApplication(bool viewExitHandling = true); + void activateDefaultView(); private: //data LogsMainWindow& mMainWindow; LogsServiceHandler& mService; LogsServiceHandlerOld& mServiceOld; + LogsAppSettings& mSettings; LogsComponentRepository* mComponentsRepository; QList mViewStack; bool mFirstActivation; QVariant mViewActivationArgs; bool mViewActivationShowDialpad; + LogsForegroundWatcher* mBackgroundStartupWatcher; }; diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/logsapp.pro --- a/logsui/logsapp/logsapp.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/logsapp.pro Mon Oct 04 00:17:41 2010 +0300 @@ -45,6 +45,8 @@ HEADERS += inc/logspageindicator.h HEADERS += inc/logspageindicatoritem.h HEADERS += inc/logscomponentrepository.h +HEADERS += inc/logsappsettings.h +HEADERS += ../logsengine/logssymbianos/inc/logsforegroundwatcher.h SOURCES += src/main.cpp SOURCES += src/logsmainwindow.cpp @@ -60,13 +62,17 @@ SOURCES += src/logseffecthandler.cpp SOURCES += src/logspageindicator.cpp SOURCES += src/logspageindicatoritem.cpp +SOURCES += src/logsappsettings.cpp +SOURCES += ../logsengine/logssymbianos/src/logsforegroundwatcher.cpp symbian: { TARGET.UID2 = 0x100039CE TARGET.UID3 = 0x101F4CD5 TARGET.CAPABILITY = CAP_APPLICATION NetworkControl - LIBS += -lxqservice -lxqserviceutil -llogsengine -ldialpad -lxqkeycapture -ltstaskmonitorclient - + LIBS += -lxqservice -lxqserviceutil -llogsengine -ldialpad -lxqkeycapture -ltstaskmonitorclient \ + -lxqsettingsmanager -lapparc -lcone + SKINICON = qtg_large_dialer + MMP_RULES += SMPSAFE } SERVICE.FILE = service_conf.xml diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/logsapp.qrc --- a/logsui/logsapp/logsapp.qrc Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/logsapp.qrc Mon Oct 04 00:17:41 2010 +0300 @@ -12,5 +12,6 @@ resources/hblistviewitem.css resources/hblistviewitem.widgetml + resources/hbgroupboxcontentwidget.css diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/resources/hbgroupboxcontentwidget.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/resources/hbgroupboxcontentwidget.css Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,8 @@ + +HbGroupBoxContentWidget[groupBoxType="3"][scrollableContent="false"]::content +{ + top:0.0un; + left:0.0un; + bottom:0.0un; + right:0.0un; +} \ No newline at end of file diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/src/logsapplication.cpp --- a/logsui/logsapp/src/logsapplication.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/src/logsapplication.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -18,16 +18,23 @@ #include #include #include "logsapplication.h" - +#include "logsappsettings.h" +#include "logsdefs.h" +#include "logslogger.h" // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- // -LogsApplication::LogsApplication(int &argc, char *argv[]) - : HbApplication(argc, argv),mViewReady(false),mReadCompleted(false), - mFeaturePreloadedEnabled(false), mFeatureFakeExitEnabled(false) +LogsApplication::LogsApplication(int &argc, char *argv[], LogsAppSettings& settings) + : HbApplication(argc, argv, + settings.logsFeaturePreloadingEnabled() ? Hb::NoSplash : Hb::DefaultApplicationFlags ), + mViewReady(false), + mReadCompleted(false) { +#ifdef LOGS_DEBUG_ENABLED + LOGS_QDEBUG_2( "logs [UI] -> LogsApplication::LogsApplication args", arguments() ) +#endif } // ----------------------------------------------------------------------------- @@ -42,24 +49,6 @@ // // ----------------------------------------------------------------------------- // -bool LogsApplication::logsFeaturePreloadingEnabled() -{ - return mFeaturePreloadedEnabled; -} - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// -bool LogsApplication::logsFeatureFakeExitEnabled() -{ - return mFeatureFakeExitEnabled; -} - -// ----------------------------------------------------------------------------- -// -// ----------------------------------------------------------------------------- -// void LogsApplication::testLogsAppEngineReady(){ if (mViewReady && !mReadCompleted){ emit applicationReady(); @@ -78,4 +67,15 @@ mViewReady = true; } +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsApplication::testLogsResetAppReady() +{ + // Wait only for read completion when handling application readiness after + // hidden exit as viewready signal is not received when view is not changed + mReadCompleted = false; +} + // end of file diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/src/logsappsettings.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/src/logsappsettings.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,95 @@ +/* +* Copyright (c) 2009-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 "logsappsettings.h" +#include "logsdefs.h" +#include "logslogger.h" +#include "logsforegroundwatcher.h" +#include +#include +#include + +const int logsFakeExitDisabled = 0; + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsAppSettings::LogsAppSettings(int &argc, char *argv[]) : + mFeaturePreloadedEnabled(isBootupStart(argc, argv)), + mFeatureFakeExitEnabledVal(-1) +{ + if ( mFeaturePreloadedEnabled ){ + LogsForegroundWatcher::ensureBackgroundStartup(); + } +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsAppSettings::~LogsAppSettings() +{ +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +bool LogsAppSettings::logsFeaturePreloadingEnabled() +{ + return mFeaturePreloadedEnabled; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +bool LogsAppSettings::logsFeatureFakeExitEnabled() +{ + if ( mFeatureFakeExitEnabledVal < 0 ){ + XQSettingsManager manager; + XQSettingsKey key(XQSettingsKey::TargetCentralRepository, + KCRUidLogs.iUid, + KLogsFakeExitEnabled); + QVariant value = manager.readItemValue( + key, XQSettingsManager::TypeInt); + if (!value.isNull()) { + mFeatureFakeExitEnabledVal = value.toInt(); + } + if ( mFeatureFakeExitEnabledVal < 0 ){ + mFeatureFakeExitEnabledVal = logsFakeExitDisabled; + } + } + return ( mFeatureFakeExitEnabledVal != logsFakeExitDisabled ); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +bool LogsAppSettings::isBootupStart(int &argc, char *argv[]) +{ + for (int i=0; i LogsBaseView::handleExit()" ); - mViewManager.exitApplication(); - LOGS_QDEBUG( "logs [UI] <- LogsBaseView::handleExit()" ); + LOGS_QDEBUG( "logs [UI] <-> LogsBaseView::handleExit()" ); } // ----------------------------------------------------------------------------- diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/src/logsdetailsview.cpp --- a/logsui/logsapp/src/logsdetailsview.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/src/logsdetailsview.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -35,6 +35,8 @@ #include #include #include +#include + Q_DECLARE_METATYPE(LogsDetailsModel*) @@ -321,7 +323,6 @@ Q_ASSERT_X(mListView != 0, "logs [UI] ", "couldn't find list widget !!"); mListView->setItemRecycling(true); - LOGS_QDEBUG( "logs [UI] <- LogsDetailsView::initListWidget() " ); } @@ -432,7 +433,7 @@ // ----------------------------------------------------------------------------- // LogsDetailsViewItem::LogsDetailsViewItem() -: HbListViewItem(0) + : HbListViewItem(0), mLayout(0) { } @@ -470,7 +471,42 @@ void LogsDetailsViewItem::updateChildItems() { HbListViewItem::updateChildItems(); + + QVariant customData = modelIndex().data(LogsDetailsModel::RoleDuplicatesSeparator); + if (customData.isValid() && customData.toBool()) { + LOGS_QDEBUG( "logs [UI] -> LogsDetailsViewItem::updateChildItems(), groupbox" ); + HbGroupBox* groupBox = new HbGroupBox(this); + groupBox->setHeading(modelIndex().data(Qt::DisplayRole).toString()); + //groupBox->setCollapsable(true); + + HbWidget* content = new HbWidget(); + content->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + content->setMaximumHeight(0); + groupBox->setContentWidget(content); + groupBox->setCollapsed(true); + + connect(groupBox, SIGNAL(toggled(bool)), this, SLOT(groupBoxClicked(bool))); + + if (!mLayout) { + mLayout = new QGraphicsLinearLayout(Qt::Horizontal, 0); + mLayout->setContentsMargins(0,0,0,0); + } + + mLayout->addItem(layout()); + mLayout->addItem(groupBox); + mLayout->setItemSpacing(0,0); + setLayout(mLayout); + } } - - +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsDetailsViewItem::groupBoxClicked(bool collapsed) +{ + LOGS_QDEBUG_2( "logs [UI] -> LogsDetailsViewItem::groupBoxClicked(): ", collapsed ); + QAbstractItemModel* model = const_cast (modelIndex().model()); + model->setData(modelIndex(), QVariant(collapsed)); + LOGS_QDEBUG( "logs [UI] <- LogsDetailsViewItem::groupBoxClicked()" ); +} diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/src/logsmainwindow.cpp --- a/logsui/logsapp/src/logsmainwindow.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/src/logsmainwindow.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -31,6 +31,8 @@ { qApp->installEventFilter(this); mKeyCapture = new XQKeyCapture; + connect( this, SIGNAL(obscured()), this, SLOT(obscuredCalled()) ); + connect( this, SIGNAL(revealed()), this, SLOT(revealedCalled()) ); } // ----------------------------------------------------------------------------- @@ -101,17 +103,9 @@ if (event->type() == QEvent::ApplicationActivate) { LOGS_QDEBUG( "logs [UI] -> eventFilter(), QEvent::ApplicationActivate" ); startKeyCapture(); - mForeground = true; - if (mLocaleChanged) { - LOGS_QDEBUG( "logs [UI] -> locale changed when we were on BG" ); - emit localeChanged(); - mLocaleChanged = false; - } - emit appGainedForeground(); } else if (event->type() == QEvent::ApplicationDeactivate ) { LOGS_QDEBUG( "logs [UI] -> eventFilter(), QEvent::ApplicationDeactivate" ); stopKeyCapture(); - mForeground = false; } else if (event->type() == QEvent::LocaleChange) { if (mForeground) { emit localeChanged(); @@ -127,6 +121,33 @@ // // ----------------------------------------------------------------------------- // +void LogsMainWindow::obscuredCalled() +{ + LOGS_QDEBUG( "logs [UI] -> LogsMainWindow::obscuredCalled" ); + mForeground = false; + emit appLostForeground(); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsMainWindow::revealedCalled() +{ + LOGS_QDEBUG( "logs [UI] -> LogsMainWindow::revealedCalled" ); + mForeground = true; + if (mLocaleChanged) { + LOGS_QDEBUG( "logs [UI] -> locale changed when we were on BG" ); + emit localeChanged(); + mLocaleChanged = false; + } + emit appGainedForeground(); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// void LogsMainWindow::startKeyCapture() { mKeyCapture->captureKey(Qt::Key_Yes); diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/src/logsrecentcallsview.cpp --- a/logsui/logsapp/src/logsrecentcallsview.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/src/logsrecentcallsview.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -161,7 +161,6 @@ void LogsRecentCallsView::handleExit() { markMissedCallsSeen(); - LogsBaseView::handleExit(); } // ----------------------------------------------------------------------------- @@ -405,7 +404,7 @@ void LogsRecentCallsView::handleBackSoftkey() { LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::handleBackSoftkey()" ); - handleExit(); + mViewManager.exitApplication(); LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::handleBackSoftkey()" ); } diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/src/logsviewmanager.cpp --- a/logsui/logsapp/src/logsviewmanager.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/src/logsviewmanager.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -26,7 +26,8 @@ #include "logsservicehandler.h" #include "logsservicehandlerold.h" #include "logsmainwindow.h" -#include "logsapplication.h" +#include "logsappsettings.h" +#include "logsforegroundwatcher.h" //SYSTEM #include @@ -44,10 +45,12 @@ // LogsViewManager::LogsViewManager( LogsMainWindow& mainWindow, LogsServiceHandler& service, - LogsServiceHandlerOld& serviceOld ) : + LogsServiceHandlerOld& serviceOld, + LogsAppSettings& settings) : QObject( 0 ), mMainWindow( mainWindow ), - mService( service ), mServiceOld( serviceOld ), - mFirstActivation(true), mViewActivationShowDialpad(false) + mService( service ), mServiceOld( serviceOld ), mSettings( settings ), + mFirstActivation(true), mViewActivationShowDialpad(false), + mBackgroundStartupWatcher(0) { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::LogsViewManager()" ); @@ -56,6 +59,7 @@ connect( &mainWindow, SIGNAL(orientationChanged(Qt::Orientation)), this, SLOT(handleOrientationChanged()) ); connect( &mainWindow, SIGNAL(appGainedForeground()), this, SLOT(appGainedForeground()) ); + connect( &mainWindow, SIGNAL(appLostForeground()), this, SLOT(appLostForeground()) ); mComponentsRepository = new LogsComponentRepository(*this); @@ -88,6 +92,7 @@ LOGS_QDEBUG( "logs [UI] -> LogsViewManager::~LogsViewManager()" ); delete mComponentsRepository; + delete mBackgroundStartupWatcher; LOGS_QDEBUG( "logs [UI] <- LogsViewManager::~LogsViewManager()" ); } @@ -131,7 +136,7 @@ { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::proceedExit()" ); - if ( static_cast( qApp )->logsFeatureFakeExitEnabled() ){ + if ( mSettings.logsFeatureFakeExitEnabled() ){ doFakeExit(); } else { qApp->quit(); @@ -177,27 +182,11 @@ { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::exitApplication()" ); - LOGS_QDEBUG( "logs [UI] Exit delayed" ); - - // Fake exit by sending app to background + // Send app immetiately to background as there might be some async stuff + // that needs to complete before the process can be terminated. mMainWindow.sendAppToBackground(); - bool exitAllowed( true ); - foreach ( LogsBaseView* view, mViewStack ){ - if ( !view->isExitAllowed() ){ - exitAllowed = false; - connect( view, SIGNAL(exitAllowed()), - this, SLOT(proceedExit()), - Qt::UniqueConnection ); - } - } - if ( exitAllowed ){ - LOGS_QDEBUG( "logs [UI] Handle exit immediataly" ); - proceedExit(); - } else { - // Just wait for signal from view(s) that exiting can proceed - LOGS_QDEBUG( "logs [UI] Delayed exit handling" ); - } + doExitApplication(); LOGS_QDEBUG( "logs [UI] <- LogsViewManager::exitApplication()" ); } @@ -392,26 +381,33 @@ void LogsViewManager::handleFirstActivation() { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::handleFirstActivation()" ); - LogsApplication* app = static_cast(qApp); - Hb::ActivationReason reason = app->activateReason(); - bool isStartedByService( - mService.isStartedUsingService() || mServiceOld.isStartedUsingService() ); - if ( !app->logsFeaturePreloadingEnabled() || - reason == Hb::ActivationReasonActivity || - isStartedByService ){ + + if ( mSettings.logsFeaturePreloadingEnabled() ) { + delete mBackgroundStartupWatcher; + mBackgroundStartupWatcher = 0; + mBackgroundStartupWatcher = new LogsForegroundWatcher(); + connect( mBackgroundStartupWatcher, SIGNAL(gainingForeground()), + this, SLOT(bgStartupForegroundGained()) ); + setTaskSwitcherVisibility(false); + + } else { + Hb::ActivationReason reason = static_cast(qApp)->activateReason(); + bool isStartedByService( + mService.isStartedUsingService() || mServiceOld.isStartedUsingService() ); + // Start immediately using all possible resources mComponentsRepository->model()->refreshData(); + + if ( reason == Hb::ActivationReasonActivity && loadActivity() ){ + LOGS_QDEBUG( "logs [UI] loaded saved activity" ); + mMainWindow.bringAppToForeground(); + } else if ( mFirstActivation && !isStartedByService ) { + activateDefaultView(); + mMainWindow.bringAppToForeground(); + } + + clearActivities(); } - - if ( reason == Hb::ActivationReasonActivity && loadActivity() ){ - LOGS_QDEBUG( "logs [UI] loaded saved activity" ); - mMainWindow.bringAppToForeground(); - } else if ( mFirstActivation && !isStartedByService ) { - changeRecentView( XQService::LogsViewAll, false ); - mMainWindow.bringAppToForeground(); - } - - clearActivities(); LOGS_QDEBUG( "logs [UI] <- LogsViewManager::handleFirstActivation()" ); } @@ -461,11 +457,8 @@ disconnect( view, SIGNAL(exitAllowed()), this, SLOT(proceedExit()) ); } - if ( static_cast( qApp )->logsFeatureFakeExitEnabled() || - static_cast( qApp )->logsFeaturePreloadingEnabled() ){ - mComponentsRepository->model()->refreshData(); - TsTaskSettings taskSettings; - taskSettings.setVisibility(true); + if ( mSettings.logsFeatureFakeExitEnabled() || mSettings.logsFeaturePreloadingEnabled() ){ + endFakeExit(); } LOGS_QDEBUG( "logs [UI] <- LogsViewManager::appGainedForeground()" ); @@ -475,11 +468,28 @@ // // ----------------------------------------------------------------------------- // +void LogsViewManager::appLostForeground() +{ + LOGS_QDEBUG( "logs [UI] -> LogsViewManager::appLostForeground()" ); + + if ( mSettings.logsFeatureFakeExitEnabled() ){ + doExitApplication(false); // Bypass view exit handling + } + // TODO: non-continuus app should also do exit at this point if + // didn't loose foreground because of embedded app. However, no sensible + // way at the moment for handling embedded app foreground monitoring. + + LOGS_QDEBUG( "logs [UI] <- LogsViewManager::appLostForeground()" ); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// void LogsViewManager::activityRequested(const QString &activityId) { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::activityRequested()" ); if ( doLoadActivity(activityId) ){ - clearActivities(); mMainWindow.bringAppToForeground(); } LOGS_QDEBUG( "logs [UI] <- LogsViewManager::activityRequested()" ); @@ -489,6 +499,20 @@ // // ----------------------------------------------------------------------------- // +void LogsViewManager::bgStartupForegroundGained() +{ + LOGS_QDEBUG( "logs [UI] -> LogsViewManager::bgStartupForegroundGained()" ); + delete mBackgroundStartupWatcher; + mBackgroundStartupWatcher = 0; + endFakeExit(); + mMainWindow.bringAppToForeground(); + LOGS_QDEBUG( "logs [UI] <- LogsViewManager::bgStartupForegroundGained()" ); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// void LogsViewManager::doFakeExit() { saveActivity(); @@ -497,8 +521,21 @@ connect( activityManager, SIGNAL(activityRequested(QString)), this, SLOT(activityRequested(QString)), Qt::UniqueConnection ); mComponentsRepository->model()->compressData(); - TsTaskSettings taskSettings; - taskSettings.setVisibility(false); + setTaskSwitcherVisibility(false); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsViewManager::endFakeExit() +{ + setTaskSwitcherVisibility(true); + mComponentsRepository->model()->refreshData(); + if ( !mMainWindow.currentView() ){ + activateDefaultView(); + } + clearActivities(); } // ----------------------------------------------------------------------------- @@ -546,7 +583,7 @@ QVariant args = matchingView->loadActivity(activityId, stream, params); loaded = doActivateView( - matchingView->viewId(), showDialpad, args, dialpadText, true ); + matchingView->viewId(), showDialpad, args, dialpadText ); } LOGS_QDEBUG_2( "logs [UI] <- LogsViewManager::doLoadActivity() loaded:", loaded ); @@ -579,12 +616,64 @@ LOGS_QDEBUG_2( "logs [UI] -> LogsViewManager::activateViewViaService()", viewId ); clearActivities(); closeEmbeddedApplication(); - mMainWindow.bringAppToForeground(); Dialpad* dpad = mComponentsRepository->dialpad(); if ( !showDialpad ){ dpad->closeDialpad(); } dpad->editor().setText(dialpadText); - doActivateView(viewId, showDialpad, args, QString(), true); + if ( doActivateView(viewId, showDialpad, args, QString(), true) ){ + mMainWindow.bringAppToForeground(); + } LOGS_QDEBUG( "logs [UI] <- LogsViewManager::activateViewViaService()" ); } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsViewManager::setTaskSwitcherVisibility(bool visible) +{ + LOGS_QDEBUG_2( "logs [UI] -> LogsViewManager::setTaskSwitcherVisibility()", visible ); + TsTaskSettings taskSettings; + taskSettings.setVisibility(visible); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsViewManager::doExitApplication(bool viewExitHandling) +{ + LOGS_QDEBUG( "logs [UI] -> LogsViewManager::doExitApplication()" ); + + bool exitAllowed( true ); + foreach ( LogsBaseView* view, mViewStack ){ + if ( viewExitHandling ){ + view->handleExit(); + } + if ( !view->isExitAllowed() ){ + exitAllowed = false; + connect( view, SIGNAL(exitAllowed()), + this, SLOT(proceedExit()), + Qt::UniqueConnection ); + } + } + if ( exitAllowed ){ + LOGS_QDEBUG( "logs [UI] Handle exit immediately" ); + proceedExit(); + } else { + // Just wait for signal from view(s) that exiting can proceed + LOGS_QDEBUG( "logs [UI] Delayed exit handling" ); + } + + LOGS_QDEBUG( "logs [UI] <- LogsViewManager::doExitApplication()" ); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsViewManager::activateDefaultView() +{ + changeRecentView( XQService::LogsViewAll, false ); +} diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/src/main.cpp --- a/logsui/logsapp/src/main.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/src/main.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -15,6 +15,7 @@ * */ //USER +#include "logsappsettings.h" #include "logsapplication.h" #include "logsmainwindow.h" #include "logsviewmanager.h" @@ -40,7 +41,8 @@ { LOGS_QDEBUG( "logs [UI] -> main()" ) - LogsApplication app(argc, argv); + LogsAppSettings appSettings(argc, argv); + LogsApplication app(argc, argv, appSettings); #ifdef LOGS_USE_QTRANSLATOR QString lang = QLocale::system().name(); @@ -65,7 +67,8 @@ LogsMainWindow window; //Application ready signal is emitted after startup when UI is fully loaded and functional - QObject::connect( &window, SIGNAL(viewReady()), &app, SLOT(testLogsHandleAppViewReady()) ); + QObject::connect( &window, SIGNAL(viewReady()), &app, SLOT(testLogsHandleAppViewReady()) ); + QObject::connect( &window, SIGNAL(appLostForeground()), &app, SLOT(testLogsResetAppReady()) ); HbStyleLoader::registerFilePath(":/logslayouts"); // Create service handler asap so that services are published fast. @@ -74,7 +77,7 @@ // HbApplication creation takes long time. LogsServiceHandler service; LogsServiceHandlerOld serviceOld; - LogsViewManager viewManager(window, service, serviceOld); + LogsViewManager viewManager(window, service, serviceOld, appSettings); // Don't show window yet as app might be started at background int err = app.exec(); diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsapplication.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsapplication.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsapplication.h Mon Oct 04 00:17:41 2010 +0300 @@ -22,6 +22,7 @@ #include class LogsApplication; +class LogsAppSettings; class UT_LogsApplication : public QObject { @@ -47,12 +48,15 @@ private slots: //test methods + void testConstructor(); void testtestLogsAppEngineReady(); void testtestLogsHandleAppViewReady(); + void testtestLogsResetAppReady(); private: LogsApplication* mLogsApplication; + LogsAppSettings* mSettings; }; #endif //UT_LOGSAPPLICATION_H diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsappsettings.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsappsettings.h Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,58 @@ + +/* +* 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: +* +*/ +#ifndef UT_LOGSAPPSETTINGS_H +#define UT_LOGSAPPSETTINGS_H + + +#include + +class LogsAppSettings; + +class UT_LogsAppSettings : public QObject +{ + Q_OBJECT + +private slots: + +/* + * In addition, there are four private slots that are not treated as testfunctions. + * They will be executed by the testing framework and can be used to initialize and clean up + * either the entire test or the current test function. + * + * initTestCase() will be called before the first testfunction is executed. + * cleanupTestCase() will be called after the last testfunction was executed. + * init() will be called before each testfunction is executed. + * cleanup() will be called after every testfunction. +*/ + void initTestCase(); + void cleanupTestCase(); + void init(); + void cleanup(); + + +private slots: //test methods + + void testLogsFeaturePreloadingEnabled(); + void testLogsFeatureFakeExitEnabled(); + +private: + + LogsAppSettings* mSettings; +}; + +#endif //UT_LOGSAPPSETTINGS_H diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h Mon Oct 04 00:17:41 2010 +0300 @@ -69,6 +69,9 @@ void testSaveActivity(); void testLoadActivity(); + //DetailsViewItem tests + void testUpdateChildItems(); + private: LogsDetailsView* mDetailsView; diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsmainwindow.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsmainwindow.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsmainwindow.h Mon Oct 04 00:17:41 2010 +0300 @@ -51,6 +51,8 @@ void testSendAppToBackground(); void testBringAppToForeground(); void testEventFilter(); + void testObscuredCalled(); + void testRevealedCalled(); private: diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h Mon Oct 04 00:17:41 2010 +0300 @@ -25,6 +25,7 @@ class LogsViewManager; class LogsMainWindow; +class LogsAppSettings; class UT_LogsServiceHandler : public QObject @@ -65,6 +66,7 @@ LogsServiceHandlerOld* mServiceOld; LogsMainWindow* mMainWindow; LogsViewManager* mLogsViewManager; + LogsAppSettings* mSettings; }; #endif //UT_LOGSSERVICEHANDLER_H diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h Mon Oct 04 00:17:41 2010 +0300 @@ -25,6 +25,7 @@ class LogsMainWindow; class LogsServiceHandler; class LogsServiceHandlerOld; +class LogsAppSettings; class UT_LogsViewManager : public QObject { @@ -62,6 +63,7 @@ void testLoadActivity(); void testAppGainedForeground(); void testActivityRequested(); + void testBgStartupForegroundGained(); private: @@ -70,6 +72,8 @@ LogsServiceHandler* mService; LogsServiceHandlerOld* mServiceOld; + + LogsAppSettings* mSettings; }; #endif //UT_LOGSVIEWMANAGER_H diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -127,6 +127,9 @@ LogsMessage* logsMessage = new LogsMessage(); QVariant var = qVariantFromValue(logsMessage); return var; + } else if (role == RoleDuplicatesSeparator) { + bool separator = index.row() == mSeparatorIndex; + return QVariant(separator); } return QVariant(); @@ -149,3 +152,17 @@ return QVariant(); } + +// ----------------------------------------------------------------------------- +// From QAbstractItemModel +// ----------------------------------------------------------------------------- +// +bool LogsDetailsModel::setData(const QModelIndex &index, const QVariant &value, + int role) +{ + Q_UNUSED(role); + Q_UNUSED(index); + if (value.isValid() && value.toBool() != mSeparatorCollapsed) { + mSeparatorCollapsed = !mSeparatorCollapsed; + } +} diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h Mon Oct 04 00:17:41 2010 +0300 @@ -31,12 +31,12 @@ * */ class LogsDetailsModel : public LogsAbstractModel -{ - - - +{ public: - + enum LogsDetailsRole { + RoleDuplicatesSeparator = RoleBaseLast + 1 //used to check whether item is separator + }; + explicit LogsDetailsModel(); public: // The exported API @@ -52,6 +52,10 @@ virtual QVariant data(const QModelIndex &index, int role) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + virtual bool setData(const QModelIndex &index, const QVariant &value, + int role = Qt::EditRole); + + private: private: //testing purpose data @@ -61,6 +65,9 @@ QMap mDetailIcons; QMap mDetailTexts; static QString mLastCallName; //last called exported function name + + int mSeparatorIndex; + bool mSeparatorCollapsed; friend class UT_LogsDetailsView; friend class UT_LogsBaseView; diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/src/main.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/main.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/main.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -26,6 +26,7 @@ #include "ut_logsservicehandler.h" #include "ut_logspageindicator.h" #include "ut_logspageindicatoritem.h" +#include "ut_logsappsettings.h" #include "testrunner.h" #include @@ -80,6 +81,9 @@ UT_LogsPageIndicatorItem ut_logsPageIndicatorItem; testRunner.runTests(ut_logsPageIndicatorItem); + UT_LogsAppSettings ut_logsAppSettings; + testRunner.runTests(ut_logsAppSettings); + //qApp is deleted after this testcase is run //keep this testcase last UT_LogsApplication ut_logsApplication; diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsapplication.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsapplication.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsapplication.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -17,8 +17,8 @@ //USER #include "ut_logsapplication.h" -//#include "hbapplication.h" #include "logsapplication.h" +#include "logsappsettings.h" #include "qthighway_stub_helper.h" #include "hbstubs_helper.h" //SYSTEM @@ -39,8 +39,10 @@ void UT_LogsApplication::init() { - int value = qApp->argc(); - mLogsApplication = new LogsApplication(value,qApp->argv()); + char* argv = 0; + int argc = 0; + mSettings = new LogsAppSettings(argc, &argv); + mLogsApplication = new LogsApplication(argc, &argv, *mSettings); } @@ -48,6 +50,21 @@ { delete mLogsApplication; mLogsApplication = 0; + delete mSettings; + mSettings = 0; +} + +void UT_LogsApplication::testConstructor() +{ + QVERIFY( mLogsApplication->mTestFlags == Hb::DefaultApplicationFlags ); + + delete mLogsApplication; + mLogsApplication = 0; + mSettings->mFeaturePreloadedEnabled = true; + char* argv = 0; + int argc = 0; + mLogsApplication = new LogsApplication(argc, &argv, *mSettings); + QVERIFY( mLogsApplication->mTestFlags == Hb::NoSplash ); } void UT_LogsApplication::testtestLogsAppEngineReady() @@ -113,3 +130,13 @@ QVERIFY( spy.count() == 1 ); } +void UT_LogsApplication::testtestLogsResetAppReady() +{ + mLogsApplication->mViewReady = true; + mLogsApplication->mReadCompleted = true; + mLogsApplication->testLogsResetAppReady(); + QVERIFY( mLogsApplication->mViewReady ); + QVERIFY( !mLogsApplication->mReadCompleted ); + +} + diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsappsettings.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsappsettings.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,84 @@ +/* +* 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: +* +*/ + +//USER +#include "ut_logsappsettings.h" +#include "logsappsettings.h" +#include + +//SYSTEM +#include + +void UT_LogsAppSettings::initTestCase() +{ + +} + +void UT_LogsAppSettings::cleanupTestCase() +{ + +} + + +void UT_LogsAppSettings::init() +{ + int argc = 0; + char* argv = 0; + mSettings = new LogsAppSettings(argc, &argv); +} + +void UT_LogsAppSettings::cleanup() +{ + delete mSettings; + mSettings = 0; +} + +void UT_LogsAppSettings::testLogsFeaturePreloadingEnabled() +{ + QVERIFY( !mSettings->logsFeaturePreloadingEnabled() ); + delete mSettings; + mSettings = 0; + int argc = 2; + char* argv[] = {"-logsbootup", "B"}; + mSettings = new LogsAppSettings(argc, argv); + QVERIFY( mSettings->logsFeaturePreloadingEnabled() ); +} + +void UT_LogsAppSettings::testLogsFeatureFakeExitEnabled() +{ + QVERIFY( mSettings->mFeatureFakeExitEnabledVal == -1 ); + + // No such key + XQSettingsManager::mFailed = true; + QVERIFY( !mSettings->logsFeatureFakeExitEnabled() ); + + // Verify that key is read only once + XQSettingsManager::mFailed = false; + XQSettingsManager::mCurrentVal = 1; + QVERIFY( !mSettings->logsFeatureFakeExitEnabled() ); + + // First read when key is there and value means enabled + mSettings->mFeatureFakeExitEnabledVal = -1; + QVERIFY( mSettings->logsFeatureFakeExitEnabled() ); + + // Value means disabled + XQSettingsManager::mCurrentVal = 0; + mSettings->mFeatureFakeExitEnabledVal = -1; + QVERIFY( !mSettings->logsFeatureFakeExitEnabled() ); +} + + diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -488,7 +488,7 @@ { mViewManager->reset(); mBaseView->handleExit(); - QVERIFY( mViewManager->mExitCalled ); + QVERIFY( !mViewManager->mExitCalled ); } void UT_LogsBaseView::testIsExitAllowed() diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -37,6 +37,7 @@ #include #include #include +#include Q_DECLARE_METATYPE(LogsDetailsModel *) @@ -412,3 +413,38 @@ QVERIFY( model != 0 ); delete model; } + + +void UT_LogsDetailsView::testUpdateChildItems() +{ + HbListView list; + LogsDetailsModel* model = new LogsDetailsModel(); + list.setModel( model, new LogsDetailsViewItem()); + + model->mDetailItemsCount = 5; + QEvent* event = new QEvent(QEvent::GraphicsSceneResize); + qApp->sendEvent(&list, event); //will create list items and call updateChildItems() + + // No separator item + LogsDetailsViewItem* item = static_cast(list.viewItem(0)); + QVERIFY(item); + QVERIFY( !item->mLayout ); + + // Separator item updated OK + model->mSeparatorIndex = 0; + item->updateChildItems(); + QVERIFY( item->mLayout ); + QCOMPARE( item->mLayout->count(), 1 ); + QGraphicsLayoutItem* layoutItem = item->mLayout->itemAt(0); + QVERIFY( static_cast(layoutItem) ); + + // Testing groupBoxClicked() + QVERIFY( model->mSeparatorCollapsed ); + item->groupBoxClicked(false); + QVERIFY( !model->mSeparatorCollapsed ); + + + list.setModel(0); + delete model; +} + diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmainwindow.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmainwindow.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmainwindow.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -92,34 +92,27 @@ void UT_LogsMainWindow::testEventFilter() { QSignalSpy spy( mMainWindow, SIGNAL(localeChanged()) ); - QSignalSpy foregroundSpy( mMainWindow, SIGNAL(appGainedForeground()) ); QVERIFY( !mMainWindow->mKeyCapture->mKeys.contains(Qt::Key_Yes) ); //Event we are not interested in QEvent event(QEvent::Show); QVERIFY( !mMainWindow->eventFilter(this, &event) ); - QVERIFY( !mMainWindow->isForeground() ); QVERIFY( !mMainWindow->mLocaleChanged ); - QCOMPARE( foregroundSpy.count(), 0 ); QVERIFY( !mMainWindow->mKeyCapture->mKeys.contains(Qt::Key_Yes) ); //Coming foreground, locale not changed QEvent eventFg(QEvent::ApplicationActivate); QVERIFY( !mMainWindow->eventFilter(this, &eventFg) ); - QVERIFY( mMainWindow->isForeground() ); QVERIFY( !mMainWindow->mLocaleChanged ); - QCOMPARE( foregroundSpy.count(), 1 ); QVERIFY( mMainWindow->mKeyCapture->mKeys.contains(Qt::Key_Yes) ); - foregroundSpy.clear(); //LocaleChange event on FG + mMainWindow->mForeground = true; QEvent eventLocale(QEvent::LocaleChange); QVERIFY( !mMainWindow->eventFilter(this, &eventLocale) ); - QVERIFY( mMainWindow->isForeground() ); QVERIFY( !mMainWindow->mLocaleChanged ); QVERIFY( spy.count() == 1 ); QVERIFY( mMainWindow->mKeyCapture->mKeys.contains(Qt::Key_Yes) ); - QCOMPARE( foregroundSpy.count(), 0 ); spy.clear(); //Going background partially, surface check is not reliable at the moment so @@ -127,30 +120,51 @@ HbStubHelper::createWindowSurface(); QEvent eventBg(QEvent::ApplicationDeactivate); QVERIFY( !mMainWindow->eventFilter(this, &eventBg) ); - QVERIFY( !mMainWindow->isForeground() ); QVERIFY( !mMainWindow->mLocaleChanged ); QVERIFY( !mMainWindow->mKeyCapture->mKeys.contains(Qt::Key_Yes) ); - QCOMPARE( foregroundSpy.count(), 0 ); //Going background fully HbStubHelper::reset(); QVERIFY( !mMainWindow->eventFilter(this, &eventBg) ); - QVERIFY( !mMainWindow->isForeground() ); QVERIFY( !mMainWindow->mLocaleChanged ); QVERIFY( !mMainWindow->mKeyCapture->mKeys.contains(Qt::Key_Yes) ); - QCOMPARE( foregroundSpy.count(), 0 ); //LocaleChange event on BG + mMainWindow->mForeground = false; QVERIFY( !mMainWindow->eventFilter(this, &eventLocale) ); - QVERIFY( !mMainWindow->isForeground() ); QVERIFY( mMainWindow->mLocaleChanged ); QVERIFY( !mMainWindow->mKeyCapture->mKeys.contains(Qt::Key_Yes) ); QVERIFY( spy.count() == 0 ); +} - //Coming foreground after locale cange event - QVERIFY( !mMainWindow->eventFilter(this, &eventFg) ); +void UT_LogsMainWindow::testObscuredCalled() +{ + QSignalSpy bgSpy( mMainWindow, SIGNAL(appLostForeground()) ); + mMainWindow->mForeground = true; + mMainWindow->obscuredCalled(); + QVERIFY( !mMainWindow->isForeground() ); + QVERIFY( bgSpy.count() == 1 ); +} + +void UT_LogsMainWindow::testRevealedCalled() +{ + QSignalSpy localeSpy( mMainWindow, SIGNAL(localeChanged()) ); + QSignalSpy fgSpy( mMainWindow, SIGNAL(appGainedForeground()) ); + + mMainWindow->mForeground = false; + mMainWindow->revealedCalled(); QVERIFY( mMainWindow->isForeground() ); QVERIFY( !mMainWindow->mLocaleChanged ); - QVERIFY( mMainWindow->mKeyCapture->mKeys.contains(Qt::Key_Yes) ); - QVERIFY( spy.count() == 1 ); + QVERIFY( localeSpy.count() == 0 ); + QVERIFY( fgSpy.count() == 1 ); + + //Coming foreground after locale change event + localeSpy.clear(); + fgSpy.clear(); + mMainWindow->mLocaleChanged = true; + mMainWindow->revealedCalled(); + QVERIFY( mMainWindow->isForeground() ); + QVERIFY( !mMainWindow->mLocaleChanged ); + QVERIFY( localeSpy.count() == 1 ); + QVERIFY( fgSpy.count() == 1 ); } diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -26,6 +26,7 @@ #include "logscomponentrepository.h" #include "logsmatchesview.h" #include "logsdefs.h" +#include "logsappsettings.h" #include //SYSTEM @@ -47,8 +48,10 @@ mMainWindow = new LogsMainWindow(); mService = new LogsServiceHandler(); mServiceOld = new LogsServiceHandlerOld(); - - mLogsViewManager = new LogsViewManager(*mMainWindow, *mService, *mServiceOld); + char* argv = 0; + int argc = 0; + mSettings = new LogsAppSettings(argc, &argv); + mLogsViewManager = new LogsViewManager(*mMainWindow, *mService, *mServiceOld, *mSettings); } @@ -62,6 +65,8 @@ mMainWindow = 0; delete mLogsViewManager; mLogsViewManager = 0; + delete mSettings; + mSettings = 0; QtHighwayStubHelper::reset(); } diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -28,7 +28,9 @@ #include "hbstubs_helper.h" #include "logscontact.h" #include "qthighway_stub_helper.h" -#include "logsapplication.h" +#include "hbapplication.h" +#include "logsappsettings.h" +#include "logsforegroundwatcher.h" //SYSTEM #include @@ -50,8 +52,11 @@ { mMainWindow = new LogsMainWindow(); mService = new LogsServiceHandler(); - mServiceOld = new LogsServiceHandlerOld(); - mLogsViewManager = new LogsViewManager(*mMainWindow, *mService, *mServiceOld); + mServiceOld = new LogsServiceHandlerOld(); + int argc = 0; + char* argv = 0; + mSettings = new LogsAppSettings(argc, &argv); + mLogsViewManager = new LogsViewManager(*mMainWindow, *mService, *mServiceOld, *mSettings); } void UT_LogsViewManager::cleanup() @@ -64,9 +69,8 @@ mServiceOld = 0; delete mMainWindow; mMainWindow = 0; - LogsApplication* app = static_cast( qApp ); - app->mFeatureFakeExitEnabled = false; - app->mFeaturePreloadedEnabled = false; + delete mSettings; + mSettings = 0; } @@ -78,7 +82,7 @@ QVERIFY( mLogsViewManager->mMainWindow.currentView() != 0 ); QVERIFY( static_cast( mLogsViewManager->mMainWindow.currentView() )->viewId() == LogsRecentViewId ); QVERIFY( mLogsViewManager->mViewStack.count() == 1 ); - QVERIFY( !mLogsViewManager->mComponentsRepository->model()->mRefreshCalled ); + QVERIFY( mLogsViewManager->mComponentsRepository->model()->mRefreshCalled ); delete mLogsViewManager; mLogsViewManager = 0; @@ -88,7 +92,7 @@ mMainWindow = 0; mMainWindow = new LogsMainWindow(); HbStubHelper::setActivityReason(Hb::ActivationReasonActivity); - mLogsViewManager = new LogsViewManager(*mMainWindow, *mService, *mServiceOld); + mLogsViewManager = new LogsViewManager(*mMainWindow, *mService, *mServiceOld, *mSettings); QVERIFY( mLogsViewManager->mComponentsRepository ); QVERIFY( static_cast( mLogsViewManager->mMainWindow.currentView() )->viewId() == LogsRecentViewId ); QVERIFY( mLogsViewManager->mViewStack.count() == 1 ); @@ -103,14 +107,32 @@ QtHighwayStubHelper::setIsService(true); LogsServiceHandler* handler2 = new LogsServiceHandler(); mLogsViewManager->mComponentsRepository->model()->mRefreshCalled = false; - mLogsViewManager = new LogsViewManager(*mMainWindow, *handler2, *mServiceOld); + mLogsViewManager = new LogsViewManager(*mMainWindow, *handler2, *mServiceOld, *mSettings); QVERIFY( mLogsViewManager->mComponentsRepository ); QVERIFY( static_cast( mLogsViewManager->mMainWindow.currentView() )->viewId() == LogsRecentViewId ); QVERIFY( mLogsViewManager->mViewStack.count() == 0 ); // Waiting for signal QVERIFY( mLogsViewManager->mComponentsRepository->model()->mRefreshCalled ); + QVERIFY( !mLogsViewManager->mBackgroundStartupWatcher ); HbStubHelper::reset(); QtHighwayStubHelper::reset(); delete handler2; + + // Preloading startup + mSettings->mFeaturePreloadedEnabled = true; + delete mMainWindow; + mMainWindow = 0; + mMainWindow = new LogsMainWindow(); + mLogsViewManager->mComponentsRepository->model()->mRefreshCalled = false; + mLogsViewManager = new LogsViewManager(*mMainWindow, *mService, *mServiceOld, *mSettings); + QVERIFY( mLogsViewManager->mComponentsRepository ); + QVERIFY( static_cast( mLogsViewManager->mMainWindow.currentView() )->viewId() == LogsRecentViewId ); + QVERIFY( mLogsViewManager->mViewStack.count() == 0 ); // Waiting for coming to foreground + QVERIFY( !mLogsViewManager->mComponentsRepository->model()->mRefreshCalled ); + QVERIFY( HbStubHelper::isTsTaskVisibilitySet() ); + QVERIFY( !HbStubHelper::tsTaskVisibility() ); + QVERIFY( mLogsViewManager->mBackgroundStartupWatcher ); + HbStubHelper::reset(); + QtHighwayStubHelper::reset(); } @@ -247,11 +269,11 @@ QVERIFY( !mLogsViewManager->mComponentsRepository->model()->mCompressCalled ); // Fake exit enabled, data is compressed, app hidden and activity saved - LogsApplication* app = static_cast( qApp ); - app->mFeatureFakeExitEnabled = true; + mSettings->mFeatureFakeExitEnabledVal = 1; HbStubHelper::reset(); mLogsViewManager->mComponentsRepository->model()->mCompressCalled = false; QtHighwayStubHelper::reset(); + HbApplication* app = static_cast( qApp ); QCOMPARE( app->activityManager()->activities().count(), 0 ); mLogsViewManager->exitApplication(); QVERIFY( !HbStubHelper::quitCalled() ); @@ -272,7 +294,7 @@ LogsServiceHandler service; LogsServiceHandlerOld serviceOld; service.mIsAppStartedUsingService = true; - LogsViewManager vm(window, service, serviceOld); + LogsViewManager vm(window, service, serviceOld, *mSettings); QVERIFY( vm.mComponentsRepository ); QVERIFY( vm.mMainWindow.views().count() == 0 ); QVERIFY( vm.mMainWindow.currentView() == 0 ); @@ -379,18 +401,22 @@ QVERIFY( !mLogsViewManager->mComponentsRepository->model()->mRefreshCalled ); // Gaining foreground causes data refresh if fake exit or preloading feature is enabled + // If no view activated yet, default view is activated HbStubHelper::reset(); - LogsApplication* app = static_cast( qApp ); - app->mFeatureFakeExitEnabled = true; + mMainWindow->setCurrentView(0); + mLogsViewManager->mViewStack.clear(); + mSettings->mFeatureFakeExitEnabledVal = 1; mLogsViewManager->appGainedForeground(); QVERIFY( mLogsViewManager->mComponentsRepository->model()->mRefreshCalled ); QVERIFY( HbStubHelper::isTsTaskVisibilitySet() ); QVERIFY( HbStubHelper::tsTaskVisibility() ); + QVERIFY( mMainWindow->currentView() != 0 ); + QCOMPARE( mLogsViewManager->mViewStack.count(), 1 ); HbStubHelper::reset(); mLogsViewManager->mComponentsRepository->model()->mRefreshCalled = false; - app->mFeatureFakeExitEnabled = false; - app->mFeaturePreloadedEnabled = true; + mSettings->mFeatureFakeExitEnabledVal = 0; + mSettings->mFeaturePreloadedEnabled = true; mLogsViewManager->appGainedForeground(); QVERIFY( mLogsViewManager->mComponentsRepository->model()->mRefreshCalled ); QVERIFY( HbStubHelper::isTsTaskVisibilitySet() ); @@ -421,3 +447,18 @@ QCOMPARE( mLogsViewManager->mComponentsRepository->dialpad()->mLineEdit->text(), QString("") ); QVERIFY( HbStubHelper::isWidgetRaised() ); } + +void UT_LogsViewManager::testBgStartupForegroundGained() +{ + if ( !mLogsViewManager->mBackgroundStartupWatcher ){ + mLogsViewManager->mBackgroundStartupWatcher = new LogsForegroundWatcher(); + } + HbStubHelper::reset(); + mLogsViewManager->mComponentsRepository->model()->mRefreshCalled = false; + mSettings->mFeaturePreloadedEnabled = true; + mLogsViewManager->bgStartupForegroundGained(); + QVERIFY( mLogsViewManager->mComponentsRepository->model()->mRefreshCalled ); + QVERIFY( HbStubHelper::isTsTaskVisibilitySet() ); + QVERIFY( HbStubHelper::tsTaskVisibility() ); + QVERIFY( HbStubHelper::isWidgetRaised() ); +} diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h --- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h Mon Oct 04 00:17:41 2010 +0300 @@ -27,7 +27,7 @@ class HbApplication : public QApplication { public: - HbApplication(int &/*argc*/, char */*argv*/[]); + HbApplication(int &/*argc*/, char */*argv*/[], Hb::ApplicationFlags flags = Hb::DefaultApplicationFlags); ~HbApplication(); HbActivityManager *activityManager(); @@ -37,6 +37,9 @@ QVariant activateData(); static void quit(); + +public: + Hb::ApplicationFlags mTestFlags; }; #endif//HBAPPLICATION_H diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -353,8 +353,8 @@ // // ----------------------------------------------------------------------------- // -HbApplication::HbApplication(int &argc, char *argv[]) : - QApplication(0, argc, argv, 0) +HbApplication::HbApplication(int &argc, char *argv[], Hb::ApplicationFlags flags) : + QApplication(0, argc, argv, 0), mTestFlags(flags) { } diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/stubs/xqsettingskey.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/xqsettingskey.h Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,46 @@ +/* +* Copyright (c) 2005 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 XQSETTINGSITEM_H +#define XQSETTINGSITEM_H + + +// CLASS DECLARATION +class XQSettingsKey +{ +public: + enum Target + { + TargetCentralRepository = 0, + TargetPublishAndSubscribe + }; + + XQSettingsKey(XQSettingsKey::Target target, long int uid, unsigned long int key); + ~XQSettingsKey(); + + XQSettingsKey::Target target() const; + long int uid() const; + unsigned long int key() const; + +protected: + XQSettingsKey::Target m_target; + long int m_uid; + unsigned long int m_key; +}; + + +#endif //XQSETTINGSITEM_H diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/stubs/xqsettingsmanager.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/xqsettingsmanager.h Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,50 @@ +/* +* Copyright (c) 2005 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 XQSETTINGSMANAGER_H +#define XQSETTINGSMANAGER_H + +#include "xqsettingskey.h" + +// CLASS DECLARATION +class XQSettingsManager +{ +public: + + enum Type + { + TypeVariant = 0, + TypeInt, + TypeDouble, + TypeString, + TypeByteArray + }; + + XQSettingsManager(); + ~XQSettingsManager(); + + QVariant readItemValue(const XQSettingsKey& key, XQSettingsManager::Type type = XQSettingsManager::TypeVariant); + bool writeItemValue(const XQSettingsKey& key, const QVariant& value); + +public: + static bool mFailed; + static int mCurrentVal; +}; + +#endif // XQSETTINGSMANAGER_H + +// End of file diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/stubs/xqsettingsmanager_stub.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/xqsettingsmanager_stub.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,91 @@ +/* +* Copyright (c) 2005 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 + +bool XQSettingsManager::mFailed = false; +int XQSettingsManager::mCurrentVal = 0; + +////////////////////////////////////////////////////////////////////////////////////////// +// XQSettingsManager +////////////////////////////////////////////////////////////////////////////////////////// + +XQSettingsManager::XQSettingsManager() +{ +} + +XQSettingsManager::~XQSettingsManager() +{ + +} + +QVariant XQSettingsManager::readItemValue(const XQSettingsKey& key, + XQSettingsManager::Type type) +{ + Q_UNUSED(key); + Q_UNUSED(type); + if (mFailed) + return QVariant(); + else + return QVariant(mCurrentVal); +} + +bool XQSettingsManager::writeItemValue(const XQSettingsKey& key, const QVariant& value) +{ + Q_UNUSED(key); + if (mFailed) { + return false; + } + else { + mCurrentVal = value.toInt(); + return true; + } +} + +////////////////////////////////////////////////////////////////////////////////////////// +// XQSettingsKey +////////////////////////////////////////////////////////////////////////////////////////// + +XQSettingsKey::XQSettingsKey(XQSettingsKey::Target target, long int uid, unsigned long int key) +{ + m_target = target; + m_uid = uid; + m_key = key; +} + +XQSettingsKey::~XQSettingsKey() +{ + +} + +XQSettingsKey::Target XQSettingsKey::target() const +{ + return m_target; +} + +long int XQSettingsKey::uid() const +{ + return m_uid; +} + +unsigned long int XQSettingsKey::key() const +{ + return m_key; +} diff -r e4c884866116 -r 6a40edd41841 logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro --- a/logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro Mon Oct 04 00:17:41 2010 +0300 @@ -39,8 +39,10 @@ # Input -HEADERS += stubs/xqkeycapture.h -HEADERS += stubs/tstasksettings.h +HEADERS += ./stubs/xqkeycapture.h +HEADERS += ./stubs/xqsettingskey.h +HEADERS += ./stubs/xqsettingsmanager.h +HEADERS += ./stubs/tstasksettings.h HEADERS += ./stubs/hbapplication.h HEADERS += inc/ut_logsmainwindow.h HEADERS += inc/ut_logscomponentrepository.h @@ -54,8 +56,10 @@ HEADERS += inc/ut_logspageindicatoritem.h HEADERS += inc/ut_logsservicehandler.h HEADERS += inc/ut_logsapplication.h +HEADERS += inc/ut_logsappsettings.h HEADERS += ../../inc/logsmainwindow.h HEADERS += ../../inc/logsapplication.h +HEADERS += ../../inc/logsappsettings.h HEADERS += ../../inc/logsviewmanager.h HEADERS += ../../inc/logscomponentrepository.h HEADERS += ../../inc/logsrecentcallsview.h @@ -67,8 +71,8 @@ HEADERS += ../../inc/logseffecthandler.h HEADERS += ../../inc/logspageindicator.h HEADERS += ../../inc/logspageindicatoritem.h -#HEADERS += ../../../logsengine/inc/logscommondata.h HEADERS += ../../../logsengine/inc/logsconfigurationparams.h +HEADERS += ../../../logsengine/logssymbianos/inc/logsforegroundwatcher.h HEADERS += logsengine_stub/logscontact.h HEADERS += ./stubs/dialpad.h HEADERS += ./stubs/dialpadkeyhandler.h @@ -99,6 +103,7 @@ SOURCES += src/ut_logspageindicator.cpp SOURCES += src/ut_logspageindicatoritem.cpp SOURCES += src/ut_logsapplication.cpp +SOURCES += src/ut_logsappsettings.cpp SOURCES += ../../src/logsbaseview.cpp SOURCES += ../../src/logsrecentcallsview.cpp SOURCES += ../../src/logsdetailsview.cpp @@ -109,18 +114,22 @@ SOURCES += ../../src/logspageindicator.cpp SOURCES += ../../src/logspageindicatoritem.cpp SOURCES += ../../src/logsapplication.cpp +SOURCES += ../../src/logsappsettings.cpp +SOURCES += ../../../logsengine/logssymbianos/src/logsforegroundwatcher.cpp SOURCES += ../../../tsrc/qtestutils/src/testrunner.cpp SOURCES += ./stubs/hbstubs.cpp SOURCES += ./stubs/qthighway_stub.cpp SOURCES += ./stubs/dialpad_stub.cpp SOURCES += ./stubs/dialpadkeyhandler_stub.cpp +SOURCES += ./stubs/xqsettingsmanager_stub.cpp symbian: { TARGET.UID2 = 0x100039CE TARGET.UID3 = 0xEb768cbc TARGET.CAPABILITY = ALL -TCB TARGET.EPOCALLOWDLLDATA = 1 - LIBS += -lxqservice -lxqserviceutil -lxqkeycapture + LIBS += -lxqservice -lxqserviceutil -lxqkeycapture -lapparc -lcone + MMP_RULES += SMPSAFE } DOCML += ../../resources/recentCallsView.docml diff -r e4c884866116 -r 6a40edd41841 logsui/logscntfinder/logscntfinder.pro --- a/logsui/logscntfinder/logscntfinder.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logscntfinder/logscntfinder.pro Mon Oct 04 00:17:41 2010 +0300 @@ -66,4 +66,5 @@ "DEFFILE eabi/logscntfinder.def" \ "$${LITERAL_HASH}endif" MMP_RULES += defFiles + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/logscntfinder/tsrc/lcfprotoui/lcfprotoui.pro --- a/logsui/logscntfinder/tsrc/lcfprotoui/lcfprotoui.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logscntfinder/tsrc/lcfprotoui/lcfprotoui.pro Mon Oct 04 00:17:41 2010 +0300 @@ -43,6 +43,6 @@ TARGET.UID3 = 0x101F4CD6 TARGET.CAPABILITY = CAP_APPLICATION LIBS += -llogscntfinder - + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro --- a/logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro Mon Oct 04 00:17:41 2010 +0300 @@ -51,4 +51,5 @@ -lxqservice \ -lQtContacts \ -llogscntfinder + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro --- a/logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro Mon Oct 04 00:17:41 2010 +0300 @@ -50,4 +50,5 @@ TARGET.CAPABILITY = ALL -TCB TARGET.EPOCALLOWDLLDATA = 1 LIBS += -lflogger -lqtcontacts -llogscntfinder + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/logscntfinder/tsrc/ut_logscntfinder/ut_logscntfinder.pro --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/ut_logscntfinder.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/ut_logscntfinder.pro Mon Oct 04 00:17:41 2010 +0300 @@ -70,5 +70,5 @@ TARGET.CAPABILITY = ALL -TCB TARGET.EPOCALLOWDLLDATA = 1 LIBS += -lflogger -lqtcontacts - + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/inc/logsdetailsmodel.h --- a/logsui/logsengine/inc/logsdetailsmodel.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/inc/logsdetailsmodel.h Mon Oct 04 00:17:41 2010 +0300 @@ -37,6 +37,10 @@ public: + enum LogsDetailsRole { + RoleDuplicatesSeparator = RoleBaseLast + 1 //used to check whether item is separator + }; + explicit LogsDetailsModel( LogsDbConnector& dbConnector, LogsEvent& event ); public: // The exported API @@ -53,6 +57,8 @@ virtual QVariant data(const QModelIndex &index, int role) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + virtual bool setData(const QModelIndex &index, const QVariant &value, + int role = Qt::EditRole); protected: // From LogsAbstractModel @@ -86,6 +92,9 @@ QList mDetailTexts; QList mDuplicates; + int mSeparatorIndex; + bool mSeparatorCollapsed; + private: friend class UT_LogsModel; diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/logsengine.pro --- a/logsui/logsengine/logsengine.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/logsengine.pro Mon Oct 04 00:17:41 2010 +0300 @@ -105,4 +105,5 @@ "DEFFILE eabi/logsengine.def" \ "$${LITERAL_HASH}endif" MMP_RULES += defFiles + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/logssymbianos/inc/logsforegroundwatcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsengine/logssymbianos/inc/logsforegroundwatcher.h Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,45 @@ +/* +* 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: +* +*/ +#ifndef LOGSFOREGROUNDWATCHER_H +#define LOGSFOREGROUNDWATCHER_H + + +#include +#include + +class LogsForegroundWatcher : public QObject, public MCoeForegroundObserver +{ + Q_OBJECT + +public: + + LogsForegroundWatcher(QObject* parent = 0); + virtual ~LogsForegroundWatcher(); + + static void ensureBackgroundStartup(); + +signals: + void gainingForeground(); + void losingForeground(); + +public: // from MCoeForegroundObserver + void HandleGainingForeground(); + void HandleLosingForeground(); + +}; + +#endif //LOGSFOREGROUNDWATCHER_H diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/logssymbianos/src/logsdbconnector.cpp --- a/logsui/logsengine/logssymbianos/src/logsdbconnector.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/logssymbianos/src/logsdbconnector.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -356,6 +356,8 @@ releaseDbConnections(); + mFirstReadCompleted = false; // For testing + LOGS_QDEBUG( "logs [ENG] <- LogsDbConnector::compressData()" ) return 0; } diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/logssymbianos/src/logsforegroundwatcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsengine/logssymbianos/src/logsforegroundwatcher.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,92 @@ +/* +* 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: +* +*/ + +#include "logsforegroundwatcher.h" +#include "logslogger.h" +#include + + +// ----------------------------------------------------------------------------- +// Currently no other way to monitor first app foreground switch in case +// mainwindow is not made yet visible. +// ----------------------------------------------------------------------------- +// +LogsForegroundWatcher::LogsForegroundWatcher(QObject* parent) : QObject(parent) +{ + CCoeEnv* env = CCoeEnv::Static(); + if (env) { + TRAP_IGNORE(env->AddForegroundObserverL(*this)); + } +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsForegroundWatcher::~LogsForegroundWatcher() +{ + CCoeEnv* env = CCoeEnv::Static(); + if (env) { + env->RemoveForegroundObserver(*this); + } +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsForegroundWatcher::ensureBackgroundStartup() +{ + CApaCommandLine* commandLine = 0; + CApaCommandLine::GetCommandLineFromProcessEnvironment(commandLine); + if ( commandLine ){ + TApaCommand command = commandLine->Command(); + if (command != EApaCommandBackground) { + LOGS_QDEBUG( "logs [UI] -> LogsForegroundWatcher::ensureBackgroundStartup"); + TRAPD( err, commandLine->SetCommandL( EApaCommandBackground ) ); + if ( !err ){ + RProcess thisProcess; + TRAP_IGNORE( commandLine->SetProcessEnvironmentL(thisProcess) ) + } + LOGS_QDEBUG( "logs [UI] <- LogsForegroundWatcher::ensureBackgroundStartup"); + } + delete commandLine; + } +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsForegroundWatcher::HandleGainingForeground() +{ + LOGS_QDEBUG( "logs [UI] -> LogsForegroundWatcher::HandleGainingForeground" ); + emit gainingForeground(); + LOGS_QDEBUG( "logs [UI] <- LogsForegroundWatcher::HandleGainingForeground" ); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsForegroundWatcher::HandleLosingForeground() +{ + LOGS_QDEBUG( "logs [UI] -> LogsForegroundWatcher::HandleLosingForeground" ); + emit losingForeground(); + LOGS_QDEBUG( "logs [UI] <- LogsForegroundWatcher::HandleLosingForeground" ); +} + diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/inc/ut_logsforegroundwatcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/inc/ut_logsforegroundwatcher.h Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,59 @@ +/* +* 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: +* +*/ +#ifndef UT_LOGSFOREGROUNDWATCHER_H +#define UT_LOGSFOREGROUNDWATCHER_H + +#include + +class LogsForegroundWatcher; + +class UT_LogsForegroundWatcher : public QObject +{ + Q_OBJECT + +private slots: + +/* + * In addition, there are four private slots that are not treated as testfunctions. + * They will be executed by the testing framework and can be used to initialize and clean up + * either the entire test or the current test function. + * + * initTestCase() will be called before the first testfunction is executed. + * cleanupTestCase() will be called after the last testfunction was executed. + * init() will be called before each testfunction is executed. + * cleanup() will be called after every testfunction. +*/ + void initTestCase(); + void cleanupTestCase(); + void init(); + void cleanup(); + +private slots: //test methods + void testConstructor(); + void testHandleLosingForeground(); + void testHandleGainingForeground(); + void testEnsureBackgroundStartup(); + + +private: + + LogsForegroundWatcher* mWatcher; + +}; + + +#endif //UT_LOGSFOREGROUNDWATCHER_H diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/main.cpp --- a/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/main.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/main.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -26,6 +26,7 @@ #include "testrunner.h" #include "ut_logsremove.h" #include "ut_logsremovestates.h" +#include "ut_logsforegroundwatcher.h" int main(int argc, char *argv[]) @@ -66,6 +67,9 @@ UT_LogsEventDataParser ut_logsEventData; testRunner.runTests(ut_logsEventData); + UT_LogsForegroundWatcher ut_logsForegroundWatcher; + testRunner.runTests(ut_logsForegroundWatcher); + testRunner.printResults(); return 0; diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsforegroundwatcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsforegroundwatcher.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -0,0 +1,138 @@ +/* +* 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: +* +*/ +#include "ut_logsforegroundwatcher.h" +#include "logsforegroundwatcher.h" + +#include +#include +#include + +CCoeEnv* testEnv = 0; +bool testCommandlineExists = false; +bool testCommandLineCommandBg = false; +bool testCommandLineSetForProcess = false; + +CCoeEnv* CCoeEnv::Static() +{ + if ( !testEnv ){ + testEnv = new CCoeEnv(); + } + return testEnv; +} + +CCoeEnv::CCoeEnv() : CActive(EPriorityNormal) +{ + +} + +CCoeEnv::~CCoeEnv() +{ +} + +void CCoeEnv::AddForegroundObserverL(MCoeForegroundObserver& /*aForegroundObserver*/) +{ + +} + +void CCoeEnv::RemoveForegroundObserver(MCoeForegroundObserver& /*aForegroundObserver*/) +{ + +} + +TInt CApaCommandLine::GetCommandLineFromProcessEnvironment(CApaCommandLine*& aCommandLine) +{ + if ( testCommandlineExists ){ + aCommandLine = CApaCommandLine::NewL(); + if ( testCommandLineCommandBg ){ + TRAP_IGNORE( aCommandLine->SetCommandL(EApaCommandBackground) ) + } else { + TRAP_IGNORE( aCommandLine->SetCommandL(EApaCommandRun) ) + } + } else { + aCommandLine = 0; + } + return KErrNone; +} + +void CApaCommandLine::SetProcessEnvironmentL(RProcess& /*aProcess*/) const +{ + if ( Command() == EApaCommandBackground ){ + testCommandLineSetForProcess = true; + } +} + +void UT_LogsForegroundWatcher::initTestCase() +{ +} + +void UT_LogsForegroundWatcher::cleanupTestCase() +{ + delete testEnv; + testEnv = 0; +} + +void UT_LogsForegroundWatcher::init() +{ + mWatcher = new LogsForegroundWatcher(); +} + +void UT_LogsForegroundWatcher::cleanup() +{ + delete mWatcher; +} + +void UT_LogsForegroundWatcher::testConstructor() +{ + QVERIFY( mWatcher ); +} + +void UT_LogsForegroundWatcher::testHandleLosingForeground() +{ + QSignalSpy spyGaining( mWatcher, SIGNAL(gainingForeground()) ); + QSignalSpy spyLosing( mWatcher, SIGNAL(losingForeground()) ); + mWatcher->HandleLosingForeground(); + QVERIFY( spyGaining.count() == 0 ); + QVERIFY( spyLosing.count() == 1 ); +} + +void UT_LogsForegroundWatcher::testHandleGainingForeground() +{ + QSignalSpy spyGaining( mWatcher, SIGNAL(gainingForeground()) ); + QSignalSpy spyLosing( mWatcher, SIGNAL(losingForeground()) ); + mWatcher->HandleGainingForeground(); + QVERIFY( spyGaining.count() == 1 ); + QVERIFY( spyLosing.count() == 0 ); +} + +void UT_LogsForegroundWatcher::testEnsureBackgroundStartup() +{ + // No commandline + mWatcher->ensureBackgroundStartup(); + QVERIFY( !testCommandLineSetForProcess ); + + // Command line already has bg command + testCommandlineExists = true; + testCommandLineCommandBg = true; + mWatcher->ensureBackgroundStartup(); + QVERIFY( !testCommandLineSetForProcess ); + + // Command line does not have bg command + testCommandLineCommandBg = false; + mWatcher->ensureBackgroundStartup(); + QVERIFY( testCommandLineSetForProcess ); +} + diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/ut_logssymbianos.pro --- a/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/ut_logssymbianos.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/ut_logssymbianos.pro Mon Oct 04 00:17:41 2010 +0300 @@ -36,6 +36,8 @@ DEFINES += QT_NO_DEBUG_OUTPUT # Input +HEADERS += ../stubs/xqsettingskey.h +HEADERS += ../stubs/xqsettingsmanager.h HEADERS += inc/ut_logsdbconnector.h HEADERS += inc/ut_logsreader.h HEADERS += inc/ut_logsreaderstates.h @@ -43,6 +45,7 @@ HEADERS += inc/ut_logseventdataparser.h HEADERS += inc/ut_logsremove.h HEADERS += inc/ut_logsremovestates.h +HEADERS += inc/ut_logsforegroundwatcher.h HEADERS += ../../inc/logsdbconnector.h HEADERS += ../../inc/logsworker.h HEADERS += ../../inc/logsreader.h @@ -50,6 +53,7 @@ HEADERS += ../../inc/logsreaderobserver.h HEADERS += ../../inc/logsremove.h HEADERS += ../../inc/logsremovestates.h +HEADERS += ../../inc/logsforegroundwatcher.h HEADERS += ../../../../../recents_plat/logs_engine_api/inc/logsevent.h HEADERS += ../../../inc/logseventdata.h HEADERS += ../../../inc/logscommondata.h @@ -65,6 +69,7 @@ SOURCES += src/ut_logseventdataparser.cpp SOURCES += src/ut_logsremove.cpp SOURCES += src/ut_logsremovestates.cpp +SOURCES += src/ut_logsforegroundwatcher.cpp SOURCES += ../../src/logsdbconnector.cpp SOURCES += ../../src/logsworker.cpp SOURCES += ../../src/logsreader.cpp @@ -74,6 +79,7 @@ SOURCES += ../../src/logseventdataparser.cpp SOURCES += ../../src/logsremove.cpp SOURCES += ../../src/logsremovestates.cpp +SOURCES += ../../src/logsforegroundwatcher.cpp SOURCES += ../../../src/logsevent.cpp SOURCES += ../../../src/logseventdata.cpp SOURCES += ../../../src/logscommondata.cpp @@ -89,6 +95,7 @@ TARGET.UID2 = 0x100039CE TARGET.UID3 = 0xEfaaa9b2 TARGET.CAPABILITY = ALL -TCB - LIBS += -lecom -lflogger -lws32 -lbafl -lqtcontacts -lefsrv + LIBS += -lecom -lflogger -lws32 -lbafl -lqtcontacts -lefsrv -lapparc -lcone TARGET.EPOCALLOWDLLDATA = 1 + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/src/logsdetailsmodel.cpp --- a/logsui/logsengine/src/logsdetailsmodel.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/src/logsdetailsmodel.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -36,7 +36,9 @@ // LogsDetailsModel::LogsDetailsModel( LogsDbConnector& dbConnector, LogsEvent& event ) : LogsAbstractModel(), - mEvent( 0 ) + mEvent( 0 ), + mSeparatorIndex(-1), + mSeparatorCollapsed(true) { LOGS_QDEBUG( "logs [ENG] -> LogsDetailsModel::LogsDetailsModel()" ) @@ -90,7 +92,11 @@ // int LogsDetailsModel::rowCount(const QModelIndex & /* parent */) const { - return mDetailTexts.count(); + if (mSeparatorIndex >= 0 && mSeparatorCollapsed) { + return mSeparatorIndex + 1; + } else { + return mDetailTexts.count(); + } } // ----------------------------------------------------------------------------- @@ -102,7 +108,6 @@ if (!index.isValid() || index.row() >= mDetailTexts.count() || index.row() < 0 ) { return QVariant(); } - if (role == Qt::DisplayRole){ QStringList text; getDisplayData(index.row(), text); @@ -112,6 +117,10 @@ getDecorationData(index.row(), icons); return QVariant(icons); } + else if (role == RoleDuplicatesSeparator) { + bool separator = index.row() == mSeparatorIndex; + return QVariant(separator); + } LogsModelItemContainer item(mEvent); return doGetData(role, item); } @@ -134,6 +143,38 @@ } // ----------------------------------------------------------------------------- +// From QAbstractItemModel +// ----------------------------------------------------------------------------- +// +bool LogsDetailsModel::setData(const QModelIndex &index, const QVariant &value, + int role) +{ + Q_UNUSED(role); + LOGS_QDEBUG( "logs [ENG] -> LogsDetailsModel::setData()" ) + bool dataSet( false ); + if (index.row() == mSeparatorIndex + && value.isValid() + && value.toBool() != mSeparatorCollapsed + && mSeparatorIndex < mDetailTexts.count()-1) { + + LOGS_QDEBUG( "logs [ENG] separator state changed!" ) + mSeparatorCollapsed = !mSeparatorCollapsed; + if (mSeparatorCollapsed) { + LOGS_QDEBUG( "logs [ENG] collapsing separator" ) + beginRemoveRows(QModelIndex(), mSeparatorIndex+1, mDetailTexts.count()-1); + endRemoveRows(); + } else { + LOGS_QDEBUG( "logs [ENG] expanding separator" ) + beginInsertRows(QModelIndex(), mSeparatorIndex+1, mDetailTexts.count()-1); + endInsertRows(); + } + dataSet = true; + } + LOGS_QDEBUG( "logs [ENG] <- LogsDetailsModel::setData()" ) + return dataSet; +} + +// ----------------------------------------------------------------------------- // From LogsAbstractModel // ----------------------------------------------------------------------------- // @@ -400,7 +441,13 @@ callDurationRow << durationString(t); mDetailTexts.append(callDurationRow); } - + if (mDuplicates.count() > 0) { + QStringList separatorRow; + separatorRow << hbTrId("txt_dialer_pri_previous_calls").arg(mDuplicates.count()); + mSeparatorIndex = mDetailTexts.count(); + mDetailTexts.append(separatorRow); + } + foreach ( LogsEvent* event, mDuplicates ){ addDateAndTimeTextRow(*event); } @@ -431,6 +478,11 @@ mDetailIcons.append(durationIcon); } + if (mDuplicates.count() > 0) { //put some dummy icon + HbIcon* separatorIcon = new HbIcon(); + mDetailIcons.append(separatorIcon); + } + foreach ( LogsEvent* event, mDuplicates ){ // Having multiple date and time icon instances has no performance // penalty due resource sharing inside HbIcon impl diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/src/logsmessage.cpp --- a/logsui/logsengine/src/logsmessage.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/src/logsmessage.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -20,6 +20,7 @@ #include "logslogger.h" #include "logseventdata.h" #include +#include //SYSTEM @@ -90,8 +91,9 @@ delete mService; mService = 0; - mService = new XQServiceRequest("com.nokia.services.hbserviceprovider.conversationview", - "send(QString,qint32,QString)", false); + QString serviceName("messaging."); + serviceName.append(XQI_MESSAGE_SEND); + mService = new XQServiceRequest(serviceName, XQOP_MESSAGE_SEND_WITH_ID, false); bool sending = doSendMessageToNumber(*mService, mNumber, mDisplayName, mContactId); connect(mService, SIGNAL(requestCompleted(QVariant)), this, SLOT(requestCompleted(QVariant))); connect(mService, SIGNAL(requestError(int)), this, SLOT(requestError(int))); @@ -106,9 +108,9 @@ const QString& number, const QString& displayName, unsigned int contactId) { LOGS_QDEBUG( "logs [ENG] -> LogsMessage::sendMessageToNumber()" ) - - XQServiceRequest req("com.nokia.services.hbserviceprovider.conversationview", - "send(QString,qint32,QString)", false); + QString serviceName("messaging."); + serviceName.append(XQI_MESSAGE_SEND); + XQServiceRequest req(serviceName, XQOP_MESSAGE_SEND_WITH_ID, false); return doSendMessageToNumber(req, number, displayName, contactId); } diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/tsrc/at_logsengine/at_logsengine.pro --- a/logsui/logsengine/tsrc/at_logsengine/at_logsengine.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/tsrc/at_logsengine/at_logsengine.pro Mon Oct 04 00:17:41 2010 +0300 @@ -35,7 +35,7 @@ SOURCES += src/main.cpp SOURCES += src/at_logsengine.cpp -SOURCES += ../../../tsrc/qtestutils/src/testresultxmlparser.cpp +SOURCES += ../../../tsrc/qtestutils/src/testrunner.cpp symbian: { TARGET.UID2 = 0x100039CE @@ -43,6 +43,7 @@ TARGET.CAPABILITY = ALL -TCB TARGET.EPOCALLOWDLLDATA = 1 LIBS += -llogsengine + MMP_RULES += SMPSAFE } BLD_INF_RULES.prj_mmpfiles = "../../../tsrc/logdbmodifier/addeventtest/group/logclienttest.mmp"\ diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsdetailsmodel.h --- a/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsdetailsmodel.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsdetailsmodel.h Mon Oct 04 00:17:41 2010 +0300 @@ -60,6 +60,7 @@ void testCreateContact(); void testContactActionCompleted(); void testUpdateConfiguration(); + void testSetData(); private: diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/tsrc/ut_logsengine/src/ut_logsdetailsmodel.cpp --- a/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsdetailsmodel.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsdetailsmodel.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -81,10 +81,22 @@ void UT_LogsDetailsModel::testConstructor() { QVERIFY( mModel ); + QVERIFY( mModel->mSeparatorCollapsed ); + QVERIFY( mModel->mSeparatorIndex == -1 ); } void UT_LogsDetailsModel::testRowCount() { + // No expandable item for duplicate events + QVERIFY( mModel->mSeparatorIndex == -1 ); + QVERIFY( mModel->rowCount(QModelIndex()) == 5 ); + + // Expandable item is collapsed + mModel->mSeparatorIndex = 1; + QVERIFY( mModel->rowCount(QModelIndex()) == 2 ); + + // Expandable item is expanded + mModel->mSeparatorCollapsed = false; QVERIFY( mModel->rowCount(QModelIndex()) == 5 ); } @@ -202,9 +214,16 @@ // Contact not supported mModel->mEvent->setNumber(""); mModel->mEvent->setLogsEventData( 0 ); - contactData = mModel->data(mModel->index(0), LogsModel::RoleContact); + contactData = mModel->data(mModel->index(0), LogsDetailsModel::RoleContact); contact = qVariantValue( contactData ); QVERIFY( !contact ); + + // Expandable separator item + mModel->mSeparatorIndex = 1; + QVariant groupbox = mModel->data(mModel->index(0), LogsDetailsModel::RoleDuplicatesSeparator); + QVERIFY( groupbox.isValid() && !groupbox.toBool() ); + groupbox = mModel->data(mModel->index(1), LogsDetailsModel::RoleDuplicatesSeparator); + QVERIFY( groupbox.isValid() && groupbox.toBool() ); } void UT_LogsDetailsModel::testHeaderData() @@ -373,12 +392,13 @@ model->mDbConnector->mDuplicatedEvents.append(dup1); LogsEvent* dup2 = new LogsEvent; model->mDbConnector->mDuplicatedEvents.append(dup2); + mModel->mSeparatorCollapsed = false; model->duplicatesRead(); - QVERIFY(model->mDetailIcons.count() == 6); - QVERIFY(model->mDetailTexts.count() == 6); + QVERIFY(model->mDetailIcons.count() == 7); + QVERIFY(model->mDetailTexts.count() == 7); // When having multiple date and time items, first item has different heading than others QVERIFY( model->mDetailTexts.at(1).at(0) != dateAndTimeRowHeading ); - QVERIFY( model->mDetailTexts.at(5).at(0) == dateAndTimeRowHeading ); + QVERIFY( model->mDetailTexts.at(6).at(0) == dateAndTimeRowHeading ); delete model; model = 0; @@ -501,3 +521,36 @@ QVERIFY( mModel->updateConfiguration(params) == 0 ); QCOMPARE( mModel->mDetailTexts.count(), 4 ); } + +void UT_LogsDetailsModel::testSetData() +{ + const int separatorIdx = 2; + mModel->mSeparatorCollapsed = false; + mModel->mSeparatorIndex = separatorIdx; + + // Collapsing duplicates ok + QVERIFY( mModel->rowCount(QModelIndex()) == 5 ); + mModel->setData( mModel->index(separatorIdx), QVariant(true) ); + QVERIFY( mModel->rowCount(QModelIndex()) == 3 ); + QVERIFY( mModel->mSeparatorCollapsed ); + + // Expanding fails, wrong separator index + mModel->setData( mModel->index(separatorIdx+2), QVariant(false) ); + QVERIFY( mModel->rowCount(QModelIndex()) == 3 ); + QVERIFY( mModel->mSeparatorCollapsed ); + + // Expanding fails, invalid data + mModel->setData( mModel->index(separatorIdx), QVariant() ); + QVERIFY( mModel->rowCount(QModelIndex()) == 3 ); + QVERIFY( mModel->mSeparatorCollapsed ); + + // Collapsing fails, already collapsed + mModel->setData( mModel->index(separatorIdx), QVariant(true) ); + QVERIFY( mModel->rowCount(QModelIndex()) == 3 ); + QVERIFY( mModel->mSeparatorCollapsed ); + + // Expanding ok + mModel->setData( mModel->index(separatorIdx), QVariant(false) ); + QVERIFY( mModel->rowCount(QModelIndex()) == 5 ); + QVERIFY( !mModel->mSeparatorCollapsed ); +} diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/tsrc/ut_logsengine/src/ut_logsmessage.cpp --- a/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsmessage.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsmessage.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -79,7 +79,7 @@ { QtHighwayStubHelper::reset(); QVERIFY( mLogsMessage->sendMessage() ); - QVERIFY( QtHighwayStubHelper::service() == "com.nokia.services.hbserviceprovider.conversationview" ); + QVERIFY( QtHighwayStubHelper::service() == "messaging.com.nokia.symbian.IMessageSend" ); QVERIFY( QtHighwayStubHelper::message() == "send(QString,qint32,QString)" ); } @@ -88,15 +88,15 @@ { QtHighwayStubHelper::reset(); QVERIFY( mLogsMessage->sendMessageToNumber( "1234567" ) ); - QVERIFY( QtHighwayStubHelper::service() == "com.nokia.services.hbserviceprovider.conversationview" ); + QVERIFY( QtHighwayStubHelper::service() == "messaging.com.nokia.symbian.IMessageSend" ); QVERIFY( QtHighwayStubHelper::message() == "send(QString,qint32,QString)" ); QtHighwayStubHelper::reset(); QVERIFY( mLogsMessage->sendMessageToNumber( "1234567", "name" ) ); - QVERIFY( QtHighwayStubHelper::service() == "com.nokia.services.hbserviceprovider.conversationview" ); + QVERIFY( QtHighwayStubHelper::service() == "messaging.com.nokia.symbian.IMessageSend" ); QVERIFY( QtHighwayStubHelper::message() == "send(QString,qint32,QString)" ); QtHighwayStubHelper::reset(); QVERIFY( mLogsMessage->sendMessageToNumber( "4234567", "namef", 3 ) ); - QVERIFY( QtHighwayStubHelper::service() == "com.nokia.services.hbserviceprovider.conversationview" ); + QVERIFY( QtHighwayStubHelper::service() == "messaging.com.nokia.symbian.IMessageSend" ); QVERIFY( QtHighwayStubHelper::message() == "send(QString,qint32,QString)" ); } diff -r e4c884866116 -r 6a40edd41841 logsui/logsengine/tsrc/ut_logsengine/ut_logsengine.pro --- a/logsui/logsengine/tsrc/ut_logsengine/ut_logsengine.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsengine/tsrc/ut_logsengine/ut_logsengine.pro Mon Oct 04 00:17:41 2010 +0300 @@ -38,6 +38,8 @@ # Input HEADERS += ../stubs/xqservicerequest.h HEADERS += ../stubs/xqaiwrequest.h +HEADERS += ../../logssymbianos/tsrc/stubs/xqsettingskey.h +HEADERS += ../../logssymbianos/tsrc/stubs/xqsettingsmanager.h HEADERS += inc/ut_logsmodel.h HEADERS += inc/ut_logsdetailsmodel.h @@ -123,4 +125,5 @@ TARGET.CAPABILITY = ALL -TCB TARGET.EPOCALLOWDLLDATA = 1 LIBS += -lqtcontacts -lthumbnailmanagerqt -lxqservice -lxqserviceutil + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/logsservices/logsservices.pro --- a/logsui/logsservices/logsservices.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsservices/logsservices.pro Mon Oct 04 00:17:41 2010 +0300 @@ -48,4 +48,5 @@ "DEFFILE eabi/logsservices.def" \ "$${LITERAL_HASH}endif" MMP_RULES += defFiles + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/logsservices/tsrc/at_logsservices/at_logsservices.pro --- a/logsui/logsservices/tsrc/at_logsservices/at_logsservices.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsservices/tsrc/at_logsservices/at_logsservices.pro Mon Oct 04 00:17:41 2010 +0300 @@ -44,4 +44,5 @@ TARGET.CAPABILITY = ALL -TCB LIBS += -lecom -lflogger -lws32 -lbafl -llogsservices TARGET.EPOCALLOWDLLDATA = 1 + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/logsui.pro --- a/logsui/logsui.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/logsui.pro Mon Oct 04 00:17:41 2010 +0300 @@ -36,9 +36,10 @@ :BLD_INF_RULES.prj_exports += "../recents_plat/logs_engine_api/inc/logsfilter.h APP_LAYER_PLATFORM_EXPORT_PATH(logsfilter.h)" :BLD_INF_RULES.prj_exports += "../recents_plat/logs_engine_api/inc/logscustomfilter.h APP_LAYER_PLATFORM_EXPORT_PATH(logscustomfilter.h)" :BLD_INF_RULES.prj_exports += "../recents_plat/logs_engine_api/inc/logsevent.h APP_LAYER_PLATFORM_EXPORT_PATH(logsevent.h)" - exists(confml/logsuda.confml) :BLD_INF_RULES.prj_exports += "confml/logsuda.confml CONFML_EXPORT_PATH(logsuda.confml,uda_content)" - exists(implml/logsuda.implml) :BLD_INF_RULES.prj_exports += "implml/logsuda.implml CRML_EXPORT_PATH(logsuda.implml,uda_content)" - exists(content/LOGDBU.zip) :BLD_INF_RULES.prj_exports += "content/LOGDBU.zip CRML_EXPORT_PATH(../content/zip/,uda_content)" + :BLD_INF_RULES.prj_exports += "logsapp/resources/logs.docml /epoc32/data/z/resource/hb/splashml/logs.docml" + :BLD_INF_RULES.prj_exports += "logsapp/resources/logs.splashml /epoc32/data/z/resource/hb/splashml/logs.splashml" + :BLD_INF_RULES.prj_exports += "logsapp/resources/logs.docml /epoc32/release/winscw/udeb/z/resource/hb/splashml/logs.docml" + :BLD_INF_RULES.prj_exports += "logsapp/resources/logs.splashml /epoc32/release/winscw/udeb/z/resource/hb/splashml/logs.splashml" } diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/callservicesimulation/serviceapp.pro --- a/logsui/tsrc/callservicesimulation/serviceapp.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/callservicesimulation/serviceapp.pro Mon Oct 04 00:17:41 2010 +0300 @@ -34,3 +34,4 @@ libFiles.path = "!:\sys\bin" DEPLOYMENT += libFiles +symbian:MMP_RULES += SMPSAFE diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/callservicesimulation2/serviceapp2.pro --- a/logsui/tsrc/callservicesimulation2/serviceapp2.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/callservicesimulation2/serviceapp2.pro Mon Oct 04 00:17:41 2010 +0300 @@ -39,3 +39,6 @@ libFiles.path = "!:\sys\bin" DEPLOYMENT += libFiles + + +symbian:MMP_RULES += SMPSAFE diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logdbmodifier/addeventtest/group/logclienttest.mmp --- a/logsui/tsrc/logdbmodifier/addeventtest/group/logclienttest.mmp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logdbmodifier/addeventtest/group/logclienttest.mmp Mon Oct 04 00:17:41 2010 +0300 @@ -56,3 +56,6 @@ VENDORID 0x101FB657 CAPABILITY ALL -TCB + + +SMPSAFE diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logdbmodifier/clearlisttest/group/clearlisttest.mmp --- a/logsui/tsrc/logdbmodifier/clearlisttest/group/clearlisttest.mmp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logdbmodifier/clearlisttest/group/clearlisttest.mmp Mon Oct 04 00:17:41 2010 +0300 @@ -55,3 +55,6 @@ VENDORID 0x101FB657 CAPABILITY ALL -TCB + + +SMPSAFE diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logscenrepeditor/install/logscenrepeditor.pkg --- a/logsui/tsrc/logscenrepeditor/install/logscenrepeditor.pkg Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logscenrepeditor/install/logscenrepeditor.pkg Mon Oct 04 00:17:41 2010 +0300 @@ -20,19 +20,17 @@ ; SIS header: name, uid, version #{"logscenrepeditor"},(0xE8316BDD),1,0,0 -; Localised Vendor name -%{"Vendor"} - -; Unique Vendor name -:"Vendor" +; List of localised vendor names +%{"Vendor-EN"} -; 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"} - +; The non-localised, globally unique vendor name (mandatory) +:"Nokia OY" +;Supports Series 60 v 3.x +;This line indicates that this installation is for the Series 60 platform v3.x +;This line must appear _exactly_ as shown below in the sis file +;If this line is missing or incorrect, the sis file will not be able +;to be installed on Series 60 v3.x platforms +(0x101F7961), 0, 0, 0, {"Series60ProductID"} ; Executable and default resource files "\epoc32\release\armv5\urel\logscenrepeditor.exe" - "!:\sys\bin\logscenrepeditor.exe" diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logscenrepeditor/logscenrepeditor.pro --- a/logsui/tsrc/logscenrepeditor/logscenrepeditor.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logscenrepeditor/logscenrepeditor.pro Mon Oct 04 00:17:41 2010 +0300 @@ -34,3 +34,6 @@ TARGET.CAPABILITY = CAP_APPLICATION LIBS += -lcentralrepository } + + +symbian:MMP_RULES += SMPSAFE diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logscenrepeditor/src/logscenrepeditorview.cpp --- a/logsui/tsrc/logscenrepeditor/src/logscenrepeditorview.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logscenrepeditor/src/logscenrepeditorview.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -31,9 +31,15 @@ << "Temporarily Off" << "Not defined"); +const QStringList KFakeExitList = (QStringList() + << "Disabled" + << "Enabled" + << "Not defined"); + LogsCenrepEditorView::LogsCenrepEditorView() : HbView(0), mList(0), + mFakeExitList(0), mRepository(0) { qDebug() << "[LOGS_CENREP]-> LogsCenrepEditorView::LogsCenrepEditorView()"; @@ -62,9 +68,22 @@ HbLabel* label = new HbLabel("Predictive search feature", this); + + HbLabel* label2 = new HbLabel("Fake exit feature", this); + TInt valueFakeExit(-1); + err = mRepository->Get( KLogsFakeExitEnabled, valueFakeExit ); + qDebug() << "[LOGS_CENREP]-> mRepository->Get(KLogsFakeExitEnabled) value: " << valueFakeExit + << ", err: " << err; + mFakeExitList = new HbRadioButtonList(this); + mFakeExitList->setItems(KFakeExitList); + listCurrentIndex = (err == 0) ? valueFakeExit : KFakeExitList.count()-1; + mFakeExitList->setSelected(listCurrentIndex); + QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical); layout->addItem(label); layout->addItem(mList); + layout->addItem(label2); + layout->addItem(mFakeExitList); layout->addItem(buttonSave); layout->addItem(buttonExit); setLayout(layout); @@ -81,13 +100,22 @@ void LogsCenrepEditorView::saveSettings() { qDebug() << "[LOGS_CENREP]-> LogsCenrepEditorView::saveSettings()"; - if (mList->selected() < KPredictiveSearchList.count()) { - int err = mRepository->Set( KLogsPredictiveSearch, mList->selected() ); - qDebug() << "[LOGS_CENREP]-> mRepository->Set(KLogsPredictiveSearch), value:" - << mList->selected() << ", err: " << err; + + saveSettings( *mList, KPredictiveSearchList, KLogsPredictiveSearch ); + saveSettings( *mFakeExitList, KFakeExitList, KLogsFakeExitEnabled ); + + qDebug() << "[LOGS_CENREP]<- LogsCenrepEditorView::saveSettings()"; +} + +void LogsCenrepEditorView::saveSettings( + HbRadioButtonList& list, const QStringList& listSelections, unsigned int key ) +{ + if (list.selected() < listSelections.count()) { + int err = mRepository->Set( key, list.selected() ); + qDebug() << "[LOGS_CENREP]-> mRepository->Set(...), value:" + << list.selected() << ", err: " << err; } else { qDebug() << "[LOGS_CENREP]-> not saving!!"; } - qDebug() << "[LOGS_CENREP]<- LogsCenrepEditorView::saveSettings()"; } diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logscenrepeditor/src/logscenrepeditorview.h --- a/logsui/tsrc/logscenrepeditor/src/logscenrepeditorview.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logscenrepeditor/src/logscenrepeditorview.h Mon Oct 04 00:17:41 2010 +0300 @@ -37,9 +37,13 @@ private: - + void saveSettings( + HbRadioButtonList& list, + const QStringList& listSelections, unsigned int key ); + private: HbRadioButtonList* mList; + HbRadioButtonList* mFakeExitList; CRepository* mRepository; }; diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logsengineapitester/logsengineapitester.pro --- a/logsui/tsrc/logsengineapitester/logsengineapitester.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logsengineapitester/logsengineapitester.pro Mon Oct 04 00:17:41 2010 +0300 @@ -36,3 +36,6 @@ libFiles.path = "!:\sys\bin" DEPLOYMENT += libFiles + + +symbian:MMP_RULES += SMPSAFE diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logsservicestester/logsservicestester.pro --- a/logsui/tsrc/logsservicestester/logsservicestester.pro Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logsservicestester/logsservicestester.pro Mon Oct 04 00:17:41 2010 +0300 @@ -36,5 +36,6 @@ TARGET.UID3 = 0xEC209DCF TARGET.CAPABILITY = CAP_APPLICATION PowerMgmt LIBS += -llogsservices -lxqservice -lapgrfx -lws32 + MMP_RULES += SMPSAFE } diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logsservicestester/logsservicetesterappcloser.cpp --- a/logsui/tsrc/logsservicestester/logsservicetesterappcloser.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logsservicestester/logsservicetesterappcloser.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -16,6 +16,7 @@ */ #include +#include #include "logsservicetesterappcloser.h" // ----------------------------------------------------------------------------- @@ -85,28 +86,61 @@ void LogsServiceTesterAppCloser::closeDialerApp() { qDebug() << "[LOGS_TESTER] -> LogsServiceTesterAppCloser::closeDialerApp()"; - const TUid KUidDialer = { 0x101F4CD5 }; + + if ( isDialerRunning(true) ){ + qDebug() << "[LOGS_TESTER] dialer is running, killing"; + } else { + qDebug() << "[LOGS_TESTER] dialer is not running"; + emit closeError(ErrorAppNotRunning); + } + + qDebug() << "[LOGS_TESTER] <- LogsServiceTesterAppCloser::closeDialerApp()"; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsServiceTesterAppCloser::startDialerAtBg() +{ + qDebug() << "[LOGS_TESTER] -> LogsServiceTesterAppCloser::startDialerAtBg()"; + if ( isDialerRunning() ){ + emit closeError(ErrorAppRunning); + } else { + QStringList arguments; + arguments << "-logsbootup"; + + QProcess myProcess; + if ( !myProcess.startDetached("logs", arguments) ){ + qDebug() << "[LOGS_TESTER] Failed to start"; + emit closeError(-1); + } + } + qDebug() << "[LOGS_TESTER] <- LogsServiceTesterAppCloser::startDialerAtBg()"; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +bool LogsServiceTesterAppCloser::isDialerRunning(bool close) +{ + const TUid KUidDialer = { 0x101F4CD5 }; + bool running( false ); RWsSession ws; TInt err = ws.Connect(); if (err == KErrNone) { TApaTaskList tl( ws); - TApaTask dialerTask = (TApaTask)tl.FindApp( KUidDialer ); - if (dialerTask.Exists()) { - qDebug() << "[LOGS_TESTER] dialer is running, killing"; + TApaTask dialerTask = (TApaTask)tl.FindApp( KUidDialer ); + running = dialerTask.Exists(); + if ( close ){ closeApp(dialerTask); - } else { - qDebug() << "[LOGS_TESTER] dialer is not running"; - emit closeError(ErrorAppNotRunning); } - ws.Close(); - } else { - emit closeError(err); - } - qDebug() << "[LOGS_TESTER] <- LogsServiceTesterAppCloser::closeDialerApp()"; + } + ws.Close(); + return running; } - - // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logsservicestester/logsservicetesterappcloser.h --- a/logsui/tsrc/logsservicestester/logsservicetesterappcloser.h Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logsservicestester/logsservicetesterappcloser.h Mon Oct 04 00:17:41 2010 +0300 @@ -49,13 +49,15 @@ enum AppCloserErrors { ErrorAppNotRunning = 1, ErrorClosingOngoing, - ErrorClosingTimeout + ErrorClosingTimeout, + ErrorAppRunning }; public slots: void closeApp(TApaTask& aTask); void closeDialerApp(); + void startDialerAtBg(); signals: @@ -71,6 +73,8 @@ // from MCloseOberver virtual void AppClosed(TInt aError); + bool isDialerRunning(bool close = false); + private: QTimer mTimer; CAppCloseWatcher* mAppCloseWatch; diff -r e4c884866116 -r 6a40edd41841 logsui/tsrc/logsservicestester/logsservicetesterwidget.cpp --- a/logsui/tsrc/logsservicestester/logsservicetesterwidget.cpp Fri Sep 17 08:29:34 2010 +0300 +++ b/logsui/tsrc/logsservicestester/logsservicetesterwidget.cpp Mon Oct 04 00:17:41 2010 +0300 @@ -77,6 +77,10 @@ killDialer->setPreferredHeight(60); connect(killDialer, SIGNAL(clicked()), mAppCloser, SLOT(closeDialerApp())); + HbPushButton* startAtBg = new HbPushButton("Start Dialer at background"); + startAtBg->setPreferredHeight(60); + connect(startAtBg, SIGNAL(clicked()), mAppCloser, SLOT(startDialerAtBg())); + QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical); layout->addItem(comboLabel); layout->addItem(mComboBox); @@ -86,6 +90,7 @@ layout->addItem(newService); layout->addItem(oldService); layout->addItem(killDialer); + layout->addItem(startAtBg); setLayout(layout); } @@ -179,8 +184,10 @@ errorMsg = QString("Dialer closing is already ongoing"); } else if (error == LogsServiceTesterAppCloser::ErrorClosingTimeout) { errorMsg = QString("Dialer closing timeout"); + } else if (error == LogsServiceTesterAppCloser::ErrorAppRunning) { + errorMsg = QString("Dialer already running"); } else { - errorMsg = QString("Dialer closing error: %1").arg(error); + errorMsg = QString("Dialer starting/closing error: %1").arg(error); } HbMessageBox::warning(errorMsg); } diff -r e4c884866116 -r 6a40edd41841 recents_plat/logs_timers_api/inc/LogsDomainCRKeys.h --- a/recents_plat/logs_timers_api/inc/LogsDomainCRKeys.h Fri Sep 17 08:29:34 2010 +0300 +++ b/recents_plat/logs_timers_api/inc/LogsDomainCRKeys.h Mon Oct 04 00:17:41 2010 +0300 @@ -138,6 +138,13 @@ */ const TUint32 KLogsPredictiveSearch = 0x0000000D; +/** +* KLogsFakeExitEnabled +* Controls the fake exiting feature +* 0 - Fake exit is disabled +* 1 - Fake exit is enabled +*/ +const TUint32 KLogsFakeExitEnabled = 0x0000000E; /**************************************************************************/