# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1276252721 -10800 # Node ID 41c0a814d878948c12a0628a697ab7fdc4b8fb1c # Parent e52d42f9500c2337f14ddefd89d30b1ab1351f01 Revision: 201021 Kit: 2010123 diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/inc/logsbaseview.h --- a/logsui/logsapp/inc/logsbaseview.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/inc/logsbaseview.h Fri Jun 11 13:38:41 2010 +0300 @@ -35,6 +35,8 @@ class HbLabel; class HbListView; class LogsAbstractModel; +class QDataStream; +class HbActivityManager; /** * @@ -60,7 +62,13 @@ virtual void activated(bool showDialer, QVariant args); virtual void deactivated(); virtual bool isExitAllowed(); - virtual void resetView(); + virtual void resetView(); + virtual void clearActivity(HbActivityManager& manager); + virtual QString saveActivity(QDataStream& serializedActivity, QVariantHash& metaData); + virtual QVariant loadActivity( + const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData); + virtual bool matchWithActivityId(const QString& activityId); + public slots: @@ -188,7 +196,6 @@ LogsAppViewId mViewId; LogsComponentRepository& mRepository; LogsAbstractViewManager& mViewManager; - HbAction* mSoftKeyBackAction; HbMenu* mShowFilterMenu; //not owned Dialpad* mDialpad; //not owned @@ -205,6 +212,8 @@ QSignalMapper* mCallTypeMapper; QString mLayoutSectionName; + + QStringList mActivities; }; diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/inc/logsdefs.h --- a/logsui/logsapp/inc/logsdefs.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/inc/logsdefs.h Fri Jun 11 13:38:41 2010 +0300 @@ -80,4 +80,27 @@ const int logsContactSearchEnabled = 1; const int logsContactSearchDisabled = 2; + + +// Interface related constants +const char logsServiceName[] = "logs"; +const char logsInterfaceName[] = "com.nokia.symbian.ILogsView"; +const char logsOperationName[] = "show(QVariantMap)"; + +const char logsViewIndexParam[] = "view_index"; +const char logsShowDialpadParam[] = "show_dialpad"; +const char logsDialpadTextParam[] = "dialpad_text"; + +// Activity related constants +const char logsActivityIdViewRecent[] = "LogsViewRecent"; +const char logsActivityIdViewCalled[] = "LogsViewCalled"; +const char logsActivityIdViewReceived[] = "LogsViewReceived"; +const char logsActivityIdViewMissed[] = "LogsViewMissed"; +const char logsActivityIdViewMatches[] = "LogsViewMatches"; +const char logsActivityIdViewDetails[] = "LogsViewDetails"; + +const char logsActivityParamShowDialpad[] = "show_dialpad"; // val type bool +const char logsActivityParamDialpadText[] = "dialpad_text"; // val type string + + #endif // LOGSDEFS_H diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/inc/logsdetailsview.h --- a/logsui/logsapp/inc/logsdetailsview.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/inc/logsdetailsview.h Fri Jun 11 13:38:41 2010 +0300 @@ -43,6 +43,9 @@ virtual void activated(bool showDialer, QVariant args); virtual void deactivated(); + virtual QString saveActivity(QDataStream& serializedActivity, QVariantHash& metaData); + virtual QVariant loadActivity( + const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData); public slots: diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/inc/logsrecentcallsview.h --- a/logsui/logsapp/inc/logsrecentcallsview.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/inc/logsrecentcallsview.h Fri Jun 11 13:38:41 2010 +0300 @@ -52,7 +52,9 @@ virtual void activated(bool showDialer, QVariant args); virtual void deactivated(); virtual bool isExitAllowed(); - virtual void resetView(); + virtual QString saveActivity(QDataStream& serializedActivity, QVariantHash& metaData); + virtual QVariant loadActivity( + const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData); public slots: @@ -127,7 +129,7 @@ LogsMatchesModel* mMatchesModel; bool mMarkingMissedAsSeen; LogsPageIndicator* mPageIndicator; - bool mResetted; + bool mFirstActivation; }; diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/inc/logsservicehandler.h --- a/logsui/logsapp/inc/logsservicehandler.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/inc/logsservicehandler.h Fri Jun 11 13:38:41 2010 +0300 @@ -26,12 +26,13 @@ { Q_OBJECT public: + explicit LogsServiceHandler(LogsMainWindow& mainWindow); ~LogsServiceHandler(); public slots: - int start(int activatedView, bool showDialpad); - int startWithNum(int activatedView, bool showDialpad, QString dialpadText); + + int show(const QVariantMap& params); signals: @@ -40,11 +41,10 @@ public: - LogsServices::LogsView currentlyActivatedView(); bool isStartedUsingService() const; private: - int mActivatedView; + LogsMainWindow& mMainWindow; bool mIsAppStartedUsingService; diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/inc/logsservicehandlerold.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/inc/logsservicehandlerold.h Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,54 @@ +/* +* 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 LOGSSERVICEHANDLEROLD_H +#define LOGSSERVICEHANDLEROLD_H + +#include +#include + +class LogsMainWindow; + +class LogsServiceHandlerOld : public XQServiceProvider + { + Q_OBJECT + public: + explicit LogsServiceHandlerOld(LogsMainWindow& mainWindow); + ~LogsServiceHandlerOld(); + + public slots: + int start(int activatedView, bool showDialpad); + int startWithNum(int activatedView, bool showDialpad, QString dialpadText); + + signals: + + void activateView(LogsServices::LogsView activatedView, bool showDialpad); + void activateView(QString dialpadText); + + public: + + bool isStartedUsingService() const; + + private: + LogsMainWindow& mMainWindow; + bool mIsAppStartedUsingService; + + private: + friend class UT_LogsServiceHandler; + friend class UT_LogsViewManager; + }; + +#endif //LOGSSERVICEHANDLEROLD_H diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/inc/logsviewmanager.h --- a/logsui/logsapp/inc/logsviewmanager.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/inc/logsviewmanager.h Fri Jun 11 13:38:41 2010 +0300 @@ -27,6 +27,7 @@ class HbMainWindow; class LogsComponentRepository; class LogsServiceHandler; +class LogsServiceHandlerOld; class LogsMainWindow; class HbView; class LogsBaseView; @@ -48,7 +49,8 @@ * @param mainWindow * @param service */ - LogsViewManager( LogsMainWindow& mainWindow, LogsServiceHandler& service ); + LogsViewManager( LogsMainWindow& mainWindow, LogsServiceHandler& service, + LogsServiceHandlerOld& serviceOld ); ~LogsViewManager(); public slots: @@ -71,16 +73,23 @@ void proceedExit(); void handleOrientationChanged(); void completeViewActivation(); + void saveActivity(); private: void initViews(); - bool doActivateView(LogsAppViewId viewId, bool showDialpad, QVariant args); + bool doActivateView(LogsAppViewId viewId, bool showDialpad, + QVariant args, const QString& dialpadText = QString()); + bool loadActivity(); + LogsAppViewId checkMatchesViewTransition( + LogsAppViewId viewId, const QString& dialpadText); + void handleFirstActivation(); private: //data LogsMainWindow& mMainWindow; LogsServiceHandler& mService; + LogsServiceHandlerOld& mServiceOld; LogsComponentRepository* mComponentsRepository; QList mViewStack; bool mFirstActivation; diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/logsapp.pro --- a/logsui/logsapp/logsapp.pro Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/logsapp.pro Fri Jun 11 13:38:41 2010 +0300 @@ -39,6 +39,7 @@ HEADERS += inc/logsdetailsview.h HEADERS += inc/logsmatchesview.h HEADERS += inc/logsservicehandler.h +HEADERS += inc/logsservicehandlerold.h HEADERS += inc/logseffecthandler.h HEADERS += inc/logspageindicator.h HEADERS += inc/logspageindicatoritem.h @@ -53,6 +54,7 @@ SOURCES += src/logsdetailsview.cpp SOURCES += src/logsmatchesview.cpp SOURCES += src/logsservicehandler.cpp +SOURCES += src/logsservicehandlerold.cpp SOURCES += src/logseffecthandler.cpp SOURCES += src/logspageindicator.cpp SOURCES += src/logspageindicatoritem.cpp diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/resources/detailsView.docml --- a/logsui/logsapp/resources/detailsView.docml Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/resources/detailsView.docml Fri Jun 11 13:38:41 2010 +0300 @@ -85,7 +85,7 @@ - + diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/resources/logs.docml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/resources/logs.docml Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/resources/logs.splashml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/resources/logs.splashml Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,7 @@ + + + logs.docml + mainView + 0x101F4CD5 + dialer + diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/resources/matchesView.docml --- a/logsui/logsapp/resources/matchesView.docml Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/resources/matchesView.docml Fri Jun 11 13:38:41 2010 +0300 @@ -86,7 +86,7 @@ - + diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/resources/recentCallsView.docml --- a/logsui/logsapp/resources/recentCallsView.docml Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/resources/recentCallsView.docml Fri Jun 11 13:38:41 2010 +0300 @@ -57,7 +57,7 @@ - + @@ -107,7 +107,7 @@ - + diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/service_conf.xml --- a/logsui/logsapp/service_conf.xml Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/service_conf.xml Fri Jun 11 13:38:41 2010 +0300 @@ -1,7 +1,17 @@ - - Logs services - - Starter interface + + logs + No path + Logs service + + com.nokia.symbian.ILogsView + 1.0 + Interface to open a view of logs application - + + starter + 1.0 + Deprecated logs starter interface + com.nokia.services.logsservices + + \ No newline at end of file diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/src/logsbaseview.cpp --- a/logsui/logsapp/src/logsbaseview.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/src/logsbaseview.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -42,6 +42,7 @@ #include #include #include +#include Q_DECLARE_METATYPE(LogsCall*) @@ -49,7 +50,6 @@ Q_DECLARE_METATYPE(LogsContact*) Q_DECLARE_METATYPE(LogsDetailsModel*) -const int contextMenuTimeout = 5000000; //5 secs // ----------------------------------------------------------------------------- // @@ -73,11 +73,11 @@ mCallTypeMapper(0) { LOGS_QDEBUG( "logs [UI] -> LogsBaseView::LogsBaseView()" ); + + setNavigationAction(new HbAction(Hb::BackNaviAction, this)); + connect(navigationAction(), SIGNAL(triggered()), this, + SLOT(handleBackSoftkey())); - mSoftKeyBackAction = new HbAction(Hb::BackNaviAction, this); - connect(mSoftKeyBackAction, SIGNAL(triggered()), this, - SLOT(handleBackSoftkey())); - mDialpad = mRepository.dialpad(); LOGS_QDEBUG( "logs [UI] <- LogsBaseView::LogsBaseView()" ); @@ -136,6 +136,51 @@ // // ----------------------------------------------------------------------------- // +void LogsBaseView::clearActivity(HbActivityManager& manager) +{ + foreach ( const QString& activity, mActivities ){ + manager.removeActivity(activity); + } +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +QString LogsBaseView::saveActivity( + QDataStream& serializedActivity, QVariantHash& metaData) +{ + Q_UNUSED( serializedActivity ); + Q_UNUSED( metaData ); + return mActivities.isEmpty() ? QString() : mActivities.at(0); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +QVariant LogsBaseView::loadActivity( + const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData) +{ + Q_UNUSED( activityId ); + Q_UNUSED( serializedActivity ); + Q_UNUSED( metaData ); + return QVariant(); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +bool LogsBaseView::matchWithActivityId(const QString& activityId) +{ + return mActivities.contains(activityId); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// void LogsBaseView::activated(bool showDialer, QVariant args) { LOGS_QDEBUG( "logs [UI] -> LogsBaseView::activated()" ); @@ -154,10 +199,6 @@ connect( &mDialpad->editor(), SIGNAL( contentsChanged() ), this, SLOT( dialpadEditorTextChanged() ) ); - if ( navigationAction() != mSoftKeyBackAction ) { - setNavigationAction(mSoftKeyBackAction); - } - if (showDialer && !mDialpad->isOpen()) { openDialpad(); } @@ -365,6 +406,9 @@ // Need to do request in async manner, otherwise new phonebook ui process // will be started due bug(?) in highway. XQServiceRequest snd("com.nokia.services.phonebookappservices.Launch","launch()", false); + XQRequestInfo info; + info.setForeground(true); + snd.setInfo(info); int retValue; snd.send(retValue); @@ -378,19 +422,15 @@ void LogsBaseView::setDialpadPosition() { HbMainWindow& window = mViewManager.mainWindow(); - // layoutrect broken, fix will be in MCL wk14, use workaround meanwhile - //QRectF screenRect = window.layoutRect(); - QRectF screenRect = (window.orientation() == Qt::Horizontal) ? - QRectF(0,0,640,360) : QRectF(0,0,360,640); - + QRectF screenRect = window.layoutRect(); LOGS_QDEBUG_2( "logs [UI] -> LogsBaseView::setDialpadPosition(), screenRect:", screenRect ); if (window.orientation() == Qt::Horizontal) { // dialpad takes half of the screen width mDialpad->setPos(QPointF(screenRect.width()/2, - this->scenePos().y())); + scenePos().y())); mDialpad->setPreferredSize(screenRect.width()/2, - (screenRect.height()-scenePos().y())); + (screenRect.height()-scenePos().y())); } else { // dialpad takes 55% of the screen height qreal screenHeight = screenRect.height(); @@ -498,7 +538,6 @@ LOGS_QDEBUG( "logs [UI] -> LogsBaseView::showListItemMenu()" ); HbMenu* itemContextMenu = new HbMenu(); itemContextMenu->setDismissPolicy(HbMenu::TapAnywhere); - itemContextMenu->setTimeout(contextMenuTimeout); itemContextMenu->setAttribute(Qt::WA_DeleteOnClose); updateListItemData(item->modelIndex()); @@ -1050,6 +1089,7 @@ void LogsBaseView::askConfirmation( QString heading , QString text, QObject* receiver, const char* okSlot, const char* cancelSlot ) { + LOGS_QDEBUG( "logs [UI] -> LogsBaseView::askConfirmation()" ); HbMessageBox* note = new HbMessageBox(text, HbMessageBox::MessageTypeQuestion); note->setAttribute(Qt::WA_DeleteOnClose); note->setHeadingWidget(new HbLabel(heading)); @@ -1070,6 +1110,7 @@ } } note->open(); + LOGS_QDEBUG( "logs [UI] <- LogsBaseView::askConfirmation()" ); } // ----------------------------------------------------------------------------- diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/src/logscomponentrepository.cpp --- a/logsui/logsapp/src/logscomponentrepository.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/src/logscomponentrepository.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -43,9 +43,9 @@ mDialpad(0), mDialpadKeyHandler(0) { - bool resourceControl = true; - mModel = new LogsModel(LogsModel::LogsRecentModel, resourceControl); + mModel = new LogsModel(LogsModel::LogsRecentModel); } + // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/src/logsdetailsview.cpp --- a/logsui/logsapp/src/logsdetailsview.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/src/logsdetailsview.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -23,6 +23,7 @@ #include "logsabstractviewmanager.h" #include "logsdefs.h" #include "logscontact.h" +#include "logsmodel.h" //SYSTEM #include @@ -50,6 +51,8 @@ //TODO: taking away due to toolbar bug. If toolbar visibility changes on view //activation, there will be a crash due to previous view effect is playing //addViewSwitchingEffects(); + + mActivities.append( logsActivityIdViewDetails ); } // ----------------------------------------------------------------------------- @@ -113,15 +116,44 @@ } // ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +QString LogsDetailsView::saveActivity( + QDataStream& serializedActivity, QVariantHash& metaData) +{ + if ( mDetailsModel ){ + mDetailsModel->getLogsEvent().serialize(serializedActivity); + } + return LogsBaseView::saveActivity(serializedActivity, metaData); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +QVariant LogsDetailsView::loadActivity( + const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData) +{ + Q_UNUSED( activityId ); + Q_UNUSED( metaData ); + LogsEvent event(serializedActivity); + LogsDetailsModel* details = mRepository.model()->logsDetailsModel(event); + return qVariantFromValue( details ); +} + +// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- // void LogsDetailsView::callKeyPressed() { LOGS_QDEBUG( "logs [UI] -> LogsDetailsView::callKeyPressed()" ); + if ( !tryCallToDialpadNumber() && mCall ){ mCall->initiateCallback(); } + LOGS_QDEBUG( "logs [UI] <- LogsDetailsView::callKeyPressed()" ); } diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/src/logsmatchesview.cpp --- a/logsui/logsapp/src/logsmatchesview.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/src/logsmatchesview.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -48,6 +48,8 @@ mAddToContactsButton(0) { LOGS_QDEBUG( "logs [UI] <-> LogsMatchesView::LogsMatchesView()" ); + + mActivities.append( logsActivityIdViewMatches ); } // ----------------------------------------------------------------------------- @@ -216,7 +218,7 @@ QString pattern = mDialpad->editor().text(); if ( pattern.isEmpty() ){ - // Treat empty input field same was as back press + // Treat empty input field same way as back press LogsBaseView::handleBackSoftkey(); } else if ( mModel ) { mModel->logsMatches( pattern ); diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/src/logspageindicatoritem.cpp --- a/logsui/logsapp/src/logspageindicatoritem.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/src/logspageindicatoritem.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -24,7 +24,7 @@ const char logsNormalIconName[] = "qtg_mono_tab_passive"; const char logsHighlightIconName[] = "qtg_mono_tab_active"; -const char logsIconColor[] = "qtc_button_normal";//"qtc_default_main_pane_normal");// +const char logsIconColor[] = "qtc_viewtitle_normal"; //groupbox text color const int logsEffectDurationInMs = 1000; @@ -73,6 +73,7 @@ startAnimation(); } else { setIcon(HbIcon(logsNormalIconName)); + updateColor(); } } } @@ -136,4 +137,5 @@ void LogsPageIndicatorItem::animationFinished() { graphicsEffect()->setEnabled(false); + updateColor(); } diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/src/logsrecentcallsview.cpp --- a/logsui/logsapp/src/logsrecentcallsview.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/src/logsrecentcallsview.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -43,6 +43,7 @@ #include #include #include +#include Q_DECLARE_METATYPE(LogsMatchesModel*) @@ -67,7 +68,7 @@ mMatchesModel(0), mMarkingMissedAsSeen(false), mPageIndicator(0), - mResetted(false) + mFirstActivation(true) { LOGS_QDEBUG( "logs [UI] <-> LogsRecentCallsView::LogsRecentCallsView()" ); mModel = mRepository.model(); @@ -75,6 +76,13 @@ //TODO: taking away due to toolbar bug. If toolbar visibility changes on view //activation, there will be a crash due to previous view effect is playing //addViewSwitchingEffects(); + + // Important to add in the same order as mCurrentView enums as correct + // activity id is taken directly from the array based on the enum + mActivities.append( logsActivityIdViewRecent ); + mActivities.append( logsActivityIdViewReceived ); + mActivities.append( logsActivityIdViewCalled ); + mActivities.append( logsActivityIdViewMissed ); } // ----------------------------------------------------------------------------- @@ -105,7 +113,11 @@ // base class handling first LogsBaseView::activated(showDialer, args); - LogsServices::LogsView view = static_cast( args.toInt() ); + int internalViewId = args.toInt(); + if ( internalViewId < 0 || internalViewId > LogsServices::ViewMissed ){ + internalViewId = LogsServices::ViewAll; + } + LogsServices::LogsView view = static_cast( internalViewId ); // View update is needed when we activate view for the first time (!mFilter) // or if view has to be changed @@ -115,14 +127,9 @@ activateEmptyListIndicator(mFilter); mPageIndicator->setActiveItemIndex(mConversionMap.value(mCurrentView)); + + mFirstActivation = false; - if ( mResetted ){ - // After reset, first data addition should cause scrolling to topitem - connect( mFilter, SIGNAL(rowsInserted(const QModelIndex&,int,int)), - this, SLOT(scrollToTopItem()) ); - mResetted = false; - } - LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::activated()" ); } @@ -161,15 +168,31 @@ // // ----------------------------------------------------------------------------- // -void LogsRecentCallsView::resetView() +QString LogsRecentCallsView::saveActivity( + QDataStream& serializedActivity, QVariantHash& metaData) { - LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::resetView()" ); - LogsBaseView::resetView(); - mResetted = true; - LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::resetView()" ); + Q_UNUSED( serializedActivity ); + Q_UNUSED( metaData ); + if ( mCurrentView >= 0 && mCurrentView < mActivities.count() ){ + return mActivities.at( mCurrentView ); + } + return QString(); } // ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +QVariant LogsRecentCallsView::loadActivity( + const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData) +{ + Q_UNUSED( serializedActivity ); + Q_UNUSED( metaData ); + return mActivities.indexOf(activityId); +} + + +// ----------------------------------------------------------------------------- // LogsRecentCallsView::initView // ----------------------------------------------------------------------------- // @@ -718,24 +741,22 @@ // int LogsRecentCallsView::getListItemTextWidth() { - LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::ListItemText()" ); - - qreal width = 0; + LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::getListItemTextWidth()" ); - // layoutrect broken, fix will be in MCL wk14, use workaround meanwhile - //QRectF screenRect = mViewManager.mainWindow().layoutRect(); - QRectF screenRect = (mViewManager.mainWindow().orientation() == Qt::Horizontal) ? - QRectF(0,0,640,360) : QRectF(0,0,360,640); + qreal width = 0.0; + QRectF screenRect = mViewManager.mainWindow().layoutRect(); LOGS_QDEBUG_2( "logs [UI] screenRect:", screenRect ); // Cannot use hb-param-screen-width in expressions currently due bug in layoutrect qreal modifier = 0.0; QString expr; if (mListView->layoutName() == QLatin1String(logsListDefaultLayout)) { - expr = "expr(var(hb-param-graphic-size-primary-medium) + var(hb-param-margin-gene-left) + var(hb-param-margin-gene-right) + var(hb-param-margin-gene-middle-horizontal))"; + expr = "expr(var(hb-param-graphic-size-primary-medium) + var(hb-param-margin-gene-left) "; + expr += "+ var(hb-param-margin-gene-right) + var(hb-param-margin-gene-middle-horizontal))"; width = screenRect.width(); } else { - expr = "expr(var(hb-param-graphic-size-primary-medium) + var(hb-param-margin-gene-left) + var(hb-param-margin-gene-right))"; + expr = "expr(var(hb-param-graphic-size-primary-medium) + var(hb-param-margin-gene-left) "; + expr += "+ var(hb-param-margin-gene-right))"; width = screenRect.width() / 2; } @@ -744,7 +765,7 @@ } width -= modifier; - LOGS_QDEBUG_2( "logs [UI] <- LogsRecentCallsView::ListItemText(): ", width ); + LOGS_QDEBUG_2( "logs [UI] <- LogsRecentCallsView::getListItemTextWidth(): ", width ); return qRound(width); } @@ -769,7 +790,7 @@ // void LogsRecentCallsView::handleMissedCallsMarking() { - if ( mFilter && !mMarkingMissedAsSeen && !mResetted && + if ( mFilter && !mMarkingMissedAsSeen && !mFirstActivation && ( mFilter->filterType() == LogsFilter::Missed || mFilter->filterType() == LogsFilter::All ) ){ // Don't care if timer would be already running, slot's implementation diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/src/logsservicehandler.cpp --- a/logsui/logsapp/src/logsservicehandler.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/src/logsservicehandler.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -17,21 +17,21 @@ //USER #include "logsservicehandler.h" #include "logslogger.h" +#include "logsdefs.h" #include "logsmainwindow.h" #include //SYSTEM // ----------------------------------------------------------------------------- -// LogsService::LogsService +// LogsServiceHandler::LogsServiceHandler // ----------------------------------------------------------------------------- // LogsServiceHandler::LogsServiceHandler(LogsMainWindow& mainWindow) - : XQServiceProvider(QLatin1String("com.nokia.services.logsservices.starter"),0), - mActivatedView(0), + : XQServiceProvider(QLatin1String("logs.com.nokia.symbian.ILogsView"),0), mMainWindow(mainWindow) { - LOGS_QDEBUG( "logs [UI] -> LogsServiceHandler::LogsServiceHandler()" ) + LOGS_QDEBUG( "logs [UI] -> LogsServiceHandler::LogsServiceHandler(), ILogsView" ) publishAll(); mIsAppStartedUsingService = XQServiceUtil::isService(); @@ -51,67 +51,44 @@ } // ----------------------------------------------------------------------------- -// LogsServiceHandler::start +// LogsServiceHandler::show // ----------------------------------------------------------------------------- // -int LogsServiceHandler::start(int activatedView, bool showDialpad) +int LogsServiceHandler::show(const QVariantMap& params) { - LOGS_QDEBUG_2( "logs [UI] -> LogsServiceHandler::start(), view:", activatedView ) + LOGS_QDEBUG( "logs [UI] -> LogsServiceHandler::show()" ) + int activatedView = params.value(logsViewIndexParam, + QVariant((int)LogsServices::ViewAll)).toInt(); + bool showDialpad = params.value(logsShowDialpadParam, + QVariant(false)).toBool(); + QString dialpadText = params.value(logsDialpadTextParam, + QVariant(QString())).toString(); + + LOGS_QDEBUG_2( "logs [UI] activatedView:", activatedView ) + LOGS_QDEBUG_2( "logs [UI] showDialpad:", showDialpad ) + LOGS_QDEBUG_2( "logs [UI] dialpadText:", dialpadText ) if ( activatedView < LogsServices::ViewAll || activatedView > LogsServices::ViewMissed ){ - LOGS_QDEBUG( "logs [UI] <- LogsServiceHandler::start(), incorrect view" ) + LOGS_QDEBUG( "logs [UI] <- LogsServiceHandler::show(), incorrect view" ) return -1; } + mIsAppStartedUsingService = true; - mActivatedView = activatedView; LOGS_QDEBUG( "logs [UI] Bring app to foreground" ) mMainWindow.bringAppToForeground(); - emit activateView((LogsServices::LogsView)mActivatedView, showDialpad); - - LOGS_QDEBUG( "logs [UI] <- LogsServiceHandler::start()" ) + if (!dialpadText.isEmpty()) { + emit activateView(dialpadText); + } else { + emit activateView((LogsServices::LogsView)activatedView, showDialpad); + } + LOGS_QDEBUG( "logs [UI] <- LogsServiceHandler::show()" ) return 0; } // ----------------------------------------------------------------------------- -// LogsServiceHandler::startWithNum -// ----------------------------------------------------------------------------- -// -int LogsServiceHandler::startWithNum(int activatedView, bool showDialpad, QString dialpadText) -{ - LOGS_QDEBUG_2( "logs [UI] -> LogsServiceHandler::startWithNum(), view:", activatedView ) - - Q_UNUSED(showDialpad); - - if ( activatedView < LogsServices::ViewAll || - activatedView > LogsServices::ViewMissed ){ - LOGS_QDEBUG( "logs [UI] <- LogsServiceHandler::startWithNum(), incorrect view" ) - return -1; - } - mIsAppStartedUsingService = true; - mActivatedView = activatedView; - - LOGS_QDEBUG( "logs [UI] Bring app to foreground" ) - mMainWindow.bringAppToForeground(); - - emit activateView(dialpadText); - - LOGS_QDEBUG( "logs [UI] <- LogsServiceHandler::startWithNum()" ) - return 0; -} - -// ----------------------------------------------------------------------------- -// LogsServiceHandler::currentlyActivatedView -// ----------------------------------------------------------------------------- -// -LogsServices::LogsView LogsServiceHandler::currentlyActivatedView() -{ - return (LogsServices::LogsView)mActivatedView; -} - -// ----------------------------------------------------------------------------- // LogsServiceHandler::isStartedUsingService // ----------------------------------------------------------------------------- // diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/src/logsservicehandlerold.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/src/logsservicehandlerold.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,112 @@ +/* +* 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 "logsservicehandlerold.h" +#include "logslogger.h" +#include "logsmainwindow.h" +#include + +//SYSTEM + +// ----------------------------------------------------------------------------- +// LogsServiceHandlerOld::LogsServiceHandlerOld +// deprecated Use "logs.com.nokia.symbian.ILogsView" interface and +// "show(int,bool,QString)" operation instead +// ----------------------------------------------------------------------------- +// +LogsServiceHandlerOld::LogsServiceHandlerOld(LogsMainWindow& mainWindow) + : XQServiceProvider(QLatin1String("com.nokia.services.logsservices.starter"),0), + mMainWindow(mainWindow) +{ + LOGS_QDEBUG( "logs [UI] -> LogsServiceHandlerOld::LogsServiceHandlerOld()" ) + + publishAll(); + mIsAppStartedUsingService = XQServiceUtil::isService(); + + LOGS_QDEBUG_2( + "logs [UI] <- LogsServiceHandlerOld::LogsServiceHandlerOld(), is service", + mIsAppStartedUsingService ) +} + +// ----------------------------------------------------------------------------- +// LogsServiceHandlerOld::~LogsServiceHandlerOld +// ----------------------------------------------------------------------------- +// +LogsServiceHandlerOld::~LogsServiceHandlerOld() +{ + LOGS_QDEBUG( "logs [UI] <-> LogsServiceHandlerOld::~LogsServiceHandlerOld()" ) +} + +// ----------------------------------------------------------------------------- +// LogsServiceHandlerOld::start +// ----------------------------------------------------------------------------- +// +int LogsServiceHandlerOld::start(int activatedView, bool showDialpad) +{ + LOGS_QDEBUG_2( "logs [UI] -> LogsServiceHandlerOld::start(), view:", activatedView ) + + if ( activatedView < LogsServices::ViewAll || + activatedView > LogsServices::ViewMissed ){ + LOGS_QDEBUG( "logs [UI] <- LogsServiceHandlerOld::start(), incorrect view" ) + return -1; + } + mIsAppStartedUsingService = true; + + LOGS_QDEBUG( "logs [UI] Bring app to foreground" ) + mMainWindow.bringAppToForeground(); + + emit activateView((LogsServices::LogsView)activatedView, showDialpad); + + LOGS_QDEBUG( "logs [UI] <- LogsServiceHandlerOld::start()" ) + return 0; +} + +// ----------------------------------------------------------------------------- +// LogsServiceHandlerOld::startWithNum +// ----------------------------------------------------------------------------- +// +int LogsServiceHandlerOld::startWithNum(int activatedView, bool showDialpad, QString dialpadText) +{ + LOGS_QDEBUG_2( "logs [UI] -> LogsServiceHandlerOld::startWithNum(), view:", activatedView ) + + Q_UNUSED(showDialpad); + + if ( activatedView < LogsServices::ViewAll || + activatedView > LogsServices::ViewMissed ){ + LOGS_QDEBUG( "logs [UI] <- LogsServiceHandlerOld::startWithNum(), incorrect view" ) + return -1; + } + mIsAppStartedUsingService = true; + + LOGS_QDEBUG( "logs [UI] Bring app to foreground" ) + mMainWindow.bringAppToForeground(); + + emit activateView(dialpadText); + + LOGS_QDEBUG( "logs [UI] <- LogsServiceHandlerOld::startWithNum()" ) + return 0; +} + +// ----------------------------------------------------------------------------- +// LogsServiceHandlerOld::isStartedUsingService +// ----------------------------------------------------------------------------- +// +bool LogsServiceHandlerOld::isStartedUsingService() const +{ + return mIsAppStartedUsingService; +} + diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/src/logsviewmanager.cpp --- a/logsui/logsapp/src/logsviewmanager.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/src/logsviewmanager.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -24,6 +24,7 @@ #include "logsdefs.h" #include "logslogger.h" #include "logsservicehandler.h" +#include "logsservicehandlerold.h" #include "logsmainwindow.h" //SYSTEM @@ -33,14 +34,18 @@ #include #include #include +#include +#include // ----------------------------------------------------------------------------- // LogsViewManager::LogsViewManager // ----------------------------------------------------------------------------- // LogsViewManager::LogsViewManager( - LogsMainWindow& mainWindow, LogsServiceHandler& service ) : - QObject( 0 ), mMainWindow( mainWindow ), mService( service ), + LogsMainWindow& mainWindow, LogsServiceHandler& service, + LogsServiceHandlerOld& serviceOld ) : + QObject( 0 ), mMainWindow( mainWindow ), + mService( service ), mServiceOld( serviceOld ), mFirstActivation(true), mViewActivationShowDialpad(false) { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::LogsViewManager()" ); @@ -58,10 +63,20 @@ connect( &mService, SIGNAL( activateView(QString) ), this, SLOT( changeMatchesView(QString) )); + + connect( &mServiceOld, SIGNAL( activateView(LogsServices::LogsView, bool) ), + this, SLOT( changeRecentView(LogsServices::LogsView, bool) ) ); + + connect( &mServiceOld, SIGNAL( activateView(QString) ), + this, SLOT( changeMatchesView(QString) )); connect( &mMainWindow, SIGNAL(appFocusGained()), this, SLOT(appFocusGained()) ); connect( &mMainWindow, SIGNAL(appFocusLost()), this, SLOT(appFocusLost()) ); + QObject::connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(saveActivity())); + + handleFirstActivation(); + LOGS_QDEBUG( "logs [UI] <- LogsViewManager::LogsViewManager()" ); } @@ -87,11 +102,6 @@ { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::initViews()" ); - // Disable view switching as otherwise flick gestures change - // views which is not desired. - //Deprecated: - //mMainWindow.setViewSwitchingEnabled(false); - // Don't activate any view, app focus gaining or service request // will cause view activation // @@ -129,16 +139,7 @@ void LogsViewManager::changeMatchesView(QString dialpadText) { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::changeMatchesView()" ); - Dialpad* dialpad = mComponentsRepository->dialpad(); - dialpad->editor().setText(dialpadText); - LogsModel* model = mComponentsRepository->model(); - if ( model && model->predictiveSearchStatus() == logsContactSearchEnabled ){ - LOGS_QDEBUG( "logs [UI] contact search enabled, go to macthes view" ); - doActivateView(LogsMatchesViewId, true, QVariant()); - } else { - LOGS_QDEBUG( "logs [UI] contact search disabled, go to recent view" ); - doActivateView(LogsRecentViewId, true, QVariant()); - } + doActivateView(LogsMatchesViewId, true, QVariant(), dialpadText); LOGS_QDEBUG( "logs [UI] <- LogsViewManager::changeMatchesView()" ); } @@ -156,13 +157,6 @@ foreach ( LogsBaseView* view, mViewStack ){ disconnect( view, SIGNAL(exitAllowed()), this, SLOT(proceedExit()) ); } - - if ( mFirstActivation && !mService.isStartedUsingService() ){ - changeRecentView( mService.currentlyActivatedView(), false ); - mMainWindow.bringAppToForeground(); - } - - mComponentsRepository->model()->refreshData(); LOGS_QDEBUG( "logs [UI] <- LogsViewManager::appFocusGained()" ); } @@ -237,10 +231,6 @@ // Fake exit by sending app to background mMainWindow.sendAppToBackground(); - - // Set application to default state (recent calls and no dialpad) - activateView( LogsRecentViewId, false, QVariant() ); - mComponentsRepository->recentCallsView()->resetView(); bool exitAllowed( true ); foreach ( LogsBaseView* view, mViewStack ){ @@ -281,7 +271,7 @@ // ----------------------------------------------------------------------------- // bool LogsViewManager::doActivateView( - LogsAppViewId viewId, bool showDialpad, QVariant args) + LogsAppViewId viewId, bool showDialpad, QVariant args, const QString& dialpadText) { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::doActivateView()" ); @@ -289,6 +279,8 @@ LogsBaseView* newView = 0; LogsBaseView* oldView = mViewStack.count() > 0 ? mViewStack.at(0) : 0; + viewId = checkMatchesViewTransition(viewId, dialpadText); + for ( int i = 0; i < mViewStack.count(); ++i ){ if ( mViewStack.at(i)->viewId() == viewId ){ newView = mViewStack.takeAt(i); @@ -347,3 +339,131 @@ QMetaObject::invokeMethod(mMainWindow.currentView(), "handleOrientationChanged"); LOGS_QDEBUG( "logs [UI] <- LogsViewManager::handleOrientationChanged()" ); } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsViewManager::saveActivity() +{ + LOGS_QDEBUG( "logs [UI] -> LogsViewManager::saveActivity()" ); + + if ( mViewStack.count() == 0 ){ + return; + } + + HbActivityManager* activityManager = static_cast(qApp)->activityManager(); + foreach ( LogsBaseView* view, mViewStack ){ + view->clearActivity(*activityManager); + } + + QVariantHash metaData; + metaData.insert("screenshot", QPixmap::grabWidget(&mMainWindow, mMainWindow.rect())); + + QByteArray serializedActivity; + QDataStream stream(&serializedActivity, QIODevice::WriteOnly | QIODevice::Append); + + metaData.insert( + logsActivityParamShowDialpad, mComponentsRepository->dialpad()->isOpen() ); + metaData.insert( + logsActivityParamDialpadText, mComponentsRepository->dialpad()->editor().text() ); + QString activityId = mViewStack.at(0)->saveActivity(stream, metaData); + + // add the activity to the activity manager + bool ok = activityManager->addActivity(activityId, serializedActivity, metaData); + if ( !ok ){ + LOGS_QDEBUG( "logs [UI] activity adding failed" ); + } + LOGS_QDEBUG( "logs [UI] <- LogsViewManager::saveActivity()" ); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +bool LogsViewManager::loadActivity() +{ + LOGS_QDEBUG( "logs [UI] -> LogsViewManager::loadActivity()" ); + bool loaded = false; + HbApplication* hbApp = static_cast(qApp); + QString activityId = hbApp->activateId(); + LOGS_QDEBUG_2( "logs [UI] activity id:", activityId ); + bool ok = hbApp->activityManager()->waitActivity(); + if ( !ok ){ + LOGS_QDEBUG( "logs [UI] Activity reschedule failed" ); + } + + LogsBaseView* matchingView = 0; + for ( int i = 0; i < mViewStack.count() && !matchingView; i++ ){ + if ( mViewStack.at(i)->matchWithActivityId(activityId) ){ + matchingView = mViewStack.at(i); + } + } + + if ( matchingView ){ + // Should have only one param hash in the list, use first always + QList allParams = hbApp->activityManager()->activities(); + QVariantHash params = allParams.isEmpty() ? QVariantHash() : allParams.at(0); + LOGS_QDEBUG_2( "logs [UI] Activity params", params ); + bool showDialpad = params.value(logsActivityParamShowDialpad).toBool(); + QString dialpadText = params.value(logsActivityParamDialpadText).toString(); + + QByteArray serializedActivity = hbApp->activateData().toByteArray(); + QDataStream stream(&serializedActivity, QIODevice::ReadOnly); + + QVariant args = matchingView->loadActivity(activityId, stream, params); + loaded = doActivateView( matchingView->viewId(), showDialpad, args, dialpadText ); + } + LOGS_QDEBUG_2( "logs [UI] <- LogsViewManager::loadActivity() loaded:", loaded ); + return loaded; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsAppViewId LogsViewManager::checkMatchesViewTransition( + LogsAppViewId viewId, const QString& dialpadText) +{ + if ( !dialpadText.isEmpty() ){ + Dialpad* dialpad = mComponentsRepository->dialpad(); + dialpad->editor().setText(dialpadText); + } + + if ( viewId == LogsMatchesViewId ){ + LogsModel* model = mComponentsRepository->model(); + if ( model && model->predictiveSearchStatus() != logsContactSearchEnabled ){ + LOGS_QDEBUG( "logs [UI] contact search disabled, go to recent view" ); + viewId = LogsRecentViewId; + } + } + return viewId; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsViewManager::handleFirstActivation() +{ + LOGS_QDEBUG( "logs [UI] -> LogsViewManager::handleFirstActivation()" ); + bool useSavedActivity( static_cast(qApp)->activateReason() == + Hb::ActivationReasonActivity ); + + if ( useSavedActivity && loadActivity() ){ + LOGS_QDEBUG( "logs [UI] loaded saved activity" ); + mMainWindow.bringAppToForeground(); + } else if ( mFirstActivation && !mService.isStartedUsingService() && + !mServiceOld.isStartedUsingService()) { + changeRecentView( LogsServices::ViewAll, false ); + mMainWindow.bringAppToForeground(); + } + + // Clear previously stored activations + + HbActivityManager* activityManager = static_cast(qApp)->activityManager(); + foreach ( LogsBaseView* view, mViewStack ){ + view->clearActivity(*activityManager); + } + LOGS_QDEBUG( "logs [UI] <- LogsViewManager::handleFirstActivation()" ); +} diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/src/main.cpp --- a/logsui/logsapp/src/main.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/src/main.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -18,6 +18,7 @@ #include "logsmainwindow.h" #include "logsviewmanager.h" #include "logsservicehandler.h" +#include "logsservicehandlerold.h" #include "logslogger.h" #include "logsdefs.h" @@ -26,39 +27,16 @@ #include #include #include -#include +#include int main(int argc, char *argv[]) { LOGS_QDEBUG( "logs [UI] -> main()" ) - HbApplication app(argc, argv); + HbApplication app(argc, argv, Hb::NoSplash); LogsMainWindow window; - - QString lang = QLocale::system().name(); - QString path = "z:/resource/qt/translations/"; - //Load common translator - QTranslator commontranslator; - bool returncode = false; - LOGS_QDEBUG("logs [UI] loading common strings translator"); - returncode = commontranslator.load( path + "common_" + lang); - if (returncode==false) { - LOGS_QDEBUG("logs [UI] unable to open file: " + path + "common_" + lang); - } else { - app.installTranslator(&commontranslator); - } - - //Load application-specific translator - QTranslator translator; - LOGS_QDEBUG("logs [UI] loading application strings translator"); - LOGS_QDEBUG("logs [UI] translation filename dialer_" + lang); - returncode = translator.load( path + "dialer_" + lang); - if (returncode==false) { - LOGS_QDEBUG( "logs [UI] .qm file not found from " + path); - } else { - LOGS_QDEBUG( "logs [UI] .qm loaded successfully from " + path); - app.installTranslator(&translator); - } + HbTranslator translator("dialer"); + translator.loadCommon(); HbStyleLoader::registerFilePath(":/logslayouts"); @@ -67,7 +45,8 @@ // This can cause problem of service request not coming through if // HbApplication creation takes long time. LogsServiceHandler service(window); - LogsViewManager viewManager(window, service); + LogsServiceHandlerOld serviceOld(window); + LogsViewManager viewManager(window, service, serviceOld); // Don't show window yet as app might be started at background int err = app.exec(); diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsbaseview.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsbaseview.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsbaseview.h Fri Jun 11 13:38:41 2010 +0300 @@ -85,6 +85,10 @@ void testDeleteEvent(); void testDeleteEventOkAnswer(); void testAskConfirmation(); + void testMatchWithActivityId(); + void testSaveActivity(); + void testLoadActivity(); + void testClearActivity(); private: diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h Fri Jun 11 13:38:41 2010 +0300 @@ -65,6 +65,8 @@ void testUpdateWidgetsSizeAndLayout(); void testDialpadEditorTextChanged(); void testSendMessage(); + void testSaveActivity(); + void testLoadActivity(); private: diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h Fri Jun 11 13:38:41 2010 +0300 @@ -54,7 +54,6 @@ void testInitView(); void testActivated(); void testDeactivated(); - void testResetView(); void testInitListWidget(); void testUpdateFilter(); void testUpdateViewName(); @@ -84,6 +83,8 @@ void testIsExitAllowed(); void testContactSearch(); void testDialpadOpened(); + void testSaveActivity(); + void testLoadActivity(); private: //helper functions diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h Fri Jun 11 13:38:41 2010 +0300 @@ -21,6 +21,7 @@ #include class LogsServiceHandler; +class LogsServiceHandlerOld; class LogsViewManager; class LogsMainWindow; @@ -51,12 +52,17 @@ private slots: //test methods void testConstructor(); + //test functions for old service handler void testStart(); void testStartWithNum(); + //test functions for new service handler + void testShow(); + private: LogsServiceHandler* mService; + LogsServiceHandlerOld* mServiceOld; LogsMainWindow* mMainWindow; LogsViewManager* mLogsViewManager; }; diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h Fri Jun 11 13:38:41 2010 +0300 @@ -23,6 +23,8 @@ class HbMainWindow; class LogsViewManager; class LogsMainWindow; +class LogsServiceHandler; +class LogsServiceHandlerOld; class UT_LogsViewManager : public QObject { @@ -56,11 +58,16 @@ void testStartingWithService(); void testHandleOrientationChanged(); void testCompleteViewActivation(); + void testSaveActivity(); + void testLoadActivity(); private: LogsMainWindow* mMainWindow; LogsViewManager* mLogsViewManager; + + LogsServiceHandler* mService; + LogsServiceHandlerOld* mServiceOld; }; #endif //UT_LOGSVIEWMANAGER_H diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -87,6 +87,16 @@ } // ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsEvent LogsDetailsModel::getLogsEvent() const +{ + return *mEvent; +} + + +// ----------------------------------------------------------------------------- // LogsDetailsModel::rowCount // From QAbstractListModel // ----------------------------------------------------------------------------- diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h Fri Jun 11 13:38:41 2010 +0300 @@ -44,6 +44,7 @@ ~LogsDetailsModel(); void clearEvent(); void getNumberToClipboard(); + LogsEvent getLogsEvent() const; public: // From QAbstractItemModel diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -86,6 +86,27 @@ } // ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +LogsEvent::LogsEvent( QDataStream& serializedEvent ) +{ + serializedEvent >> mLogId; + mLogsEventData = 0; +} + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +bool LogsEvent::serialize( QDataStream& serializeDestination ) +{ + serializeDestination << mLogId; + + return true; +} + +// ---------------------------------------------------------------------------- // LogsEvent::initializeEventL // ---------------------------------------------------------------------------- // diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h Fri Jun 11 13:38:41 2010 +0300 @@ -27,6 +27,7 @@ class LogsEventData; class LogsEventStrings; class CLogEvent; +class QDataStream; // CLASS DECLARATION @@ -181,6 +182,10 @@ */ QString getNumberForCalling(); + LogsEvent( QDataStream& serializedEvent ); + + bool serialize( QDataStream& serializeDestination ); + private: bool setTime( const QDateTime& time ); diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmatchesmodel.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmatchesmodel.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmatchesmodel.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -34,7 +34,7 @@ { LOGS_QDEBUG( "logs [ENG] -> LogsMatchesModel::LogsMatchesModel()" ) mDbConnector = &dbConnector; - mLastCall = QString(); + mLastCall = QString("constructor"); mTextData.append( "firstitem" ); LOGS_QDEBUG( "logs [ENG] <- LogsMatchesModel::LogsMatchesModel()" ) diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -87,6 +87,15 @@ } // ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsDetailsModel* LogsModel::logsDetailsModel(LogsEvent& event) +{ + return new LogsDetailsModel(); +} + +// ----------------------------------------------------------------------------- // LogsModel::markEventsSeen // ----------------------------------------------------------------------------- // diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.h --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.h Fri Jun 11 13:38:41 2010 +0300 @@ -24,6 +24,7 @@ class LogsMatchesModel; class LogsConfigurationParams; +class LogsDetailsModel; /** * @@ -58,6 +59,7 @@ int refreshData(); int compressData(); int updateConfiguration(LogsConfigurationParams& params); + LogsDetailsModel* logsDetailsModel(LogsEvent& event); public: // From QAbstractItemModel diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -38,6 +38,8 @@ #include #include #include +#include +#include void UT_LogsBaseView::initTestCase() { @@ -69,7 +71,6 @@ void UT_LogsBaseView::testConstructor() { QVERIFY( mBaseView ); - QVERIFY( mBaseView->mSoftKeyBackAction ); QVERIFY( !mBaseView->mShowFilterMenu ); QVERIFY( !mBaseView->mInitialized ); QVERIFY( mBaseView->mActionMap.isEmpty() ); @@ -529,6 +530,44 @@ // Receiver and slots specified HbStubHelper::reset(); mBaseView->askConfirmation(QLatin1String("heading"), QLatin1String("text"), this, - SLOT(""), SLOT("")); + SLOT("dummy()"), SLOT("dummy()")); QVERIFY( HbStubHelper::dialogShown() ); } + +void UT_LogsBaseView::testMatchWithActivityId() +{ + QVERIFY( !mBaseView->matchWithActivityId(QString("")) ); + QVERIFY( !mBaseView->matchWithActivityId(QString("somedummy")) ); + mBaseView->mActivities.append( "testActivity1" ); + mBaseView->mActivities.append( "testActivity2" ); + QVERIFY( !mBaseView->matchWithActivityId(QString("")) ); + QVERIFY( !mBaseView->matchWithActivityId(QString("somedummy")) ); + QVERIFY( mBaseView->matchWithActivityId(QString("testActivity2")) ); +} + +void UT_LogsBaseView::testSaveActivity() +{ + QDataStream serializedActivity; + QVariantHash metaData; + QVERIFY( mBaseView->saveActivity(serializedActivity, metaData).isEmpty() ); + mBaseView->mActivities.append( "testActivity1" ); + QVERIFY( mBaseView->saveActivity(serializedActivity, metaData) == QString("testActivity1") ); +} + +void UT_LogsBaseView::testLoadActivity() +{ + QDataStream serializedActivity; + QVariantHash metaData; + QVERIFY( mBaseView->loadActivity(QString("dummy"), serializedActivity, metaData).isNull() ); +} + +void UT_LogsBaseView::testClearActivity() +{ + HbStubHelper::reset(); + HbActivityManager* manager = static_cast(qApp)->activityManager(); + manager->addActivity("someact", QVariant(), QVariantHash()); + QCOMPARE( manager->activities().count(), 1 ); + mBaseView->mActivities.append( "testActivity1" ); + mBaseView->clearActivity(*manager); + QCOMPARE( manager->activities().count(), 0 ); +} diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -68,9 +68,9 @@ void UT_LogsDetailsView::testConstructor() { QVERIFY(mDetailsView); - QVERIFY(mDetailsView->mSoftKeyBackAction); QVERIFY(mDetailsView->viewId() == LogsDetailsViewId ); QVERIFY(!mDetailsView->mDetailsModel); + QCOMPARE( mDetailsView->mActivities.at(0), QString(logsActivityIdViewDetails) ); } void UT_LogsDetailsView::testActivated() @@ -339,3 +339,33 @@ QVERIFY( !LogsMessage::isDefaultMessageSent() ); QVERIFY( LogsMessage::isMessageSent() ); } + +void UT_LogsDetailsView::testSaveActivity() +{ + QByteArray serializedActivity; + int sizeBefore = serializedActivity.size(); + QDataStream stream(&serializedActivity, QIODevice::WriteOnly | QIODevice::Append); + QVariantHash metaData; + QVERIFY( mDetailsView->saveActivity(stream, metaData) == QString(logsActivityIdViewDetails) ); + QVERIFY(serializedActivity.size() == sizeBefore); // Event not serialized as no model + + mDetailsView->mDetailsModel = new LogsDetailsModel(); + mDetailsView->mDetailsModel->mEvent = new LogsEvent; + QVERIFY( mDetailsView->saveActivity(stream, metaData) == QString(logsActivityIdViewDetails) ); + QVERIFY(serializedActivity.size() > sizeBefore); // Event serialized + +} + +void UT_LogsDetailsView::testLoadActivity() +{ + QByteArray serializedActivity; + QDataStream stream(&serializedActivity, QIODevice::ReadWrite | QIODevice::Append); + LogsEvent event; + event.serialize(stream); + QVariantHash metaData; + QVariant args = mDetailsView->loadActivity(QString(logsActivityIdViewDetails), stream, metaData); + QVERIFY( !args.isNull() ); + LogsDetailsModel* model = qVariantValue(args); + QVERIFY( model != 0 ); + delete model; +} diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmatchesview.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmatchesview.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmatchesview.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -70,6 +70,7 @@ QVERIFY( mMatchesView->mActionMap.count() == 0 ); QVERIFY( mMatchesView->mLayoutSectionName == "" ); QVERIFY( !mMatchesView->mAddToContactsButton ); + QCOMPARE( mMatchesView->mActivities.at(0), QString(logsActivityIdViewMatches) ); } void UT_LogsMatchesView::testActivated() @@ -104,23 +105,26 @@ //Pass model as input arg LogsDbConnector* dbConnector = 0; LogsMatchesModel* model1 = new LogsMatchesModel(*dbConnector); + model1->resetLastCall(); QVariant arg = qVariantFromValue( model1 ); mMatchesView->activated( true, arg ); QVERIFY( mMatchesView->mListView ); - QVERIFY( mMatchesView->mModel == model1 ); + QVERIFY( mMatchesView->mModel == model1 ); + QVERIFY( mMatchesView->mModel->mLastCall.isEmpty() ); LogsMatchesModel* model2 = new LogsMatchesModel(*dbConnector); + model2->resetLastCall(); QVariant arg2 = qVariantFromValue( model2 ); mMatchesView->activated( true, arg2 ); QVERIFY( mMatchesView->mListView ); QVERIFY( mMatchesView->mModel == model2 ); + QVERIFY( mMatchesView->mModel->mLastCall.isEmpty() ); // After passing model as input arg, do not pass model mMatchesView->activated( true,QVariant() ); QVERIFY( mMatchesView->mListView ); QVERIFY( mMatchesView->mModel ); - QVERIFY( mMatchesView->mModel != model1 ); - QVERIFY( mMatchesView->mModel != model2 ); + QVERIFY( mMatchesView->mModel->mLastCall == QLatin1String("constructor") ); } diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -94,6 +94,11 @@ QVERIFY( mRecentCallsView->mCurrentView == LogsServices::ViewAll ); QVERIFY( mRecentCallsView->viewId() == LogsRecentViewId ); QVERIFY( mRecentCallsView->mLayoutSectionName == "" ); + QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewAll), QString(logsActivityIdViewRecent) ); + QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewReceived), QString(logsActivityIdViewReceived) ); + QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewCalled), QString(logsActivityIdViewCalled) ); + QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewMissed), QString(logsActivityIdViewMissed) ); + } void UT_LogsRecentCallsView::testInitView() @@ -145,14 +150,14 @@ view->mViewManager.mainWindow().setOrientation( Qt::Horizontal ); view->mDialpad->editor().setText( QString("hello") ); - view->mResetted = true; + view->mFirstActivation = true; view->activated(false, QVariant(LogsServices::ViewAll)); QVERIFY( view->mFilter->filterType() == LogsFilter::All ); VERIFY_CHECKED_ACTION( view, logsShowFilterRecentMenuActionId ) QVERIFY( !view->mDialpad->editor().text().isEmpty() ); QVERIFY( view->mListView->layoutName() == logsListLandscapeLayout ); QVERIFY( view->mLayoutSectionName == logsViewDefaultSection ); - QVERIFY( !view->mResetted ); + QVERIFY( !view->mFirstActivation ); } void UT_LogsRecentCallsView::testDeactivated() @@ -160,14 +165,6 @@ mRecentCallsView->deactivated(); } -void UT_LogsRecentCallsView::testResetView() -{ - // Opened dialpad is closed and text in it is cleared - QVERIFY( !mRecentCallsView->mResetted ); - mRecentCallsView->resetView(); - QVERIFY( mRecentCallsView->mResetted ); -} - void UT_LogsRecentCallsView::testInitListWidget() { //TODO:Q_ASSERT_X @@ -204,6 +201,7 @@ mRecentCallsView->mListView = 0; //filter is updated with a new one, missed calls marking as seen is started (by timer) + mRecentCallsView->mFirstActivation = false; QVERIFY( mRecentCallsView->mFilter ); mRecentCallsView->mListView = new HbListView(); mRecentCallsView->updateFilter(LogsFilter::Missed); @@ -214,9 +212,9 @@ mRecentCallsView->mListView = 0; //filter is updated with a new one, missed calls marking as seen is not started - //as view was resetted + //as this is first view activation HbStubHelper::reset(); - mRecentCallsView->mResetted = true; + mRecentCallsView->mFirstActivation = true; mRecentCallsView->mListView = new HbListView(); mRecentCallsView->updateFilter(LogsFilter::Missed); QVERIFY( mRecentCallsView->mFilter ); @@ -931,3 +929,28 @@ mRecentCallsView->dialpadOpened(); QVERIFY( mViewManager->mViewId == LogsUnknownViewId ); } + +void UT_LogsRecentCallsView::testSaveActivity() +{ + QByteArray serializedActivity; + QDataStream stream(&serializedActivity, QIODevice::WriteOnly | QIODevice::Append); + QVariantHash metaData; + mRecentCallsView->mCurrentView = LogsServices::ViewMissed; + QVERIFY( mRecentCallsView->saveActivity(stream, metaData) == QString(logsActivityIdViewMissed) ); + mRecentCallsView->mCurrentView = LogsServices::ViewAll; + QVERIFY( mRecentCallsView->saveActivity(stream, metaData) == QString(logsActivityIdViewRecent) ); + +} + +void UT_LogsRecentCallsView::testLoadActivity() +{ + QByteArray serializedActivity; + QDataStream stream(&serializedActivity, QIODevice::ReadOnly); + QVariantHash metaData; + QVariant args = mRecentCallsView->loadActivity(QString(logsActivityIdViewCalled), stream, metaData); + QVERIFY( !args.isNull() ); + QVERIFY( args.toInt() == LogsServices::ViewCalled ); + QVariant args2 = mRecentCallsView->loadActivity(QString(logsActivityIdViewMissed), stream, metaData); + QVERIFY( !args2.isNull() ); + QVERIFY( args2.toInt() == LogsServices::ViewMissed); +} diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -18,12 +18,14 @@ //USER #include "ut_logsservicehandler.h" #include "logsservicehandler.h" +#include "logsservicehandlerold.h" #include "qthighway_stub_helper.h" #include "ut_logsviewmanager.h" #include "logsviewmanager.h" #include "logsmainwindow.h" #include "logscomponentrepository.h" #include "logsmatchesview.h" +#include "logsdefs.h" //SYSTEM #include @@ -43,8 +45,9 @@ { mMainWindow = new LogsMainWindow(); mService = new LogsServiceHandler(*mMainWindow); + mServiceOld = new LogsServiceHandlerOld(*mMainWindow); - mLogsViewManager = new LogsViewManager(*mMainWindow, *mService); + mLogsViewManager = new LogsViewManager(*mMainWindow, *mService, *mServiceOld); } @@ -52,6 +55,8 @@ { delete mService; mService = 0; + delete mServiceOld; + mServiceOld = 0; delete mMainWindow; mMainWindow = 0; delete mLogsViewManager; @@ -65,43 +70,101 @@ QVERIFY( mService ); QVERIFY( !mService->mIsAppStartedUsingService ); QVERIFY( !mService->isStartedUsingService() ); + + QVERIFY( mServiceOld ); + QVERIFY( !mServiceOld->mIsAppStartedUsingService ); + QVERIFY( !mServiceOld->isStartedUsingService() ); + QtHighwayStubHelper::setIsService(true); LogsServiceHandler serviceHandler(*mMainWindow); QVERIFY( serviceHandler.mIsAppStartedUsingService ); QVERIFY( serviceHandler.isStartedUsingService() ); + LogsServiceHandlerOld serviceHandlerOld(*mMainWindow); + QVERIFY( serviceHandlerOld.mIsAppStartedUsingService ); + QVERIFY( serviceHandlerOld.isStartedUsingService() ); } void UT_LogsServiceHandler::testStart() { qRegisterMetaType< LogsServices::LogsView >("LogsServices::LogsView"); - QSignalSpy spy(mService, SIGNAL(activateView(LogsServices::LogsView, bool))); + QSignalSpy spy(mServiceOld, SIGNAL(activateView(LogsServices::LogsView, bool))); // Wrong view - QVERIFY( mService->start( 9999, true ) != 0 ); + QVERIFY( mServiceOld->start( 9999, true ) != 0 ); QVERIFY( spy.count() == 0 ); // Correct view - mService->mMainWindow.mForeground = false; - QVERIFY( mService->start( (int)LogsServices::ViewReceived, true ) == 0 ); + mServiceOld->mMainWindow.mForeground = false; + QVERIFY( mServiceOld->start( (int)LogsServices::ViewReceived, true ) == 0 ); QVERIFY( spy.count() == 1 ); LogsServices::LogsView view = qvariant_cast< LogsServices::LogsView >(spy.at(0).at(0)); QVERIFY( view == LogsServices::ViewReceived ); - QVERIFY( mService->currentlyActivatedView() == LogsServices::ViewReceived ); - QVERIFY( mService->mMainWindow.mForeground ); + QVERIFY( mServiceOld->mMainWindow.mForeground ); } void UT_LogsServiceHandler::testStartWithNum() { qRegisterMetaType< LogsServices::LogsView >("LogsServices::LogsView"); - QSignalSpy spy2(mService, SIGNAL(activateView(QString))); + QSignalSpy spy2(mServiceOld, SIGNAL(activateView(QString))); - mService->mMainWindow.mForeground = false; - QVERIFY( mService->startWithNum( (int)LogsServices::ViewReceived, true, + mServiceOld->mMainWindow.mForeground = false; + QVERIFY( mServiceOld->startWithNum( (int)LogsServices::ViewReceived, true, QString("+123456") ) == 0 ); QVERIFY( spy2.count() == 1 ); QVERIFY( spy2.at(0).at(0).toString() == QString("+123456")); - QVERIFY( mService->mMainWindow.mForeground ); + QVERIFY( mServiceOld->mMainWindow.mForeground ); } + +void UT_LogsServiceHandler::testShow() +{ + qRegisterMetaType< LogsServices::LogsView >("LogsServices::LogsView"); + QSignalSpy spy(mService, SIGNAL(activateView(LogsServices::LogsView, bool))); + QSignalSpy spy2(mService, SIGNAL(activateView(QString))); + QVariantMap map; + + // Wrong view + map.insert(logsViewIndexParam, QVariant(9999)); + QVERIFY( mService->show(map) != 0 ); + QVERIFY( spy.count() == 0 ); + QVERIFY( spy2.count() == 0 ); + + // Correct view, dialpad text is empty + map.clear(); + map.insert(logsViewIndexParam, QVariant((int)LogsServices::ViewReceived)); + mService->mMainWindow.mForeground = false; + QVERIFY( mService->show(map) == 0 ); + QVERIFY( spy.count() == 1 ); + QVERIFY( spy2.count() == 0 ); + LogsServices::LogsView view = + qvariant_cast< LogsServices::LogsView >(spy.at(0).at(0)); + QVERIFY( view == LogsServices::ViewReceived ); + QVERIFY( mServiceOld->mMainWindow.mForeground ); + + // Correct view, dialpad text not empty + spy.clear(); + map.clear(); + map.insert(logsViewIndexParam, QVariant((int)LogsServices::ViewReceived)); + map.insert(logsDialpadTextParam, QVariant(QString("+123456"))); + mService->mMainWindow.mForeground = false; + QVERIFY( mService->show(map) == 0 ); + QVERIFY( spy.count() == 0 ); + QVERIFY( spy2.count() == 1 ); + QVERIFY( spy2.at(0).at(0).toString() == QString("+123456")); + QVERIFY( mServiceOld->mMainWindow.mForeground ); + + // Some completly dummy parameters or no params at all + spy.clear(); + spy2.clear(); + map.clear(); + map.insert("dummy_param", QVariant(666)); + mService->mMainWindow.mForeground = false; + QVERIFY( mService->show(map) == 0 ); + QVERIFY( spy.count() == 1 ); + QVERIFY( spy2.count() == 0 ); + view = qvariant_cast< LogsServices::LogsView >(spy.at(0).at(0)); + QVERIFY( view == LogsServices::ViewAll ); + QVERIFY( mServiceOld->mMainWindow.mForeground ); +} diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -19,6 +19,7 @@ #include "ut_logsviewmanager.h" #include "logsviewmanager.h" #include "logsservicehandler.h" +#include "logsservicehandlerold.h" #include "logsmainwindow.h" #include "logscomponentrepository.h" #include "logsrecentcallsview.h" @@ -31,10 +32,11 @@ #include #include #include +#include +#include void UT_LogsViewManager::initTestCase() { - //mMainWindow = new LogsMainWindow(); } void UT_LogsViewManager::cleanupTestCase() @@ -45,14 +47,19 @@ void UT_LogsViewManager::init() { mMainWindow = new LogsMainWindow(); - LogsServiceHandler* service = new LogsServiceHandler(*mMainWindow); - mLogsViewManager = new LogsViewManager(*mMainWindow, *service); + mService = new LogsServiceHandler(*mMainWindow); + mServiceOld = new LogsServiceHandlerOld(*mMainWindow); + mLogsViewManager = new LogsViewManager(*mMainWindow, *mService, *mServiceOld); } void UT_LogsViewManager::cleanup() { delete mLogsViewManager; mLogsViewManager = 0; + delete mService; + mService = 0; + delete mServiceOld; + mServiceOld = 0; delete mMainWindow; mMainWindow = 0; } @@ -61,14 +68,23 @@ { QVERIFY( mLogsViewManager ); QVERIFY( mLogsViewManager->mComponentsRepository ); - QVERIFY( mLogsViewManager->mMainWindow.viewCount() == 3 ); - QVERIFY( mLogsViewManager->mMainWindow.currentView() == 0 ); + QVERIFY( mLogsViewManager->mMainWindow.views().count() == 3 ); + QVERIFY( mLogsViewManager->mMainWindow.currentView() != 0 ); + QVERIFY( static_cast( mLogsViewManager->mMainWindow.currentView() )->viewId() == LogsRecentViewId ); QVERIFY( mLogsViewManager->mViewStack.count() == 3 ); delete mLogsViewManager; mLogsViewManager = 0; - //TODO: removeView deprecated => this will fail - //QVERIFY( mMainWindow->viewCount() == 0 ); + + // Contructor when activity restoring started the app + HbStubHelper::setActivityReason(Hb::ActivationReasonActivity); + mLogsViewManager = new LogsViewManager(*mMainWindow, *mService, *mServiceOld); + QVERIFY( mLogsViewManager->mComponentsRepository ); + QVERIFY( mLogsViewManager->mMainWindow.currentView() != 0 ); + QVERIFY( static_cast( mLogsViewManager->mMainWindow.currentView() )->viewId() == LogsMatchesViewId ); + QVERIFY( mLogsViewManager->mViewStack.count() == 3 ); + HbStubHelper::reset(); + } void UT_LogsViewManager::testActivateView() @@ -76,13 +92,13 @@ // Activate already active view QVERIFY( mLogsViewManager->activateView(LogsRecentViewId) ); QVERIFY( mLogsViewManager->activateView(LogsRecentViewId) ); - QVERIFY( mLogsViewManager->mMainWindow.viewCount() == 3 ); + QCOMPARE( mLogsViewManager->mMainWindow.views().count(), 3 ); QVERIFY( mLogsViewManager->mMainWindow.currentView() == mLogsViewManager->mComponentsRepository->recentCallsView() ); // Activate other view QVERIFY( mLogsViewManager->activateView(LogsDetailsViewId) ); - QVERIFY( mLogsViewManager->mMainWindow.viewCount() == 3 ); + QVERIFY( mLogsViewManager->mMainWindow.views().count() == 3 ); QVERIFY( mLogsViewManager->mMainWindow.currentView() == mLogsViewManager->mComponentsRepository->detailsView() ); QVERIFY( mLogsViewManager->mViewStack.at(0) == @@ -90,7 +106,7 @@ // Try to activate unknown view QVERIFY( !mLogsViewManager->activateView(LogsUnknownViewId) ); - QVERIFY( mLogsViewManager->mMainWindow.viewCount() == 3 ); + QVERIFY( mLogsViewManager->mMainWindow.views().count() == 3 ); QVERIFY( mLogsViewManager->mMainWindow.currentView() == mLogsViewManager->mComponentsRepository->detailsView() ); QVERIFY( mLogsViewManager->mViewStack.at(0) == @@ -98,7 +114,7 @@ // Go back to previous view QVERIFY( mLogsViewManager->activatePreviousView() ); - QVERIFY( mLogsViewManager->mMainWindow.viewCount() == 3 ); + QVERIFY( mLogsViewManager->mMainWindow.views().count() == 3 ); QVERIFY( mLogsViewManager->mMainWindow.currentView() == mLogsViewManager->mComponentsRepository->recentCallsView() ); QVERIFY( mLogsViewManager->mViewStack.at(0) == @@ -157,10 +173,11 @@ LogsMainWindow window; window.setCurrentView(0); // clear stub static data LogsServiceHandler service(*mMainWindow); + LogsServiceHandlerOld serviceOld(*mMainWindow); service.mIsAppStartedUsingService = true; - LogsViewManager vm(window, service); + LogsViewManager vm(window, service, serviceOld); QVERIFY( vm.mComponentsRepository ); - QVERIFY( vm.mMainWindow.viewCount() == 3 ); + QVERIFY( vm.mMainWindow.views().count() == 3 ); QVERIFY( vm.mMainWindow.currentView() == 0 ); QVERIFY( vm.mViewStack.count() == 3 ); } @@ -174,7 +191,7 @@ { // On first activation, wait that view has painted itself once // before completing activation - QVERIFY(mLogsViewManager->mFirstActivation); + mLogsViewManager->mFirstActivation = true; mLogsViewManager->activateView(LogsRecentViewId, true, QVariant()); QVERIFY(!mLogsViewManager->mFirstActivation); QVERIFY(mLogsViewManager->mViewActivationShowDialpad); @@ -182,3 +199,65 @@ mLogsViewManager->completeViewActivation(); // Simulate paint completion (viewReady signal) QVERIFY(mLogsViewManager->mComponentsRepository->model()->mMissedCallsCounterCleared); } + +void UT_LogsViewManager::testSaveActivity() +{ + HbStubHelper::setActivityReason(Hb::ActivationReasonActivity); + HbApplication* hbApp = static_cast(qApp); + HbActivityManager* manager = hbApp->activityManager(); + QCOMPARE( manager->activities().count(), 0 ); + mLogsViewManager->saveActivity(); + QCOMPARE( manager->activities().count(), 1 ); + QVERIFY( !manager->activities().at(0).value(logsActivityParamShowDialpad).toBool() ); + QVERIFY( manager->activities().at(0).value(logsActivityParamDialpadText).toString().isEmpty() ); + + // Make sure that only one activity is reported + mLogsViewManager->mComponentsRepository->dialpad()->mIsOpen = true; + mLogsViewManager->mComponentsRepository->dialpad()->mLineEdit->setText("12345"); + mLogsViewManager->saveActivity(); + QCOMPARE( manager->activities().count(), 1 ); + QVERIFY( manager->activities().at(0).value(logsActivityParamShowDialpad).toBool() ); + QCOMPARE( manager->activities().at(0).value(logsActivityParamDialpadText).toString(), QString("12345") ); + + // No views, nothing to save + mLogsViewManager->mViewStack.clear(); + mLogsViewManager->saveActivity(); + QCOMPARE( manager->activities().count(), 1 ); +} + +void UT_LogsViewManager::testLoadActivity() +{ + mLogsViewManager->mComponentsRepository->mModel->mPredectiveSearchStatus = 1; + HbStubHelper::setActivityReason(Hb::ActivationReasonActivity); + HbApplication* hbApp = static_cast(qApp); + HbActivityManager* manager = hbApp->activityManager(); + + // View activity loaded, no dialpad shown, nor text in it + HbStubHelper::setActivityId(logsActivityIdViewRecent); + mLogsViewManager->mComponentsRepository->dialpad()->mIsOpen = false; + mLogsViewManager->mComponentsRepository->dialpad()->mLineEdit->setText(""); + QVariantHash params; + params.insert(logsActivityParamShowDialpad, false); + params.insert(logsActivityParamDialpadText, QString("")); + manager->addActivity(QString(), QVariant(), params); + QVERIFY( mLogsViewManager->loadActivity() ); + QVERIFY( static_cast( mLogsViewManager->mMainWindow.currentView() )->viewId() == LogsRecentViewId ); + QVERIFY( !mLogsViewManager->mComponentsRepository->dialpad()->mIsOpen ); + QCOMPARE( mLogsViewManager->mComponentsRepository->dialpad()->mLineEdit->text(), QString("") ); + + // Other activity loaded, show dialpad with text + HbStubHelper::setActivityId(logsActivityIdViewMatches); + manager->removeActivity(QString()); + QVariantHash params2; + params2.insert(logsActivityParamShowDialpad, true); + params2.insert(logsActivityParamDialpadText, QString("33333")); + manager->addActivity(QString(), QVariant(), params2); + QVERIFY( mLogsViewManager->loadActivity() ); + QVERIFY( static_cast( mLogsViewManager->mMainWindow.currentView() )->viewId() == LogsMatchesViewId ); + QVERIFY( mLogsViewManager->mComponentsRepository->dialpad()->mIsOpen ); + QCOMPARE( mLogsViewManager->mComponentsRepository->dialpad()->mLineEdit->text(), QString("33333") ); + + // View activity not loaded + HbStubHelper::setActivityId("unknownActivity"); + QVERIFY( !mLogsViewManager->loadActivity() ); +} diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h --- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h Fri Jun 11 13:38:41 2010 +0300 @@ -20,12 +20,20 @@ #include #include -class HbApplication : public QObject +class HbActivityManager; + +class HbApplication : public QApplication { public: HbApplication(int &/*argc*/, char */*argv*/[]); ~HbApplication(); + HbActivityManager *activityManager(); + Hb::ActivationReason activateReason() const; + QVariantHash activateParams() const; + QString activateId() const; + QVariant activateData(); + static void quit(); }; diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -23,7 +23,10 @@ #include #include #include +#include +#include #include +#include #include #include @@ -42,6 +45,11 @@ bool testIsWidgetOpen = false; bool testIsWidgetRaised = false; QColor testColor = Qt::white; +QList testViews; +QList testActivities; +HbActivityManager testActivityManager; +Hb::ActivationReason testActivationReason = Hb::ActivationReasonNormal; +QString testActivityId = "LogsViewMatches"; void HbStubHelper::reset() { @@ -52,6 +60,9 @@ testIsWidgetRaised = false; testDialogShown = false; testColor = Qt::white; + testActivationReason = Hb::ActivationReasonNormal; + testActivityId = "LogsViewMatches"; + testActivities.clear(); } @@ -114,6 +125,41 @@ testColor = col; } +void HbStubHelper::setActivityReason(Hb::ActivationReason reason) +{ + testActivationReason = reason; +} + +void HbStubHelper::setActivityId(QString activityId) +{ + testActivityId = activityId; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +QCoreApplication::QCoreApplication(int &argc, char **argv) +{ + +} + + +void QCoreApplication::quit() +{ + testQuitCalled = true; +} + +QApplication::QApplication(QApplication::QS60MainApplicationFactory factory, int &argc, char **argv, int version) +: QCoreApplication(argc, argv) +{ + +} + +QApplication::~QApplication() +{ + +} bool QGraphicsWidget::close() { @@ -130,11 +176,52 @@ testIsWidgetRaised = true; } +QPixmap QPixmap::grabWidget(QWidget *widget, const QRect &rect) +{ + Q_UNUSED(widget); + Q_UNUSED(rect); + return QPixmap(); +} + // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- // -HbApplication::HbApplication(int &/*argc*/, char */*argv*/[]) +HbActivityManager::HbActivityManager(QObject *parent) : QObject(parent) +{ + +} +HbActivityManager::~HbActivityManager() +{ + +} + +bool HbActivityManager::addActivity(const QString &activityId, const QVariant &data, const QVariantHash ¶meters) +{ + testActivities.append(parameters); +} +bool HbActivityManager::removeActivity(const QString &activityId) +{ + if ( !testActivities.isEmpty() ){ + testActivities.takeFirst(); + } +} +QList HbActivityManager::activities() const +{ + return testActivities; +} + +bool HbActivityManager::waitActivity() +{ + return true; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +HbApplication::HbApplication(int &argc, char *argv[]) : + QApplication(0, argc, argv, 0) { } @@ -147,9 +234,26 @@ testQuitCalled = true; } -void QCoreApplication::quit() +HbActivityManager *HbApplication::activityManager() +{ + return &testActivityManager; +} + +Hb::ActivationReason HbApplication::activateReason() const { - testQuitCalled = true; + return testActivationReason; +} +QVariantHash HbApplication::activateParams() const +{ + return QVariantHash(); +} +QString HbApplication::activateId() const +{ + return testActivityId; +} +QVariant HbApplication::activateData() +{ + return QVariant(); } // ----------------------------------------------------------------------------- @@ -191,6 +295,7 @@ Q_UNUSED(windowFlags) testViewCount = 0; testWindow = this; + testViews.clear(); } HbMainWindow::~HbMainWindow() @@ -211,13 +316,17 @@ QRectF HbMainWindow::layoutRect() const { - return QRectF(0, 0, 100,100); + if (windowOrientation == Qt::Vertical) { + return QRectF(0, 0, 360, 640); + } else { + return QRectF(0, 0, 640, 360); + } } HbView *HbMainWindow::addView(QGraphicsWidget *widget) { - Q_UNUSED(widget) testViewCount++; + testViews.append( static_cast(widget) ); } void HbMainWindow::setCurrentView(HbView *view, bool animate, Hb::ViewSwitchFlags flags) @@ -227,10 +336,11 @@ testView = view; } -int HbMainWindow::viewCount() const +QList HbMainWindow::views() const { - return testViewCount; + return testViews; } + HbView *HbMainWindow::currentView() const { return testView; @@ -272,16 +382,6 @@ } } - -HbAction *HbDialog::exec() -{ - if (selectedActionString == "primary") { - return primaryAction(); - } else { - return 0; - } -} - void QTimer::singleShot(int msec, QObject *receiver, const char *member) { testSingleShotTimer = true; diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h --- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h Fri Jun 11 13:38:41 2010 +0300 @@ -35,6 +35,8 @@ static bool isWidgetOpen(); static bool isWidgetRaised(); static void setColorScheme(QColor col); + static void setActivityReason(Hb::ActivationReason reason); + static void setActivityId(QString activityId); }; #endif diff -r e52d42f9500c -r 41c0a814d878 logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro --- a/logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro Fri Jun 11 13:38:41 2010 +0300 @@ -48,6 +48,7 @@ HEADERS += inc/ut_logseffecthandler.h HEADERS += inc/ut_logspageindicator.h HEADERS += inc/ut_logspageindicatoritem.h +HEADERS += inc/ut_logsservicehandler.h HEADERS += ../../inc/logsmainwindow.h HEADERS += ../../inc/logsviewmanager.h HEADERS += ../../inc/logsrecentcallsview.h @@ -55,12 +56,12 @@ HEADERS += ../../inc/logsdetailsview.h HEADERS += ../../inc/logsmatchesview.h HEADERS += ../../inc/logsservicehandler.h +HEADERS += ../../inc/logsservicehandlerold.h HEADERS += ../../inc/logseffecthandler.h HEADERS += ../../inc/logspageindicator.h HEADERS += ../../inc/logspageindicatoritem.h #HEADERS += ../../../logsengine/inc/logscommondata.h HEADERS += ../../../logsengine/inc/logsconfigurationparams.h -HEADERS += inc/ut_logsservicehandler.h HEADERS += logsengine_stub/logscontact.h HEADERS += logsengine_stub/logsforegroundwatcher.h HEADERS += ./stubs/dialpad.h @@ -97,6 +98,7 @@ SOURCES += ../../src/logsdetailsview.cpp SOURCES += ../../src/logsmatchesview.cpp SOURCES += ../../src/logsservicehandler.cpp +SOURCES += ../../src/logsservicehandlerold.cpp SOURCES += ../../src/logseffecthandler.cpp SOURCES += ../../src/logspageindicator.cpp SOURCES += ../../src/logspageindicatoritem.cpp diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/src/logscntfinder.cpp --- a/logsui/logscntfinder/src/logscntfinder.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logscntfinder/src/logscntfinder.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -307,13 +307,8 @@ entry->setPhoneNumber( contactPhoneNumber.value( QContactPhoneNumber::FieldNumber ) ); QContactAvatar contactAvatar = contact.detail(); - QString subType = contactAvatar.value( QContactAvatar::FieldSubType ); - QString avatar = contactAvatar.value( QContactAvatar::FieldAvatar ); - - if ( subType == QLatin1String( QContactAvatar::SubTypeImage ) && - !avatar.isEmpty() ) { - entry->setAvatarPath( avatar ); - } + QString avatar = contactAvatar.value( QContactAvatar::FieldImageUrl ); + entry->setAvatarPath( avatar ); updateResult( entry ); } diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinder.h --- a/logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinder.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinder.h Fri Jun 11 13:38:41 2010 +0300 @@ -14,23 +14,51 @@ * Description: * */ -#ifndef UT_CNTPREFILTERING_H -#define UT_CNTPREFILTERING_H +#ifndef PT_LOGSCNTFINDER_H +#define PT_LOGSCNTFINDER_H #include #include QTM_USE_NAMESPACE - class LogsCntFinder; +class PtTest +{ +public: + + PtTest( const QString& name ); + void execute( LogsCntFinder& engine ); + void execute( QContactManager& manager ); + void calculateMean(); + void calculateVariance(); + void calculateDeviation(); + void print(); + static QString statHeader(); + +public: + + QString mPattern; + QList mSamples; + float mMean; + float mVariance; + float mStdDeviation; + int mMin; + int mMax; + int mMinSample; + int mMaxSample; + int mResults; -class pt_LogsCntFinder : public QObject +}; + + + +class PT_LogsCntFinder : public QObject { Q_OBJECT public: - inline pt_LogsCntFinder( int samples ) : mSamples(samples) {} + inline PT_LogsCntFinder( int samples ) : mSamples(samples) {} private slots: @@ -57,11 +85,8 @@ void statistics(); private: - void createContacts(); void createContact_one_Contact(QString& firstname, QString& Lastname, QString phnumber); - QContactFilter::MatchFlags flag(int f); - private: QContactManager *m_manager; @@ -70,4 +95,4 @@ }; -#endif //UT_CNTSPREFILTERING_H +#endif //PT_LOGSCNTFINDER_H diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinderqwerty.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinderqwerty.h Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,63 @@ +/* +* 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 PT_LOGSCNTFINDERQWERTY_H +#define PT_LOGSCNTFINDERQWERTY_H + +#include +#include + +QTM_USE_NAMESPACE + + +class PT_LogsCntFinderQwerty : public QObject +{ + Q_OBJECT +public: + + inline PT_LogsCntFinderQwerty( int samples ) : mSamples(samples) {} + +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 statistics(); + +private: + +private: + + QContactManager *m_manager; + int mSamples; +}; + + +#endif //PT_LOGSCNTFINDERQWERTY_H diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro --- a/logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro Fri Jun 11 13:38:41 2010 +0300 @@ -37,8 +37,10 @@ # Input HEADERS += inc\pt_logscntfinder.h - + HEADERS += inc\pt_logscntfinderqwerty.h SOURCES += src\pt_logscntfinder.cpp + SOURCES += src\pt_logscntfinderqwerty.cpp + SOURCES += src\main.cpp symbian: { TARGET.UID2 = 0x100039CE diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/pt_logscntfinder/src/main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/src/main.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,55 @@ +/* +* 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 + +#include "pt_logscntfinder.h" +#include "pt_logscntfinderqwerty.h" + + + +int main(int argc, char *argv[]) //on HW +{ + int samples = 100; + for (int i=0; i @@ -22,33 +22,6 @@ -class PtTest -{ -public: - - PtTest( const QString& name ); - void execute( LogsCntFinder& engine ); - void calculateMean(); - void calculateVariance(); - void calculateDeviation(); - void print(); - static QString statHeader(); - -public: - - QString mPattern; - QList mSamples; - float mMean; - float mVariance; - float mStdDeviation; - int mMin; - int mMax; - int mMinSample; - int mMaxSample; - int mResults; - -}; - PtTest::PtTest( const QString& name ) : mPattern(name), @@ -73,8 +46,6 @@ engine.predictiveSearchQuery( mPattern ); mSamples.append( t.elapsed()); mResults += engine.resultsCount(); - //mSamples.append( qrand() / 100000000 ); - //mResults += (100 - mPattern.length() ); } @@ -157,68 +128,44 @@ } -void pt_LogsCntFinder::initTestCase() +void PT_LogsCntFinder::initTestCase() { } -void pt_LogsCntFinder::cleanupTestCase() +void PT_LogsCntFinder::cleanupTestCase() { } -void pt_LogsCntFinder::init() +void PT_LogsCntFinder::init() { - qDebug() << "pt_LogsCntFinder::init start"; + qDebug() << "PT_LogsCntFinder::init start"; m_finder = 0; //open symbian database m_manager = new QContactManager("symbian"); - //qDebug() << "pt_LogsCntFinder::init remove old contacts"; + //qDebug() << "PT_LogsCntFinder::init remove old contacts"; // Remove all contacts from the database QList cnt_ids = m_manager->contactIds(); qDebug() << "contacts now in db" << cnt_ids.count(); if ( cnt_ids.count() == 600 ) { - QString f("Jack"); - QString l("Whatever"); - createContact_one_Contact( f,l, QString("03432")); - } + QString f("Jack"); + QString l("Whatever"); + createContact_one_Contact( f,l, QString("03432")); + } - cnt_ids = m_manager->contactIds(); + cnt_ids = m_manager->contactIds(); qDebug() << "contacts now " << cnt_ids.count(); - - - /*if ( cnt_ids.count() != 600 ) { - qDebug() << "contacts now before delete" << cnt_ids.count(); - m_manager->removeContacts(&cnt_ids); - cnt_ids = m_manager->contactIds(); - qDebug() << "contacts now " << cnt_ids.count(); - - QVERIFY(0 == cnt_ids.count()); - - //qDebug() << "pt_LogsCntFinder::createContacts"; - createContacts(); - //qDebug() << "pt_LogsCntFinder::createContacts DONE"; - //qDebug() << "contacts now after create" << cnt_ids.count(); - }*/ - - m_finder = new LogsCntFinder( *m_manager ); - qDebug() << "pt_LogsCntFinder::init end"; + qDebug() << "PT_LogsCntFinder::init end"; } -void pt_LogsCntFinder::cleanup() +void PT_LogsCntFinder::cleanup() { - /*m_manager = new QContactManager("symbian"); - QList cnt_ids = m_manager->contactIds(); - m_manager->removeContacts(&cnt_ids); - cnt_ids = m_manager->contactIds(); - qDebug() << "contacts now " << cnt_ids.count(); - - QVERIFY(0 == cnt_ids.count());*/ delete m_manager; m_manager = 0; delete m_finder; @@ -226,39 +173,9 @@ } -void pt_LogsCntFinder::createContacts() -{ - //qDebug() << "pt_LogsCntFinder::createContacts"; - QList firstnamelist; - QList Lastnamelist; - firstnamelist<<"Micheal"<<"Evans"<<"Kris"<<"Xiao"<<"Una Vivi"<<"Wilda"<<"Tisha"<<"Queen"<<"Olga"<<"Maria Zola"; - //Lastnamelist<<"Ribecca"<<"Tina"<<"Bob"<<"George"<<"Anna"<<"Yadira"<<"Lennon"<<"Jones"<<"Augustin Zi"<<"Csoma"<<"Baranik"<<"Harhai"; - Lastnamelist<<"Ribecca"<<"Tina"<<"Bob"<<"George"<<"Anna"<<"Yadira"<<"Lennon"<<"Jones"<<"Augustin Zi"<<"Csoma"; - - //for( int z = 0;z<100;z++) { - for( int z = 0;z<5;z++) { - for(int i =0; i < firstnamelist.count(); i++) { - for(int k =0; k < Lastnamelist.count(); k++) { - createContact_one_Contact(firstnamelist[i], Lastnamelist[k], QString("03432")); - } - } - } - - // Empty contact - //QContact empty; - //m_manager->saveContact(&empty); - /* - QList cnt_ids = m_manager->contactIds(); - cnt_ids = m_manager->contactIds(); - int j = cnt_ids.count(); - QVERIFY( j == 900 ); - */ - //qDebug() << "pt_LogsCntFinder::createContacts DONE"; - -} -void pt_LogsCntFinder::createContact_one_Contact(QString& firstname, QString& Lastname, QString phnumber) +void PT_LogsCntFinder::createContact_one_Contact(QString& firstname, QString& Lastname, QString phnumber) { //Currenlty we can only fetch firstname,lastname,companyname and sip/email/phone from the databse // so create contact with only these details @@ -276,18 +193,15 @@ number.setNumber(phnumber); phonecontact.saveDetail(&number); - //qDebug() << "pt_LogsCntFinder::createContact_one_Contact about to save.."; - m_manager->saveContact(&phonecontact); - //qDebug() << "pt_LogsCntFinder::createContact_one_Contact done"; } -void pt_LogsCntFinder::testPredictiveQuery() +void PT_LogsCntFinder::testPredictiveQuery() { const int rowsInDisplay = 10; - qDebug() << "=>pt_LogsCntFinder::testPredictiveQuery"; + qDebug() << "=>PT_LogsCntFinder::testPredictiveQuery"; QTime t; qDebug() << "--- testing query with 5 ---"; @@ -301,42 +215,31 @@ qDebug() << "-- list 10 matched records start --"; for( int i=0;(i < rowsInDisplay && i < results);i++) { - QTime t1; - t1.start(); - const LogsCntEntry& data = m_finder->resultAt( i ); - //qDebug() << "First Name: "; - for (int j = 0; j < data.firstName().length(); j++) { - //qDebug() << data.firstName().at(j).text(); - } - //qDebug() << "Last Name: "; - for (int k = 0; k < data.lastName().length(); k++) { - //qDebug() << data.lastName().at(k).text(); - } - //qDebug() << "Phone number: " << data.phoneNumber().text(); - - qDebug() << "fetched one contact"; - qDebug(" Time elapsed:%d ms", t1.elapsed()); + QTime t1; + t1.start(); + const LogsCntEntry& data = m_finder->resultAt( i ); + qDebug() << "fetched one contact"; + qDebug(" Time elapsed:%d ms", t1.elapsed()); } qDebug() << "-- list 10 matched records end --"; qDebug(" Time elapsed:%d ms", t.elapsed()); - qDebug() << "<=pt_LogsCntFinder::testPredictiveQuery"; - + qDebug() << "<=PT_LogsCntFinder::testPredictiveQuery"; } -void pt_LogsCntFinder::testExtendedQuery() +void PT_LogsCntFinder::testExtendedQuery() { - qDebug() << "=>pt_LogsCntFinder::testExtendedQuery"; - qDebug() << "<=pt_LogsCntFinder::testPredictiveQuery"; + qDebug() << "=>PT_LogsCntFinder::testExtendedQuery"; + qDebug() << "<=PT_LogsCntFinder::testPredictiveQuery"; } -void pt_LogsCntFinder::testDiffHitQuery() +void PT_LogsCntFinder::testDiffHitQuery() { - qDebug() << "=>pt_LogsCntFinder::testDiffHitQuery"; + qDebug() << "=>PT_LogsCntFinder::testDiffHitQuery"; QTime t; @@ -380,14 +283,14 @@ results = m_finder->resultsCount(); qDebug() << "found " << results << " matches:"; - qDebug() << "<=pt_LogsCntFinder::testDiffHitQuery"; + qDebug() << "<=PT_LogsCntFinder::testDiffHitQuery"; } -void pt_LogsCntFinder::statistics() +void PT_LogsCntFinder::statistics() { - qDebug() << "=> pt_LogsCntFinder::statistics"; + qDebug() << "=> PT_LogsCntFinder::statistics"; int results = 0; int queries = 0; int ind = mSamples; //samples @@ -439,28 +342,7 @@ tests[ind].print(); } - qDebug() << "<= pt_LogsCntFinder::statistics"; + qDebug() << "<= PT_LogsCntFinder::statistics"; } -//QTEST_MAIN(pt_LogsCntFinder); // on Emulator - -int main(int argc, char *argv[]) //on HW -{ - int samples = 100; - for (int i=0; i +#include + + +void PtTest::execute( QContactManager& manager ) +{ + + QContactDetailFilter df; + df.setDetailDefinitionName(QContactName::DefinitionName, QContactEmailAddress::FieldEmailAddress ); + df.setMatchFlags( QContactFilter::MatchKeypadCollation ); + QString pattern = mPattern + QChar(30) + QString("vqwerty"); + df.setValue( pattern ); + + QTime t; + t.start(); + + QList cnt_ids = manager.contactIds( df ); + mSamples.append( t.elapsed()); + mResults += cnt_ids.count(); + +} + +void PT_LogsCntFinderQwerty::initTestCase() +{ +} + +void PT_LogsCntFinderQwerty::cleanupTestCase() +{ + +} + + +void PT_LogsCntFinderQwerty::init() +{ + qDebug() << "PT_LogsCntFinderQwerty::init start"; + //open symbian database + m_manager = new QContactManager("symbian"); + + QList cnt_ids = m_manager->contactIds(); + qDebug() << "contacts now in db" << cnt_ids.count(); + qDebug() << "PT_LogsCntFinderQwerty::init end"; +} + +void PT_LogsCntFinderQwerty::cleanup() +{ + delete m_manager; + m_manager = 0; +} + + + +void PT_LogsCntFinderQwerty::statistics() +{ + qDebug() << "=> PT_LogsCntFinderQwerty::statistics"; + int results = 0; + int queries = 0; + int ind = mSamples; //samples + QTime t; + + QList tests; + tests.append( PtTest("a") ); + tests.append( PtTest("5") ); + tests.append( PtTest("Paul") ); + tests.append( PtTest("Paul Mes") ); + + t.start(); + + while( ind > 0 ) { + for( int j = 0; j < tests.length(); j++ ) { + tests[j].execute( *m_manager ); + queries++; + } + ind--; + } + + int totalTime = t.elapsed(); + + + for( ind = 0; ind < tests.length(); ind++ ) { + tests[ind].calculateMean(); + tests[ind].calculateVariance(); + tests[ind].calculateDeviation(); + results += tests[ind].mResults; + } + + qDebug("-- Statistics --"); + qDebug("%d queries executed with %d results in %d ms.", + queries, results, totalTime ); + qDebug() << PtTest::statHeader(); + for( ind = 0; ind < tests.length(); ind++ ) { + tests[ind].print(); + } + + qDebug() << "<= PT_LogsCntFinderQwerty::statistics"; +} + diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h --- a/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h Fri Jun 11 13:38:41 2010 +0300 @@ -26,7 +26,7 @@ class LogsCntFinder; -class st_LogsCntFinder : public QObject +class ST_LogsCntFinder : public QObject { Q_OBJECT @@ -48,14 +48,33 @@ void cleanup(); private slots: //test methods - void testPredictiveSearchQuery(); - void testPredictiveThaiSearchQuery(); - void testKeymap(); + + void testKeymap_2(); + void testKeymap_3(); + void testKeymap_4(); + void testKeymap_5(); + void testKeymap_6(); + void testKeymap_7(); + void testKeymap_8(); + void testKeymap_9(); void testPredictiveSearchQueryZeroStart(); + void testPredictiveSearchQueryZeroStartZeroEnd(); void testPredictiveSearchQueryZeroMiddle(); + void testPredictiveSearchQueryMultiZerosMiddle(); + void testPredictiveSearchQueryZeroMiddleLong(); + void testPredictiveSearchQueryMultiZerosAndZeroMiddle(); + void testPredictiveSearchQueryPartialCached(); + void testPredictiveSearchQueryFullyCached(); + void testPredictiveSearchQueryPartialCachedNoResults(); + void testPredictiveSearchQueryFullyCachedNoResults(); + void testPredictiveSearchQueryCachedZeroCase(); + void testPredictiveSearchQueryLogs(); + void testPredictiveSearchQueryLogsZeroCase(); + void testPredictiveSearchQueryLogsContactsPartialCached(); + void testPredictiveSearchQueryLogsContactsFullyCached(); + void testPredictiveSearchQueryLogsContactsZeroCase(); + void testPredictiveSearchQueryLogsContactsPhoneNumberMatch(); void testPredictiveSearchQueryLimit(); - void testPredictiveSearchQueryLogs(); - void testPredictiveSearchQueryLogsContacts(); void testQueryOrder(); private: @@ -71,7 +90,6 @@ void createContactsForQueryOrder(); void createContactsForQueryZero(); void createHistoryEvents(); - void createThaiContacts(); void createLogEvent( QString firstname, QString Lastname, diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinderqwerty.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinderqwerty.h Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,68 @@ +/* +* 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 ST_LOGSCNTFINDERQWERTY_H +#define ST_LOGSCNTFINDERQWERTY_H + +#include +#include +#include + +QTM_USE_NAMESPACE + +class LogsCntFinder; + + +class ST_LogsCntFinderQwerty : 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 testPredictiveEmailSearchNameAndEmailMatch(); + void testPredictiveEmailSearchWithSpace(); + void testPredictiveEmailSearchEmailMatch(); + void testPredictiveEmailSearchNoEmails(); + void testPredictiveEmailSearchOverLongPattern(); + void testPredictiveEmailSearchSpecialCharsInPattern(); + +private: + + void createContacts(); + +private: + QContactManager *m_manager; +}; + + +#endif // ST_LOGSCNTFINDERQWERTY_H diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinderthai.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinderthai.h Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,66 @@ +/* +* 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 ST_LOGSCNTFINDERTHAI_H +#define ST_LOGSCNTFINDERTHAI_H + +#include +#include +#include + +QTM_USE_NAMESPACE + +class LogsCntFinder; + + +class ST_LogsCntFinderThai : 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 testPredictiveThaiSearchQuery(); + +private: + + void createThaiContacts(); + void createOneContact(QString firstname, QString Lastname, + QString phnumber); + + +private: + QContactManager *m_manager; + LogsCntFinder *m_finder; +}; + + +#endif // ST_LOGSCNTFINDERTHAI_H diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/st_logscntfinder/src/main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logscntfinder/tsrc/st_logscntfinder/src/main.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,71 @@ +/* +* 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 + +#include "st_logscntfinder.h" +#include "st_logscntfinderqwerty.h" +#include "st_logscntfinderthai.h" + +#include "testresultxmlparser.h" + + +#define STEST_CLASS( tc )\ + tc tc##_instance;\ + QStringList tc##_args( #tc );\ + resultFileName = QString("c:/data/others/") + QString( #tc ) + QString(".xml");\ + tc##_args << "-xml" << "-o" << resultFileName;\ + QTest::qExec(&tc##_instance, tc##_args);\ + parser.parseAndPrintResults(resultFileName,true) + + + +int main(int argc, char *argv[]) +{ + bool promptOnExit(false); + bool useQApplication(true); + for (int i=0; i #include -void st_LogsCntFinder::initTestCase() + +#define CHECK_RESULTS( count, first, last )\ + for(int i=0;iresultAt(0).firstName().at(0).text(), QString(first));\ + QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString(last));\ + } else {\ + m_finder->resultAt(i);\ + }\ + } + + +void ST_LogsCntFinder::initTestCase() { } -void st_LogsCntFinder::cleanupTestCase() +void ST_LogsCntFinder::cleanupTestCase() { } -void st_LogsCntFinder::init() +void ST_LogsCntFinder::init() { + HbInputLanguage eng( QLocale::English ); + HbInputSettingProxy::instance()->setGlobalInputLanguage( eng ); + m_finder = 0; //open symbian database m_manager = new QContactManager("symbian"); @@ -43,8 +58,8 @@ // Remove all contacts from the database QList cnt_ids = m_manager->contactIds(); qDebug() << "contacts now before deleting" << cnt_ids.count(); - - QVERIFY(m_manager->removeContacts(&cnt_ids, 0)); + + QVERIFY( m_manager->removeContacts(cnt_ids, 0 ) ); cnt_ids = m_manager->contactIds(); QCOMPARE(cnt_ids.count(), 0); @@ -54,7 +69,7 @@ } } -void st_LogsCntFinder::cleanup() +void ST_LogsCntFinder::cleanup() { delete m_manager; m_manager = 0; @@ -65,7 +80,7 @@ } -void st_LogsCntFinder::createContacts() +void ST_LogsCntFinder::createContacts() { /*Create contacts in Contacts DB for keymap testing Stefann Yadira @@ -99,41 +114,33 @@ int contactsCount = m_manager->contactIds().count(); QCOMPARE(contactsCount, 13); - qDebug() << "st_LogsCntFinder::createContacts_testKeymap. created " << contactsCount << " contacts"; } -void st_LogsCntFinder::createThaiContacts() +/* +Dlice 00202 Qwerty 45789348 +#Paula 2003 Augustin Ci 0078945617 +Paula 02010 Ezerty Adam 78945617 +Ced Y,g +78945617 +Jari-Pekka Baraniktestteste 78945617 +*/ +void ST_LogsCntFinder::createContactsForQueryZero() { - /*Create contacts in Contacts DB + createContacts(); + createOneContact( QString("Dlice 00202"), QString("Qwerty"), QString("45789348") ); + createOneContact( QString("#Paula 2003"), QString("Augustin Ci"), QString("0078945617") ); + createOneContact( QString("Paula 02010"), QString("Ezerty Adam"), QString("78945617") ); + createOneContact( QString("Ced"), QString("Y,g"), QString("+78945617") ); + createOneContact( QString("Jari-Pekka"), QString(" "), QString("78945617") ); - */ - - const QChar thaiFName1[] = {0x0E06,0x0E0A}; // map:23 - const QChar thaiLName1[] = {0x0E0E,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };//map 456789 - - QString first ( thaiFName1, 2 ); - QString last ( thaiFName1, 6 ); - createOneContact( first, last, QString("932472398") ); - - const QChar thaiFName2[] = {0x0E30,0x0E0A};//#3, - const QChar thaiLName2[] = {0x0E2F,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };//*56789 - - QString first2 ( thaiFName1, 2 ); - QString last2 ( thaiFName1, 6 ); - createOneContact( first2, last2, QString("932472398") ); - - - int contactsCount = m_manager->contactIds().count(); - QCOMPARE(contactsCount, 2); - qDebug() << "st_LogsCntFinder::createThaiContacts_ThaiSearch. created " << contactsCount << " contacts"; - - + QCOMPARE(contactsCount, 18); } -void st_LogsCntFinder::createHistoryEvents() + + +void ST_LogsCntFinder::createHistoryEvents() { createLogEvent( QString("Stefann Albert"), QString("Fedrernn"), QString("932472398") ); createLogEvent( QString("Jonn"), QString("Lennon"), QString("932472398") ); @@ -141,7 +148,7 @@ } -void st_LogsCntFinder::createLogEvent(QString firstname, QString lastname, +void ST_LogsCntFinder::createLogEvent(QString firstname, QString lastname, QString phnumber) { LogsCntEntryHandle* dummy = 0; @@ -156,8 +163,20 @@ } +void ST_LogsCntFinder::createContactsForQueryOrder() +{ + createContacts(); + createOneContact( QString("Anna"), QString("Qwerty"), QString("45789348") ); + createOneContact( QString("Paula"), QString("Qwerty"), QString("78945617") ); + createOneContact( QString("Paula"), QString("Azerty"), QString("78945617") ); -void st_LogsCntFinder::createOneContact(QString firstname, QString Lastname, + int contactsCount = m_manager->contactIds().count(); + QCOMPARE(contactsCount, 16); +} + + + +void ST_LogsCntFinder::createOneContact(QString firstname, QString Lastname, QString phnumber) { //Currenlty we can only fetch firstname,lastname,companyname and sip/email/phone from the databse @@ -177,7 +196,7 @@ phonecontact.saveDetail(&number); m_manager->saveContact(&phonecontact); - qDebug() << "st_LogsCntFinder::createOneContact done"; + qDebug() << "ST_LogsCntFinder::createOneContact done"; } @@ -186,138 +205,6 @@ // Tests // -void st_LogsCntFinder::testPredictiveThaiSearchQuery() -{ - HbInputLanguage thai( QLocale::Thai ); - HbInputSettingProxy::instance()->setGlobalInputLanguage( thai ); - - createThaiContacts(); - - //There is no recent call in logs UI - //case 1 - /*m_finder->predictiveSearchQuery( QString("2") ); - QCOMPARE( m_finder->resultsCount(), 1 );*/ - qDebug() << "-- 2 query starts --"; - m_finder->predictiveSearchQuery( QString("2") ); - qDebug() << "found " << m_finder->resultsCount() << " matches:"; - - qDebug() << "-- 4 query starts --"; - m_finder->predictiveSearchQuery( QString("4") ); - qDebug() << "found " << m_finder->resultsCount() << " matches:"; - qDebug() << "-- 402 query starts --"; - m_finder->predictiveSearchQuery( QString("402") ); - qDebug() << "found " << m_finder->resultsCount() << " matches:"; - qDebug() << "-- *4 query starts --"; - m_finder->predictiveSearchQuery( QString("*4") ); - qDebug() << "found " << m_finder->resultsCount() << " matches:"; - qDebug() << "-- *402### query starts --"; - m_finder->predictiveSearchQuery( QString("*402###") ); - qDebug() << "found " << m_finder->resultsCount() << " matches:"; - - /*m_finder->predictiveSearchQuery( QString("4") ); - QCOMPARE( m_finder->resultsCount(), 1 ); - - m_finder->predictiveSearchQuery( QString("402") ); - QCOMPARE( m_finder->resultsCount(), 1 ); - - m_finder->predictiveSearchQuery( QString("*4") ); - QCOMPARE( m_finder->resultsCount(), 1 ); - - m_finder->predictiveSearchQuery( QString("*402###") ); - QCOMPARE( m_finder->resultsCount(), 1 ); - - m_finder->predictiveSearchQuery( QString("*4***00002###") ); - QCOMPARE( m_finder->resultsCount(), 1 ); - */ - - -} - - -// Test basic predictive search, all records with names starting letters "J, K, L" are matched -void st_LogsCntFinder::testPredictiveSearchQuery() -{ - createContacts(); - - //There is no recent call in logs UI - //case 1 - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 5 ); - //see half of matched results - //results == for(int i =0;iresultCount() / 2;i++){f->resultAt(i);} - /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Maria-Zola")); - QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Jones")); - QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("Jonn")); - QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString("Ennon"));*/ - - m_finder->predictiveSearchQuery( QString("566") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 5 ); - - //case 2 - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 5 ); - //see all of the matched results - //results == for(int i =0;iresultCount();i++){f->resultAt(i);} - /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Maria-Zola")); - QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Jones")); - QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("Jonn")); - QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString("Ennon")); - QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Una Vivi")); - QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Kantsak")); - QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("Wilda")); - QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString("Lazar")); - QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("Levis")); - QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString("Augustin Zi")); - */ - - m_finder->predictiveSearchQuery( QString("566") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 5 ); - - //case 3 - m_finder->predictiveSearchQuery( QString("6") ); - QCOMPARE( m_finder->resultsCount(), 3 ); - //see all of matched results - //results == for(int i =0;iresultCount();i++){f->resultAt(i);} - /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Maria-Zola")); - QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Jones")); - QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Nancy")); - QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Csoma")); - QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("Olga")); - QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString("Baraniktestteste"));*/ - - m_finder->predictiveSearchQuery( QString("69") ); - QCOMPARE( m_finder->resultsCount(), 0 ); - m_finder->predictiveSearchQuery( QString("692") ); - QCOMPARE( m_finder->resultsCount(), 0 ); - m_finder->predictiveSearchQuery( QString("6") ); - QCOMPARE( m_finder->resultsCount(), 3 ); - - //case 4 - - m_finder->predictiveSearchQuery( QString("2") ); - QCOMPARE( m_finder->resultsCount(), 3 ); - //see half of matched results - //results == for(int i =0;iresultCount() / 2;i++){f->resultAt(i);} - /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Levis")); - QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Augustin Zi")); - QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/ - - m_finder->predictiveSearchQuery( QString("20") ); - QCOMPARE( m_finder->resultsCount(), 3 ); - m_finder->predictiveSearchQuery( QString("209") ); - QCOMPARE( m_finder->resultsCount(), 1 ); - m_finder->predictiveSearchQuery( QString("20") ); - QCOMPARE( m_finder->resultsCount(), 3 ); - m_finder->predictiveSearchQuery( QString("2") ); - QCOMPARE( m_finder->resultsCount(), 3 ); - -} - /* Test itut keymap predictive search, checking that press key "2", records with names starting letters "A, B, C" are matched; Press key "3", records with names starting letters "D,E,F" are matched; Press key "4", records with names starting letters "G,H,I" are matched; @@ -329,66 +216,86 @@ Press key "0", records with names starting letters "space" etc. are matched; Press key "1", records with names starting letters "-,Ä,Ö" etc. are matched; */ -void st_LogsCntFinder::testKeymap() +void ST_LogsCntFinder::testKeymap_2() +{ + createContacts(); + const LogsCntEntry* data; + m_finder->predictiveSearchQuery( QString("2") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + data = &m_finder->resultAt( 0 ); + QCOMPARE( data->firstName().count(), 1 ); +} + +void ST_LogsCntFinder::testKeymap_3() +{ + createContacts(); + const LogsCntEntry* data; + m_finder->predictiveSearchQuery( QString("3") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + data = &m_finder->resultAt( 0 ); + QCOMPARE( data->firstName().count(), 1 ); +} + +void ST_LogsCntFinder::testKeymap_4() +{ + createContacts(); + const LogsCntEntry* data; + m_finder->predictiveSearchQuery( QString("4") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + data = &m_finder->resultAt( 0 ); + QCOMPARE( data->firstName().count(), 1 ); +} + +void ST_LogsCntFinder::testKeymap_5() { createContacts(); const LogsCntEntry* data; - - for (int i = 2; i < 10; i++) - { - m_finder->predictiveSearchQuery( QString::number(i) ); - switch( i ) - { - case 2: - QCOMPARE( m_finder->resultsCount(), 3 ); - data = &m_finder->resultAt( 0 ); - QCOMPARE( data->firstName().count(), 1 ); - break; + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 5 ); + data = &m_finder->resultAt( 0 ); + QCOMPARE( data->firstName().count(), 1 ); +} - case 3: - QCOMPARE( m_finder->resultsCount(), 3 ); - data = &m_finder->resultAt( 0 ); - QCOMPARE( data->firstName().count(), 1 ); - break; - - case 4: - QCOMPARE( m_finder->resultsCount(), 3 ); - data = &m_finder->resultAt( 0 ); - QCOMPARE( data->firstName().count(), 1 ); - break; +void ST_LogsCntFinder::testKeymap_6() +{ + createContacts(); + const LogsCntEntry* data; + m_finder->predictiveSearchQuery( QString("6") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + data = &m_finder->resultAt( 0 ); + QCOMPARE( data->firstName().count(), 1 ); +} - case 5: - QCOMPARE( m_finder->resultsCount(), 5 ); - data = &m_finder->resultAt( 0 ); - QCOMPARE( data->firstName().count(), 1 ); - break; - - case 6: - QCOMPARE( m_finder->resultsCount(), 3 ); - data = &m_finder->resultAt( 0 ); - QCOMPARE( data->firstName().count(), 1 ); - break; +void ST_LogsCntFinder::testKeymap_7() +{ + createContacts(); + const LogsCntEntry* data; + m_finder->predictiveSearchQuery( QString("7") ); + QCOMPARE( m_finder->resultsCount(), 5 ); + data = &m_finder->resultAt( 0 ); + QCOMPARE( data->firstName().count(),1 ); +} - case 7: - QCOMPARE( m_finder->resultsCount(), 5 ); - data = &m_finder->resultAt( 0 ); - QCOMPARE( data->firstName().count(),1 ); - break; +void ST_LogsCntFinder::testKeymap_8() +{ + createContacts(); + const LogsCntEntry* data; + m_finder->predictiveSearchQuery( QString("8") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + data = &m_finder->resultAt( 0 ); + QCOMPARE( data->firstName().count(), 1 ); +} - case 8: - QCOMPARE( m_finder->resultsCount(), 2 ); - data = &m_finder->resultAt( 0 ); - QCOMPARE( data->firstName().count(), 1 ); - break; +void ST_LogsCntFinder::testKeymap_9() +{ + createContacts(); + const LogsCntEntry* data; + m_finder->predictiveSearchQuery( QString("9") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + data = &m_finder->resultAt( 0 ); + QCOMPARE( data->firstName().count(), 1 ); +} - case 9: - QCOMPARE( m_finder->resultsCount(), 3 ); - data = &m_finder->resultAt( 0 ); - QCOMPARE( data->firstName().count(), 1 ); - break; - } - } -} /* Test zero query search: 1. zero between "1-9" numbers, then first zero works as "AND" statement; 2. (multiple) zero at beginning; 3. (multiple) zero at the end; @@ -396,59 +303,350 @@ 6. Query limit is 15, the 16th is ignored, and first 0 works as "AND" statement */ -void st_LogsCntFinder::testPredictiveSearchQueryZeroStart() +void ST_LogsCntFinder::testPredictiveSearchQueryZeroStart() { createContactsForQueryZero(); m_finder->predictiveSearchQuery( QString("00202") ); QCOMPARE( m_finder->resultsCount(), 2 ); - +} + +void ST_LogsCntFinder::testPredictiveSearchQueryZeroStartZeroEnd() +{ + createContactsForQueryZero(); + m_finder->predictiveSearchQuery( QString("02010") ); QCOMPARE( m_finder->resultsCount(), 1 ); +} -} -void st_LogsCntFinder::testPredictiveSearchQueryZeroMiddle() +void ST_LogsCntFinder::testPredictiveSearchQueryZeroMiddle() { createContactsForQueryZero(); - m_finder->predictiveSearchQuery( QString("566") ); - QCOMPARE( m_finder->resultsCount(), 2 ); m_finder->predictiveSearchQuery( QString("56603") ); QCOMPARE( m_finder->resultsCount(), 1 ); +} + +void ST_LogsCntFinder::testPredictiveSearchQueryMultiZerosMiddle() +{ + createContactsForQueryZero(); m_finder->predictiveSearchQuery( QString("2003") ); QCOMPARE( m_finder->resultsCount(), 2 ); - +} + +void ST_LogsCntFinder::testPredictiveSearchQueryZeroMiddleLong() +{ + createContactsForQueryZero(); + m_finder->predictiveSearchQuery( QString("2272645837883065") ); QCOMPARE( m_finder->resultsCount(), 1 ); - +} + +void ST_LogsCntFinder::testPredictiveSearchQueryMultiZerosAndZeroMiddle() +{ + createContactsForQueryZero(); + m_finder->predictiveSearchQuery( QString("200904") ); QCOMPARE( m_finder->resultsCount(), 1 ); } -/* -Dlice 00202 Qwerty 45789348 -#Paula 2003 Augustin Ci 0078945617 -Paula 02010 Ezerty Adam 78945617 -Ced Y,g +78945617 -Jari-Pekka Baraniktestteste 78945617 -*/ -void st_LogsCntFinder::createContactsForQueryZero() + +// Test basic predictive search, all records with names starting letters "J, K, L" are matched + +// 5 -> 56 -> 5 -> 56 (not all cached) +void ST_LogsCntFinder::testPredictiveSearchQueryPartialCached() +{ + createContacts(); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 5 ); + //see half of matched results + CHECK_RESULTS( 3, "Jonn", "Ennon" ); + + m_finder->predictiveSearchQuery( QString("56") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + //see half of matched results + CHECK_RESULTS( 1, "Jonn", "Ennon" ); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 5 ); + CHECK_RESULTS( 3, "Jonn", "Ennon" ); + + m_finder->predictiveSearchQuery( QString("56") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + //see half of matched results + CHECK_RESULTS( 1, "Jonn", "Ennon" ); + +} + +// 5 -> 56 -> 5 -> 56 (all cached) +void ST_LogsCntFinder::testPredictiveSearchQueryFullyCached() +{ + createContacts(); + + //case 1 + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 5 ); + //see all matched results + CHECK_RESULTS( 5, "Jonn", "Ennon" ); + + m_finder->predictiveSearchQuery( QString("56") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + //see all of matched results + CHECK_RESULTS( 2, "Jonn", "Ennon" ); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 5 ); + //see all of matched results + CHECK_RESULTS( 5, "Jonn", "Ennon" ); + + m_finder->predictiveSearchQuery( QString("56") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + //see all of matched results + CHECK_RESULTS( 2, "Jonn", "Ennon" ); + +} + +// 6 -> 69 (no match) -> 692 (no match) -> 69 (no match) -> 6 -> 69 (not all cached) +void ST_LogsCntFinder::testPredictiveSearchQueryPartialCachedNoResults() +{ + createContacts(); + + m_finder->predictiveSearchQuery( QString("6") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + //see half of matched results + CHECK_RESULTS( 2, "Maria-Zola", "Jones" ); + + m_finder->predictiveSearchQuery( QString("69") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + m_finder->predictiveSearchQuery( QString("692") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + m_finder->predictiveSearchQuery( QString("69") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + + m_finder->predictiveSearchQuery( QString("6") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + //see half of matched results + CHECK_RESULTS( 2, "Maria-Zola", "Jones" ); + + m_finder->predictiveSearchQuery( QString("69") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + +} + +// 6 -> 69 (no match) -> 692 (no match) -> 69 (no match) -> 6 -> 69 (all cached) +void ST_LogsCntFinder::testPredictiveSearchQueryFullyCachedNoResults() +{ + createContacts(); + + m_finder->predictiveSearchQuery( QString("6") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + //see all of matched results + CHECK_RESULTS( 3, "Maria-Zola", "Jones" ); + + m_finder->predictiveSearchQuery( QString("69") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + m_finder->predictiveSearchQuery( QString("692") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + m_finder->predictiveSearchQuery( QString("69") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + + m_finder->predictiveSearchQuery( QString("6") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + //see all of matched results + CHECK_RESULTS( 3, "Maria-Zola", "Jones" ); + + m_finder->predictiveSearchQuery( QString("69") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + + +} + +// 6 -> 69 (no match) -> 692 (no match) -> 69 (no match) -> 6 (all cached) +void ST_LogsCntFinder::testPredictiveSearchQueryCachedZeroCase() { createContacts(); - createOneContact( QString("Dlice 00202"), QString("Qwerty"), QString("45789348") ); - createOneContact( QString("#Paula 2003"), QString("Augustin Ci"), QString("0078945617") ); - createOneContact( QString("Paula 02010"), QString("Ezerty Adam"), QString("78945617") ); - createOneContact( QString("Ced"), QString("Y,g"), QString("+78945617") ); - createOneContact( QString("Jari-Pekka"), QString(" "), QString("78945617") ); + + m_finder->predictiveSearchQuery( QString("2") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi + + m_finder->predictiveSearchQuery( QString("20") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi + + m_finder->predictiveSearchQuery( QString("209") ); + QCOMPARE( m_finder->resultsCount(), 1 ); + CHECK_RESULTS( 1, "Levis", "Augustin" ); //Augustin Zi + + m_finder->predictiveSearchQuery( QString("20") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi + + m_finder->predictiveSearchQuery( QString("2") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi + +} + + +//There is recent call in logs, no contacts DB +void ST_LogsCntFinder::testPredictiveSearchQueryLogs() +{ + createHistoryEvents(); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); - int contactsCount = m_manager->contactIds().count(); - QCOMPARE(contactsCount, 18); + m_finder->predictiveSearchQuery( QString("53") ); + QCOMPARE( m_finder->resultsCount(), 1 ); + CHECK_RESULTS( 1, "Jonn", "Lennon" ); + + m_finder->predictiveSearchQuery( QString("539") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + + m_finder->predictiveSearchQuery( QString("53") ); + QCOMPARE( m_finder->resultsCount(), 1 ); + CHECK_RESULTS( 1, "Jonn", "Lennon" ); + + QCOMPARE( m_finder->resultsCount(), 0 ); + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); +} + +void ST_LogsCntFinder::testPredictiveSearchQueryLogsZeroCase() +{ + createHistoryEvents(); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("50") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("503") ); + QCOMPARE( m_finder->resultsCount(), 1 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("50") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); + } +//There is recent call in logs, and contacts DB +void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsPartialCached() +{ + createHistoryEvents(); + createContacts(); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 7 ); + CHECK_RESULTS( 5, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("56") ); + QCOMPARE( m_finder->resultsCount(), 4 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("569") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + + m_finder->predictiveSearchQuery( QString("56") ); + QCOMPARE( m_finder->resultsCount(), 4 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 7 ); + CHECK_RESULTS( 5, "Dim-Petter", "Jones" ); + + +} + +void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsFullyCached() +{ + createHistoryEvents(); + createContacts(); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 7 ); + CHECK_RESULTS( 7, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("56") ); + QCOMPARE( m_finder->resultsCount(), 4 ); + CHECK_RESULTS( 4, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("569") ); + QCOMPARE( m_finder->resultsCount(), 0 ); + + m_finder->predictiveSearchQuery( QString("56") ); + QCOMPARE( m_finder->resultsCount(), 4 ); + CHECK_RESULTS( 4, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 7 ); + CHECK_RESULTS( 7, "Dim-Petter", "Jones" ); + +} + +void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsZeroCase() +{ + createHistoryEvents(); + createContacts(); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 7 ); + CHECK_RESULTS( 5, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("50") ); + QCOMPARE( m_finder->resultsCount(), 7 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("503") ); + QCOMPARE( m_finder->resultsCount(), 2 ); + CHECK_RESULTS( 2, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("50") ); + QCOMPARE( m_finder->resultsCount(), 7 ); + CHECK_RESULTS( 5, "Dim-Petter", "Jones" ); + + m_finder->predictiveSearchQuery( QString("5") ); + QCOMPARE( m_finder->resultsCount(), 7 ); + CHECK_RESULTS( 5, "Dim-Petter", "Jones" ); + +} + +void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsPhoneNumberMatch() +{ + createHistoryEvents(); + createContacts(); + + m_finder->predictiveSearchQuery( QString("9") ); + QCOMPARE( m_finder->resultsCount(), 6 ); //3 history + 3 contacts + CHECK_RESULTS( 5, "Stefann", "Fedrernn" ); + + m_finder->predictiveSearchQuery( QString("93") ); + QCOMPARE( m_finder->resultsCount(), 3 ); + CHECK_RESULTS( 1, "Stefann", "Fedrernn" ); + +} + + // Test query limit is 15, the 16th digit is ignored -void st_LogsCntFinder::testPredictiveSearchQueryLimit() +void ST_LogsCntFinder::testPredictiveSearchQueryLimit() { createContacts(); @@ -481,96 +679,7 @@ QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Baraniktestteste")); } -//There is recent call in logs, no contacts DB -void st_LogsCntFinder::testPredictiveSearchQueryLogs() -{ - createHistoryEvents(); - - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - - //case 1 - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - //see half of matched results - //results == for(int i =0;iresultCount() / 2;i++){f->resultAt(i);} - /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/ - - m_finder->predictiveSearchQuery( QString("533") ); - QCOMPARE( m_finder->resultsCount(), 0 ); - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - - //case 2 - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - //see half of matched results - //results == for(int i =0;iresultCount() / 2;i++){f->resultAt(i);} - /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/ - - m_finder->predictiveSearchQuery( QString("50") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - m_finder->predictiveSearchQuery( QString("503") ); - QCOMPARE( m_finder->resultsCount(), 1 ); - m_finder->predictiveSearchQuery( QString("50") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - -} - -//There is recent call in logs, and contacts DB -void st_LogsCntFinder::testPredictiveSearchQueryLogsContacts() -{ - createHistoryEvents(); - createContacts(); - - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - - //case 1 - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - //see half of matched results - //results == for(int i =0;iresultCount() / 2;i++){f->resultAt(i);} - /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/ - - m_finder->predictiveSearchQuery( QString("533") ); - QCOMPARE( m_finder->resultsCount(), 0 ); - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - - //case 2 - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - //see half of matched results - //results == for(int i =0;iresultCount() / 2;i++){f->resultAt(i);} - /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString("")); - QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/ - - m_finder->predictiveSearchQuery( QString("50") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - m_finder->predictiveSearchQuery( QString("503") ); - QCOMPARE( m_finder->resultsCount(), 1 ); - m_finder->predictiveSearchQuery( QString("50") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - m_finder->predictiveSearchQuery( QString("5") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - -} - -void st_LogsCntFinder::testQueryOrder() +void ST_LogsCntFinder::testQueryOrder() { createContactsForQueryOrder(); @@ -602,65 +711,3 @@ QCOMPARE(m_finder->resultAt(7).lastName().at(0).text(), QString("Yadira")); } -void st_LogsCntFinder::createContactsForQueryOrder() -{ - createContacts(); - createOneContact( QString("Anna"), QString("Qwerty"), QString("45789348") ); - createOneContact( QString("Paula"), QString("Qwerty"), QString("78945617") ); - createOneContact( QString("Paula"), QString("Azerty"), QString("78945617") ); - - int contactsCount = m_manager->contactIds().count(); - QCOMPARE(contactsCount, 16); -} - -//QTEST_MAIN(st_LogsCntFinder); - -/*int main(int argc, char *argv[]) -{ - bool promptOnExit(true); - bool xmlOutput(false); - - for (int i=0; i +#include +#include + + +#define ADD_CONTACT( id, first, last, pnumber, mail1, mail2, mail3 )\ + QContact phonecontact##id;\ + QContactName contactName##id;\ + if ( QString( first).length() ) {\ + contactName##id.setFirstName( first );\ + }\ + if ( QString( last ).length() ) {\ + contactName##id.setLastName( last );\ + }\ + QVERIFY(phonecontact##id.saveDetail(&contactName##id));\ + if ( QString( pnumber ).length() ) {\ + QContactPhoneNumber number;\ + number.setContexts("Home");\ + number.setSubTypes("Mobile");\ + number.setNumber( pnumber );\ + phonecontact##id.saveDetail(&number);\ + }\ + if ( QString( mail1 ).length() ) {\ + QContactEmailAddress email;\ + email.setEmailAddress( mail1 );\ + phonecontact##id.saveDetail(&email);\ + }\ + if ( QString( mail2 ).length() ) {\ + QContactEmailAddress email;\ + email.setEmailAddress( mail2 );\ + phonecontact##id.saveDetail(&email);\ + }\ + if ( QString( mail3 ).length() ) {\ + QContactEmailAddress email;\ + email.setEmailAddress( mail3 );\ + phonecontact##id.saveDetail(&email);\ + }\ + QVERIFY(m_manager->saveContact(&phonecontact##id)) + + +void ST_LogsCntFinderQwerty::initTestCase() +{ +} + +void ST_LogsCntFinderQwerty::cleanupTestCase() +{ + +} + + +void ST_LogsCntFinderQwerty::init() +{ + HbInputLanguage eng( QLocale::English ); + HbInputSettingProxy::instance()->setGlobalInputLanguage( eng ); + + //open symbian database + m_manager = new QContactManager("symbian"); + + // Remove all contacts from the database + QList cnt_ids = m_manager->contactIds(); + QVERIFY( m_manager->removeContacts(cnt_ids, 0 ) ); + cnt_ids = m_manager->contactIds(); + QCOMPARE(cnt_ids.count(), 0); + +} + +void ST_LogsCntFinderQwerty::cleanup() +{ + delete m_manager; + m_manager = 0; + HbInputLanguage eng( QLocale::English ); + HbInputSettingProxy::instance()->setGlobalInputLanguage( eng ); + +} + +void ST_LogsCntFinderQwerty::createContacts() +{ + + // Remove all contacts from the database + QList cnt_ids = m_manager->contactIds(); + QVERIFY( m_manager->removeContacts(cnt_ids, 0 ) ); + cnt_ids = m_manager->contactIds(); + QVERIFY(0 == cnt_ids.count()); + + // 'id' first last phonenumber email1 email2 email3 + ADD_CONTACT( 1, "Stefann", "Yadira", "0035893424558", "syadira@gmail.com", "stefann.yadira@nokia.com", "" ); + ADD_CONTACT( 2, "", "", "00861048294754", "company1@sohu.com", "", "" ); + ADD_CONTACT( 3, "Olga", "", "0938485604", "olga089@ovi.com", "test1@yahoo.com", "olga.baranik.s@nordea.com" ); + ADD_CONTACT( 4, "", "Fesko", "+35892874754", "test2@ovi.com", "", "" ); + ADD_CONTACT( 5, "Petter", "Harhai", "0402348850", "", "", "" ); + ADD_CONTACT( 6, "Levis", "Augustin Zi", "", "levis.augustin.z@nokia.com", "laugustin@ovi.com", "" ); + ADD_CONTACT( 7, "Matt", "Cook", "", "shymatt@live.com", "", "" ); + +} + + +/* expected results + Search steps: search "s", contact (1 & 7) match; + search "s ya", contact (1) match; + search "syadira", contact (1) match; + search "pett", no match; + search "levis.augu_whatever", contact (6) match; + search "olga.b", contact (3) match; +*/ + + +//search "s", contact (1 & 7) match +void ST_LogsCntFinderQwerty::testPredictiveEmailSearchNameAndEmailMatch() +{ + + createContacts(); + QEXPECT_FAIL("", "Not implemented", Abort ); + + QContactDetailFilter df; + df.setDetailDefinitionName(QContactName::DefinitionName, QContactEmailAddress::FieldEmailAddress ); + df.setMatchFlags( QContactFilter::MatchKeypadCollation ); + QContactLocalId cid; + QContact contact; + QContactName contactName; + + QString pattern = QString("s") + QChar(30) + QString("vqwerty"); + df.setValue( pattern ); + QList cnt_ids = m_manager->contactIds( df ); + QCOMPARE( cnt_ids.count(), 2 ); + cid = cnt_ids.at( 0 ); + contact = m_manager->contact( cid ); + contactName = contact.detail( QContactName::DefinitionName ); + QCOMPARE( contactName.value( QContactName::FieldFirstName ), QString("Matt" ) ); + QCOMPARE( contact.details( QContactEmailAddress::DefinitionName ).count(), 1 ); + QCOMPARE( contact.details( QContactEmailAddress::DefinitionName )[0].value( QContactEmailAddress::FieldEmailAddress ), QString( "shymatt@live.com" ) ); + cid = cnt_ids.at( 1 ); + contact = m_manager->contact( cid ); + contactName = contact.detail( QContactName::DefinitionName ); + QCOMPARE( contactName.value( QContactName::FieldFirstName ), QString("Stefann" ) ); + QCOMPARE( contact.details( QContactEmailAddress::DefinitionName ).count(), 2 ); + QCOMPARE( contact.details( QContactEmailAddress::DefinitionName )[0].value( QContactEmailAddress::FieldEmailAddress ), QString( "syadira@gmail.com" ) ); + QCOMPARE( contact.details( QContactEmailAddress::DefinitionName )[1].value( QContactEmailAddress::FieldEmailAddress ), QString( "stefann.yadira@nokia.com" ) ); +} + +//search "s ya", contact (1) match +void ST_LogsCntFinderQwerty::testPredictiveEmailSearchWithSpace() +{ + + createContacts(); + QEXPECT_FAIL("", "Not implemented", Abort ); + + QContactDetailFilter df; + df.setDetailDefinitionName(QContactName::DefinitionName, QContactEmailAddress::FieldEmailAddress ); + df.setMatchFlags( QContactFilter::MatchKeypadCollation ); + QContactLocalId cid; + QContact contact; + QContactName contactName; + + QString pattern = QString("s ya") + QChar(30) + QString("vqwerty"); + df.setValue( pattern ); + QList cnt_ids = m_manager->contactIds( df ); + QCOMPARE( cnt_ids.count(), 1 ); + cid = cnt_ids.at( 0 ); + contact = m_manager->contact( cid ); + contactName = contact.detail( QContactName::DefinitionName ); + QCOMPARE( contactName.value( QContactName::FieldFirstName ), QString("Stefann" ) ); + +} + +//search "syadira", contact (1) match +void ST_LogsCntFinderQwerty::testPredictiveEmailSearchEmailMatch() +{ + + createContacts(); + QEXPECT_FAIL("", "Not implemented", Abort ); + + QContactDetailFilter df; + df.setDetailDefinitionName(QContactName::DefinitionName, QContactEmailAddress::FieldEmailAddress ); + df.setMatchFlags( QContactFilter::MatchKeypadCollation ); + QContactLocalId cid; + QContact contact; + QContactName contactName; + + QString pattern = QString("syadira") + QChar(30) + QString("vqwerty"); + df.setValue( pattern ); + QList cnt_ids = m_manager->contactIds( df ); + QCOMPARE( cnt_ids.count(), 1 ); + cid = cnt_ids.at( 0 ); + contact = m_manager->contact( cid ); + contactName = contact.detail( QContactName::DefinitionName ); + QCOMPARE( contactName.value( QContactName::FieldFirstName ), QString("Stefann" ) ); +} + +//search "pett", no match +void ST_LogsCntFinderQwerty::testPredictiveEmailSearchNoEmails() +{ + + createContacts(); + QEXPECT_FAIL("", "Not implemented", Abort ); + + QContactDetailFilter df; + df.setDetailDefinitionName(QContactName::DefinitionName, QContactEmailAddress::FieldEmailAddress ); + df.setMatchFlags( QContactFilter::MatchKeypadCollation ); + QContact contact; + QContactName contactName; + + QString pattern = QString("pett") + QChar(30) + QString("vqwerty"); + df.setValue( pattern ); + QList cnt_ids = m_manager->contactIds( df ); + QCOMPARE( cnt_ids.count(), 0 ); + +} + +//search "levis.augu_whatever", contact (6) match +void ST_LogsCntFinderQwerty::testPredictiveEmailSearchOverLongPattern() +{ + + createContacts(); + QEXPECT_FAIL("", "Not implemented", Abort ); + + QContactDetailFilter df; + df.setDetailDefinitionName(QContactName::DefinitionName, QContactEmailAddress::FieldEmailAddress ); + df.setMatchFlags( QContactFilter::MatchKeypadCollation ); + QContactLocalId cid; + QContact contact; + QContactName contactName; + + QString pattern = QString("levis.augu_whatever") + QChar(30) + QString("vqwerty"); + df.setValue( pattern ); + QList cnt_ids = m_manager->contactIds( df ); + QCOMPARE( cnt_ids.count(), 1 ); + cid = cnt_ids.at( 0 ); + contact = m_manager->contact( cid ); + contactName = contact.detail( QContactName::DefinitionName ); + QCOMPARE( contactName.value( QContactName::FieldFirstName ), QString("Levis" ) ); +} + +//search "olga.b", contact (3) match +void ST_LogsCntFinderQwerty::testPredictiveEmailSearchSpecialCharsInPattern() +{ + + createContacts(); + QEXPECT_FAIL("", "Not implemented", Abort ); + + QContactDetailFilter df; + df.setDetailDefinitionName(QContactName::DefinitionName, QContactEmailAddress::FieldEmailAddress ); + df.setMatchFlags( QContactFilter::MatchKeypadCollation ); + QContactLocalId cid; + QContact contact; + QContactName contactName; + + //search "olga.b", contact (3) match + QString pattern = QString("olga.b") + QChar(30) + QString("vqwerty"); + df.setValue( pattern ); + QList cnt_ids = m_manager->contactIds( df ); + QCOMPARE( cnt_ids.count(), 1 ); + cid = cnt_ids.at( 0 ); + contact = m_manager->contact( cid ); + contactName = contact.detail( QContactName::DefinitionName ); + QCOMPARE( contactName.value( QContactName::FieldFirstName ), QString("Olga" ) ); + +} + diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinderthai.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinderthai.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,157 @@ +/* +* 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 "st_logscntfinderthai.h" +#include "logscntfinder.h" +#include "testresultxmlparser.h" + +#include +#include +#include + +void ST_LogsCntFinderThai::initTestCase() +{ +} + +void ST_LogsCntFinderThai::cleanupTestCase() +{ + +} + + +void ST_LogsCntFinderThai::init() +{ + HbInputLanguage eng( QLocale::Thai ); + HbInputSettingProxy::instance()->setGlobalInputLanguage( eng ); + + m_finder = 0; + //open symbian database + m_manager = new QContactManager("symbian"); + m_finder = new LogsCntFinder(*m_manager); + QVERIFY(m_finder); + + // Remove all contacts from the database + QList cnt_ids = m_manager->contactIds(); + QVERIFY( m_manager->removeContacts(cnt_ids, 0 ) ); + + cnt_ids = m_manager->contactIds(); + QCOMPARE(cnt_ids.count(), 0); + + for (int i = 0; i < 10; ++i) { + m_finder->predictiveSearchQuery( QString::number(i) ); + QCOMPARE( m_finder->resultsCount(), 0 ); + } +} + +void ST_LogsCntFinderThai::cleanup() +{ + delete m_manager; + m_manager = 0; + delete m_finder; + m_finder = 0; + HbInputLanguage eng( QLocale::English ); + HbInputSettingProxy::instance()->setGlobalInputLanguage( eng ); + +} + +void ST_LogsCntFinderThai::createThaiContacts() +{ + /*Create contacts in Contacts DB + */ + + const QChar thaiFName1[] = {0x0E06,0x0E0A}; // map:23 + const QChar thaiLName1[] = {0x0E0E,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };//map 456789 + + QString first ( thaiFName1, 2 ); + QString last ( thaiFName1, 6 ); + createOneContact( first, last, QString("932472398") ); + + const QChar thaiFName2[] = {0x0E30,0x0E0A};//#3, + const QChar thaiLName2[] = {0x0E2F,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };//*56789 + + QString first2 ( thaiFName1, 2 ); + QString last2 ( thaiFName1, 6 ); + createOneContact( first2, last2, QString("932472398") ); + + int contactsCount = m_manager->contactIds().count(); + QCOMPARE(contactsCount, 2); + + +} + + + +void ST_LogsCntFinderThai::createOneContact(QString firstname, QString Lastname, + QString phnumber) +{ + //Currenlty we can only fetch firstname,lastname,companyname and sip/email/phone from the databse + // so create contact with only these details + QContact phonecontact; + // Stefann Fedrernn +02644424423 ste.Fed@nokia.com + // Contact details + QContactName contactName; + contactName.setFirstName(firstname); + contactName.setLastName(Lastname); + phonecontact.saveDetail(&contactName); + + QContactPhoneNumber number; + number.setContexts("Home"); + number.setSubTypes("Mobile"); + number.setNumber(phnumber); + phonecontact.saveDetail(&number); + + m_manager->saveContact(&phonecontact); +} + + + +// +// Tests +// + +void ST_LogsCntFinderThai::testPredictiveThaiSearchQuery() +{ + HbInputLanguage thai( QLocale::Thai ); + HbInputSettingProxy::instance()->setGlobalInputLanguage( thai ); + + createThaiContacts(); + + QEXPECT_FAIL("", "Not supported yet. Issues", Abort ); + + //There is no recent call in logs UI + //case 1 + m_finder->predictiveSearchQuery( QString("2") ); + QCOMPARE( m_finder->resultsCount(), 1 ); + + m_finder->predictiveSearchQuery( QString("4") ); + QCOMPARE( m_finder->resultsCount(), 1 ); + + m_finder->predictiveSearchQuery( QString("402") ); + QCOMPARE( m_finder->resultsCount(), 1 ); + + m_finder->predictiveSearchQuery( QString("*4") ); + QCOMPARE( m_finder->resultsCount(), 1 ); + + m_finder->predictiveSearchQuery( QString("*402###") ); + QCOMPARE( m_finder->resultsCount(), 1 ); + + m_finder->predictiveSearchQuery( QString("*4***00002###") ); + QCOMPARE( m_finder->resultsCount(), 1 ); + + +} + + diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro --- a/logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro Fri Jun 11 13:38:41 2010 +0300 @@ -21,17 +21,14 @@ QT += testlib xml CONFIG += qtestlib CONFIG += hb -HB = hbcore hbinput +DEFINES += QT_NO_DEBUG_OUTPUT -#include(../tsrc.pri) - -DEFINES += PBK_UNIT_TEST DEPENDPATH += . INCLUDEPATH += ./ INCLUDEPATH += ./inc INCLUDEPATH += ../inc -#DEPENDPATH += . +DEPENDPATH += . INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE INCLUDEPATH += ../../ INCLUDEPATH += ../../inc @@ -39,18 +36,18 @@ INCLUDEPATH += ../../../tsrc/qtestutils/inc # Input -HEADERS += inc\st_logscntfinder.h +HEADERS += inc/st_logscntfinder.h +HEADERS += inc/st_logscntfinderqwerty.h +HEADERS += inc/st_logscntfinderthai.h -SOURCES += src\st_logscntfinder.cpp +SOURCES += src/main.cpp +SOURCES += src/st_logscntfinder.cpp +SOURCES += src/st_logscntfinderqwerty.cpp +SOURCES += src/st_logscntfinderthai.cpp SOURCES += ../../../tsrc/qtestutils/src/testresultxmlparser.cpp symbian: { - TARGET.UID2 = 0x100039CE - TARGET.UID3 = 0xEfa329b3 TARGET.CAPABILITY = ALL -TCB TARGET.EPOCALLOWDLLDATA = 1 - LIBS += \ - -lxqservice \ - -lQtContacts \ - -llogscntfinder + LIBS += -lflogger -lqtcontacts -llogscntfinder } diff -r e52d42f9500c -r 41c0a814d878 logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp --- a/logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -254,8 +254,7 @@ } if ( definitionId == QContactAvatar::DefinitionName){ QContactAvatar avatar; - avatar.setValue(QContactAvatar::FieldSubType, QContactAvatar::SubTypeImage ); - avatar.setValue(QContactAvatar::FieldAvatar, "c:\\data\\images\\logstest1.jpg" ); + avatar.setValue(QContactAvatar::FieldImageUrl, "c:\\data\\images\\logstest1.jpg" ); return avatar; } QContactDetail detail; diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/bwins/logsengineu.def --- a/logsui/logsengine/bwins/logsengineu.def Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/bwins/logsengineu.def Fri Jun 11 13:38:41 2010 +0300 @@ -61,4 +61,8 @@ ?clearList@LogsModel@@QAE_NW4ClearType@1@@Z @ 60 NONAME ; bool LogsModel::clearList(enum LogsModel::ClearType) ??1LogsContact@@UAE@XZ @ 61 NONAME ; LogsContact::~LogsContact(void) ?clearType@LogsFilter@@QBE?AW4ClearType@LogsModel@@XZ @ 62 NONAME ; enum LogsModel::ClearType LogsFilter::clearType(void) const + ?logsDetailsModel@LogsModel@@QAEPAVLogsDetailsModel@@AAVLogsEvent@@@Z @ 63 NONAME ; class LogsDetailsModel * LogsModel::logsDetailsModel(class LogsEvent &) + ?getLogsEvent@LogsDetailsModel@@QBE?AVLogsEvent@@XZ @ 64 NONAME ; class LogsEvent LogsDetailsModel::getLogsEvent(void) const + ?serialize@LogsEvent@@QAE_NAAVQDataStream@@@Z @ 65 NONAME ; bool LogsEvent::serialize(class QDataStream &) + ??0LogsEvent@@QAE@AAVQDataStream@@@Z @ 66 NONAME ; LogsEvent::LogsEvent(class QDataStream &) diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/eabi/logsengineu.def --- a/logsui/logsengine/eabi/logsengineu.def Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/eabi/logsengineu.def Fri Jun 11 13:38:41 2010 +0300 @@ -86,4 +86,9 @@ _ZNK9LogsEvent8durationEv @ 85 NONAME _ZNK9LogsEvent9directionEv @ 86 NONAME _ZNK9LogsEvent9eventTypeEv @ 87 NONAME + _ZN9LogsEvent9serializeER11QDataStream @ 88 NONAME + _ZN9LogsEventC1ER11QDataStream @ 89 NONAME + _ZN9LogsEventC2ER11QDataStream @ 90 NONAME + _ZN9LogsModel16logsDetailsModelER9LogsEvent @ 91 NONAME + _ZNK16LogsDetailsModel12getLogsEventEv @ 92 NONAME diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/inc/logsdetailsmodel.h --- a/logsui/logsengine/inc/logsdetailsmodel.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/inc/logsdetailsmodel.h Fri Jun 11 13:38:41 2010 +0300 @@ -45,6 +45,7 @@ LOGSENGINE_EXPORT void clearEvent(); LOGSENGINE_EXPORT void getNumberToClipboard(); + LOGSENGINE_EXPORT LogsEvent getLogsEvent() const; public: // From QAbstractItemModel diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/inc/logseventdata.h --- a/logsui/logsengine/inc/logseventdata.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/inc/logseventdata.h Fri Jun 11 13:38:41 2010 +0300 @@ -23,6 +23,7 @@ // FORWARD DECLARATION class CLogEvent; +class QDataStream; // CLASS DECLARATION @@ -43,6 +44,11 @@ * Copy constructor. */ LogsEventData( const LogsEventData& data ); + + /** + * Construct from data stream + */ + LogsEventData( QDataStream& serializedEvent ); /** * Destructor. @@ -79,6 +85,8 @@ unsigned int contactLocalId() const; + bool serialize( QDataStream& serializeDestination ); + private: void setContactLocalId( unsigned int id ); diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/logsengine.pro --- a/logsui/logsengine/logsengine.pro Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/logsengine.pro Fri Jun 11 13:38:41 2010 +0300 @@ -19,7 +19,6 @@ TARGET = logsengine CONFIG += hb dll svg -RESOURCES += logsengine.qrc INCLUDEPATH += ./ INCLUDEPATH += ./inc diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/logsengine.qrc --- a/logsui/logsengine/logsengine.qrc Thu May 27 12:51:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ - - - themes/icons/hbdefault/scalable/qtg_large_missed_voice_call_unseen.svg - themes/icons/hbdefault/scalable/qtg_large_missed_video_call_unseen.svg - themes/icons/hbdefault/scalable/qtg_large_missed_voip_call_unseen.svg - - diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/logssymbianos/inc/logsdbconnector.h --- a/logsui/logsengine/logssymbianos/inc/logsdbconnector.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/logssymbianos/inc/logsdbconnector.h Fri Jun 11 13:38:41 2010 +0300 @@ -88,6 +88,13 @@ void dataRemoved(QList removedIndexes); /** + * Signaled once significant changes in data has occured. + * Corresponding changes have been already done to event array + * when this signal is emitted. + */ + void dataReset(); + + /** * Signaled once asycn event clearing has completed. * @param err, 0 if marking completed succesfully */ diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/logssymbianos/src/logsdbconnector.cpp --- a/logsui/logsengine/logssymbianos/src/logsdbconnector.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/logssymbianos/src/logsdbconnector.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -475,7 +475,7 @@ mAddedEventIndexes.append( mEvents.at(i)->index() ); } } - + bool doModelDataReset( !mRemovedEventIndexes.isEmpty() || !mAddedEventIndexes.isEmpty() || !mUpdatedEventIndexes.isEmpty() ); @@ -487,14 +487,25 @@ } } - if ( !mRemovedEventIndexes.isEmpty() ){ - emit dataRemoved(mRemovedEventIndexes); - } - if ( !mAddedEventIndexes.isEmpty() ){ - emit dataAdded(mAddedEventIndexes); - } - if ( !mUpdatedEventIndexes.isEmpty() ){ - emit dataUpdated(mUpdatedEventIndexes); + int changeCount = 0; + changeCount += mRemovedEventIndexes.isEmpty() ? 0 : 1; + changeCount += mAddedEventIndexes.isEmpty() ? 0 : 1; + changeCount += mUpdatedEventIndexes.isEmpty() ? 0 : 1; + + if ( changeCount > 1 ){ + // If having many changes, it is less error prone + // to just report reset. + emit dataReset(); + } else { + if ( !mRemovedEventIndexes.isEmpty() ){ + emit dataRemoved(mRemovedEventIndexes); + } + if ( !mAddedEventIndexes.isEmpty() ){ + emit dataAdded(mAddedEventIndexes); + } + if ( !mUpdatedEventIndexes.isEmpty() ){ + emit dataUpdated(mUpdatedEventIndexes); + } } deleteRemoved(readCount); diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp --- a/logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -256,9 +256,9 @@ QString QContactDetail::value(const QString& key) const { - if ( key == QContactName::FieldFirst ){ + if ( key == QContactName::FieldFirstName ){ return logsFirstName; - } else if ( key == QContactName::FieldLast ) { + } else if ( key == QContactName::FieldLastName ) { return logsLastName; } else if ( key == QContactPhoneNumber::FieldNumber ) { return QString( "12345" ); diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsdbconnector.cpp --- a/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsdbconnector.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsdbconnector.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -208,12 +208,14 @@ QSignalSpy spyAdded(mDbConnector, SIGNAL(dataAdded(QList))); QSignalSpy spyRemoved(mDbConnector, SIGNAL(dataRemoved(QList))); QSignalSpy spyUpdated(mDbConnector, SIGNAL(dataUpdated(QList))); + QSignalSpy spyReset(mDbConnector, SIGNAL(dataReset())); // No events, no signal mDbConnector->readCompleted(0); QVERIFY( spyAdded.count() == 0 ); QVERIFY( spyRemoved.count() == 0 ); QVERIFY( spyUpdated.count() == 0 ); + QVERIFY( spyReset.count() == 0 ); // Events exists, their indexes are signaled LOGS_TEST_CREATE_EVENT(event, 0, LogsEvent::EventAdded ); @@ -224,6 +226,7 @@ QVERIFY( addedIndexes.at(0) == 0 ); QVERIFY( spyRemoved.count() == 0 ); QVERIFY( spyUpdated.count() == 0 ); + QVERIFY( spyReset.count() == 0 ); QVERIFY( mDbConnector->mEvents.count() == 1 ); QVERIFY( mEvents.count() == 1 ); @@ -240,6 +243,7 @@ QVERIFY( addedIndexes2.at(1) == 1 ); QVERIFY( spyRemoved.count() == 0 ); QVERIFY( spyUpdated.count() == 0 ); + QVERIFY( spyReset.count() == 0 ); QVERIFY( mDbConnector->mEvents.count() == 3 ); QVERIFY( mEvents.count() == 3 ); @@ -251,6 +255,7 @@ QVERIFY( spyAdded.count() == 2 ); QVERIFY( spyRemoved.count() == 0 ); QVERIFY( spyUpdated.count() == 1 ); + QVERIFY( spyReset.count() == 0 ); QList updatedIndexes = qvariant_cast< QList >(spyUpdated.at(0).at(0)); QVERIFY( updatedIndexes.count() == 1 ); QVERIFY( updatedIndexes.at(0) == 1 ); @@ -264,12 +269,24 @@ QVERIFY( spyAdded.count() == 2 ); QVERIFY( spyRemoved.count() == 1 ); QVERIFY( spyUpdated.count() == 1 ); + QVERIFY( spyReset.count() == 0 ); QList removedIndexes = qvariant_cast< QList >(spyRemoved.at(0).at(0)); QVERIFY( removedIndexes.count() == 1 ); QVERIFY( removedIndexes.at(0) == 2 ); // index 2 QVERIFY( mDbConnector->mEvents.count() == 2 ); QVERIFY( mEvents.count() == 2 ); + // Event added and removed, reset should be signaled + mDbConnector->mEvents.at(0)->mEventState = LogsEvent::EventAdded; + mDbConnector->mEvents.at(1)->mIsInView = false; + mDbConnector->readCompleted(1); + QVERIFY( spyAdded.count() == 2 ); + QVERIFY( spyRemoved.count() == 1 ); + QVERIFY( spyUpdated.count() == 1 ); + QVERIFY( spyReset.count() == 1 ); + QVERIFY( mDbConnector->mEvents.count() == 1 ); + QVERIFY( mEvents.count() == 1 ); + // Read completed when compression is enabled, reader is stopped QVERIFY( mDbConnector->init() == 0 ); QVERIFY( mDbConnector->start() == 0 ); diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/src/logsdetailsmodel.cpp --- a/logsui/logsengine/src/logsdetailsmodel.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/src/logsdetailsmodel.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -292,6 +292,15 @@ // // ----------------------------------------------------------------------------- // +LogsEvent LogsDetailsModel::getLogsEvent() const +{ + return *mEvent; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// bool LogsDetailsModel::isAddress(QString value) const { QChar c('@'); diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/src/logsevent.cpp --- a/logsui/logsengine/src/logsevent.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/src/logsevent.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -24,6 +24,7 @@ #include #include #include +#include #include "logsevent.h" #include "logseventparser.h" #include "logseventdata.h" @@ -347,6 +348,85 @@ } // ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +LogsEvent::LogsEvent( QDataStream& serializedEvent ) +{ + LOGS_QDEBUG( "logs [ENG] -> LogsEvent::LogsEvent deserialize") + serializedEvent >> mLogId; + int tempEnum; + serializedEvent >> tempEnum; + mDirection = static_cast( tempEnum ); + serializedEvent >> tempEnum; + mEventType = static_cast( tempEnum ); + serializedEvent >> mUid; + + serializedEvent >> mRemoteParty; + serializedEvent >> mNumber; + serializedEvent >> mDuplicates; + serializedEvent >> mTime; + serializedEvent >> mRingDuration; + serializedEvent >> mIsRead; + serializedEvent >> mIsALS; + serializedEvent >> mDuration; + + serializedEvent >> mIndex; + serializedEvent >> mIsInView; + serializedEvent >> tempEnum; + mEventState = static_cast( tempEnum ); + serializedEvent >> mIsLocallySeen; + serializedEvent >> mIsPrivate; + serializedEvent >> mIsUnknown; + + LogsEventData* logsEventData = new LogsEventData(serializedEvent); + if ( serializedEvent.status() == QDataStream::ReadPastEnd ){ + mLogsEventData = 0; + delete logsEventData; + } else { + mLogsEventData = logsEventData; + } + LOGS_QDEBUG( "logs [ENG] <- LogsEvent::LogsEvent deserialize") + +} + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +bool LogsEvent::serialize( QDataStream& serializeDestination ) +{ + LOGS_QDEBUG( "logs [ENG] -> LogsEvent::serialize") + serializeDestination << mLogId; + serializeDestination << mDirection; + serializeDestination << mEventType; + serializeDestination << mUid; + + serializeDestination << mRemoteParty; + serializeDestination << mNumber; + serializeDestination << mDuplicates; + serializeDestination << mTime; + serializeDestination << mRingDuration; + serializeDestination << mIsRead; + serializeDestination << mIsALS; + serializeDestination << mDuration; + + serializeDestination << mIndex; + serializeDestination << mIsInView; + serializeDestination << mEventState; + serializeDestination << mIsLocallySeen; + serializeDestination << mIsPrivate; + serializeDestination << mIsUnknown; + + if ( mLogsEventData ){ + mLogsEventData->serialize(serializeDestination); + } + + LOGS_QDEBUG( "logs [ENG] <- LogsEvent::serialize") + return true; +} + +// ---------------------------------------------------------------------------- // LogsEvent::RingDuration // // For ring duation feature @@ -560,8 +640,8 @@ // QString LogsEvent::parseContactName(const QContactName& name) { - QString firstName = name.value(QContactName::FieldFirst); - QString lastName = name.value(QContactName::FieldLast); + QString firstName = name.value(QContactName::FieldFirstName); + QString lastName = name.value(QContactName::FieldLastName); QString parsedName; if (!lastName.isEmpty()) { if (!firstName.isEmpty()) { diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/src/logseventdata.cpp --- a/logsui/logsengine/src/logseventdata.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/src/logseventdata.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -19,9 +19,11 @@ #include "logseventdata.h" #include "logsevent.h" #include "logseventdataparser.h" +#include "logslogger.h" #include #include +#include // ---------------------------------------------------------------------------- // LogsEventData::LogsEventData @@ -64,6 +66,56 @@ } // ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +LogsEventData::LogsEventData( QDataStream& serializedEvent ) +{ + LOGS_QDEBUG( "logs [ENG] -> LogsEventData::LogsEventData deserialize") + + serializedEvent >> mIsCNAP; + serializedEvent >> mIsVT; + serializedEvent >> mIsPoC; + serializedEvent >> mIsVoIP; + serializedEvent >> mIsEmerg; + serializedEvent >> mDataSent; + serializedEvent >> mDataReceived; + serializedEvent >> mMsgPartsNumber; + serializedEvent >> mServiceId; + serializedEvent >> mContactLocalId; + serializedEvent >> mRemoteUrl; + serializedEvent >> mLocalUrl; + + LOGS_QDEBUG( "logs [ENG] <- LogsEventData::LogsEventData deserialize") + +} + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +bool LogsEventData::serialize( QDataStream& serializeDestination ) +{ + LOGS_QDEBUG( "logs [ENG] -> LogsEventData::serialize") + + serializeDestination << mIsCNAP; + serializeDestination << mIsVT; + serializeDestination << mIsPoC; + serializeDestination << mIsVoIP; + serializeDestination << mIsEmerg; + serializeDestination << mDataSent; + serializeDestination << mDataReceived; + serializeDestination << mMsgPartsNumber; + serializeDestination << mServiceId; + serializeDestination << mContactLocalId; + serializeDestination << mRemoteUrl; + serializeDestination << mLocalUrl; + + LOGS_QDEBUG( "logs [ENG] <- LogsEventData::serialize") + return true; +} + +// ---------------------------------------------------------------------------- // LogsEventData::~LogsEventData // ---------------------------------------------------------------------------- // diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/src/logsmodel.cpp --- a/logsui/logsengine/src/logsmodel.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/src/logsmodel.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -59,6 +59,9 @@ this, SLOT( dataUpdated(QList) )); connect( mDbConnector, SIGNAL( dataRemoved(QList) ), this, SLOT( dataRemoved(QList) )); + connect( mDbConnector, SIGNAL( dataReset() ), + this, SLOT( resetModel() )); + connect( hbInstance->theme(), SIGNAL ( changeFinished() ), this, SLOT ( resetModel())); mDbConnector->init(); @@ -183,6 +186,16 @@ } // ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsDetailsModel* LogsModel::logsDetailsModel(LogsEvent& event) +{ + LOGS_QDEBUG( "logs [ENG] -> LogsModel::logsDetailsModel()" ) + return new LogsDetailsModel( *mDbConnector, event ); +} + +// ----------------------------------------------------------------------------- // From QAbstractListModel // ----------------------------------------------------------------------------- // @@ -387,7 +400,9 @@ // void LogsModel::resetModel() { - this->reset(); + LOGS_QDEBUG( "logs [ENG] -> LogsModel::resetModel()" ) + this->reset(); + LOGS_QDEBUG( "logs [ENG] <- LogsModel::resetModel()" ) } // ----------------------------------------------------------------------------- // diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/themes/icons/hbdefault/scalable/qtg_large_missed_video_call_unseen.svg --- a/logsui/logsengine/themes/icons/hbdefault/scalable/qtg_large_missed_video_call_unseen.svg Thu May 27 12:51:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/themes/icons/hbdefault/scalable/qtg_large_missed_voice_call_unseen.svg --- a/logsui/logsengine/themes/icons/hbdefault/scalable/qtg_large_missed_voice_call_unseen.svg Thu May 27 12:51:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/themes/icons/hbdefault/scalable/qtg_large_missed_voip_call_unseen.svg --- a/logsui/logsengine/themes/icons/hbdefault/scalable/qtg_large_missed_voip_call_unseen.svg Thu May 27 12:51:53 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsevent.h --- a/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsevent.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsevent.h Fri Jun 11 13:38:41 2010 +0300 @@ -54,6 +54,7 @@ void testSetContactLocalId(); void testUpdateRemotePartyFromContacts(); void testParseContactName(); + void testSerialization(); private: diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/tsrc/ut_logsengine/inc/ut_logseventdata.h --- a/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logseventdata.h Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logseventdata.h Fri Jun 11 13:38:41 2010 +0300 @@ -49,6 +49,7 @@ void testSetters(); void testGetters(); void testIsCsCompatible(); + void testSerialization(); private: diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/tsrc/ut_logsengine/src/ut_logsevent.cpp --- a/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsevent.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsevent.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -184,3 +184,103 @@ QVERIFY(event.parseContactName(name) == ""); } +void UT_LogsEvent::testSerialization() +{ + // Serialize/deserialize, no event data + LogsEvent event; + event.mLogId = 3; + event.mDirection = LogsEvent::DirMissed; + event.mEventType = LogsEvent::TypeVideoCall; + event.mUid = 222222; + event.mLogsEventData = 0; + event.mRemoteParty = "remotePart"; + event.mNumber = "33333"; + event.mDuplicates = 2; + event.mRingDuration = 3; + event.mIsRead = true; + event.mIsALS = false; + event.mDuration = 30; + event.mIndex = 3; + event.mIsInView = true; + event.mEventState = LogsEvent::EventAdded; + event.mIsLocallySeen = true; + event.mIsPrivate = false; + event.mIsUnknown = false; + + QByteArray serializedEvent; + QDataStream stream(&serializedEvent, QIODevice::WriteOnly | QIODevice::Append); + event.serialize(stream); + + QDataStream readStream(&serializedEvent, QIODevice::ReadOnly); + + LogsEvent deserializedEvent(readStream); + QVERIFY( deserializedEvent.mLogId == 3 ); + QVERIFY( deserializedEvent.mDirection == LogsEvent::DirMissed ); + QVERIFY( deserializedEvent.mEventType == LogsEvent::TypeVideoCall ); + QVERIFY( deserializedEvent.mUid == 222222 ); + QVERIFY( deserializedEvent.mLogsEventData == 0 ); + QVERIFY( deserializedEvent.mRemoteParty == "remotePart" ); + QVERIFY( deserializedEvent.mNumber == "33333" ); + QVERIFY( deserializedEvent.mDuplicates == 2 ); + QVERIFY( deserializedEvent.mRingDuration == 3 ); + QVERIFY( deserializedEvent.mIsRead == true ); + QVERIFY( deserializedEvent.mIsALS == false ); + QVERIFY( deserializedEvent.mDuration == 30 ); + QVERIFY( deserializedEvent.mIndex == 3 ); + QVERIFY( deserializedEvent.mIsInView == true ); + QVERIFY( deserializedEvent.mEventState == LogsEvent::EventAdded ); + QVERIFY( deserializedEvent.mIsLocallySeen == true ); + QVERIFY( deserializedEvent.mIsPrivate == false ); + QVERIFY( deserializedEvent.mIsUnknown == false ); + + // Serialize/deserialize, event data exists + event.mLogsEventData = new LogsEventData(); + + QByteArray serializedEvent2; + QDataStream stream2(&serializedEvent2, QIODevice::WriteOnly | QIODevice::Append); + event.serialize(stream2); + QDataStream readStream2(&serializedEvent2, QIODevice::ReadOnly); + LogsEvent deserializedEvent2(readStream2); + QVERIFY( deserializedEvent2.mLogId == 3 ); + QVERIFY( deserializedEvent2.mDirection == LogsEvent::DirMissed ); + QVERIFY( deserializedEvent2.mEventType == LogsEvent::TypeVideoCall ); + QVERIFY( deserializedEvent2.mUid == 222222 ); + QVERIFY( deserializedEvent2.mLogsEventData != 0 ); + QVERIFY( deserializedEvent2.mRemoteParty == "remotePart" ); + QVERIFY( deserializedEvent2.mNumber == "33333" ); + QVERIFY( deserializedEvent2.mDuplicates == 2 ); + QVERIFY( deserializedEvent2.mRingDuration == 3 ); + QVERIFY( deserializedEvent2.mIsRead == true ); + QVERIFY( deserializedEvent2.mIsALS == false ); + QVERIFY( deserializedEvent2.mDuration == 30 ); + QVERIFY( deserializedEvent2.mIndex == 3 ); + QVERIFY( deserializedEvent2.mIsInView == true ); + QVERIFY( deserializedEvent2.mEventState == LogsEvent::EventAdded ); + QVERIFY( deserializedEvent2.mIsLocallySeen == true ); + QVERIFY( deserializedEvent2.mIsPrivate == false ); + QVERIFY( deserializedEvent2.mIsUnknown == false ); + + // Incorrect stream + QByteArray serializedEvent3; + QDataStream stream3(&serializedEvent3, QIODevice::ReadWrite | QIODevice::Append); + LogsEvent deserializedEvent3(stream3); + QVERIFY( deserializedEvent3.mLogId == 0 ); + QVERIFY( deserializedEvent3.mDirection == LogsEvent::DirIn ); + QVERIFY( deserializedEvent3.mEventType == LogsEvent::TypeVoiceCall ); + QVERIFY( deserializedEvent3.mUid == 0 ); + QVERIFY( deserializedEvent3.mLogsEventData == 0 ); + QVERIFY( deserializedEvent3.mRemoteParty == "" ); + QVERIFY( deserializedEvent3.mNumber == "" ); + QVERIFY( deserializedEvent3.mDuplicates == 0 ); + QVERIFY( deserializedEvent3.mRingDuration == 0 ); + QVERIFY( deserializedEvent3.mIsRead == false ); + QVERIFY( deserializedEvent3.mIsALS == false ); + QVERIFY( deserializedEvent3.mDuration == 0 ); + QVERIFY( deserializedEvent3.mIndex == 0 ); + QVERIFY( deserializedEvent3.mIsInView == false ); + QVERIFY( deserializedEvent3.mEventState == LogsEvent::EventAdded ); + QVERIFY( deserializedEvent3.mIsLocallySeen == false ); + QVERIFY( deserializedEvent3.mIsPrivate == false ); + QVERIFY( deserializedEvent3.mIsUnknown == false ); +} + diff -r e52d42f9500c -r 41c0a814d878 logsui/logsengine/tsrc/ut_logsengine/src/ut_logseventdata.cpp --- a/logsui/logsengine/tsrc/ut_logsengine/src/ut_logseventdata.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsengine/tsrc/ut_logsengine/src/ut_logseventdata.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -97,3 +97,8 @@ mEventData->mRemoteUrl = "test@1.2.3.4"; QVERIFY( !mEventData->isCsCompatible() ); } + +void UT_LogsEventData::testSerialization() +{ + +} diff -r e52d42f9500c -r 41c0a814d878 logsui/logsservices/src/logsservices.cpp --- a/logsui/logsservices/src/logsservices.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/logsservices/src/logsservices.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -19,10 +19,11 @@ #include #include "logslogger.h" -// -------------------------------------------------------------------------- -// LogsServices::start -// -------------------------------------------------------------------------- -// +/*! + \deprecated LogsServices::start(LogsView activatedView, bool showDialpad, const QString& number) + is deprecated. Use XQApplicationManager and + "com.nokia.symbian.ILogsView" interface instead +*/ int LogsServices::start(LogsView activatedView, bool showDialpad, const QString& number) { LOGS_QDEBUG_2( "LogsServices::start ->", activatedView ) diff -r e52d42f9500c -r 41c0a814d878 logsui/rom/logsresources.iby --- a/logsui/rom/logsresources.iby Thu May 27 12:51:53 2010 +0300 +++ b/logsui/rom/logsresources.iby Fri Jun 11 13:38:41 2010 +0300 @@ -23,4 +23,5 @@ data=DATAZ_\resource\apps\logs.rsc \resource\apps\logs.rsc data=DATAZ_\QT_TRANSLATIONS_DIR\dialer.qm QT_TRANSLATIONS_DIR\dialer.qm + #endif diff -r e52d42f9500c -r 41c0a814d878 logsui/tsrc/logdbmodifier/addeventtest/install/clientlogstest.pkg --- a/logsui/tsrc/logdbmodifier/addeventtest/install/clientlogstest.pkg Thu May 27 12:51:53 2010 +0300 +++ b/logsui/tsrc/logdbmodifier/addeventtest/install/clientlogstest.pkg Fri Jun 11 13:38:41 2010 +0300 @@ -37,7 +37,7 @@ ; ; Three files to install ; -"\epoc32\release\armv5\udeb\logclienttest.exe" -"!:\sys\bin\logclienttest.exe" +"\epoc32\release\armv5\urel\logclienttest.exe" -"!:\sys\bin\logclienttest.exe" "\epoc32\winscw\c\system\testlogclients.dat" -"!:\system\testlogclients.dat" diff -r e52d42f9500c -r 41c0a814d878 logsui/tsrc/logsservicestester/install/logsservicestester.pkg --- a/logsui/tsrc/logsservicestester/install/logsservicestester.pkg Thu May 27 12:51:53 2010 +0300 +++ b/logsui/tsrc/logsservicestester/install/logsservicestester.pkg Fri Jun 11 13:38:41 2010 +0300 @@ -37,6 +37,6 @@ ; ; Three files to install ; -"\epoc32\release\armv5\udeb\logsservicestester.exe" - "!:\sys\bin\logsservicestester.exe" +"\epoc32\release\armv5\urel\logsservicestester.exe" - "!:\sys\bin\logsservicestester.exe" "\epoc32\data\z\resource\apps\logsservicestester.rsc" - "!:\resource\apps\logsservicestester.rsc" "\epoc32\data\z\private\10003a3f\import\apps\logsservicestester_reg.rsc" - "!:\private\10003a3f\import\apps\logsservicestester_reg.rsc" diff -r e52d42f9500c -r 41c0a814d878 logsui/tsrc/logsservicestester/logsservicestester.pro --- a/logsui/tsrc/logsservicestester/logsservicestester.pro Thu May 27 12:51:53 2010 +0300 +++ b/logsui/tsrc/logsservicestester/logsservicestester.pro Fri Jun 11 13:38:41 2010 +0300 @@ -19,16 +19,22 @@ TARGET = DEPENDPATH += . INCLUDEPATH += . +INCLUDEPATH += ..\..\logsapp\inc INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE CONFIG += hb # Input +HEADERS += logsservicetesterwidget.h +HEADERS += logsservicetesterappcloser.h + SOURCES += main.cpp +SOURCES += logsservicetesterwidget.cpp +SOURCES += logsservicetesterappcloser.cpp symbian: { TARGET.UID2 = 0x100039CE TARGET.UID3 = 0xEC209DCF - TARGET.CAPABILITY = CAP_APPLICATION AllFiles - LIBS += -llogsservices + TARGET.CAPABILITY = CAP_APPLICATION PowerMgmt + LIBS += -llogsservices -lxqservice } diff -r e52d42f9500c -r 41c0a814d878 logsui/tsrc/logsservicestester/logsservicetesterappcloser.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/tsrc/logsservicestester/logsservicetesterappcloser.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,183 @@ +/* +* 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 +#include "logsservicetesterappcloser.h" + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsServiceTesterAppCloser::LogsServiceTesterAppCloser(QObject* parent) : + QObject(parent) +{ + mAppCloseWatch = new CAppCloseWatcher(*this); + connect(&mTimer, SIGNAL(timeout()), this, SLOT(closeAppTimeout())); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsServiceTesterAppCloser::~LogsServiceTesterAppCloser() +{ + delete mAppCloseWatch; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsServiceTesterAppCloser::AppClosed(TInt aError) +{ + mTimer.stop(); + if (aError == KErrNone) { + emit closed(); + } else { + emit closeError(aError); + } +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsServiceTesterAppCloser::closeAppTimeout() +{ + mAppCloseWatch->Cancel(); + emit closeError(ErrorClosingTimeout); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsServiceTesterAppCloser::closeApp(TApaTask& aTask) +{ + if ( !mAppCloseWatch->IsActive() ) { + mTimer.start(3000); //3 sec. + mTimer.setSingleShot(true); + mAppCloseWatch->Start(aTask); + aTask.EndTask(); + } else { + emit closeError(ErrorClosingOngoing); + } +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsServiceTesterAppCloser::closeDialerApp() +{ + qDebug() << "[LOGS_TESTER] -> LogsServiceTesterAppCloser::closeDialerApp()"; + const TUid KUidDialer = { 0x101F4CD5 }; + 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"; + closeApp(dialerTask); + } else { + qDebug() << "[LOGS_TESTER] dialer is not running"; + emit closeError(ErrorAppNotRunning); + } + ws.Close(); + } else { + emit closeError(err); + } + qDebug() << "[LOGS_TESTER] <- LogsServiceTesterAppCloser::closeDialerApp()"; +} + + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CAppCloseWatcher::CAppCloseWatcher(MCloseOberver& aObserver) : + CActive(CActive::EPriorityStandard), iObserver(aObserver) + { + CActiveScheduler::Add(this); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +CAppCloseWatcher::~CAppCloseWatcher() + { + Cancel(); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CAppCloseWatcher::Start(const TApaTask& aTask) + { + qDebug() << "[LOGS_TESTER] -> CAppCloseWatcher::Start()!"; + if (!IsActive()) + { + TInt err = iThread.Open(aTask.ThreadId()); + if (err == KErrNone) + { + qDebug() << "[LOGS_TESTER] calling iThread.Logon(iStatus)"; + iOriginalProcessPriority = iThread.ProcessPriority(); + iThread.SetProcessPriority(EPriorityForeground); + iThread.Logon(iStatus); + SetActive(); + } + else + { + qDebug() << "[LOGS_TESTER] calling iThread.Open() failed: "<< err; + TRequestStatus* s = &iStatus; + User::RequestComplete(s, err); + SetActive(); + } + } + qDebug() << "[LOGS_TESTER] <- CAppCloseWatcher::Start()"; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CAppCloseWatcher::DoCancel() + { + qDebug() << "[LOGS_TESTER] -> CAppCloseWatcher::DoCancel()"; + iThread.LogonCancel(iStatus); + iThread.SetProcessPriority(iOriginalProcessPriority); + iThread.Close(); + qDebug() << "[LOGS_TESTER] -> CAppCloseWatcher::DoCancel()"; + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void CAppCloseWatcher::RunL() + { + qDebug() << "[LOGS_TESTER] -> CAppCloseWatcher::RunL()"; + if (iThread.Handle()) + iThread.SetProcessPriority(iOriginalProcessPriority); + iThread.Close(); + iObserver.AppClosed(iStatus.Int()); + qDebug() << "[LOGS_TESTER] <- CAppCloseWatcher::RunL()"; + } diff -r e52d42f9500c -r 41c0a814d878 logsui/tsrc/logsservicestester/logsservicetesterappcloser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/tsrc/logsservicestester/logsservicetesterappcloser.h Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,110 @@ +/* +* 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 LOGSSERVICETESTERAPPCLOSER_H +#define LOGSSERVICETESTERAPPCLOSER_H + +#include +#include +#include + + +class CAppCloseWatcher; + +/** + * + */ +class MCloseOberver +{ +public: + virtual void AppClosed(TInt aError) = 0; +}; + + +/** + * + */ +class LogsServiceTesterAppCloser : public QObject, public MCloseOberver +{ + Q_OBJECT +public: + + explicit LogsServiceTesterAppCloser(QObject *parent=0); + ~LogsServiceTesterAppCloser(); + + enum AppCloserErrors { + ErrorAppNotRunning = 1, + ErrorClosingOngoing, + ErrorClosingTimeout + }; + +public slots: + + void closeApp(TApaTask& aTask); + void closeDialerApp(); + +signals: + + void closed(); + void closeError(int error); + +private slots: + + void closeAppTimeout(); + +private: + + // from MCloseOberver + virtual void AppClosed(TInt aError); + +private: + QTimer mTimer; + CAppCloseWatcher* mAppCloseWatch; +}; + + +/** + * + */ +class CAppCloseWatcher : public CActive + { +public: + + CAppCloseWatcher(MCloseOberver& aObserver); + ~CAppCloseWatcher(); + + // Start watching application death + void Start(const TApaTask& aTask); + +private: + + void DoCancel(); + void RunL(); + +private: //data + + //A handle to the main thread of the application to be closed. + RThread iThread; + + //A backup of the orginal priority of the application's process + TProcessPriority iOriginalProcessPriority; + + MCloseOberver& iObserver; + }; + +#endif // LOGSSERVICETESTERAPPCLOSER_H + diff -r e52d42f9500c -r 41c0a814d878 logsui/tsrc/logsservicestester/logsservicetesterwidget.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/tsrc/logsservicestester/logsservicetesterwidget.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,187 @@ +/* +* 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 +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "logsservicetesterwidget.h" +#include "logsservicetesterappcloser.h" +#include "logsdefs.h" + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsServiceTesterWidget::LogsServiceTesterWidget(QGraphicsItem *parent ) : + HbWidget(parent), + mViewIndex(0), + mShowDialpad(false), + mDialpadText(QString()) +{ + qDebug() << "[LOGS_TESTER]-> LogsServiceTesterWidget::LogsServiceTesterWidget()"; + mAppCloser = new LogsServiceTesterAppCloser(this); + connect(mAppCloser, SIGNAL(closed()), this, SLOT(dialerClosed()), + Qt::QueuedConnection); + connect(mAppCloser, SIGNAL(closeError(int)), this, SLOT(dialerCloseError(int)), + Qt::QueuedConnection); + + HbLabel* comboLabel = new HbLabel("Select logs view:"); + + mComboBox = new HbComboBox(); + mComboBox->addItem( "Recent view", QVariant(LogsServices::ViewAll)); + mComboBox->addItem( "Received view", QVariant(LogsServices::ViewReceived)); + mComboBox->addItem( "Called view", QVariant(LogsServices::ViewCalled)); + mComboBox->addItem( "Missed view", QVariant(LogsServices::ViewMissed)); + + mCheckBox = new HbCheckBox("Show dialpad"); + + HbLabel* editorLabel = new HbLabel("Launch dialpad with number:"); + mEditor = new HbLineEdit(); + mEditor->setInputMethodHints(Qt::ImhPreferNumbers); + + HbPushButton* newService = new HbPushButton("Start Dialer via new service name"); + newService->setPreferredHeight(60); + connect(newService, SIGNAL(clicked()), this, SLOT(startNewService())); + + HbPushButton* oldService = new HbPushButton("Start Dialer via old service name"); + oldService->setPreferredHeight(60); + connect(oldService, SIGNAL(clicked()), this, SLOT(startOldService())); + + HbPushButton* killDialer = new HbPushButton("Kill Dialer"); + killDialer->setPreferredHeight(60); + connect(killDialer, SIGNAL(clicked()), mAppCloser, SLOT(closeDialerApp())); + + QGraphicsLinearLayout* layout = new QGraphicsLinearLayout(Qt::Vertical); + layout->addItem(comboLabel); + layout->addItem(mComboBox); + layout->addItem(mCheckBox); + layout->addItem(editorLabel); + layout->addItem(mEditor); + layout->addItem(newService); + layout->addItem(oldService); + layout->addItem(killDialer); + setLayout(layout); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsServiceTesterWidget:: ~LogsServiceTesterWidget() +{ + qDebug() << "[LOGS_TESTER] <-> LogsServiceTesterWidget::~LogsServiceTesterWidget()"; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsServiceTesterWidget::fetchData() +{ + qDebug() << "[LOGS_TESTER] LogsServiceTesterWidget::fetchData()"; + int index = mComboBox->currentIndex()>0 ? mComboBox->currentIndex() : 0; + mViewIndex = mComboBox->itemData(index).toInt(); + qDebug() << "[LOGS_TESTER] viewIndex: " << mViewIndex; + + mShowDialpad = (mCheckBox->checkState() == Qt::Checked) ? true : false; + qDebug() << "[LOGS_TESTER] showDialpad: " << mShowDialpad; + + mDialpadText = mEditor->text(); + qDebug() << "[LOGS_TESTER] dialpadText: " << mDialpadText; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsServiceTesterWidget::startNewService() +{ + qDebug() << "[LOGS_TESTER] -> LogsServiceTesterWidget::startNewService()"; + fetchData(); + + XQApplicationManager appMgr; + QScopedPointer request(appMgr.create( QLatin1String(logsServiceName), + QLatin1String(logsInterfaceName), + QLatin1String(logsOperationName), + false)); + if (!request.isNull()) { + int retValue = -1; + QList arglist; + QVariantMap map; + map.insert(logsViewIndexParam, QVariant(mViewIndex)); + map.insert(logsShowDialpadParam, QVariant(mShowDialpad)); + map.insert(logsDialpadTextParam, QVariant(mDialpadText)); + + arglist.append(QVariant(map)); + request->setArguments(arglist); + QVariant ret(retValue); + + request->send(ret); + } + qDebug() << "[LOGS_TESTER] <- LogsServiceTesterWidget::startNewService()"; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsServiceTesterWidget::startOldService() +{ + qDebug() << "[LOGS_TESTER] -> LogsServiceTesterWidget::startOldService()"; + fetchData(); + LogsServices::start( (LogsServices::LogsView)mViewIndex, mShowDialpad, mDialpadText ); + qDebug() << "[LOGS_TESTER] <- LogsServiceTesterWidget::startOldService()"; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsServiceTesterWidget::dialerClosed() +{ + HbMessageBox::information("Dialer closed"); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsServiceTesterWidget::dialerCloseError(int error) +{ + QString errorMsg; + if (error == LogsServiceTesterAppCloser::ErrorAppNotRunning) { + errorMsg = QString("Dialer not running"); + } else if (error == LogsServiceTesterAppCloser::ErrorClosingOngoing) { + errorMsg = QString("Dialer closing is already ongoing"); + } else if (error == LogsServiceTesterAppCloser::ErrorClosingTimeout) { + errorMsg = QString("Dialer closing timeout"); + } else { + errorMsg = QString("Dialer closing error: %1").arg(error); + } + HbMessageBox::warning(errorMsg); +} diff -r e52d42f9500c -r 41c0a814d878 logsui/tsrc/logsservicestester/logsservicetesterwidget.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/tsrc/logsservicestester/logsservicetesterwidget.h Fri Jun 11 13:38:41 2010 +0300 @@ -0,0 +1,62 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + +#ifndef LOGSSERVICETESTERWIDGET_H +#define LOGSSERVICETESTERWIDGET_H + +#include + +class HbComboBox; +class HbCheckBox; +class HbLineEdit; +class LogsServiceTesterAppCloser; + +class LogsServiceTesterWidget : public HbWidget +{ + Q_OBJECT + +public: + LogsServiceTesterWidget(QGraphicsItem *parent=0); + ~LogsServiceTesterWidget(); + +public slots: + + void startOldService(); + void startNewService(); + + void dialerClosed(); + void dialerCloseError(int error); + +private: + + void fetchData(); + +private: + HbCheckBox* mCheckBox; + HbComboBox* mComboBox; + HbLineEdit* mEditor; + + int mViewIndex; + bool mShowDialpad; + QString mDialpadText; + + LogsServiceTesterAppCloser* mAppCloser; +}; + + +#endif // LOGSSERVICETESTERWIDGET_H + diff -r e52d42f9500c -r 41c0a814d878 logsui/tsrc/logsservicestester/main.cpp --- a/logsui/tsrc/logsservicestester/main.cpp Thu May 27 12:51:53 2010 +0300 +++ b/logsui/tsrc/logsservicestester/main.cpp Fri Jun 11 13:38:41 2010 +0300 @@ -15,41 +15,19 @@ * */ -#include -#include -#include #include #include -#include +#include "logsservicetesterwidget.h" int main(int argc, char *argv[]) { - qDebug() << "LogsServicesTester entry"; - LogsServices::LogsView viewIndex = LogsServices::ViewAll; - bool showDialpad = false; - QString number; - for ( int i = 0; i< argc; i++ ){ - qDebug() << "Arg" << ( i + 1 ) << argv[i]; - QString argStr( argv[i] ); - if ( argStr.length() == 1 ){ - viewIndex = (LogsServices::LogsView)argStr.toInt(); - } - if ( argStr == QString("-dialpad") ){ - showDialpad = true; - } - if ( argStr == QString("-num") ){ - number = "223456677"; - } - } - - HbApplication app(argc, argv); - HbMainWindow mainWindow; - mainWindow.show(); - - qDebug() << "LogsServicesTester start logs"; - LogsServices::start( viewIndex, showDialpad, number ); - - int ret = app.exec(); - qDebug() << "LogsServicesTester exit"; - return ret; + HbApplication app(argc, argv); + app.setApplicationName(QLatin1String("Logs service tester")); + HbMainWindow mainWindow; + + LogsServiceTesterWidget* widget = new LogsServiceTesterWidget(); + mainWindow.addView(widget); + + mainWindow.show(); + return app.exec(); } diff -r e52d42f9500c -r 41c0a814d878 recents_plat/logs_engine_api/inc/logsevent.h --- a/recents_plat/logs_engine_api/inc/logsevent.h Thu May 27 12:51:53 2010 +0300 +++ b/recents_plat/logs_engine_api/inc/logsevent.h Fri Jun 11 13:38:41 2010 +0300 @@ -27,6 +27,7 @@ class LogsEventData; class LogsEventStrings; class CLogEvent; +class QDataStream; QTM_BEGIN_NAMESPACE class QContactName; @@ -166,6 +167,16 @@ */ LOGSENGINE_EXPORT bool isRead() const; + /** + * Construct event from serialized data stream + */ + LOGSENGINE_EXPORT LogsEvent( QDataStream& serializedEvent ); + + /** + * Serialize event to data stream + */ + LOGSENGINE_EXPORT bool serialize( QDataStream& serializeDestination ); + public: /** diff -r e52d42f9500c -r 41c0a814d878 recents_plat/logs_engine_api/inc/logsmodel.h --- a/recents_plat/logs_engine_api/inc/logsmodel.h Thu May 27 12:51:53 2010 +0300 +++ b/recents_plat/logs_engine_api/inc/logsmodel.h Fri Jun 11 13:38:41 2010 +0300 @@ -25,6 +25,7 @@ class LogsDbConnector; class LogsMatchesModel; class LogsConfigurationParams; +class LogsDetailsModel; /** * Model for log events. @@ -112,6 +113,12 @@ * @return 0 if configured succesfully */ LOGSENGINE_EXPORT int updateConfiguration(LogsConfigurationParams& params); + + /** + * Get details model. + * @return details model + */ + LOGSENGINE_EXPORT LogsDetailsModel* logsDetailsModel(LogsEvent& event); public: // From QAbstractItemModel diff -r e52d42f9500c -r 41c0a814d878 recents_plat/logs_services_api/inc/logsservices.h --- a/recents_plat/logs_services_api/inc/logsservices.h Thu May 27 12:51:53 2010 +0300 +++ b/recents_plat/logs_services_api/inc/logsservices.h Fri Jun 11 13:38:41 2010 +0300 @@ -22,11 +22,39 @@ /** * Logs application services +* @deprecated Use XQApplicationManager instead. +* Service name: "logs", +* Interface name: "com.nokia.symbian.ILogsView" +* Operation signature: "show(QVariantMap)" +* Operation parameters: +* "view_index": int, 0 - all recent, 1 - received, 2 - called, 3 - missed +* "show_dialpad": bool, if true view is shown with dialpad opened on top +* "dialpad_text": QString, number to be prefilled into dialpad +* +* Example usage: +* XQApplicationManager appMgr; +* QScopedPointer request(appMgr.create(QString("logs"), +* QString("com.nokia.symbian.ILogsView"), +* QString("show(QVariantMap)"), false)); +* if (!request.isNull()) { +* int retValue = -1; +* QList arglist; +* QVariantMap map; +* map.insert("view_index", QVariant(0)); +* map.insert("show_dialpad", QVariant(true)); +* map.insert("dialpad_text", QVariant(QString())); +* arglist.append(QVariant(map)); +* request->setArguments(arglist); +* QVariant ret(retValue); +* request->send(ret); +* } +* */ class LogsServices { public: + //Deprecated enum LogsView{ ViewAll, ViewReceived, @@ -36,6 +64,9 @@ /** * Requests to start Logs application. If Logs is already running, * activates the requested view. + * + * @deprecated Use "com.nokia.symbian.ILogsView" interface + * and "show(int,bool,QString)" operation instead * * @param activatedView The view to be activated in Logs. * @param showDialpad Specifies whether dialpad should be shown on top @@ -48,4 +79,5 @@ }; + #endif //LOGSSERVICES_H