# HG changeset patch # User Pat Downey # Date 1277310096 -3600 # Node ID 38e85eb5490667e655a21a9396f7f0a31763d5aa # Parent 41c0a814d878948c12a0628a697ab7fdc4b8fb1c# Parent 7a485daed50d490c30a87089c803f7e08c15e927 Merge heads. diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/inc/logsbaseview.h --- a/logsui/logsapp/inc/logsbaseview.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/inc/logsbaseview.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/inc/logsdefs.h --- a/logsui/logsapp/inc/logsdefs.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/inc/logsdefs.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/inc/logsdetailsview.h --- a/logsui/logsapp/inc/logsdetailsview.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/inc/logsdetailsview.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/inc/logspageindicatoritem.h --- a/logsui/logsapp/inc/logspageindicatoritem.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/inc/logspageindicatoritem.h Wed Jun 23 17:21:36 2010 +0100 @@ -35,10 +35,14 @@ void setActive(bool active = true); bool isActive() const; + +protected: - + void changeEvent(QEvent * event); + private: + void updateColor(); void startAnimation(); private slots: diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/inc/logsrecentcallsview.h --- a/logsui/logsapp/inc/logsrecentcallsview.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/inc/logsrecentcallsview.h Wed Jun 23 17:21:36 2010 +0100 @@ -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: @@ -105,6 +107,8 @@ void gestureEvent(QGestureEvent *event); QSwipeGesture::SwipeDirection swipeAngleToDirection(int angle, int delta); + int getListItemTextWidth(); + private: @@ -125,7 +129,7 @@ LogsMatchesModel* mMatchesModel; bool mMarkingMissedAsSeen; LogsPageIndicator* mPageIndicator; - bool mResetted; + bool mFirstActivation; }; diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/inc/logsservicehandler.h --- a/logsui/logsapp/inc/logsservicehandler.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/inc/logsservicehandler.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/inc/logsservicehandlerold.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/inc/logsservicehandlerold.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/inc/logsviewmanager.h --- a/logsui/logsapp/inc/logsviewmanager.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/inc/logsviewmanager.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/logsapp.pro --- a/logsui/logsapp/logsapp.pro Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/logsapp.pro Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/logsapp.qrc --- a/logsui/logsapp/logsapp.qrc Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/logsapp.qrc Wed Jun 23 17:21:36 2010 +0100 @@ -11,5 +11,6 @@ resources/hblistviewitem.css resources/hblistviewitem.widgetml + resources/hbgroupboxheadingwidget.css diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/resources/detailsView.docml --- a/logsui/logsapp/resources/detailsView.docml Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/resources/detailsView.docml Wed Jun 23 17:21:36 2010 +0100 @@ -1,39 +1,25 @@ - + - - - + - - - + - - - + - - - + - - - + - - - + - - - + @@ -48,45 +34,43 @@ - - - + - - - + - - - + - - - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - @@ -101,58 +85,10 @@ - + -
- - - - - - - - - - - - - -
-
- - - - - - - - - - - - - -
-
- - - - - - - - - - - - - -
- - - @@ -169,11 +105,38 @@ - +
+ + + + + + + + + +
+
+ + + + + + +
+
+ + + + + + +
+ - - + +
\ No newline at end of file diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/resources/hbgroupboxheadingwidget.css --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/resources/hbgroupboxheadingwidget.css Wed Jun 23 17:21:36 2010 +0100 @@ -0,0 +1,9 @@ +HbGroupBoxHeadingWidget[groupBoxType="1"]::text +{ + right:expr(4*var(hb-param-graphic-size-secondary)); +} + +HbGroupBoxHeadingWidget[groupBoxType="3"]::text +{ + right:expr(4*var(hb-param-graphic-size-secondary)); +} diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/resources/hblistviewitem.css --- a/logsui/logsapp/resources/hblistviewitem.css Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/resources/hblistviewitem.css Wed Jun 23 17:21:36 2010 +0100 @@ -1,3 +1,7 @@ +HbListViewItem[layoutName="default"]{ + layout:logs-portrait; +} + HbListViewItem[layoutName="logsLandscape"]{ layout:logs-landscape; } @@ -6,33 +10,22 @@ layout:logs-landscape; } -HbListViewItem::text-1[layoutName="logsLandscape"]{ - fixed-width: 40.0un; - text-height: var(hb-param-text-height-primary); +HbListViewItem::text-2[layoutName="default"]{ + max-width:-1; + text-height: var(hb-param-text-height-secondary); } -HbListViewItem::text-2[layoutName="logsLandscape"]{ - - fixed-width: 40.0un; - text-height: var(hb-param-text-height-secondary); +HbListViewItem::text-1[layoutName="logsLandscape"]{ + pref-width: expr(var(hb-param-screen-width)/2 - var(hb-param-graphic-size-primary-medium) - var(hb-param-margin-gene-left) - var(hb-param-margin-gene-middle-horizontal)); } -HbListViewItem::text-1[layoutName="logsLandscapeDialpad"]{ - fixed-width: 38.0un; - text-height: var(hb-param-text-height-primary); +HbListViewItem::text-2[layoutName="logsLandscape"]{ + max-width:-1; + text-height: var(hb-param-text-height-secondary); } HbListViewItem::text-2[layoutName="logsLandscapeDialpad"]{ - fixed-width: 0.0un; - text-height: 0.0un; + max-width: 0.0un; + text-height: 0.0un; } -HbListViewItem::text-1[layoutName="default"]{ - fixed-width: 40.0un; - text-height: var(hb-param-text-height-primary); -} - -HbListViewItem::text-2[layoutName="default"]{ - fixed-width: 40.0un; - text-height: var(hb-param-text-height-secondary); -} diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/resources/hblistviewitem.widgetml --- a/logsui/logsapp/resources/hblistviewitem.widgetml Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/resources/hblistviewitem.widgetml Wed Jun 23 17:21:36 2010 +0100 @@ -1,5 +1,45 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -64,15 +98,9 @@ - - - - - - - - - + + + \ No newline at end of file diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/resources/logs.docml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/resources/logs.docml Wed Jun 23 17:21:36 2010 +0100 @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/resources/logs.splashml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/resources/logs.splashml Wed Jun 23 17:21:36 2010 +0100 @@ -0,0 +1,7 @@ + + + logs.docml + mainView + 0x101F4CD5 + dialer + diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/resources/matchesView.docml --- a/logsui/logsapp/resources/matchesView.docml Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/resources/matchesView.docml Wed Jun 23 17:21:36 2010 +0100 @@ -1,19 +1,13 @@ - + - - - + - - - + - - - + @@ -28,64 +22,60 @@ - - - + - - - + - - - + - - - + - - - - - - - - - + - - - - - - - + + - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - @@ -94,66 +84,12 @@ - - - - -
- - - - - - - - - - - - - - - + -
-
- - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - -
- + +
- - @@ -167,7 +103,31 @@ - +
+ + + + + + +
+
+ + + + + + +
+
+ + + + + + +
+ diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/resources/recentCallsView.docml --- a/logsui/logsapp/resources/recentCallsView.docml Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/resources/recentCallsView.docml Wed Jun 23 17:21:36 2010 +0100 @@ -1,31 +1,20 @@ - + - - - + - - - + - - - + - - - + - - - + - @@ -39,74 +28,73 @@ - - - + - - - + - - - + - - - + - - - - - - - - - + - - + + - - - - - + + + + + + + + + + + + + + + + + + + + - - - + + - - - - - - - + + + + - - - - + + + + + + + + + - @@ -119,75 +107,15 @@ - + -
- - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - - - - -
- - - - +
@@ -197,7 +125,43 @@ - +
+ + + + + + + + + + +
+
+ + + + + + + + + + +
+
+ + + + + + + + + + +
+ diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/service_conf.xml --- a/logsui/logsapp/service_conf.xml Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/service_conf.xml Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/src/logsbaseview.cpp --- a/logsui/logsapp/src/logsbaseview.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/src/logsbaseview.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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,25 +422,21 @@ 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 65% of the screen height + // dialpad takes 55% of the screen height qreal screenHeight = screenRect.height(); - mDialpad->setPos(QPointF(0, screenHeight/2.25)); + mDialpad->setPos(QPointF(0, screenHeight*0.45)); mDialpad->setPreferredSize(screenRect.width(), - screenHeight-screenHeight/2.25); + screenHeight*0.55); } LOGS_QDEBUG( "logs [UI] <- LogsBaseView::setDialpadPosition()" ); } @@ -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()); @@ -510,17 +549,6 @@ if (itemContextMenu->actions().count() > 0) { itemContextMenu->setPreferredPos(coords,HbPopup::TopLeftCorner); itemContextMenu->open(); - //TODO: - //the hack below is needed since otherwise listbox will get mouse event - //and "activated" signal will be emitted (=>initiateCallback() called) - //Remove it, when something is done in platform code for that - if (scene()) { - QGraphicsItem *item = scene()->mouseGrabberItem(); - if (item) { - LOGS_QDEBUG( "logs [UI] -> LogsBaseView::showListItemMenu() ungrabbing the mouse" ); - item->ungrabMouse(); - } - } } } @@ -715,7 +743,7 @@ new HbLabel(hbTrId("txt_dial_title_add_to_contacts"), popup)); popup->setAttribute(Qt::WA_DeleteOnClose); popup->setTimeout( HbPopup::NoTimeout ); - popup->setSecondaryAction( + popup->addAction( new HbAction(hbTrId("txt_dial_button_cancel"), popup)); HbWidget* buttonWidget = new HbWidget(popup); @@ -1037,7 +1065,7 @@ // void LogsBaseView::handleOrientationChanged() { - LOGS_QDEBUG( "logs [UI] -> LogsBaseView::handleOrientationChanged()!" ); + LOGS_QDEBUG( "logs [UI] -> LogsBaseView::handleOrientationChanged()" ); setDialpadPosition(); updateWidgetsSizeAndLayout(); LOGS_QDEBUG( "logs [UI] <- LogsBaseView::handleOrientationChanged()"); @@ -1061,20 +1089,28 @@ 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 )); - //note->setText( text ); - note->setPrimaryAction(new HbAction(hbTrId("txt_common_button_ok"), note)); - note->setSecondaryAction(new HbAction(hbTrId("txt_common_button_cancel"), note)); - - if (receiver && okSlot) { - connect(note->primaryAction(), SIGNAL(triggered()), receiver, okSlot); + note->setHeadingWidget(new HbLabel(heading)); + note->setDismissPolicy(HbPopup::TapOutside); + + if (note->actions().count() > 0 && note->actions().at(0)) { + note->actions().at(0)->setText(hbTrId("txt_common_button_ok")); + + if (receiver && okSlot) { + connect(note->actions().at(0), SIGNAL(triggered()), receiver, okSlot); + } } - if (receiver && cancelSlot) { - connect(note->secondaryAction(), SIGNAL(triggered()), receiver, cancelSlot); + if (note->actions().count() > 1 && note->actions().at(1)) { + note->actions().at(1)->setText(hbTrId("txt_common_button_cancel")); + + if (receiver && cancelSlot) { + connect(note->actions().at(1), SIGNAL(triggered()), receiver, cancelSlot); + } } note->open(); + LOGS_QDEBUG( "logs [UI] <- LogsBaseView::askConfirmation()" ); } // ----------------------------------------------------------------------------- @@ -1090,11 +1126,9 @@ if ( isContactSearchPermanentlyDisabled() ){ contactSearchAction->setVisible(false); } else if ( isContactSearchEnabled() ){ - contactSearchAction->setIconText("Contact search off"); contactSearchAction->setText(hbTrId("txt_dialer_ui_opt_contact_search_off")); contactSearchAction->setVisible(mDialpad->isOpen()); } else { - contactSearchAction->setIconText("Contact search on"); contactSearchAction->setText(hbTrId("txt_dialer_ui_opt_contact_search_on")); contactSearchAction->setVisible(mDialpad->isOpen()); } diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/src/logscomponentrepository.cpp --- a/logsui/logsapp/src/logscomponentrepository.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/src/logscomponentrepository.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -43,9 +43,9 @@ mDialpad(0), mDialpadKeyHandler(0) { - bool resourceControl = true; - mModel = new LogsModel(LogsModel::LogsRecentModel, resourceControl); + mModel = new LogsModel(LogsModel::LogsRecentModel); } + // ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/src/logsdetailsview.cpp --- a/logsui/logsapp/src/logsdetailsview.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/src/logsdetailsview.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/src/logsmatchesview.cpp --- a/logsui/logsapp/src/logsmatchesview.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/src/logsmatchesview.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/src/logspageindicatoritem.cpp --- a/logsui/logsapp/src/logspageindicatoritem.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/src/logspageindicatoritem.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -17,12 +17,14 @@ #include #include - +#include +#include #include "logspageindicatoritem.h" +#include "logslogger.h" - -const char logsNormalIconName[] = "qtg_graf_hspage_normal";//"qtg_mono_tab_passive";// -const char logsHighlightIconName[] = "qtg_graf_hspage_highlight";//"qtg_mono_tab_active";// +const char logsNormalIconName[] = "qtg_mono_tab_passive"; +const char logsHighlightIconName[] = "qtg_mono_tab_active"; +const char logsIconColor[] = "qtc_viewtitle_normal"; //groupbox text color const int logsEffectDurationInMs = 1000; @@ -40,6 +42,9 @@ setIcon(HbIcon(logsNormalIconName)); } + setFlags(HbIcon::Colorized); + updateColor(); + QGraphicsColorizeEffect *effect = new QGraphicsColorizeEffect; effect->setColor(Qt::white); effect->setStrength(0); @@ -68,6 +73,7 @@ startAnimation(); } else { setIcon(HbIcon(logsNormalIconName)); + updateColor(); } } } @@ -85,6 +91,32 @@ // // ----------------------------------------------------------------------------- // +void LogsPageIndicatorItem::changeEvent(QEvent * event) +{ + if (event->type() == HbEvent::ThemeChanged) { + LOGS_QDEBUG( "logs [UI] LogsPageIndicatorItem::changeEvent(), themeChanged" ); + updateColor(); + } + HbIconItem::changeEvent(event); +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void LogsPageIndicatorItem::updateColor() +{ + QColor col = HbColorScheme::color(logsIconColor); + if (col.isValid() && (color() != col) ) { + setColor(col); + LOGS_QDEBUG_2( "logs [UI] LogsPageIndicatorItem::updateColor(), color: ", col ); + } +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// void LogsPageIndicatorItem::startAnimation() { graphicsEffect()->setEnabled(true); @@ -105,4 +137,5 @@ void LogsPageIndicatorItem::animationFinished() { graphicsEffect()->setEnabled(false); + updateColor(); } diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/src/logsrecentcallsview.cpp --- a/logsui/logsapp/src/logsrecentcallsview.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/src/logsrecentcallsview.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 // ----------------------------------------------------------------------------- // @@ -412,7 +435,6 @@ this, SLOT(showListItemMenu(HbAbstractViewItem*, const QPointF&))); - mListView->setScrollingStyle(HbScrollArea::PanOrFlick); mListView->setFrictionEnabled(true); mListViewX = mListView->pos().x(); @@ -706,22 +728,49 @@ updateMenu(); updateListLayoutName(*mListView); updateListSize(); - HbDeviceProfile deviceProf; LogsConfigurationParams param; - QString testString = mListView->layoutName(); - //note: ListItemTextWidth values are currently hardcoded and - //they are taken from hblistviewitem.css "text-1" field - if (mListView->layoutName() == logsListLandscapeDialpadLayout) { - param.setListItemTextWidth( 38 * deviceProf.unitValue() ); - } else { - param.setListItemTextWidth( 40 * deviceProf.unitValue() ); - } + param.setListItemTextWidth( getListItemTextWidth() ); mModel->updateConfiguration(param); } LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::updateWidgetsSizeAndLayout()" ); } // ----------------------------------------------------------------------------- +// LogsRecentCallsView::getListItemTextWidth +// ----------------------------------------------------------------------------- +// +int LogsRecentCallsView::getListItemTextWidth() +{ + LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::getListItemTextWidth()" ); + + 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) "; + 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) "; + expr += "+ var(hb-param-margin-gene-right))"; + width = screenRect.width() / 2; + } + + if ( expr.isEmpty() || !style()->parameter(expr, modifier) ){ + LOGS_QDEBUG( "logs [UI] No expression or incorrect expression" ); + } + width -= modifier; + + LOGS_QDEBUG_2( "logs [UI] <- LogsRecentCallsView::getListItemTextWidth(): ", width ); + return qRound(width); +} + + +// ----------------------------------------------------------------------------- // LogsRecentCallsView::updateCallButton // If dialpad contains text or there is items in list, call button is enabled // ----------------------------------------------------------------------------- @@ -741,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 7a485daed50d -r 38e85eb54906 logsui/logsapp/src/logsservicehandler.cpp --- a/logsui/logsapp/src/logsservicehandler.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/src/logsservicehandler.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/src/logsservicehandlerold.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/logsapp/src/logsservicehandlerold.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/src/logsviewmanager.cpp --- a/logsui/logsapp/src/logsviewmanager.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/src/logsviewmanager.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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()" ); } @@ -186,7 +180,12 @@ { LOGS_QDEBUG( "logs [UI] -> LogsViewManager::proceedExit()" ); - mComponentsRepository->model()->compressData(); + // Instead of compressing data, exit the application for real because + // of bug in wk16 platform which prevents bg/fg switching of the app. + // + + //mComponentsRepository->model()->compressData(); + qApp->quit(); LOGS_QDEBUG( "logs [UI] <- LogsViewManager::proceedExit()" ); } @@ -232,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 ){ @@ -276,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()" ); @@ -284,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); @@ -342,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 7a485daed50d -r 38e85eb54906 logsui/logsapp/src/main.cpp --- a/logsui/logsapp/src/main.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/src/main.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsbaseview.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsbaseview.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsbaseview.h Wed Jun 23 17:21:36 2010 +0100 @@ -85,6 +85,10 @@ void testDeleteEvent(); void testDeleteEventOkAnswer(); void testAskConfirmation(); + void testMatchWithActivityId(); + void testSaveActivity(); + void testLoadActivity(); + void testClearActivity(); private: diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h Wed Jun 23 17:21:36 2010 +0100 @@ -65,6 +65,8 @@ void testUpdateWidgetsSizeAndLayout(); void testDialpadEditorTextChanged(); void testSendMessage(); + void testSaveActivity(); + void testLoadActivity(); private: diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logspageindicatoritem.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logspageindicatoritem.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logspageindicatoritem.h Wed Jun 23 17:21:36 2010 +0100 @@ -48,6 +48,8 @@ void testConstructorDestructor(); void testSetActive(); + void testChangeEvent(); + void testUpdateColor(); void testAnimationFinnished(); private: diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h Wed Jun 23 17:21:36 2010 +0100 @@ -54,7 +54,6 @@ void testInitView(); void testActivated(); void testDeactivated(); - void testResetView(); void testInitListWidget(); void testUpdateFilter(); void testUpdateViewName(); @@ -77,12 +76,15 @@ void testActivateEmptyListIndicator(); void testUpdateMenu(); void testUpdateWidgetsSizeAndLayout(); + void testGetListItemTextWidth(); void testDialpadClosed(); void testClearList(); void testClearListOkAnswer(); void testIsExitAllowed(); void testContactSearch(); void testDialpadOpened(); + void testSaveActivity(); + void testLoadActivity(); private: //helper functions diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h --- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -87,6 +87,16 @@ } // ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsEvent LogsDetailsModel::getLogsEvent() const +{ + return *mEvent; +} + + +// ----------------------------------------------------------------------------- // LogsDetailsModel::rowCount // From QAbstractListModel // ----------------------------------------------------------------------------- diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h Wed Jun 23 17:21:36 2010 +0100 @@ -44,6 +44,7 @@ ~LogsDetailsModel(); void clearEvent(); void getNumberToClipboard(); + LogsEvent getLogsEvent() const; public: // From QAbstractItemModel diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -86,6 +86,27 @@ } // ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +LogsEvent::LogsEvent( QDataStream& serializedEvent ) +{ + serializedEvent >> mLogId; + mLogsEventData = 0; +} + +// ---------------------------------------------------------------------------- +// +// ---------------------------------------------------------------------------- +// +bool LogsEvent::serialize( QDataStream& serializeDestination ) +{ + serializeDestination << mLogId; + + return true; +} + +// ---------------------------------------------------------------------------- // LogsEvent::initializeEventL // ---------------------------------------------------------------------------- // @@ -243,9 +264,11 @@ // LogsEvent::setEventType // ---------------------------------------------------------------------------- // -void LogsEvent::setEventType( LogsEventType eventType ) +bool LogsEvent::setEventType( LogsEventType eventType ) { + bool changed( mEventType != eventType ); mEventType = eventType; + return changed; } // ---------------------------------------------------------------------------- diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 ); @@ -193,7 +198,7 @@ void setEventUid( int uid ); - void setEventType( LogsEventType aEventType ); + bool setEventType( LogsEventType aEventType ); void setLogsEventData( LogsEventData* logsEventData ); diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmatchesmodel.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmatchesmodel.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmatchesmodel.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -87,6 +87,15 @@ } // ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +LogsDetailsModel* LogsModel::logsDetailsModel(LogsEvent& event) +{ + return new LogsDetailsModel(); +} + +// ----------------------------------------------------------------------------- // LogsModel::markEventsSeen // ----------------------------------------------------------------------------- // diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.h --- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmatchesview.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmatchesview.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmatchesview.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/src/ut_logspageindicatoritem.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logspageindicatoritem.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logspageindicatoritem.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -18,10 +18,13 @@ //USER #include "ut_logspageindicatoritem.h" #include "logspageindicatoritem.h" +#include "hbstubs_helper.h" //SYSTEM #include #include +#include +#include void UT_LogsPageIndicatorItem::initTestCase() { @@ -46,6 +49,7 @@ { QVERIFY(!mIndicatorItem->mIsActive); QVERIFY(mIndicatorItem->graphicsEffect()); + QVERIFY(mIndicatorItem->color() == QColor(Qt::white)); delete mIndicatorItem; mIndicatorItem = 0; @@ -73,6 +77,43 @@ QVERIFY(mIndicatorItem->graphicsEffect()->isEnabled()); } +void UT_LogsPageIndicatorItem::testChangeEvent() +{ + QColor whiteCol(Qt::white); + QColor redCol(Qt::red); + + // theme changed event, color is updated + HbStubHelper::setColorScheme(redCol); + QVERIFY(mIndicatorItem->color() == whiteCol); + HbEvent event(HbEvent::ThemeChanged); + mIndicatorItem->event(&event); + QVERIFY(mIndicatorItem->color() == redCol); + + // some other event, color is not updated + HbStubHelper::setColorScheme(whiteCol); + HbEvent event2(HbEvent::DeviceProfileChanged); + mIndicatorItem->event(&event2); + QVERIFY(mIndicatorItem->color() == redCol); +} + +void UT_LogsPageIndicatorItem::testUpdateColor() +{ + QColor whiteCol(Qt::white); + QColor redCol(Qt::red); + QColor invalidCol(QColor::Invalid); + + // color updated successfully + QVERIFY(mIndicatorItem->color() == whiteCol); + HbStubHelper::setColorScheme(redCol); + mIndicatorItem->updateColor(); + QVERIFY(mIndicatorItem->color() == redCol); + + // color couldn't be updated + HbStubHelper::setColorScheme(invalidCol); + mIndicatorItem->updateColor(); + QVERIFY(mIndicatorItem->color() == redCol); +} + void UT_LogsPageIndicatorItem::testAnimationFinnished() { QVERIFY(mIndicatorItem->graphicsEffect()); diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 ); @@ -743,8 +741,8 @@ view->mViewManager.mainWindow().setOrientation( Qt::Vertical ); view->mDialpad->closeDialpad(); view->mListView = &list; - view->mListView->setLayoutName("dummy"); - view->mLayoutSectionName = "dummy"; + view->mListView->setLayoutName(QLatin1String("dummy")); + view->mLayoutSectionName = QLatin1String("dummy"); view->updateWidgetsSizeAndLayout(); QVERIFY( view->mListView->layoutName() == logsListDefaultLayout ); QVERIFY( view->mLayoutSectionName == logsViewDefaultSection ); @@ -755,12 +753,39 @@ // When dialpad is opened and has input, menu content is different view->mDialpad->openDialpad(); - QString hello("hello"); + QLatin1String hello("hello"); view->mDialpad->editor().setText( hello ); view->updateWidgetsSizeAndLayout(); QVERIFY(action && action->isVisible()); } + +void UT_LogsRecentCallsView::testGetListItemTextWidth() +{ + mRecentCallsView->mListView = new HbListView(); + + mRecentCallsView->mViewManager.mainWindow().setOrientation( Qt::Vertical ); + + // Default layout + mRecentCallsView->mListView->setLayoutName( + QLatin1String(logsListDefaultLayout)); + QCOMPARE( mRecentCallsView->getListItemTextWidth(), 200 ); + + // Landscape layout + mRecentCallsView->mViewManager.mainWindow().setOrientation( Qt::Horizontal ); + mRecentCallsView->mListView->setLayoutName( + QLatin1String(logsListLandscapeLayout)); + QCOMPARE( mRecentCallsView->getListItemTextWidth(), 206 ); + + // Landscape with dialpad layout + mRecentCallsView->mListView->setLayoutName( + QLatin1String(logsListLandscapeDialpadLayout)); + QCOMPARE( mRecentCallsView->getListItemTextWidth(), 206 ); + + delete mRecentCallsView->mListView; + mRecentCallsView->mListView = 0; +} + void UT_LogsRecentCallsView::testDialpadClosed() { HbListView list; @@ -904,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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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) == @@ -126,7 +142,7 @@ mLogsViewManager->mComponentsRepository->model()->mCompressCalled = false; mLogsViewManager->mMainWindow.mForeground = true; mLogsViewManager->exitApplication(); - QVERIFY( mLogsViewManager->mComponentsRepository->model()->mCompressCalled ); + QVERIFY( HbStubHelper::quitCalled() ); QVERIFY( !mLogsViewManager->mMainWindow.isForeground() ); // Exit not yet possible, app sent only to bg @@ -135,13 +151,13 @@ mLogsViewManager->mComponentsRepository->recentCallsView()->mMarkingMissedAsSeen = true; HbStubHelper::reset(); mLogsViewManager->exitApplication(); - QVERIFY( !mLogsViewManager->mComponentsRepository->model()->mCompressCalled ); + QVERIFY( !HbStubHelper::quitCalled() ); QVERIFY( !mLogsViewManager->mMainWindow.isForeground() ); // Simulate view allowing exit after denying it first mLogsViewManager->mComponentsRepository->recentCallsView()->mMarkingMissedAsSeen = false; mLogsViewManager->proceedExit(); - QVERIFY( mLogsViewManager->mComponentsRepository->model()->mCompressCalled ); + QVERIFY( HbStubHelper::quitCalled() ); } void UT_LogsViewManager::testAppFocusGained() @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h --- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp --- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -22,7 +22,11 @@ #include "hbstubs_helper.h" #include #include +#include +#include +#include #include +#include #include #include @@ -40,6 +44,12 @@ Qt::GestureState testState = Qt::NoGesture; 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() { @@ -49,6 +59,10 @@ testQuitCalled = false; testIsWidgetRaised = false; testDialogShown = false; + testColor = Qt::white; + testActivationReason = Hb::ActivationReasonNormal; + testActivityId = "LogsViewMatches"; + testActivities.clear(); } @@ -106,6 +120,47 @@ testIsWidgetOpen = isOpen; } +void HbStubHelper::setColorScheme(QColor col) +{ + 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() { testIsWidgetOpen = false; @@ -121,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) { } @@ -138,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(); } // ----------------------------------------------------------------------------- @@ -182,6 +295,7 @@ Q_UNUSED(windowFlags) testViewCount = 0; testWindow = this; + testViews.clear(); } HbMainWindow::~HbMainWindow() @@ -191,7 +305,7 @@ void HbMainWindow::setOrientation(Qt::Orientation orientation, bool animate) { - Q_UNUSED(animate) + Q_UNUSED(animate) windowOrientation = orientation; } @@ -202,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) @@ -218,10 +336,11 @@ testView = view; } -int HbMainWindow::viewCount() const +QList HbMainWindow::views() const { - return testViewCount; + return testViews; } + HbView *HbMainWindow::currentView() const { return testView; @@ -256,26 +375,32 @@ void HbMessageBox::setText(const QString &string) { - if (string == "Ok") { selectedActionString = "primary"; } else if (string == "Cancel") { selectedActionString = "secondary"; } - -} - - -HbAction *HbDialog::exec() -{ - if (selectedActionString == "primary") { - return primaryAction(); - } else { - return 0; - } } void QTimer::singleShot(int msec, QObject *receiver, const char *member) { testSingleShotTimer = true; } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +bool HbStyle::parameter(const QString ¶meter, qreal &value, const HbDeviceProfile &profile) const +{ + Q_UNUSED( profile ); + value = parameter.length(); + return true; +} + + +QColor HbColorScheme::color( const QString &colorRole ) +{ + Q_UNUSED(colorRole); + return testColor; +} diff -r 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h --- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h Wed Jun 23 17:21:36 2010 +0100 @@ -34,6 +34,9 @@ static void setWidgetOpen(bool isOpen); 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 7a485daed50d -r 38e85eb54906 logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro --- a/logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/inc/logscntentry.h --- a/logsui/logscntfinder/inc/logscntentry.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/inc/logscntentry.h Wed Jun 23 17:21:36 2010 +0100 @@ -91,6 +91,8 @@ void resetHighlights( LogsCntTextList& nameArray ); bool doSimpleMatch( const QString& pattern ) const; bool doComplexMatch( QStringList patternArray ) const; + int startsWith( const LogsCntText& nameItem, const QString& pattern, + bool optimize = true ) const; private: diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/inc/logspredictive12keytranslator.h --- a/logsui/logscntfinder/inc/logspredictive12keytranslator.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/inc/logspredictive12keytranslator.h Wed Jun 23 17:21:36 2010 +0100 @@ -34,7 +34,6 @@ public: - explicit LogsPredictive12KeyTranslator(); ~LogsPredictive12KeyTranslator(); public: //from LogsPredictiveTranslator @@ -42,7 +41,11 @@ QStringList patternTokens( const QString& pattern ) const; int hasPatternSeparators( const QString& pattern ) const; const QChar translateChar( const QChar character ) const; + +protected: + explicit LogsPredictive12KeyTranslator( const HbInputLanguage& lang ); + private: void padWithZeros( QString& token, const QString& source, int padIndex ) const; diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/inc/logspredictivelatin12keytranslator.h --- a/logsui/logscntfinder/inc/logspredictivelatin12keytranslator.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/inc/logspredictivelatin12keytranslator.h Wed Jun 23 17:21:36 2010 +0100 @@ -23,7 +23,12 @@ #include #include "logspredictive12keytranslator.h" +class HbInputLanguage; +//Name: ISO_8859-1:1987 [RFC1345,KXS2] +//MIBenum: 4 +//Source: ECMA registry +const int MIBenumLatin = 4; /** * translator for Latin ITU-T 12 keys keyboard @@ -35,17 +40,23 @@ public: explicit LogsPredictiveLatin12KeyTranslator(); + explicit LogsPredictiveLatin12KeyTranslator( const HbInputLanguage& lang ); ~LogsPredictiveLatin12KeyTranslator(); public: //from LogsPredictiveTranslator QStringList nameTokens( const QString& name ) const; + inline int mib() const {return MIBenumLatin;} + public: //from LogsPredictive12KeyTranslator - const QChar translateChar( const QChar character ) const; + const QChar translateChar( const QChar character, bool& ok ) const; - +private: + + void createSpecialMapping(); + private: QHash mSpecialKeyMap; diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/inc/logspredictivethai12keytranslator.h --- a/logsui/logscntfinder/inc/logspredictivethai12keytranslator.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/inc/logspredictivethai12keytranslator.h Wed Jun 23 17:21:36 2010 +0100 @@ -25,6 +25,14 @@ #include "logspredictive12keytranslator.h" class HbKeymap; +class HbInputLanguage; + + +//Name: TIS-620 +//MIBenum: 2259 +//Source: Thai Industrial Standards Institute (TISI) [Tantsetthi] +const int MIBenumThai = 2259; + /** @@ -37,13 +45,15 @@ public: explicit LogsPredictiveThai12KeyTranslator(); + explicit LogsPredictiveThai12KeyTranslator( const HbInputLanguage& lang ); ~LogsPredictiveThai12KeyTranslator(); public: //from LogsPredictiveTranslator - const QChar translateChar( const QChar character ) const; + const QChar translateChar( const QChar character, bool& ok ) const; QStringList nameTokens( const QString& name ) const; - + inline int mib() const {return MIBenumThai;} + private: bool isIgnored( const QChar character ) const; diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/inc/logspredictivetranslator.h --- a/logsui/logscntfinder/inc/logspredictivetranslator.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/inc/logspredictivetranslator.h Wed Jun 23 17:21:36 2010 +0100 @@ -20,8 +20,10 @@ #include #include +#include class HbKeymap; +class HbInputLanguage; /** * predictive translator. Singelton @@ -37,27 +39,34 @@ ~LogsPredictiveTranslator(); - const QString translate( const QString& name, int count = -1 ) const; - int startsWith( const QString& text, const QString& pattern, - bool optimize = true ) const; + const QString translatePattern( const QString& pattern ) const; + const QString translateText( const QString& text ); public: //abstracts virtual QStringList nameTokens( const QString& name ) const = 0; virtual QStringList patternTokens( const QString& pattern ) const = 0; virtual int hasPatternSeparators( const QString& pattern ) const = 0; - virtual const QChar translateChar( const QChar character ) const = 0; + virtual const QChar translateChar( const QChar character, bool& ok ) const = 0; + virtual int mib() const = 0; protected: - explicit LogsPredictiveTranslator(); - + explicit LogsPredictiveTranslator( const HbInputLanguage& lang ); + bool encodes( const QString& sniplet ); + const QString translate( const QString& text, bool* ok = 0, int count = -1 ) const; + +private: + + const LogsPredictiveTranslator& nameTranslator( const QString& name ); + protected: const HbKeymap* mKeyMap; private: + LogsPredictiveTranslator* mNameTranslator; static LogsPredictiveTranslator* mInstance; friend class UT_LogsPredictiveTranslator; diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/logscntfinder.pro --- a/logsui/logscntfinder/logscntfinder.pro Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/logscntfinder.pro Wed Jun 23 17:21:36 2010 +0100 @@ -26,6 +26,7 @@ INCLUDEPATH += ../inc INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE +DEFINES += QT_NO_DEBUG_OUTPUT # Input HEADERS += inc/logscntfinder.h diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/src/logscntentry.cpp --- a/logsui/logscntfinder/src/logscntentry.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/src/logscntentry.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -203,7 +203,7 @@ mCached=true; mPhoneNumber.mText = number; - mPhoneNumber.mTranslatedText = translator->translate( mPhoneNumber.mText ); + mPhoneNumber.mTranslatedText = translator->translateText( mPhoneNumber.mText ); } @@ -221,7 +221,7 @@ while( iter.hasNext() ) { LogsCntText txt; txt.mText = iter.next(); - txt.mTranslatedText = translator->translate( txt.mText ); + txt.mTranslatedText = translator->translateText( txt.mText ); textlist.append( txt ); } if ( textlist.count() == 0 ) { @@ -278,8 +278,8 @@ //simple while( names.hasNext() ) { LogsCntText& nameItem = names.next(); - nameItem.mHighlights = - translator->startsWith( nameItem.mText, pattern, false ); + //must use non-optimized version with whole pattern + nameItem.mHighlights = startsWith( nameItem, pattern, false ); } //complex @@ -289,14 +289,42 @@ names.toFront(); while( names.hasNext() ) { LogsCntText& nameItem = names.next(); - int matchSize = translator->startsWith( nameItem.mText, - patternItem, !hasSeparators ); + int matchSize = startsWith( nameItem, patternItem, !hasSeparators ); nameItem.mHighlights = matchSize > nameItem.mHighlights ? matchSize : nameItem.mHighlights; } } } + +// ----------------------------------------------------------------------------- +// LogsCntEntry::startsWith() +// ----------------------------------------------------------------------------- +// +int LogsCntEntry::startsWith( const LogsCntText& nameItem, + const QString& pattern, bool optimize ) const +{ + LOGS_QDEBUG( "logs [FINDER] -> LogsCntEntry::startsWith()" ) + //assumed that text has found based on pattern, thus only checking with + //first char is enough, if mightContainZeroes eq false + const QString& text = nameItem.mTranslatedText; + + int matchCount = pattern.length(); + if ( text.isEmpty() || matchCount > text.length() ) { + matchCount = 0; + } else { + if ( !optimize ) { + matchCount = text.startsWith( pattern ) ? matchCount : 0; + } else { + matchCount = *text.data() == *pattern.data() ? + matchCount : 0; + } + } + LOGS_QDEBUG( "logs [FINDER] -> LogsCntEntry::startsWith()" ) + return matchCount; +} + + // ----------------------------------------------------------------------------- // LogsCntEntry::setSpeedDial() // ----------------------------------------------------------------------------- diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/src/logscntfinder.cpp --- a/logsui/logscntfinder/src/logscntfinder.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/src/logscntfinder.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -273,7 +273,7 @@ LogsPredictiveTranslator::instance(); mCurrentInputPattern = pattern; - mCurrentPredictivePattern = translator->translate( mCurrentInputPattern ); + mCurrentPredictivePattern = translator->translatePattern( mCurrentInputPattern ); } @@ -300,18 +300,15 @@ LOGS_QDEBUG_2( "logs [FINDER] caching from DB cid=", entry->contactId() ) QContact contact = mContactManager->contact( entry->contactId() ); QContactName contactName = contact.detail( QContactName::DefinitionName ); - entry->setFirstName( contactName.value( QContactName::FieldFirst ) ); - entry->setLastName( contactName.value( QContactName::FieldLast ) ); + entry->setFirstName( contactName.value( QContactName::FieldFirstName ) ); + entry->setLastName( contactName.value( QContactName::FieldLastName ) ); QContactPhoneNumber contactPhoneNumber = contact.detail( QContactPhoneNumber::DefinitionName ); entry->setPhoneNumber( contactPhoneNumber.value( QContactPhoneNumber::FieldNumber ) ); - QContactAvatar contactAvatar = contact.detail(); - if (contactAvatar.subType().compare( - QLatin1String(QContactAvatar::SubTypeImage)) == 0 && - !contactAvatar.avatar().isEmpty()) { - entry->setAvatarPath(contactAvatar.avatar()); - } + QContactAvatar contactAvatar = contact.detail(); + QString avatar = contactAvatar.value( QContactAvatar::FieldImageUrl ); + entry->setAvatarPath( avatar ); updateResult( entry ); } diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/src/logspredictive12keytranslator.cpp --- a/logsui/logscntfinder/src/logspredictive12keytranslator.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/src/logspredictive12keytranslator.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -31,8 +31,9 @@ // LogsPredictive12KeyTranslator::LogsPredictive12KeyTranslator() // ----------------------------------------------------------------------------- // -LogsPredictive12KeyTranslator::LogsPredictive12KeyTranslator() - : LogsPredictiveTranslator() +LogsPredictive12KeyTranslator::LogsPredictive12KeyTranslator( + const HbInputLanguage& lang ) + : LogsPredictiveTranslator( lang ) { LOGS_QDEBUG( "logs [FINDER] -> LogsPredictive12KeyTranslator::\ LogsPredictive12KeyTranslator()" ) @@ -60,15 +61,28 @@ // QStringList LogsPredictive12KeyTranslator::patternTokens( const QString& pattern ) const { + LOGS_QDEBUG( "logs [FINDER] -> LogsPredictive12KeyTranslator::\ +patternTokens()" ) + LOGS_QDEBUG_2( "logs [FINDER] pattern ", pattern ); + QStringList target = pattern.split( ZeroSepar, QString::SkipEmptyParts ); if ( target.length() > 1 ) { + LOGS_QDEBUG( "logs [FINDER] has separator(s) " ) QString& first = target[0]; QString& last = target[target.length()-1]; padWithZeros( first, pattern, 0 ); padWithZeros( last, pattern, last.length() ); + } else if ( target.length() == 1 && //0280 -> 028 + pattern[pattern.length()-1] == ZeroSepar ) { + LOGS_QDEBUG( "logs [FINDER] no separators, trailing zero(s) " ) + QString& first = target[0]; + padWithZeros( first, pattern, 0 ); } else if ( target.length() == 0 ) { + LOGS_QDEBUG( "logs [FINDER] only separators " ) target.append( ZeroSepar ); } + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictive12KeyTranslator::\ +patternTokens()" ) return target; } diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/src/logspredictivelatin12keytranslator.cpp --- a/logsui/logscntfinder/src/logspredictivelatin12keytranslator.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/src/logspredictivelatin12keytranslator.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -17,9 +17,9 @@ #include #include #include -#include #include #include +#include #include "logspredictivelatin12keytranslator.h" #include "logslogger.h" @@ -34,16 +34,41 @@ // LogsPredictiveLatin12KeyTranslator::LogsPredictiveLatin12KeyTranslator() // ----------------------------------------------------------------------------- // -LogsPredictiveLatin12KeyTranslator::LogsPredictiveLatin12KeyTranslator() - : LogsPredictive12KeyTranslator() +LogsPredictiveLatin12KeyTranslator::LogsPredictiveLatin12KeyTranslator() + : LogsPredictive12KeyTranslator( QLocale::English ) { LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveLatin12KeyTranslator::\ LogsPredictiveLatin12KeyTranslator()" ) - HbInputLanguage lang = - HbInputSettingProxy::instance()->globalInputLanguage(); - mKeyMap = HbKeymapFactory::instance()->keymap( lang.language(), - lang.variant() ); + + createSpecialMapping(); + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveLatin12KeyTranslator::\ +LogsPredictiveLatin12KeyTranslator()" ) +} + + +// ----------------------------------------------------------------------------- +// LogsPredictiveLatin12KeyTranslator::LogsPredictiveLatin12KeyTranslator() +// ----------------------------------------------------------------------------- +// +LogsPredictiveLatin12KeyTranslator::LogsPredictiveLatin12KeyTranslator( + const HbInputLanguage& lang ) + : LogsPredictive12KeyTranslator( lang ) +{ + LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveLatin12KeyTranslator::\ +LogsPredictiveLatin12KeyTranslator()" ) + createSpecialMapping(); + + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveLatin12KeyTranslator::\ +LogsPredictiveLatin12KeyTranslator()" ) +} + +// ----------------------------------------------------------------------------- +// LogsPredictiveLatin12KeyTranslator::createSpecialMapping() +// ----------------------------------------------------------------------------- +// +void LogsPredictiveLatin12KeyTranslator::createSpecialMapping() +{ int index = 0; int arraySize = SpecialsCount * 2; while( index < arraySize ) { @@ -52,11 +77,8 @@ mSpecialKeyMap[ character ] = keycode; } - LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveLatin12KeyTranslator::\ -LogsPredictiveLatin12KeyTranslator()" ) } - // ----------------------------------------------------------------------------- // LogsPredictiveLatin12KeyTranslator::~LogsPredictiveLatin12KeyTranslator() // ----------------------------------------------------------------------------- @@ -76,17 +98,20 @@ // ----------------------------------------------------------------------------- // const QChar LogsPredictiveLatin12KeyTranslator::translateChar( - const QChar character ) const + const QChar character, + bool& ok ) const { + ok = true; QChar keycode = mSpecialKeyMap[ character ]; if ( keycode.isNull() ) { keycode = LogsPredictive12KeyTranslator::translateChar( character ); if ( keycode.isNull() ) { QString decomposed = character.decomposition(); if (decomposed.isEmpty()) { + ok = false; return keycode; } - return translateChar (decomposed.at(0)); + return translateChar (decomposed.at(0), ok); } } return keycode; @@ -103,4 +128,9 @@ { return name.split( SpaceSepar, QString::SkipEmptyParts ); } - + + + + + + diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/src/logspredictivethai12keytranslator.cpp --- a/logsui/logscntfinder/src/logspredictivethai12keytranslator.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/src/logspredictivethai12keytranslator.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -19,6 +19,7 @@ #include #include #include +#include #include "logspredictivethai12keytranslator.h" #include "logslogger.h" @@ -27,26 +28,35 @@ const int IgnoreCount = 2; + + // ----------------------------------------------------------------------------- // LogsPredictiveThai12KeyTranslator::LogsPredictiveThai12KeyTranslator() // ----------------------------------------------------------------------------- // LogsPredictiveThai12KeyTranslator::LogsPredictiveThai12KeyTranslator() - : LogsPredictive12KeyTranslator() + : LogsPredictive12KeyTranslator( QLocale::Thai ) { LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveThai12KeyTranslator::\ LogsPredictiveThai12KeyTranslator()" ) - HbInputLanguage lang = - HbInputSettingProxy::instance()->globalInputLanguage(); - ASSERT( lang.language() == QLocale::Thai ); - mKeyMap = HbKeymapFactory::instance()->keymap( lang.language(), - lang.variant() ); - - LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveThai12KeyTranslator::\ LogsPredictiveThai12KeyTranslator()" ) } +// ----------------------------------------------------------------------------- +// LogsPredictiveThai12KeyTranslator::LogsPredictiveThai12KeyTranslator() +// ----------------------------------------------------------------------------- +// +LogsPredictiveThai12KeyTranslator::LogsPredictiveThai12KeyTranslator( + const HbInputLanguage& lang ) + : LogsPredictive12KeyTranslator( lang ) +{ + LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveThai12KeyTranslator::\ +LogsPredictiveThai12KeyTranslator()" ) + ASSERT( lang.language() == QLocale::Thai ); + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveThai12KeyTranslator::\ +LogsPredictiveThai12KeyTranslator()" ) +} // ----------------------------------------------------------------------------- // LogsPredictiveThai12KeyTranslator::~LogsPredictiveThai12KeyTranslator() @@ -66,11 +76,14 @@ // ----------------------------------------------------------------------------- // const QChar LogsPredictiveThai12KeyTranslator::translateChar( - const QChar character ) const + const QChar character, + bool& ok ) const { + ok = true; QChar keycode; if ( !isIgnored( character ) ) { keycode = LogsPredictive12KeyTranslator::translateChar( character ); + ok = !keycode.isNull(); keycode = !keycode.isNull() && !isIgnored( keycode ) ? keycode : QChar(); } @@ -102,8 +115,3 @@ } return found; } - - - - - diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/src/logspredictivetranslator.cpp --- a/logsui/logscntfinder/src/logspredictivetranslator.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/src/logspredictivetranslator.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -17,8 +17,10 @@ #include #include #include +#include #include #include +#include #include "logspredictivetranslator.h" #include "logspredictivelatin12keytranslator.h" @@ -34,18 +36,24 @@ // LogsPredictiveTranslator* LogsPredictiveTranslator::instance() { + LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::\ +instance()" ) if ( !mInstance ) { HbInputLanguage lang = HbInputSettingProxy::instance()->globalInputLanguage(); + LOGS_QDEBUG_2( "logs [FINDER] Input lang is %d", + lang.language() ) switch( lang.language() ) { case QLocale::Thai: - mInstance = new LogsPredictiveThai12KeyTranslator(); + mInstance = new LogsPredictiveThai12KeyTranslator( lang ); break; default: - mInstance = new LogsPredictiveLatin12KeyTranslator(); + mInstance = new LogsPredictiveLatin12KeyTranslator( lang ); break; } } + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\ +instance()" ) return mInstance; } @@ -64,10 +72,16 @@ // LogsPredictiveTranslator::LogsPredictiveTranslator() // ----------------------------------------------------------------------------- // -LogsPredictiveTranslator::LogsPredictiveTranslator() +LogsPredictiveTranslator::LogsPredictiveTranslator( const HbInputLanguage& lang ) + : mNameTranslator(0) + { LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::\ LogsPredictiveTranslator()" ) + + mKeyMap = HbKeymapFactory::instance()->keymap( lang.language(), + lang.variant() ); + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\ LogsPredictiveTranslator()" ) } @@ -83,62 +97,130 @@ ~LogsPredictiveTranslator()" ) mInstance = 0; mKeyMap = 0; + delete mNameTranslator; + mNameTranslator = 0; LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\ ~LogsPredictiveTranslator()" ) } // ----------------------------------------------------------------------------- +// LogsPredictiveTranslator::translateText() +// ----------------------------------------------------------------------------- +// +const QString LogsPredictiveTranslator::translateText( + const QString& text ) +{ + LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::translateText()" ) + LOGS_QDEBUG_2( "logs [FINDER] text ", text ); + + bool ok; + + QString result = translate( text, &ok ); + if ( !ok ) { + LOGS_QDEBUG( "logs [FINDER] Text is not in input language" ) + result = nameTranslator( text ).translate( text ); + } + + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::translateText()" ) + return result; +} + +// ----------------------------------------------------------------------------- +// LogsPredictiveTranslator::nameTranslator() +// ----------------------------------------------------------------------------- +// +const LogsPredictiveTranslator& LogsPredictiveTranslator::nameTranslator( + const QString& name ) +{ + LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::nameTranslator()" ) + + const LogsPredictiveTranslator* nameTranslator = this; + if ( mNameTranslator && mNameTranslator->encodes( name ) ) { + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\ +nameTranslator() - use current" ) + nameTranslator = mNameTranslator; + } else { + delete mNameTranslator; + mNameTranslator = new LogsPredictiveLatin12KeyTranslator(); + if( mNameTranslator->encodes( name ) ) { + nameTranslator = mNameTranslator; + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\ +nameTranslator() - use latin" ) + return *nameTranslator; + } + delete mNameTranslator; + mNameTranslator = new LogsPredictiveThai12KeyTranslator(); + if( mNameTranslator->encodes( name ) ) { + nameTranslator = mNameTranslator; + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\ +nameTranslator() - use thai" ) + return *nameTranslator; + } + delete mNameTranslator; + mNameTranslator = 0; + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\ +nameTranslator() - use global input language" ) + + } + + + return *nameTranslator; + +} + +// ----------------------------------------------------------------------------- +// LogsPredictiveTranslator::encodes() +// ----------------------------------------------------------------------------- +// +bool LogsPredictiveTranslator::encodes( const QString& sniplet ) +{ + bool ok; + translate( sniplet, &ok ); + return ok; +} + +// ----------------------------------------------------------------------------- +// LogsPredictiveTranslator::translatePattern() +// ----------------------------------------------------------------------------- +// +const QString LogsPredictiveTranslator::translatePattern( + const QString& pattern ) const +{ + LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::translatePattern()" ) + QString result = translate( pattern ); + + LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::translatePattern()" ) + return result; +} + +// ----------------------------------------------------------------------------- // LogsPredictiveTranslator::translate() // ----------------------------------------------------------------------------- // -const QString LogsPredictiveTranslator::translate( const QString& name, - int count ) const +const QString LogsPredictiveTranslator::translate( const QString& text, + bool* ok, int count ) const { LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::translate()" ) - LOGS_QDEBUG_2( "logs [FINDER] name ", name ); + LOGS_QDEBUG_2( "logs [FINDER] text ", text ); - count = count == -1 ? name.length() : count; + count = count == -1 ? text.length() : count; + bool isok = ok ? *ok : true; QString result; - const QChar* content = name.data(); + const QChar* content = text.data(); int index = 0; - while( index < count ) { - QChar ch = translateChar( *content++ ); + while( index < count && isok ) { + QChar ch = translateChar( *content++, isok ); if ( !ch.isNull() ) { result.append( ch ); } index++; } + if ( ok ) { + *ok = isok; + } LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::translate()" ) return result; } -// ----------------------------------------------------------------------------- -// LogsPredictiveTranslator::startsWith() -// ----------------------------------------------------------------------------- -// -int LogsPredictiveTranslator::startsWith( const QString& text, - const QString& pattern, - bool optimize ) const -{ - LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::startsWith()" ) - //assumed that text has found based on pattern, thus only checking with - //first char is enough, if mightContainZeroes eq false - int matchCount = pattern.length(); - if ( text.isEmpty() || matchCount > text.length() ) { - matchCount = 0; - } else { - if ( !optimize ) { - QString translatedText = translate( text, pattern.length() ); - matchCount = translatedText == pattern ? matchCount : 0; - } else { - matchCount = translateChar( *text.data() ) == *pattern.data() ? - matchCount : 0; - } - } - - LOGS_QDEBUG_2( "logs [FINDER] matchCount=", matchCount ) - LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::startsWith()" ) - return matchCount; -} diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinder.h --- a/logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinder.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinder.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 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 Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro --- a/logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 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 Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h --- a/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h Wed Jun 23 17:21:36 2010 +0100 @@ -19,13 +19,14 @@ #include #include +#include QTM_USE_NAMESPACE class LogsCntFinder; -class st_LogsCntFinder : public QObject +class ST_LogsCntFinder : public QObject { Q_OBJECT @@ -47,12 +48,33 @@ void cleanup(); private slots: //test methods - void testPredictiveSearchQuery(); - void testKeymap(); - void testPredictiveSearchQueryZero(); + + 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: diff -r 7a485daed50d -r 38e85eb54906 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 Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 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 Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 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 Wed Jun 23 17:21:36 2010 +0100 @@ -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 +#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,15 +69,18 @@ } } -void st_LogsCntFinder::cleanup() +void ST_LogsCntFinder::cleanup() { delete m_manager; m_manager = 0; delete m_finder; m_finder = 0; + HbInputLanguage eng( QLocale::English ); + HbInputSettingProxy::instance()->setGlobalInputLanguage( eng ); + } -void st_LogsCntFinder::createContacts() +void ST_LogsCntFinder::createContacts() { /*Create contacts in Contacts DB for keymap testing Stefann Yadira @@ -92,16 +110,37 @@ createOneContact( QString("Tisha"), QString("Iatzkovits"), QString("932472398") ); createOneContact( QString("Wilda"), QString("Lazar"), QString("932472398") ); createOneContact( QString("Una Vivi"), QString("Kantsak"), QString("932472398") ); + int contactsCount = m_manager->contactIds().count(); QCOMPARE(contactsCount, 13); - qDebug() << "st_LogsCntFinder::createContacts_testKeymap. created " << contactsCount << " contacts"; } +/* +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() +{ + 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") ); -void st_LogsCntFinder::createHistoryEvents() + int contactsCount = m_manager->contactIds().count(); + QCOMPARE(contactsCount, 18); +} + + + +void ST_LogsCntFinder::createHistoryEvents() { createLogEvent( QString("Stefann Albert"), QString("Fedrernn"), QString("932472398") ); createLogEvent( QString("Jonn"), QString("Lennon"), QString("932472398") ); @@ -109,7 +148,7 @@ } -void st_LogsCntFinder::createLogEvent(QString firstname, QString lastname, +void ST_LogsCntFinder::createLogEvent(QString firstname, QString lastname, QString phnumber) { LogsCntEntryHandle* dummy = 0; @@ -124,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 @@ -145,7 +196,7 @@ phonecontact.saveDetail(&number); m_manager->saveContact(&phonecontact); - qDebug() << "st_LogsCntFinder::createOneContact done"; + qDebug() << "ST_LogsCntFinder::createOneContact done"; } @@ -154,90 +205,6 @@ // Tests // -// 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; @@ -249,111 +216,437 @@ 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; 4-5. multi-zeros between "1-9" numbers, only the first works as "AND" statement; 6. Query limit is 15, the 16th is ignored, and first 0 works as "AND" statement */ -void st_LogsCntFinder::testPredictiveSearchQueryZero() + +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() { createContactsForQueryZero(); m_finder->predictiveSearchQuery( QString("56603") ); QCOMPARE( m_finder->resultsCount(), 1 ); - - m_finder->predictiveSearchQuery( QString("00202") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - - m_finder->predictiveSearchQuery( QString("02010") ); - QCOMPARE( m_finder->resultsCount(), 2 ); - +} + +void ST_LogsCntFinder::testPredictiveSearchQueryMultiZerosMiddle() +{ + createContactsForQueryZero(); + m_finder->predictiveSearchQuery( QString("2003") ); QCOMPARE( m_finder->resultsCount(), 2 ); - - m_finder->predictiveSearchQuery( QString("200904") ); +} + +void ST_LogsCntFinder::testPredictiveSearchQueryZeroMiddleLong() +{ + createContactsForQueryZero(); + + m_finder->predictiveSearchQuery( QString("2272645837883065") ); QCOMPARE( m_finder->resultsCount(), 1 ); - - m_finder->predictiveSearchQuery( QString("2272645837883065") ); +} + +void ST_LogsCntFinder::testPredictiveSearchQueryMultiZerosAndZeroMiddle() +{ + createContactsForQueryZero(); + + m_finder->predictiveSearchQuery( QString("200904") ); QCOMPARE( m_finder->resultsCount(), 1 ); } -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("78945617") ); - createOneContact( QString("Paula 02010"), QString("Ezerty Adam"), QString("78945617") ); - createOneContact( QString("Ced"), QString("Y,g"), QString("78945617") ); - createOneContact( QString("Jari-Pekka"), QString("Baraniktestteste"), 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(); @@ -386,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(); @@ -507,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 7a485daed50d -r 38e85eb54906 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 Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro --- a/logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro Wed Jun 23 17:21:36 2010 +0100 @@ -20,16 +20,15 @@ QT += testlib xml CONFIG += qtestlib +CONFIG += hb +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 @@ -37,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 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp --- a/logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -155,11 +155,9 @@ QList QContactManager::contactIds( - const QContactFilter& filter, + const QContactFilter& /*filter*/, const QList& /*sortOrders*/) const { - const QContactDetailFilter& df = - static_cast( filter ); QList list; ContactQueryResults* resultSet = ContactQueryResults::instance(); @@ -174,7 +172,7 @@ QContact QContactManager::contact( const QContactLocalId& contactId, - const QStringList& definitionRestrictions ) const + const QStringList& /*definitionRestrictions*/ ) const { QContact contact; QContactId id; @@ -232,9 +230,9 @@ } -QContact& QContact::operator=(const QContact& other) +QContact& QContact::operator=(const QContact& /*other*/) { - + return *this; } QContactDetail QContact::detail(const QString& definitionId) const @@ -244,8 +242,8 @@ if ( definitionId == QContactName::DefinitionName ){ QContactName name; QContactLocalId id = localId(); - name.setValue(QContactName::FieldFirst, results->firstNameAt( (int) id-1 ) ); - name.setValue(QContactName::FieldLast, results->lastNameAt( (int) id-1 ) ); + name.setValue(QContactName::FieldFirstName, results->firstNameAt( (int) id-1 ) ); + name.setValue(QContactName::FieldLastName, results->lastNameAt( (int) id-1 ) ); return name; } if ( definitionId == QContactPhoneNumber::DefinitionName ){ @@ -256,10 +254,7 @@ } if ( definitionId == QContactAvatar::DefinitionName){ QContactAvatar avatar; - avatar.setSubType(QContactAvatar::SubTypeImage); - avatar.setAvatar("c:\\data\\images\\logstest1.jpg"); - QString a( "Avatar" ); - avatar.setValue( QContactAvatar::FieldAvatar, a ); + avatar.setValue(QContactAvatar::FieldImageUrl, "c:\\data\\images\\logstest1.jpg" ); return avatar; } QContactDetail detail; @@ -275,19 +270,21 @@ { } -QContactDetail::QContactDetail(const QString& definitionName) : d(new QContactDetailPrivate) + +QContactDetail::QContactDetail(const QString& /*definitionName*/) : d(new QContactDetailPrivate) { } + QContactDetail::~QContactDetail() { } -QContactDetail& QContactDetail::operator=(const QContactDetail& other) +QContactDetail& QContactDetail::operator=(const QContactDetail& /*other*/) { - + return *this; } QString QContactDetail::definitionName() const diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logscntentry.h --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logscntentry.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logscntentry.h Wed Jun 23 17:21:36 2010 +0100 @@ -54,6 +54,8 @@ void testSetHighlights_latin12k(); void testRichText_latin12k(); void testMatch_latin12k(); + void testStartsWith_latin12k(); + //with thai 12 keys void testMatch_thai12k(); void testSetHighlights_thai12k(); diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivelatin12keytranslator.h --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivelatin12keytranslator.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivelatin12keytranslator.h Wed Jun 23 17:21:36 2010 +0100 @@ -45,8 +45,10 @@ private slots: //test methods void testConstructor(); - void testTranslate(); + void testTranslateText(); + void testTranslatePattern(); void testTranslateChar(); + void testEncodes(); private: diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivethai12keytranslator.h --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivethai12keytranslator.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivethai12keytranslator.h Wed Jun 23 17:21:36 2010 +0100 @@ -46,12 +46,13 @@ private slots: //test methods void testConstructor(); - void testTranslate(); + void testTranslateText(); + void testTranslatePattern(); void testTranslateChar(); + void testEncodes(); private: - HbInputLanguage mOrigLang; LogsPredictiveThai12KeyTranslator* mTranslator; }; diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivetranslator.h --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivetranslator.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivetranslator.h Wed Jun 23 17:21:36 2010 +0100 @@ -47,7 +47,9 @@ void testConstructor(); void testTranslate(); - void testStartsWith(); + void testTranslatePattern(); + void testTranslateText(); + void testNameTranslator(); private: diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntentry.cpp --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntentry.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntentry.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -23,7 +23,7 @@ #include #define PATTERN( pattern )\ - LogsPredictiveTranslator::instance()->translate( QString( pattern ) ) + LogsPredictiveTranslator::instance()->translatePattern( QString( pattern ) ) void UT_LogsCntEntry::initTestCase() @@ -625,7 +625,7 @@ mEntry->setFirstName( QString("Alice 028") ); mEntry->setLastName( QString( "Ming" ) ); QVERIFY( mEntry->match( PATTERN( "02806" ) ) ); - QVERIFY( !mEntry->match( PATTERN( "0280" ) ) );//not supported + QVERIFY( mEntry->match( PATTERN( "0280" ) ) );//not supported mEntry->mType = LogsCntEntry::EntryTypeContact; QVERIFY( !mEntry->match( PATTERN( "+202" ) ) ); @@ -636,6 +636,24 @@ } +void UT_LogsCntEntry::testStartsWith_latin12k() +{ + //just using numbers as name + mEntry->setFirstName( QString( "" ) ); + QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("") ), 0 ); + QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("123") ), 0 ); + + mEntry->setFirstName( QString( "123" ) ); + QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("") ), 0 ); + QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("1234") ), 0 ); + QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("1") ), 1 ); + QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("123") ), 3 ); + QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("12"), true ), 2 ); + QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("12"), false ), 2 ); + +} + + void UT_LogsCntEntry::testMatch_thai12k() { @@ -689,3 +707,4 @@ } + diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntfinder.cpp --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntfinder.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntfinder.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -72,7 +72,6 @@ QSignalSpy queryReadySpy(mFinder, SIGNAL(queryReady() ) ); QSignalSpy resultsAddedSpy(mCntResults, SIGNAL(resultsAdded() ) ); - int resultsCount = 0; LogsCntEntryHandle* handle1 = (LogsCntEntryHandle*)1; LogsCntEntryHandle* handle2 = (LogsCntEntryHandle*)2; LogsCntEntryHandle* handle3 = (LogsCntEntryHandle*)3; diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictive12keytranslator.cpp --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictive12keytranslator.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictive12keytranslator.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -28,14 +28,18 @@ public: inline LogsPredictive12KeyTranslator_mock() - :LogsPredictive12KeyTranslator() - { mKeyMap = - HbKeymapFactory::instance()->keymap( QLocale::English, - QLocale::AnyCountry ); + :LogsPredictive12KeyTranslator( QLocale::English ) + { } inline QStringList nameTokens( const QString& /*name*/ ) const {return QStringList();} + inline const QChar translateChar( const QChar /*character*/, bool& /*ok*/ ) const + {return QChar();} + inline bool encodes( const QString& /*sniplet*/ ) + {return true;} + inline int mib() const {return 0;} + }; diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivelatin12keytranslator.cpp --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivelatin12keytranslator.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivelatin12keytranslator.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -17,6 +17,7 @@ #include "ut_logspredictivelatin12keytranslator.h" #include "logspredictivelatin12keytranslator.h" +#include #include #include @@ -32,7 +33,8 @@ void UT_LogsPredictiveLatin12KeyTranslator::init() { - mTranslator = new LogsPredictiveLatin12KeyTranslator(); + mTranslator = new LogsPredictiveLatin12KeyTranslator( + HbInputSettingProxy::instance()->globalInputLanguage() ); } void UT_LogsPredictiveLatin12KeyTranslator::cleanup() @@ -48,139 +50,164 @@ } -void UT_LogsPredictiveLatin12KeyTranslator::testTranslate() +void UT_LogsPredictiveLatin12KeyTranslator::testTranslateText() { - QVERIFY( mTranslator->translate( QString( "Nokia" ) ) == QString( "66542" ) ); - QVERIFY( mTranslator->translate( QString( "Aarne" ) ) == QString( "22763" ) ); - QVERIFY( mTranslator->translate( QString( "Bertta" ) ) == QString( "237882" ) ); - QVERIFY( mTranslator->translate( QString( "Celsius" ) ) == QString( "2357487" ) ); - QVERIFY( mTranslator->translate( QString( "Daavid" ) ) == QString( "322843" ) ); - QVERIFY( mTranslator->translate( QString( "Eemeli" ) ) == QString( "336354" ) ); - QVERIFY( mTranslator->translate( QString( "Faarao" ) ) == QString( "322726" ) ); - QVERIFY( mTranslator->translate( QString( "Gideon" ) ) == QString( "443366" ) ); - QVERIFY( mTranslator->translate( QString( "Heikki" ) ) == QString( "434554" ) ); - QVERIFY( mTranslator->translate( QString( "Iivari" ) ) == QString( "448274" ) ); - QVERIFY( mTranslator->translate( QString( "Jussi" ) ) == QString( "58774" ) ); - QVERIFY( mTranslator->translate( QString( "Kalle" ) ) == QString( "52553" ) ); - QVERIFY( mTranslator->translate( QString( "Lauri" ) ) == QString( "52874" ) ); - QVERIFY( mTranslator->translate( QString( "Matti" ) ) == QString( "62884" ) ); - QVERIFY( mTranslator->translate( QString( "Niilo" ) ) == QString( "64456" ) ); - QVERIFY( mTranslator->translate( QString( "Otto" ) ) == QString( "6886" ) ); - QVERIFY( mTranslator->translate( QString( "Paavo" ) ) == QString( "72286" ) ); - QVERIFY( mTranslator->translate( QString( "Kuu" ) ) == QString( "588" ) ); - QVERIFY( mTranslator->translate( QString( "Risto" ) ) == QString( "74786" ) ); - QVERIFY( mTranslator->translate( QString( "Sakari" ) ) == QString( "725274" ) ); - QVERIFY( mTranslator->translate( QString( "Tyyne" ) ) == QString( "89963" ) ); - QVERIFY( mTranslator->translate( QString( "Urho" ) ) == QString( "8746" ) ); - QVERIFY( mTranslator->translate( QString( "Vihtori" ) ) == QString( "8448674" ) ); - QVERIFY( mTranslator->translate( QString( "Wiski" ) ) == QString( "94754" ) ); - QVERIFY( mTranslator->translate( QString( "Yrjö" ) ) == QString( "9756" ) ); - QVERIFY( mTranslator->translate( QString( "Tseta" ) ) == QString( "87382" ) ); - QVERIFY( mTranslator->translate( QString( "Åke" ) ) == QString( "253" ) ); - QVERIFY( mTranslator->translate( QString( "Äiti" ) ) == QString( "2484" ) ); - QVERIFY( mTranslator->translate( QString( "Öljy" ) ) == QString( "6559" ) ); - QVERIFY( mTranslator->translate( QString( "Adam" ) ) == QString( "2326" ) ); - QVERIFY( mTranslator->translate( QString( "Bertil" ) ) == QString( "237845" ) ); - QVERIFY( mTranslator->translate( QString( "Cesar" ) ) == QString( "23727" ) ); - QVERIFY( mTranslator->translate( QString( "David" ) ) == QString( "32843" ) ); - QVERIFY( mTranslator->translate( QString( "Erik" ) ) == QString( "3745" ) ); - QVERIFY( mTranslator->translate( QString( "Filip" ) ) == QString( "34547" ) ); - QVERIFY( mTranslator->translate( QString( "Gustav" ) ) == QString( "487828" ) ); - QVERIFY( mTranslator->translate( QString( "Helge" ) ) == QString( "43543" ) ); - QVERIFY( mTranslator->translate( QString( "Ivar" ) ) == QString( "4827" ) ); - QVERIFY( mTranslator->translate( QString( "Johan" ) ) == QString( "56426" ) ); - QVERIFY( mTranslator->translate( QString( "Kalle" ) ) == QString( "52553" ) ); - QVERIFY( mTranslator->translate( QString( "Ludvig" ) ) == QString( "583844" ) ); - QVERIFY( mTranslator->translate( QString( "Martin" ) ) == QString( "627846" ) ); - QVERIFY( mTranslator->translate( QString( "Niklas" ) ) == QString( "645527" ) ); - QVERIFY( mTranslator->translate( QString( "Olof" ) ) == QString( "6563" ) ); - QVERIFY( mTranslator->translate( QString( "Petter" ) ) == QString( "738837" ) ); - QVERIFY( mTranslator->translate( QString( "Quintus" ) ) == QString( "7846887" ) ); - QVERIFY( mTranslator->translate( QString( "Rudolf" ) ) == QString( "783653" ) ); - QVERIFY( mTranslator->translate( QString( "Sigurd" ) ) == QString( "744873" ) ); - QVERIFY( mTranslator->translate( QString( "Tore" ) ) == QString( "8673" ) ); - QVERIFY( mTranslator->translate( QString( "Urban" ) ) == QString( "87226" ) ); - QVERIFY( mTranslator->translate( QString( "Viktor" ) ) == QString( "845867" ) ); - QVERIFY( mTranslator->translate( QString( "Wilhelm" ) ) == QString( "9454356" ) ); - QVERIFY( mTranslator->translate( QString( "Xerxes" ) ) == QString( "937937" ) ); - QVERIFY( mTranslator->translate( QString( "Yngve" ) ) == QString( "96483" ) ); - QVERIFY( mTranslator->translate( QString( "Zäta" ) ) == QString( "9282" ) ); - QVERIFY( mTranslator->translate( QString( "Ärlig" ) ) == QString( "27544" ) ); - QVERIFY( mTranslator->translate( QString( "Östen" ) ) == QString( "67836" ) ); - QVERIFY( mTranslator->translate( QString( "Alpha" ) ) == QString( "25742" ) ); - QVERIFY( mTranslator->translate( QString( "Bravo" ) ) == QString( "27286" ) ); - QVERIFY( mTranslator->translate( QString( "Charlie" ) ) == QString( "2427543" ) ); - QVERIFY( mTranslator->translate( QString( "Delta" ) ) == QString( "33582" ) ); - QVERIFY( mTranslator->translate( QString( "Echo" ) ) == QString( "3246" ) ); - QVERIFY( mTranslator->translate( QString( "Foxtrot" ) ) == QString( "3698768" ) ); - QVERIFY( mTranslator->translate( QString( "Golf" ) ) == QString( "4653" ) ); - QVERIFY( mTranslator->translate( QString( "Hotel" ) ) == QString( "46835" ) ); - QVERIFY( mTranslator->translate( QString( "India" ) ) == QString( "46342" ) ); - QVERIFY( mTranslator->translate( QString( "Juliet" ) ) == QString( "585438" ) ); - QVERIFY( mTranslator->translate( QString( "Kilo" ) ) == QString( "5456" ) ); - QVERIFY( mTranslator->translate( QString( "Lima" ) ) == QString( "5462" ) ); - QVERIFY( mTranslator->translate( QString( "Mike" ) ) == QString( "6453" ) ); - QVERIFY( mTranslator->translate( QString( "November" ) ) == QString( "66836237" ) ); - QVERIFY( mTranslator->translate( QString( "Oscar" ) ) == QString( "67227" ) ); - QVERIFY( mTranslator->translate( QString( "Papa" ) ) == QString( "7272" ) ); - QVERIFY( mTranslator->translate( QString( "Quebec" ) ) == QString( "783232" ) ); - QVERIFY( mTranslator->translate( QString( "Romeo" ) ) == QString( "76636" ) ); - QVERIFY( mTranslator->translate( QString( "Sierra" ) ) == QString( "743772" ) ); - QVERIFY( mTranslator->translate( QString( "Tanga" ) ) == QString( "82642" ) ); - QVERIFY( mTranslator->translate( QString( "Uniform" ) ) == QString( "8643676" ) ); - QVERIFY( mTranslator->translate( QString( "Vârlan" ) ) == QString( "827526" ) ); - QVERIFY( mTranslator->translate( QString( "Victor" ) ) == QString( "842867" ) ); - QVERIFY( mTranslator->translate( QString( "Whiskey" ) ) == QString( "9447539" ) ); - QVERIFY( mTranslator->translate( QString( "Xray" ) ) == QString( "9729" ) ); - QVERIFY( mTranslator->translate( QString( "Yankee" ) ) == QString( "926533" ) ); - QVERIFY( mTranslator->translate( QString( "Zulu" ) ) == QString( "9858" ) ); - QVERIFY( mTranslator->translate( QString( "1234567890" ) ) == QString( "1234567890" ) ); - QCOMPARE( mTranslator->translate( QString( "+1234567890" ) ) ,QString( "*1234567890" ) ); - QCOMPARE( mTranslator->translate( QString( "*1234567890" ) ) ,QString( "*1234567890" ) ); - QCOMPARE( mTranslator->translate( QString( "#1234567890" ) ), QString( "#1234567890" ) ); - QCOMPARE( mTranslator->translate( QString( "++##" ) ), QString( "**##" ) ); - QCOMPARE( mTranslator->translate( QString( "-+##" ) ), QString( "1*##" ) ); - QCOMPARE( mTranslator->translate( QString( "/+##" ) ), QString( "1*##" ) ); - QCOMPARE( mTranslator->translate( QString( "*+##" ) ), QString( "**##" ) ); + QVERIFY( mTranslator->translateText( QString( "Nokia" ) ) == QString( "66542" ) ); + QVERIFY( mTranslator->translateText( QString( "Aarne" ) ) == QString( "22763" ) ); + QVERIFY( mTranslator->translateText( QString( "Bertta" ) ) == QString( "237882" ) ); + QVERIFY( mTranslator->translateText( QString( "Celsius" ) ) == QString( "2357487" ) ); + QVERIFY( mTranslator->translateText( QString( "Daavid" ) ) == QString( "322843" ) ); + QVERIFY( mTranslator->translateText( QString( "Eemeli" ) ) == QString( "336354" ) ); + QVERIFY( mTranslator->translateText( QString( "Faarao" ) ) == QString( "322726" ) ); + QVERIFY( mTranslator->translateText( QString( "Gideon" ) ) == QString( "443366" ) ); + QVERIFY( mTranslator->translateText( QString( "Heikki" ) ) == QString( "434554" ) ); + QVERIFY( mTranslator->translateText( QString( "Iivari" ) ) == QString( "448274" ) ); + QVERIFY( mTranslator->translateText( QString( "Jussi" ) ) == QString( "58774" ) ); + QVERIFY( mTranslator->translateText( QString( "Kalle" ) ) == QString( "52553" ) ); + QVERIFY( mTranslator->translateText( QString( "Lauri" ) ) == QString( "52874" ) ); + QVERIFY( mTranslator->translateText( QString( "Matti" ) ) == QString( "62884" ) ); + QVERIFY( mTranslator->translateText( QString( "Niilo" ) ) == QString( "64456" ) ); + QVERIFY( mTranslator->translateText( QString( "Otto" ) ) == QString( "6886" ) ); + QVERIFY( mTranslator->translateText( QString( "Paavo" ) ) == QString( "72286" ) ); + QVERIFY( mTranslator->translateText( QString( "Kuu" ) ) == QString( "588" ) ); + QVERIFY( mTranslator->translateText( QString( "Risto" ) ) == QString( "74786" ) ); + QVERIFY( mTranslator->translateText( QString( "Sakari" ) ) == QString( "725274" ) ); + QVERIFY( mTranslator->translateText( QString( "Tyyne" ) ) == QString( "89963" ) ); + QVERIFY( mTranslator->translateText( QString( "Urho" ) ) == QString( "8746" ) ); + QVERIFY( mTranslator->translateText( QString( "Vihtori" ) ) == QString( "8448674" ) ); + QVERIFY( mTranslator->translateText( QString( "Wiski" ) ) == QString( "94754" ) ); + QVERIFY( mTranslator->translateText( QString( "Yrjö" ) ) == QString( "9756" ) ); + QVERIFY( mTranslator->translateText( QString( "Tseta" ) ) == QString( "87382" ) ); + QVERIFY( mTranslator->translateText( QString( "Åke" ) ) == QString( "253" ) ); + QVERIFY( mTranslator->translateText( QString( "Äiti" ) ) == QString( "2484" ) ); + QVERIFY( mTranslator->translateText( QString( "Öljy" ) ) == QString( "6559" ) ); + QVERIFY( mTranslator->translateText( QString( "Adam" ) ) == QString( "2326" ) ); + QVERIFY( mTranslator->translateText( QString( "Bertil" ) ) == QString( "237845" ) ); + QVERIFY( mTranslator->translateText( QString( "Cesar" ) ) == QString( "23727" ) ); + QVERIFY( mTranslator->translateText( QString( "David" ) ) == QString( "32843" ) ); + QVERIFY( mTranslator->translateText( QString( "Erik" ) ) == QString( "3745" ) ); + QVERIFY( mTranslator->translateText( QString( "Filip" ) ) == QString( "34547" ) ); + QVERIFY( mTranslator->translateText( QString( "Gustav" ) ) == QString( "487828" ) ); + QVERIFY( mTranslator->translateText( QString( "Helge" ) ) == QString( "43543" ) ); + QVERIFY( mTranslator->translateText( QString( "Ivar" ) ) == QString( "4827" ) ); + QVERIFY( mTranslator->translateText( QString( "Johan" ) ) == QString( "56426" ) ); + QVERIFY( mTranslator->translateText( QString( "Kalle" ) ) == QString( "52553" ) ); + QVERIFY( mTranslator->translateText( QString( "Ludvig" ) ) == QString( "583844" ) ); + QVERIFY( mTranslator->translateText( QString( "Martin" ) ) == QString( "627846" ) ); + QVERIFY( mTranslator->translateText( QString( "Niklas" ) ) == QString( "645527" ) ); + QVERIFY( mTranslator->translateText( QString( "Olof" ) ) == QString( "6563" ) ); + QVERIFY( mTranslator->translateText( QString( "Petter" ) ) == QString( "738837" ) ); + QVERIFY( mTranslator->translateText( QString( "Quintus" ) ) == QString( "7846887" ) ); + QVERIFY( mTranslator->translateText( QString( "Rudolf" ) ) == QString( "783653" ) ); + QVERIFY( mTranslator->translateText( QString( "Sigurd" ) ) == QString( "744873" ) ); + QVERIFY( mTranslator->translateText( QString( "Tore" ) ) == QString( "8673" ) ); + QVERIFY( mTranslator->translateText( QString( "Urban" ) ) == QString( "87226" ) ); + QVERIFY( mTranslator->translateText( QString( "Viktor" ) ) == QString( "845867" ) ); + QVERIFY( mTranslator->translateText( QString( "Wilhelm" ) ) == QString( "9454356" ) ); + QVERIFY( mTranslator->translateText( QString( "Xerxes" ) ) == QString( "937937" ) ); + QVERIFY( mTranslator->translateText( QString( "Yngve" ) ) == QString( "96483" ) ); + QVERIFY( mTranslator->translateText( QString( "Zäta" ) ) == QString( "9282" ) ); + QVERIFY( mTranslator->translateText( QString( "Ärlig" ) ) == QString( "27544" ) ); + QVERIFY( mTranslator->translateText( QString( "Östen" ) ) == QString( "67836" ) ); + QVERIFY( mTranslator->translateText( QString( "Alpha" ) ) == QString( "25742" ) ); + QVERIFY( mTranslator->translateText( QString( "Bravo" ) ) == QString( "27286" ) ); + QVERIFY( mTranslator->translateText( QString( "Charlie" ) ) == QString( "2427543" ) ); + QVERIFY( mTranslator->translateText( QString( "Delta" ) ) == QString( "33582" ) ); + QVERIFY( mTranslator->translateText( QString( "Echo" ) ) == QString( "3246" ) ); + QVERIFY( mTranslator->translateText( QString( "Foxtrot" ) ) == QString( "3698768" ) ); + QVERIFY( mTranslator->translateText( QString( "Golf" ) ) == QString( "4653" ) ); + QVERIFY( mTranslator->translateText( QString( "Hotel" ) ) == QString( "46835" ) ); + QVERIFY( mTranslator->translateText( QString( "India" ) ) == QString( "46342" ) ); + QVERIFY( mTranslator->translateText( QString( "Juliet" ) ) == QString( "585438" ) ); + QVERIFY( mTranslator->translateText( QString( "Kilo" ) ) == QString( "5456" ) ); + QVERIFY( mTranslator->translateText( QString( "Lima" ) ) == QString( "5462" ) ); + QVERIFY( mTranslator->translateText( QString( "Mike" ) ) == QString( "6453" ) ); + QVERIFY( mTranslator->translateText( QString( "November" ) ) == QString( "66836237" ) ); + QVERIFY( mTranslator->translateText( QString( "Oscar" ) ) == QString( "67227" ) ); + QVERIFY( mTranslator->translateText( QString( "Papa" ) ) == QString( "7272" ) ); + QVERIFY( mTranslator->translateText( QString( "Quebec" ) ) == QString( "783232" ) ); + QVERIFY( mTranslator->translateText( QString( "Romeo" ) ) == QString( "76636" ) ); + QVERIFY( mTranslator->translateText( QString( "Sierra" ) ) == QString( "743772" ) ); + QVERIFY( mTranslator->translateText( QString( "Tanga" ) ) == QString( "82642" ) ); + QVERIFY( mTranslator->translateText( QString( "Uniform" ) ) == QString( "8643676" ) ); + QVERIFY( mTranslator->translateText( QString( "Vârlan" ) ) == QString( "827526" ) ); + QVERIFY( mTranslator->translateText( QString( "Victor" ) ) == QString( "842867" ) ); + QVERIFY( mTranslator->translateText( QString( "Whiskey" ) ) == QString( "9447539" ) ); + QVERIFY( mTranslator->translateText( QString( "Xray" ) ) == QString( "9729" ) ); + QVERIFY( mTranslator->translateText( QString( "Yankee" ) ) == QString( "926533" ) ); + QVERIFY( mTranslator->translateText( QString( "Zulu" ) ) == QString( "9858" ) ); QString uni; uni.append(QChar(0x0219)); uni.append(QChar(0x4E0F)); QString result("7"); - QCOMPARE(mTranslator->translate(uni), result); + QCOMPARE(mTranslator->translateText(uni), result); QString uni1; uni1.append(QChar(0x4E0E)); uni1.append(QChar(0x4E0F)); QString result1(""); - QCOMPARE(mTranslator->translate(uni1), result1); + QCOMPARE(mTranslator->translateText(uni1), result1); QString result2; - QCOMPARE(mTranslator->translate(uni1), result2); + QCOMPARE(mTranslator->translateText(uni1), result2); + +} + +void UT_LogsPredictiveLatin12KeyTranslator::testTranslatePattern() +{ + + QVERIFY( mTranslator->translatePattern( QString( "1234567890" ) ) == QString( "1234567890" ) ); + QCOMPARE( mTranslator->translatePattern( QString( "+1234567890" ) ) ,QString( "*1234567890" ) ); + QCOMPARE( mTranslator->translatePattern( QString( "*1234567890" ) ) ,QString( "*1234567890" ) ); + QCOMPARE( mTranslator->translatePattern( QString( "#1234567890" ) ), QString( "#1234567890" ) ); + QCOMPARE( mTranslator->translatePattern( QString( "++##" ) ), QString( "**##" ) ); + QCOMPARE( mTranslator->translatePattern( QString( "-+##" ) ), QString( "1*##" ) ); + QCOMPARE( mTranslator->translatePattern( QString( "/+##" ) ), QString( "1*##" ) ); + QCOMPARE( mTranslator->translatePattern( QString( "*+##" ) ), QString( "**##" ) ); } void UT_LogsPredictiveLatin12KeyTranslator::testTranslateChar() { - - QCOMPARE( mTranslator->translateChar( QChar('+') ), QChar('*') ); - QCOMPARE( mTranslator->translateChar( QChar('*') ), QChar('*') ); - QCOMPARE( mTranslator->translateChar( QChar('#') ), QChar('#') ); - QCOMPARE( mTranslator->translateChar( QChar('0') ), QChar('0') ); - QCOMPARE( mTranslator->translateChar( QChar('a') ), QChar('2') ); - QCOMPARE( mTranslator->translateChar( QChar('A') ), QChar('2') ); - QCOMPARE( mTranslator->translateChar( QChar('1') ), QChar('1') ); - QCOMPARE( mTranslator->translateChar( QChar('ä') ), QChar('2') ); - QCOMPARE( mTranslator->translateChar( QChar('Ä') ), QChar('2') ); - QCOMPARE( mTranslator->translateChar( QChar('-') ), QChar('1') ); + bool ok; + + QCOMPARE( mTranslator->translateChar( QChar('+'), ok ), QChar('*') ); + QCOMPARE( mTranslator->translateChar( QChar('*'), ok ), QChar('*') ); + QCOMPARE( mTranslator->translateChar( QChar('#'), ok ), QChar('#') ); + QCOMPARE( mTranslator->translateChar( QChar('0'), ok ), QChar('0') ); + QCOMPARE( mTranslator->translateChar( QChar('a'), ok ), QChar('2') ); + QCOMPARE( mTranslator->translateChar( QChar('A'), ok ), QChar('2') ); + QCOMPARE( mTranslator->translateChar( QChar('1'), ok ), QChar('1') ); + QCOMPARE( mTranslator->translateChar( QChar('ä'), ok ), QChar('2') ); + QCOMPARE( mTranslator->translateChar( QChar('Ä'), ok ), QChar('2') ); + QCOMPARE( mTranslator->translateChar( QChar('-'), ok ), QChar('1') ); // Romanian unicode character "sh" - QCOMPARE( mTranslator->translateChar( QChar(0x0219) ), QChar('7') ); + QCOMPARE( mTranslator->translateChar( QChar(0x0219), ok ), QChar('7') ); // Chinese unicode character QChar chn(0x4E0F); - QCOMPARE( mTranslator->translateChar( QChar(0x4E0F) ), QChar() ); + QCOMPARE( mTranslator->translateChar( QChar(0x4E0F), ok ), QChar() ); + QVERIFY( !ok ); + + +} + +void UT_LogsPredictiveLatin12KeyTranslator::testEncodes() +{ + QVERIFY( mTranslator->encodes( QString( "Zulu" ) ) ); + QVERIFY( mTranslator->encodes( QString( "Öistämö" ) ) ); + + //china + QString uni1; + uni1.append(QChar(0x4E0E)); + uni1.append(QChar(0x4E0F)); + QVERIFY( !mTranslator->encodes( uni1) ); + + const int ucsize = 9; + const QChar thaiName2[] = {0x0E01,0x0E06,0x0E2F,0x0E0E,0x0E14,0x0E19,0x0E30,0x0E23,0x0E2A }; + QVERIFY( !mTranslator->encodes( QString( thaiName2,ucsize ) ) ); } - diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivethai12keytranslator.cpp --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivethai12keytranslator.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivethai12keytranslator.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -25,13 +25,11 @@ void UT_LogsPredictiveThai12KeyTranslator::initTestCase() { - mOrigLang = HbInputSettingProxy::instance()->globalInputLanguage(); } void UT_LogsPredictiveThai12KeyTranslator::cleanupTestCase() { - HbInputSettingProxy::instance()->setGlobalInputLanguage( mOrigLang ); } @@ -40,15 +38,12 @@ { HbInputLanguage thai( QLocale::Thai ); - - HbInputSettingProxy::instance()->setGlobalInputLanguage( thai ); - mTranslator = new LogsPredictiveThai12KeyTranslator(); + mTranslator = new LogsPredictiveThai12KeyTranslator( thai ); } void UT_LogsPredictiveThai12KeyTranslator::cleanup() { - HbInputSettingProxy::instance()->setGlobalInputLanguage( mOrigLang ); delete mTranslator; mTranslator = 0; } @@ -59,44 +54,80 @@ } -void UT_LogsPredictiveThai12KeyTranslator::testTranslate() +void UT_LogsPredictiveThai12KeyTranslator::testTranslateText() { - QCOMPARE( mTranslator->translate( QString( "0123456789" ) ), QString( "0123456789" ) ); - QCOMPARE( mTranslator->translate( QString( "Nokia" ) ), QString( "" ) ); - QCOMPARE( mTranslator->translate( QString( "*0123##456*789*" ) ), QString( "0123456789" ) ); + QCOMPARE( mTranslator->translateText( QString( "0123456789" ) ), QString( "0123456789" ) ); + //finds name latin name translator + QCOMPARE( mTranslator->translateText( QString( "Nokia" ) ), QString( "66542" ) ); const int ucsize = 9; // 1 2 3 4 5 6 7 8 9 const QChar thaiName1[] = {0x0E01,0x0E06,0x0E0A,0x0E0E,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A }; - QCOMPARE( mTranslator->translate( QString( thaiName1,ucsize ) ), QString( "123456789" ) ); + QCOMPARE( mTranslator->translateText( QString( thaiName1,ucsize ) ), QString( "123456789" ) ); // 1 2 * 4 5 6 # 8 9 const QChar thaiName2[] = {0x0E01,0x0E06,0x0E2F,0x0E0E,0x0E14,0x0E19,0x0E30,0x0E23,0x0E2A }; - QCOMPARE( mTranslator->translate( QString( thaiName2,ucsize ) ), QString( "1245689" ) ); + QCOMPARE( mTranslator->translateText( QString( thaiName2,ucsize ) ), QString( "1245689" ) ); } +void UT_LogsPredictiveThai12KeyTranslator::testTranslatePattern() +{ + QCOMPARE( mTranslator->translatePattern( QString( "0123456789" ) ), QString( "0123456789" ) ); + QCOMPARE( mTranslator->translatePattern( QString( "*0123##456*789*" ) ), QString( "0123456789" ) ); + +} + void UT_LogsPredictiveThai12KeyTranslator::testTranslateChar() { - - QCOMPARE( mTranslator->translateChar( QChar('0') ), QChar('0') ); - QCOMPARE( mTranslator->translateChar( QChar('1') ), QChar('1') ); - QCOMPARE( mTranslator->translateChar( QChar('N') ), QChar() ); - QCOMPARE( mTranslator->translateChar( QChar('*') ), QChar() ); - QCOMPARE( mTranslator->translateChar( QChar('#') ), QChar() ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E01) ), QChar('1') ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E06) ), QChar('2') ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E0A) ), QChar('3') ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E0E) ), QChar('4') ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E14) ), QChar('5') ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E19) ), QChar('6') ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E1E) ), QChar('7') ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E23) ), QChar('8') ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E2A) ), QChar('9') ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E2F) ), QChar() ); - QCOMPARE( mTranslator->translateChar( QChar(0x0E30) ), QChar() ); + bool ok; + + QCOMPARE( mTranslator->translateChar( QChar('0'), ok ), QChar('0') ); + QVERIFY( ok ); + QCOMPARE( mTranslator->translateChar( QChar('1'), ok ), QChar('1') ); + QVERIFY( ok ); + QCOMPARE( mTranslator->translateChar( QChar('N'), ok ), QChar() ); + QVERIFY( !ok ); + QCOMPARE( mTranslator->translateChar( QChar('*'), ok ), QChar() ); + QVERIFY( ok ); + QCOMPARE( mTranslator->translateChar( QChar('#'), ok ), QChar() ); + QVERIFY( ok ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E01), ok ), QChar('1') ); + QVERIFY( ok ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E06), ok ), QChar('2') ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E0A), ok ), QChar('3') ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E0E), ok ), QChar('4') ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E14), ok ), QChar('5') ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E19), ok ), QChar('6') ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E1E), ok ), QChar('7') ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E23), ok ), QChar('8') ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E2A), ok ), QChar('9') ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E2F), ok ), QChar() ); + QVERIFY( ok ); + QCOMPARE( mTranslator->translateChar( QChar(0x0E30), ok ), QChar() ); + QVERIFY( ok ); } +void UT_LogsPredictiveThai12KeyTranslator::testEncodes() +{ + //thai + const int ucsize = 9; + const QChar thaiName2[] = {0x0E01,0x0E06,0x0E2F,0x0E0E,0x0E14,0x0E19,0x0E30,0x0E23,0x0E2A }; + + QVERIFY( mTranslator->encodes( QString( thaiName2,ucsize ) ) ); + + //china + QString uni1; + uni1.append(QChar(0x4E0E)); + uni1.append(QChar(0x4E0F)); + QVERIFY( !mTranslator->encodes( uni1) ); + + QVERIFY( !mTranslator->encodes( QString( "Zulu" ) ) ); + + +} + + diff -r 7a485daed50d -r 38e85eb54906 logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivetranslator.cpp --- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivetranslator.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivetranslator.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -19,6 +19,8 @@ #include "ut_logspredictivetranslator.h" #include "logspredictivetranslator.h" +#include "logspredictivelatin12keytranslator.h" +#include "logspredictivethai12keytranslator.h" #include @@ -52,7 +54,10 @@ { QVERIFY( mTranslator ); QVERIFY( mTranslator->mKeyMap ); + QVERIFY( mTranslator->mNameTranslator == 0 ); + QVERIFY( LogsPredictiveTranslator::mInstance != 0 ); LogsPredictiveTranslator::deleteInstance(); + QVERIFY( LogsPredictiveTranslator::mInstance == 0 ); mTranslator = 0; HbInputLanguage thai( QLocale::Thai ); @@ -61,31 +66,84 @@ mTranslator = LogsPredictiveTranslator::instance(); QVERIFY( mTranslator ); QVERIFY( mTranslator->mKeyMap ); + QVERIFY( mTranslator->mNameTranslator == 0 ); + QVERIFY( LogsPredictiveTranslator::mInstance != 0 ); + + LogsPredictiveTranslator::deleteInstance(); + QVERIFY( LogsPredictiveTranslator::mInstance == 0 ); + mTranslator = 0; } - void UT_LogsPredictiveTranslator::testTranslate() { QString test1( "12345" ); + bool ok; QCOMPARE( mTranslator->LogsPredictiveTranslator::translate( test1 ).length(), test1.length() ); - QCOMPARE( mTranslator->LogsPredictiveTranslator::translate( test1, 2 ).length(), + QCOMPARE( mTranslator->LogsPredictiveTranslator::translate( test1, &ok, 2 ).length(), 2 ); + QVERIFY( ok ); + +} + +void UT_LogsPredictiveTranslator::testTranslatePattern() +{ + QString test1( "12345" ); + + QCOMPARE( mTranslator->LogsPredictiveTranslator::translatePattern( test1 ).length(), + test1.length() ); + +} + + +void UT_LogsPredictiveTranslator::testTranslateText() +{ + QString test1( "12345" ); + + QCOMPARE( mTranslator->translateText( test1 ).length(), test1.length() ); + + //text is thai, input lang latin + const int ucsize = 9; + // 1 2 3 4 5 6 7 8 9 + const QChar thaiName1[] = {0x0E01,0x0E06,0x0E0A,0x0E0E,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A }; + QCOMPARE( mTranslator->translateText( QString( thaiName1,ucsize ) ), QString( "123456789" ) ); + } -void UT_LogsPredictiveTranslator::testStartsWith() +void UT_LogsPredictiveTranslator::testNameTranslator() { - QCOMPARE( mTranslator->startsWith( QString("" ), QString("") ), 0 ); - QCOMPARE( mTranslator->startsWith( QString("123" ), QString("") ), 0 ); - QCOMPARE( mTranslator->startsWith( QString("" ), QString("123") ), 0 ); - QCOMPARE( mTranslator->startsWith( QString("123" ), QString("1234") ), 0 ); - QCOMPARE( mTranslator->startsWith( QString("123" ), QString("1") ), 1 ); - QCOMPARE( mTranslator->startsWith( QString("123" ), QString("123") ), 3 ); - QCOMPARE( mTranslator->startsWith( QString("123" ), QString("12"), true ), 2 ); - QCOMPARE( mTranslator->startsWith( QString("123" ), QString("12"), false ), 2 ); + QString test1( "12345" ); + QCOMPARE( mTranslator->mib(), MIBenumLatin ); + QVERIFY( !mTranslator->mNameTranslator ); + QCOMPARE( mTranslator->nameTranslator( test1 ).mib(), MIBenumLatin ); + QVERIFY( mTranslator->mNameTranslator ); + + //text is thai, input lang latin + const int ucsize = 9; + // 1 2 3 4 5 6 7 8 9 + const QChar thaiName1[] = {0x0E01,0x0E06,0x0E0A,0x0E0E,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A }; + QCOMPARE( mTranslator->nameTranslator( QString( thaiName1,ucsize ) ).mib(), MIBenumThai ); + QVERIFY( mTranslator->mNameTranslator ); + QCOMPARE( mTranslator->mNameTranslator->mib(), MIBenumThai ); + QCOMPARE( mTranslator->mib(), MIBenumLatin ); + + QCOMPARE( mTranslator->nameTranslator( QString( thaiName1,ucsize ) ).mib(), MIBenumThai ); + QVERIFY( mTranslator->mNameTranslator ); + QCOMPARE( mTranslator->mNameTranslator->mib(), MIBenumThai ); + QCOMPARE( mTranslator->mib(), MIBenumLatin ); + + + //china + QString uni; + uni.append(QChar(0x0219)); + uni.append(QChar(0x4E0F)); + QCOMPARE( mTranslator->nameTranslator( uni ).mib(), MIBenumLatin ); + QVERIFY( !mTranslator->mNameTranslator ); + QCOMPARE( mTranslator->mib(), MIBenumLatin ); + } diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/bwins/logsengineu.def --- a/logsui/logsengine/bwins/logsengineu.def Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/bwins/logsengineu.def Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsengine/eabi/logsengineu.def --- a/logsui/logsengine/eabi/logsengineu.def Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/eabi/logsengineu.def Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsengine/inc/logsdetailsmodel.h --- a/logsui/logsengine/inc/logsdetailsmodel.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/inc/logsdetailsmodel.h Wed Jun 23 17:21:36 2010 +0100 @@ -45,6 +45,7 @@ LOGSENGINE_EXPORT void clearEvent(); LOGSENGINE_EXPORT void getNumberToClipboard(); + LOGSENGINE_EXPORT LogsEvent getLogsEvent() const; public: // From QAbstractItemModel diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/inc/logsengdefs.h --- a/logsui/logsengine/inc/logsengdefs.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/inc/logsengdefs.h Wed Jun 23 17:21:36 2010 +0100 @@ -31,7 +31,7 @@ const char logsVoipCallIconId[] = "qtg_large_voip"; const char logsRemotePartyInfoIconId[] = "qtg_large_info"; -const char logsCallDurationIconId[] = "qtg_large_callduration"; +const char logsCallDurationIconId[] = "qtg_large_call_duration"; const char logsCallDateAndTimeIconId[] = "qtg_large_calendar"; const char logsThumbUnknownId[] = "qtg_large_avatar"; diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/inc/logseventdata.h --- a/logsui/logsengine/inc/logseventdata.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/inc/logseventdata.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsengine/logsengine.pro --- a/logsui/logsengine/logsengine.pro Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/logsengine.pro Wed Jun 23 17:21:36 2010 +0100 @@ -19,7 +19,6 @@ TARGET = logsengine CONFIG += hb dll svg -RESOURCES += logsengine.qrc INCLUDEPATH += ./ INCLUDEPATH += ./inc diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/logsengine.qrc --- a/logsui/logsengine/logsengine.qrc Tue May 18 11:50:04 2010 +0100 +++ /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 7a485daed50d -r 38e85eb54906 logsui/logsengine/logssymbianos/inc/logsdbconnector.h --- a/logsui/logsengine/logssymbianos/inc/logsdbconnector.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/logssymbianos/inc/logsdbconnector.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsengine/logssymbianos/inc/logseventparser.h --- a/logsui/logsengine/logssymbianos/inc/logseventparser.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/logssymbianos/inc/logseventparser.h Wed Jun 23 17:21:36 2010 +0100 @@ -54,7 +54,7 @@ /** * Resolve event type based on available information. */ - static void resolveEventType(LogsEvent& dest); + static bool resolveEventType(LogsEvent& dest); static void eventTypeSpecificParsing(LogsEvent& dest); diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/logssymbianos/src/logsdbconnector.cpp --- a/logsui/logsengine/logssymbianos/src/logsdbconnector.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/logssymbianos/src/logsdbconnector.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsengine/logssymbianos/src/logseventparser.cpp --- a/logsui/logsengine/logssymbianos/src/logseventparser.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/logssymbianos/src/logseventparser.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -103,6 +103,18 @@ dest.setDuration(source.Duration()); } + LogsEventData* logsEventData = new LogsEventData(); + if ( logsEventData->parse(source) != 0 ){ + // Parsing failed, clear event data + delete logsEventData; + dest.setLogsEventData( 0 ); + } else { + dest.setLogsEventData( logsEventData ); //Ownership transferred + } + + // Resolve event type based on current event data + dataChanged |= resolveEventType(dest); + int currLogId = dest.logId(); int newLogId = source.Id(); bool logIdChanged( currLogId != newLogId ); @@ -114,19 +126,7 @@ dest.mEventState = LogsEvent::EventNotUpdated; } dest.setLogId( newLogId ); // Store unique identifier - - LogsEventData* logsEventData = new LogsEventData(); - if ( logsEventData->parse(source) != 0 ){ - // Parsing failed, clear event data - delete logsEventData; - dest.setLogsEventData( 0 ); - } else { - dest.setLogsEventData( logsEventData ); //Ownership transferred - } - - // Resolve event type based on current event data - resolveEventType(dest); - + eventTypeSpecificParsing(dest); dest.setDuplicates( 0 ); @@ -140,7 +140,7 @@ // LogsEventParser::resolveEventType // ---------------------------------------------------------------------------- // -void LogsEventParser::resolveEventType(LogsEvent& dest) +bool LogsEventParser::resolveEventType(LogsEvent& dest) { LogsEvent::LogsEventType type( LogsEvent::TypeVoiceCall ); if ( dest.mLogsEventData ){ @@ -157,7 +157,7 @@ } } LOGS_QDEBUG_2( "LogsEventParser::resolveEventType, type:", type ) - dest.setEventType( type ); + return dest.setEventType( type ); } // ---------------------------------------------------------------------------- diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp --- a/logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -97,25 +97,18 @@ } -QList QContactManager::contacts( - const QContactFilter& filter, const QList& sortOrders) const -{ - Q_UNUSED(filter) - Q_UNUSED(sortOrders) - QList list; - if ( QString("11112222").endsWith(logsTestNumber) ){ - list.append( logsTestContactId ); - } - return list; -} - QList QContactManager::contactIds( const QContactFilter& filter, const QList& sortOrders) const { Q_UNUSED(filter) Q_UNUSED(sortOrders) QList list; - if ( QString("11112222").endsWith(logsTestNumber) ){ + QString matchNum = logsTestNumber; + // simulate contact API behavior + if ( matchNum.length() > 4 && matchNum.startsWith('+') ){ + matchNum.remove(0,4); + } + if ( QString("11112222").endsWith(matchNum) ){ list.append( logsTestContactId ); } return list; @@ -131,6 +124,16 @@ return contact; } +QContact QContactManager::contact(const QContactLocalId& contactId, const QContactFetchHint& fetchHint) const +{ + Q_UNUSED(fetchHint) + QContact contact; + if ( contactId == logsTestContactId ) { + logsTestContactLocalId = logsTestContactId; + } + return contact; +} + // ---------------------------------------------------------------------------- // QContactDetailFilter @@ -253,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 7a485daed50d -r 38e85eb54906 logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsdbconnector.cpp --- a/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsdbconnector.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsdbconnector.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logseventparser.cpp --- a/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logseventparser.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logseventparser.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -166,26 +166,26 @@ LogsEventParser::resolveEventType(*mEvent); QVERIFY( mEvent->eventType() == LogsEvent::TypeVoiceCall ); - // Event data + // Event data, type not changed LogsEventData* eventData = new LogsEventData(); mEvent->setLogsEventData(eventData); - LogsEventParser::resolveEventType(*mEvent); + QVERIFY( !LogsEventParser::resolveEventType(*mEvent) ); QVERIFY( mEvent->eventType() == LogsEvent::TypeVoiceCall ); - + eventData->mIsVoIP = true; - LogsEventParser::resolveEventType(*mEvent); + QVERIFY( LogsEventParser::resolveEventType(*mEvent) ); QVERIFY( mEvent->eventType() == LogsEvent::TypeVoIPCall ); eventData->mIsVoIP = false; eventData->mIsVT = true; - LogsEventParser::resolveEventType(*mEvent); + QVERIFY( LogsEventParser::resolveEventType(*mEvent) ); QVERIFY( mEvent->eventType() == LogsEvent::TypeVideoCall ); // PoC not supported eventData->mIsVoIP = false; eventData->mIsVT = false; eventData->mIsPoC = true; - LogsEventParser::resolveEventType(*mEvent); + QVERIFY( LogsEventParser::resolveEventType(*mEvent) ); QVERIFY( mEvent->eventType() == LogsEvent::TypeUndefined ); // Msgs not supported @@ -193,6 +193,6 @@ eventData->mIsVT = false; eventData->mIsPoC = false; eventData->mMsgPartsNumber = 2; - LogsEventParser::resolveEventType(*mEvent); + QVERIFY( !LogsEventParser::resolveEventType(*mEvent) ); QVERIFY( mEvent->eventType() == LogsEvent::TypeUndefined ); } diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/src/logsdetailsmodel.cpp --- a/logsui/logsengine/src/logsdetailsmodel.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/src/logsdetailsmodel.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -292,6 +292,15 @@ // // ----------------------------------------------------------------------------- // +LogsEvent LogsDetailsModel::getLogsEvent() const +{ + return *mEvent; +} + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// bool LogsDetailsModel::isAddress(QString value) const { QChar c('@'); diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/src/logsevent.cpp --- a/logsui/logsengine/src/logsevent.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/src/logsevent.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -24,6 +24,7 @@ #include #include #include +#include #include "logsevent.h" #include "logseventparser.h" #include "logseventdata.h" @@ -257,9 +258,11 @@ // LogsEvent::setEventType // ---------------------------------------------------------------------------- // -void LogsEvent::setEventType( LogsEventType eventType ) +bool LogsEvent::setEventType( LogsEventType eventType ) { + bool changed( mEventType != eventType ); mEventType = eventType; + return changed; } // ---------------------------------------------------------------------------- @@ -345,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 @@ -519,10 +601,9 @@ phoneFilter.setValue(mLogsEventData->remoteUrl()); phoneFilter.setMatchFlags(QContactFilter::MatchExactly); } else if ( !mNumber.isEmpty() ){ - // remove non-significant parts from number for better matching phoneFilter.setDetailDefinitionName( QContactPhoneNumber::DefinitionName, QContactPhoneNumber::FieldNumber); - phoneFilter.setValue(stripPhoneNumber(mNumber)); + phoneFilter.setValue(mNumber); phoneFilter.setMatchFlags(QContactFilter::MatchEndsWith); } else { // Searching not possible @@ -553,47 +634,14 @@ return contactNameStr; } - -// ---------------------------------------------------------------------------- -// LogsEvent::stripPhoneNumber -// ---------------------------------------------------------------------------- -// -QString LogsEvent::stripPhoneNumber(const QString& num) -{ - // Remove international part from beginning if starts with '+' - // and leading digit can be removed if doesn't start with '+' - // NOTE: since international part is not fixed length, this - // approach is not bulletproof (i.e. if international part is - // only one digit long, part of group identification code is ignored - // which might lead to incorrect matching in case where user - // would have two contacts with same subscriber number part but for - // different operator (quite unlikely). - - if ( num.length() == 0 ){ - return num; - } - QString modifiedNum( num ); - if ( modifiedNum.at(0) == '+' ) { - // QString handles automatically case of removing too much - const int removePlusAndInternationalPart = 4; - modifiedNum.remove( 0, removePlusAndInternationalPart ); - } - else { - const int removeFirstDigit = 1; - modifiedNum.remove( 0, removeFirstDigit ); - } - - return modifiedNum; -} - // ---------------------------------------------------------------------------- // LogsEvent::parseContactName // ---------------------------------------------------------------------------- // 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 7a485daed50d -r 38e85eb54906 logsui/logsengine/src/logseventdata.cpp --- a/logsui/logsengine/src/logseventdata.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/src/logseventdata.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsengine/src/logsmatchesmodel.cpp --- a/logsui/logsengine/src/logsmatchesmodel.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/src/logsmatchesmodel.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -714,5 +714,5 @@ } contactName = contactName.trimmed(); - contactNumber = entry.phoneNumber().richText(); + contactNumber = entry.phoneNumber().text(); } diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/src/logsmodel.cpp --- a/logsui/logsengine/src/logsmodel.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/src/logsmodel.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 // ----------------------------------------------------------------------------- // @@ -368,11 +381,13 @@ qreal totalwidth = 0; int x = 0; if (fontMetrics.width(fullString) > maxwidth){ - maxwidth = maxwidth - fontMetrics.width(tr("...")+secondarystring); + maxwidth = maxwidth - fontMetrics.width(tr("...")+secondarystring); for (x = 0; (x < basestring.count()) && (totalwidth < maxwidth); x++){ totalwidth = totalwidth + fontMetrics.width(basestring[x]); } - if ( ( totalwidth > maxwidth ) && ( x>0 ) ) x--; + if ( x>1 ){ + x -= 2; + } return basestring.left(x) + tr("...") + secondarystring; } else { return fullString; @@ -385,7 +400,9 @@ // void LogsModel::resetModel() { - this->reset(); + LOGS_QDEBUG( "logs [ENG] -> LogsModel::resetModel()" ) + this->reset(); + LOGS_QDEBUG( "logs [ENG] <- LogsModel::resetModel()" ) } // ----------------------------------------------------------------------------- // diff -r 7a485daed50d -r 38e85eb54906 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 Tue May 18 11:50:04 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,148 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 7a485daed50d -r 38e85eb54906 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 Tue May 18 11:50:04 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 7a485daed50d -r 38e85eb54906 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 Tue May 18 11:50:04 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/tsrc/symbianos_stub/logseventparser_stub.cpp --- a/logsui/logsengine/tsrc/symbianos_stub/logseventparser_stub.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/tsrc/symbianos_stub/logseventparser_stub.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -44,8 +44,9 @@ // LogsEventParser::resolveEventType // ---------------------------------------------------------------------------- // -void LogsEventParser::resolveEventType(LogsEvent& /*dest*/) +bool LogsEventParser::resolveEventType(LogsEvent& /*dest*/) { + return false; } // End of file diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsevent.h --- a/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsevent.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsevent.h Wed Jun 23 17:21:36 2010 +0100 @@ -54,6 +54,7 @@ void testSetContactLocalId(); void testUpdateRemotePartyFromContacts(); void testParseContactName(); + void testSerialization(); private: diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/tsrc/ut_logsengine/inc/ut_logseventdata.h --- a/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logseventdata.h Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logseventdata.h Wed Jun 23 17:21:36 2010 +0100 @@ -49,6 +49,7 @@ void testSetters(); void testGetters(); void testIsCsCompatible(); + void testSerialization(); private: diff -r 7a485daed50d -r 38e85eb54906 logsui/logsengine/tsrc/ut_logsengine/src/ut_logsevent.cpp --- a/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsevent.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsevent.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/logsengine/tsrc/ut_logsengine/src/ut_logseventdata.cpp --- a/logsui/logsengine/tsrc/ut_logsengine/src/ut_logseventdata.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsengine/tsrc/ut_logsengine/src/ut_logseventdata.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -97,3 +97,8 @@ mEventData->mRemoteUrl = "test@1.2.3.4"; QVERIFY( !mEventData->isCsCompatible() ); } + +void UT_LogsEventData::testSerialization() +{ + +} diff -r 7a485daed50d -r 38e85eb54906 logsui/logsservices/src/logsservices.cpp --- a/logsui/logsservices/src/logsservices.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/logsservices/src/logsservices.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/rom/logsresources.iby --- a/logsui/rom/logsresources.iby Tue May 18 11:50:04 2010 +0100 +++ b/logsui/rom/logsresources.iby Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/tsrc/logdbmodifier/addeventtest/install/clientlogstest.pkg --- a/logsui/tsrc/logdbmodifier/addeventtest/install/clientlogstest.pkg Tue May 18 11:50:04 2010 +0100 +++ b/logsui/tsrc/logdbmodifier/addeventtest/install/clientlogstest.pkg Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/tsrc/logsservicestester/install/logsservicestester.pkg --- a/logsui/tsrc/logsservicestester/install/logsservicestester.pkg Tue May 18 11:50:04 2010 +0100 +++ b/logsui/tsrc/logsservicestester/install/logsservicestester.pkg Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/tsrc/logsservicestester/logsservicestester.pro --- a/logsui/tsrc/logsservicestester/logsservicestester.pro Tue May 18 11:50:04 2010 +0100 +++ b/logsui/tsrc/logsservicestester/logsservicestester.pro Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/tsrc/logsservicestester/logsservicetesterappcloser.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/tsrc/logsservicestester/logsservicetesterappcloser.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/tsrc/logsservicestester/logsservicetesterappcloser.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/tsrc/logsservicestester/logsservicetesterappcloser.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/tsrc/logsservicestester/logsservicetesterwidget.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/tsrc/logsservicestester/logsservicetesterwidget.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/tsrc/logsservicestester/logsservicetesterwidget.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/logsui/tsrc/logsservicestester/logsservicetesterwidget.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 logsui/tsrc/logsservicestester/main.cpp --- a/logsui/tsrc/logsservicestester/main.cpp Tue May 18 11:50:04 2010 +0100 +++ b/logsui/tsrc/logsservicestester/main.cpp Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 recents_plat/logs_engine_api/inc/logsevent.h --- a/recents_plat/logs_engine_api/inc/logsevent.h Tue May 18 11:50:04 2010 +0100 +++ b/recents_plat/logs_engine_api/inc/logsevent.h Wed Jun 23 17:21:36 2010 +0100 @@ -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: /** @@ -288,7 +299,7 @@ void setEventUid( int uid ); - void setEventType( LogsEventType aEventType ); + bool setEventType( LogsEventType aEventType ); void setLogsEventData( LogsEventData* logsEventData ); diff -r 7a485daed50d -r 38e85eb54906 recents_plat/logs_engine_api/inc/logsmodel.h --- a/recents_plat/logs_engine_api/inc/logsmodel.h Tue May 18 11:50:04 2010 +0100 +++ b/recents_plat/logs_engine_api/inc/logsmodel.h Wed Jun 23 17:21:36 2010 +0100 @@ -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 7a485daed50d -r 38e85eb54906 recents_plat/logs_services_api/inc/logsservices.h --- a/recents_plat/logs_services_api/inc/logsservices.h Tue May 18 11:50:04 2010 +0100 +++ b/recents_plat/logs_services_api/inc/logsservices.h Wed Jun 23 17:21:36 2010 +0100 @@ -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