--- a/logsui/logsapp/inc/logsbaseview.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/inc/logsbaseview.h Fri Jun 11 13:38:41 2010 +0300
@@ -35,6 +35,8 @@
class HbLabel;
class HbListView;
class LogsAbstractModel;
+class QDataStream;
+class HbActivityManager;
/**
*
@@ -60,7 +62,13 @@
virtual void activated(bool showDialer, QVariant args);
virtual void deactivated();
virtual bool isExitAllowed();
- virtual void resetView();
+ virtual void resetView();
+ virtual void clearActivity(HbActivityManager& manager);
+ virtual QString saveActivity(QDataStream& serializedActivity, QVariantHash& metaData);
+ virtual QVariant loadActivity(
+ const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData);
+ virtual bool matchWithActivityId(const QString& activityId);
+
public slots:
@@ -188,7 +196,6 @@
LogsAppViewId mViewId;
LogsComponentRepository& mRepository;
LogsAbstractViewManager& mViewManager;
- HbAction* mSoftKeyBackAction;
HbMenu* mShowFilterMenu; //not owned
Dialpad* mDialpad; //not owned
@@ -205,6 +212,8 @@
QSignalMapper* mCallTypeMapper;
QString mLayoutSectionName;
+
+ QStringList mActivities;
};
--- a/logsui/logsapp/inc/logsdefs.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/inc/logsdefs.h Fri Jun 11 13:38:41 2010 +0300
@@ -80,4 +80,27 @@
const int logsContactSearchEnabled = 1;
const int logsContactSearchDisabled = 2;
+
+
+// Interface related constants
+const char logsServiceName[] = "logs";
+const char logsInterfaceName[] = "com.nokia.symbian.ILogsView";
+const char logsOperationName[] = "show(QVariantMap)";
+
+const char logsViewIndexParam[] = "view_index";
+const char logsShowDialpadParam[] = "show_dialpad";
+const char logsDialpadTextParam[] = "dialpad_text";
+
+// Activity related constants
+const char logsActivityIdViewRecent[] = "LogsViewRecent";
+const char logsActivityIdViewCalled[] = "LogsViewCalled";
+const char logsActivityIdViewReceived[] = "LogsViewReceived";
+const char logsActivityIdViewMissed[] = "LogsViewMissed";
+const char logsActivityIdViewMatches[] = "LogsViewMatches";
+const char logsActivityIdViewDetails[] = "LogsViewDetails";
+
+const char logsActivityParamShowDialpad[] = "show_dialpad"; // val type bool
+const char logsActivityParamDialpadText[] = "dialpad_text"; // val type string
+
+
#endif // LOGSDEFS_H
--- a/logsui/logsapp/inc/logsdetailsview.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/inc/logsdetailsview.h Fri Jun 11 13:38:41 2010 +0300
@@ -43,6 +43,9 @@
virtual void activated(bool showDialer, QVariant args);
virtual void deactivated();
+ virtual QString saveActivity(QDataStream& serializedActivity, QVariantHash& metaData);
+ virtual QVariant loadActivity(
+ const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData);
public slots:
--- a/logsui/logsapp/inc/logsrecentcallsview.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/inc/logsrecentcallsview.h Fri Jun 11 13:38:41 2010 +0300
@@ -52,7 +52,9 @@
virtual void activated(bool showDialer, QVariant args);
virtual void deactivated();
virtual bool isExitAllowed();
- virtual void resetView();
+ virtual QString saveActivity(QDataStream& serializedActivity, QVariantHash& metaData);
+ virtual QVariant loadActivity(
+ const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData);
public slots:
@@ -127,7 +129,7 @@
LogsMatchesModel* mMatchesModel;
bool mMarkingMissedAsSeen;
LogsPageIndicator* mPageIndicator;
- bool mResetted;
+ bool mFirstActivation;
};
--- a/logsui/logsapp/inc/logsservicehandler.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/inc/logsservicehandler.h Fri Jun 11 13:38:41 2010 +0300
@@ -26,12 +26,13 @@
{
Q_OBJECT
public:
+
explicit LogsServiceHandler(LogsMainWindow& mainWindow);
~LogsServiceHandler();
public slots:
- int start(int activatedView, bool showDialpad);
- int startWithNum(int activatedView, bool showDialpad, QString dialpadText);
+
+ int show(const QVariantMap& params);
signals:
@@ -40,11 +41,10 @@
public:
- LogsServices::LogsView currentlyActivatedView();
bool isStartedUsingService() const;
private:
- int mActivatedView;
+
LogsMainWindow& mMainWindow;
bool mIsAppStartedUsingService;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsapp/inc/logsservicehandlerold.h Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,54 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef LOGSSERVICEHANDLEROLD_H
+#define LOGSSERVICEHANDLEROLD_H
+
+#include <xqserviceprovider.h>
+#include <logsservices.h>
+
+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
--- a/logsui/logsapp/inc/logsviewmanager.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/inc/logsviewmanager.h Fri Jun 11 13:38:41 2010 +0300
@@ -27,6 +27,7 @@
class HbMainWindow;
class LogsComponentRepository;
class LogsServiceHandler;
+class LogsServiceHandlerOld;
class LogsMainWindow;
class HbView;
class LogsBaseView;
@@ -48,7 +49,8 @@
* @param mainWindow
* @param service
*/
- LogsViewManager( LogsMainWindow& mainWindow, LogsServiceHandler& service );
+ LogsViewManager( LogsMainWindow& mainWindow, LogsServiceHandler& service,
+ LogsServiceHandlerOld& serviceOld );
~LogsViewManager();
public slots:
@@ -71,16 +73,23 @@
void proceedExit();
void handleOrientationChanged();
void completeViewActivation();
+ void saveActivity();
private:
void initViews();
- bool doActivateView(LogsAppViewId viewId, bool showDialpad, QVariant args);
+ bool doActivateView(LogsAppViewId viewId, bool showDialpad,
+ QVariant args, const QString& dialpadText = QString());
+ bool loadActivity();
+ LogsAppViewId checkMatchesViewTransition(
+ LogsAppViewId viewId, const QString& dialpadText);
+ void handleFirstActivation();
private: //data
LogsMainWindow& mMainWindow;
LogsServiceHandler& mService;
+ LogsServiceHandlerOld& mServiceOld;
LogsComponentRepository* mComponentsRepository;
QList<LogsBaseView*> mViewStack;
bool mFirstActivation;
--- a/logsui/logsapp/logsapp.pro Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/logsapp.pro Fri Jun 11 13:38:41 2010 +0300
@@ -39,6 +39,7 @@
HEADERS += inc/logsdetailsview.h
HEADERS += inc/logsmatchesview.h
HEADERS += inc/logsservicehandler.h
+HEADERS += inc/logsservicehandlerold.h
HEADERS += inc/logseffecthandler.h
HEADERS += inc/logspageindicator.h
HEADERS += inc/logspageindicatoritem.h
@@ -53,6 +54,7 @@
SOURCES += src/logsdetailsview.cpp
SOURCES += src/logsmatchesview.cpp
SOURCES += src/logsservicehandler.cpp
+SOURCES += src/logsservicehandlerold.cpp
SOURCES += src/logseffecthandler.cpp
SOURCES += src/logspageindicator.cpp
SOURCES += src/logspageindicatoritem.cpp
--- a/logsui/logsapp/resources/detailsView.docml Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/resources/detailsView.docml Fri Jun 11 13:38:41 2010 +0300
@@ -85,7 +85,7 @@
<ref object="logs_act_open_contact" role="HbMenu:addAction"/>
<ref object="logs_act_delete_event" role="HbMenu:addAction"/>
</widget>
- <string name="title" value="Dialer"/>
+ <string locid="txt_dial_title_dialer" name="title" value="Dialer"/>
</widget>
<!-- Context menu -->
<widget name="logs_show_filter_menu" type="HbMenu">
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsapp/resources/logs.docml Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbdocument version="1.1">
+ <widget name="mainView" type="HbView">
+ <widget name="groupBox" role="HbView:widget" type="HbGroupBox">
+ <real name="z" value="1"/>
+ <bool name="collapsable" value="FALSE"/>
+ <string name="heading" value=" "/>
+ </widget>
+ <string locid="Dialer" name="title" value="dialler"/>
+ </widget>
+ <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
+ <uistate name="Common ui state" sections="#common"/>
+ </metadata>
+</hbdocument>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsapp/resources/logs.splashml Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<hbsplash version="1">
+ <docml>logs.docml</docml>
+ <widget>mainView</widget>
+ <appuid>0x101F4CD5</appuid>
+ <tsappname>dialer</tsappname>
+</hbsplash>
--- a/logsui/logsapp/resources/matchesView.docml Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/resources/matchesView.docml Fri Jun 11 13:38:41 2010 +0300
@@ -86,7 +86,7 @@
<ref object="logs_act_create_message" role="HbMenu:addAction"/>
<ref object="logs_act_contact_search" role="HbMenu:addAction"/>
</widget>
- <string name="title" value="Dialer"/>
+ <string locid="txt_dial_title_dialer" name="title" value="Dialer"/>
</widget>
<!-- Context menu -->
<widget name="logs_show_filter_menu" type="HbMenu">
--- a/logsui/logsapp/resources/recentCallsView.docml Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/resources/recentCallsView.docml Fri Jun 11 13:38:41 2010 +0300
@@ -57,7 +57,7 @@
<widget name="logs_groupbox_recent_calls" type="HbGroupBox">
<real name="z" value="1"/>
<bool name="collapsable" value="FALSE"/>
- <string name="heading" value="Recent calls"/>
+ <string locid="txt_dialer_subhead_recent_calls" name="heading" value="Recent calls"/>
</widget>
<widget name="logs_page_indicator" type="LogsPageIndicator">
<real name="z" value="2"/>
@@ -107,7 +107,7 @@
<ref object="logs_act_clear_list" role="HbMenu:addAction"/>
<ref object="logs_act_contact_search" role="HbMenu:addAction"/>
</widget>
- <string name="title" value="Dialer"/>
+ <string locid="txt_dial_title_dialer" name="title" value="Dialer"/>
</widget>
<!-- Context menu -->
<widget name="logs_show_filter_menu" type="HbMenu">
--- a/logsui/logsapp/service_conf.xml Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/service_conf.xml Fri Jun 11 13:38:41 2010 +0300
@@ -1,7 +1,17 @@
<?xml version="1.0" encoding="utf-8" ?>
-<service name="com.nokia.services.logsservices" filepath="must-not-be-empty" >
- <description>Logs services</description>
- <interface name="starter" version="1.0" capabilities="">
- <description>Starter interface</description>
+<service>
+ <name>logs</name>
+ <filepath>No path</filepath>
+ <description>Logs service</description>
+ <interface>
+ <name>com.nokia.symbian.ILogsView</name>
+ <version>1.0</version>
+ <description>Interface to open a view of logs application</description>
</interface>
-</service>
+ <interface>
+ <name>starter</name>
+ <version>1.0</version>
+ <description>Deprecated logs starter interface</description>
+ <customproperty key="deprecatedsn">com.nokia.services.logsservices</customproperty>
+ </interface>
+</service>
\ No newline at end of file
--- a/logsui/logsapp/src/logsbaseview.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/src/logsbaseview.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -42,6 +42,7 @@
#include <hblistview.h>
#include <QGraphicsLinearLayout>
#include <hbpushbutton.h>
+#include <hbactivitymanager.h>
Q_DECLARE_METATYPE(LogsCall*)
@@ -49,7 +50,6 @@
Q_DECLARE_METATYPE(LogsContact*)
Q_DECLARE_METATYPE(LogsDetailsModel*)
-const int contextMenuTimeout = 5000000; //5 secs
// -----------------------------------------------------------------------------
//
@@ -73,11 +73,11 @@
mCallTypeMapper(0)
{
LOGS_QDEBUG( "logs [UI] -> LogsBaseView::LogsBaseView()" );
+
+ setNavigationAction(new HbAction(Hb::BackNaviAction, this));
+ connect(navigationAction(), SIGNAL(triggered()), this,
+ SLOT(handleBackSoftkey()));
- mSoftKeyBackAction = new HbAction(Hb::BackNaviAction, this);
- connect(mSoftKeyBackAction, SIGNAL(triggered()), this,
- SLOT(handleBackSoftkey()));
-
mDialpad = mRepository.dialpad();
LOGS_QDEBUG( "logs [UI] <- LogsBaseView::LogsBaseView()" );
@@ -136,6 +136,51 @@
//
// -----------------------------------------------------------------------------
//
+void LogsBaseView::clearActivity(HbActivityManager& manager)
+{
+ foreach ( const QString& activity, mActivities ){
+ manager.removeActivity(activity);
+ }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+QString LogsBaseView::saveActivity(
+ QDataStream& serializedActivity, QVariantHash& metaData)
+{
+ Q_UNUSED( serializedActivity );
+ Q_UNUSED( metaData );
+ return mActivities.isEmpty() ? QString() : mActivities.at(0);
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+QVariant LogsBaseView::loadActivity(
+ const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData)
+{
+ Q_UNUSED( activityId );
+ Q_UNUSED( serializedActivity );
+ Q_UNUSED( metaData );
+ return QVariant();
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+bool LogsBaseView::matchWithActivityId(const QString& activityId)
+{
+ return mActivities.contains(activityId);
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
void LogsBaseView::activated(bool showDialer, QVariant args)
{
LOGS_QDEBUG( "logs [UI] -> LogsBaseView::activated()" );
@@ -154,10 +199,6 @@
connect( &mDialpad->editor(), SIGNAL( contentsChanged() ), this,
SLOT( dialpadEditorTextChanged() ) );
- if ( navigationAction() != mSoftKeyBackAction ) {
- setNavigationAction(mSoftKeyBackAction);
- }
-
if (showDialer && !mDialpad->isOpen()) {
openDialpad();
}
@@ -365,6 +406,9 @@
// Need to do request in async manner, otherwise new phonebook ui process
// will be started due bug(?) in highway.
XQServiceRequest snd("com.nokia.services.phonebookappservices.Launch","launch()", false);
+ XQRequestInfo info;
+ info.setForeground(true);
+ snd.setInfo(info);
int retValue;
snd.send(retValue);
@@ -378,19 +422,15 @@
void LogsBaseView::setDialpadPosition()
{
HbMainWindow& window = mViewManager.mainWindow();
- // layoutrect broken, fix will be in MCL wk14, use workaround meanwhile
- //QRectF screenRect = window.layoutRect();
- QRectF screenRect = (window.orientation() == Qt::Horizontal) ?
- QRectF(0,0,640,360) : QRectF(0,0,360,640);
-
+ QRectF screenRect = window.layoutRect();
LOGS_QDEBUG_2( "logs [UI] -> LogsBaseView::setDialpadPosition(), screenRect:",
screenRect );
if (window.orientation() == Qt::Horizontal) {
// dialpad takes half of the screen width
mDialpad->setPos(QPointF(screenRect.width()/2,
- this->scenePos().y()));
+ scenePos().y()));
mDialpad->setPreferredSize(screenRect.width()/2,
- (screenRect.height()-scenePos().y()));
+ (screenRect.height()-scenePos().y()));
} else {
// dialpad takes 55% of the screen height
qreal screenHeight = screenRect.height();
@@ -498,7 +538,6 @@
LOGS_QDEBUG( "logs [UI] -> LogsBaseView::showListItemMenu()" );
HbMenu* itemContextMenu = new HbMenu();
itemContextMenu->setDismissPolicy(HbMenu::TapAnywhere);
- itemContextMenu->setTimeout(contextMenuTimeout);
itemContextMenu->setAttribute(Qt::WA_DeleteOnClose);
updateListItemData(item->modelIndex());
@@ -1050,6 +1089,7 @@
void LogsBaseView::askConfirmation( QString heading , QString text,
QObject* receiver, const char* okSlot, const char* cancelSlot )
{
+ LOGS_QDEBUG( "logs [UI] -> LogsBaseView::askConfirmation()" );
HbMessageBox* note = new HbMessageBox(text, HbMessageBox::MessageTypeQuestion);
note->setAttribute(Qt::WA_DeleteOnClose);
note->setHeadingWidget(new HbLabel(heading));
@@ -1070,6 +1110,7 @@
}
}
note->open();
+ LOGS_QDEBUG( "logs [UI] <- LogsBaseView::askConfirmation()" );
}
// -----------------------------------------------------------------------------
--- a/logsui/logsapp/src/logscomponentrepository.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/src/logscomponentrepository.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -43,9 +43,9 @@
mDialpad(0),
mDialpadKeyHandler(0)
{
- bool resourceControl = true;
- mModel = new LogsModel(LogsModel::LogsRecentModel, resourceControl);
+ mModel = new LogsModel(LogsModel::LogsRecentModel);
}
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
--- a/logsui/logsapp/src/logsdetailsview.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/src/logsdetailsview.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -23,6 +23,7 @@
#include "logsabstractviewmanager.h"
#include "logsdefs.h"
#include "logscontact.h"
+#include "logsmodel.h"
//SYSTEM
#include <hblistview.h>
@@ -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()" );
}
--- a/logsui/logsapp/src/logsmatchesview.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/src/logsmatchesview.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -48,6 +48,8 @@
mAddToContactsButton(0)
{
LOGS_QDEBUG( "logs [UI] <-> LogsMatchesView::LogsMatchesView()" );
+
+ mActivities.append( logsActivityIdViewMatches );
}
// -----------------------------------------------------------------------------
@@ -216,7 +218,7 @@
QString pattern = mDialpad->editor().text();
if ( pattern.isEmpty() ){
- // Treat empty input field same was as back press
+ // Treat empty input field same way as back press
LogsBaseView::handleBackSoftkey();
} else if ( mModel ) {
mModel->logsMatches( pattern );
--- a/logsui/logsapp/src/logspageindicatoritem.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/src/logspageindicatoritem.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -24,7 +24,7 @@
const char logsNormalIconName[] = "qtg_mono_tab_passive";
const char logsHighlightIconName[] = "qtg_mono_tab_active";
-const char logsIconColor[] = "qtc_button_normal";//"qtc_default_main_pane_normal");//
+const char logsIconColor[] = "qtc_viewtitle_normal"; //groupbox text color
const int logsEffectDurationInMs = 1000;
@@ -73,6 +73,7 @@
startAnimation();
} else {
setIcon(HbIcon(logsNormalIconName));
+ updateColor();
}
}
}
@@ -136,4 +137,5 @@
void LogsPageIndicatorItem::animationFinished()
{
graphicsEffect()->setEnabled(false);
+ updateColor();
}
--- a/logsui/logsapp/src/logsrecentcallsview.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/src/logsrecentcallsview.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -43,6 +43,7 @@
#include <hbmessagebox.h>
#include <hbmainwindow.h>
#include <QTimer>
+#include <hbactivitymanager.h>
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<LogsServices::LogsView>( args.toInt() );
+ int internalViewId = args.toInt();
+ if ( internalViewId < 0 || internalViewId > LogsServices::ViewMissed ){
+ internalViewId = LogsServices::ViewAll;
+ }
+ LogsServices::LogsView view = static_cast<LogsServices::LogsView>( internalViewId );
// View update is needed when we activate view for the first time (!mFilter)
// or if view has to be changed
@@ -115,14 +127,9 @@
activateEmptyListIndicator(mFilter);
mPageIndicator->setActiveItemIndex(mConversionMap.value(mCurrentView));
+
+ mFirstActivation = false;
- if ( mResetted ){
- // After reset, first data addition should cause scrolling to topitem
- connect( mFilter, SIGNAL(rowsInserted(const QModelIndex&,int,int)),
- this, SLOT(scrollToTopItem()) );
- mResetted = false;
- }
-
LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::activated()" );
}
@@ -161,15 +168,31 @@
//
// -----------------------------------------------------------------------------
//
-void LogsRecentCallsView::resetView()
+QString LogsRecentCallsView::saveActivity(
+ QDataStream& serializedActivity, QVariantHash& metaData)
{
- LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::resetView()" );
- LogsBaseView::resetView();
- mResetted = true;
- LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::resetView()" );
+ Q_UNUSED( serializedActivity );
+ Q_UNUSED( metaData );
+ if ( mCurrentView >= 0 && mCurrentView < mActivities.count() ){
+ return mActivities.at( mCurrentView );
+ }
+ return QString();
}
// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+QVariant LogsRecentCallsView::loadActivity(
+ const QString& activityId, QDataStream& serializedActivity, QVariantHash& metaData)
+{
+ Q_UNUSED( serializedActivity );
+ Q_UNUSED( metaData );
+ return mActivities.indexOf(activityId);
+}
+
+
+// -----------------------------------------------------------------------------
// LogsRecentCallsView::initView
// -----------------------------------------------------------------------------
//
@@ -718,24 +741,22 @@
//
int LogsRecentCallsView::getListItemTextWidth()
{
- LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::ListItemText()" );
-
- qreal width = 0;
+ LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::getListItemTextWidth()" );
- // layoutrect broken, fix will be in MCL wk14, use workaround meanwhile
- //QRectF screenRect = mViewManager.mainWindow().layoutRect();
- QRectF screenRect = (mViewManager.mainWindow().orientation() == Qt::Horizontal) ?
- QRectF(0,0,640,360) : QRectF(0,0,360,640);
+ qreal width = 0.0;
+ QRectF screenRect = mViewManager.mainWindow().layoutRect();
LOGS_QDEBUG_2( "logs [UI] screenRect:", screenRect );
// Cannot use hb-param-screen-width in expressions currently due bug in layoutrect
qreal modifier = 0.0;
QString expr;
if (mListView->layoutName() == QLatin1String(logsListDefaultLayout)) {
- expr = "expr(var(hb-param-graphic-size-primary-medium) + var(hb-param-margin-gene-left) + var(hb-param-margin-gene-right) + var(hb-param-margin-gene-middle-horizontal))";
+ expr = "expr(var(hb-param-graphic-size-primary-medium) + var(hb-param-margin-gene-left) ";
+ expr += "+ var(hb-param-margin-gene-right) + var(hb-param-margin-gene-middle-horizontal))";
width = screenRect.width();
} else {
- expr = "expr(var(hb-param-graphic-size-primary-medium) + var(hb-param-margin-gene-left) + var(hb-param-margin-gene-right))";
+ expr = "expr(var(hb-param-graphic-size-primary-medium) + var(hb-param-margin-gene-left) ";
+ expr += "+ var(hb-param-margin-gene-right))";
width = screenRect.width() / 2;
}
@@ -744,7 +765,7 @@
}
width -= modifier;
- LOGS_QDEBUG_2( "logs [UI] <- LogsRecentCallsView::ListItemText(): ", width );
+ LOGS_QDEBUG_2( "logs [UI] <- LogsRecentCallsView::getListItemTextWidth(): ", width );
return qRound(width);
}
@@ -769,7 +790,7 @@
//
void LogsRecentCallsView::handleMissedCallsMarking()
{
- if ( mFilter && !mMarkingMissedAsSeen && !mResetted &&
+ if ( mFilter && !mMarkingMissedAsSeen && !mFirstActivation &&
( mFilter->filterType() == LogsFilter::Missed ||
mFilter->filterType() == LogsFilter::All ) ){
// Don't care if timer would be already running, slot's implementation
--- a/logsui/logsapp/src/logsservicehandler.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/src/logsservicehandler.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -17,21 +17,21 @@
//USER
#include "logsservicehandler.h"
#include "logslogger.h"
+#include "logsdefs.h"
#include "logsmainwindow.h"
#include <xqserviceutil.h>
//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
// -----------------------------------------------------------------------------
//
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsapp/src/logsservicehandlerold.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,112 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+//USER
+#include "logsservicehandlerold.h"
+#include "logslogger.h"
+#include "logsmainwindow.h"
+#include <xqserviceutil.h>
+
+//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;
+}
+
--- a/logsui/logsapp/src/logsviewmanager.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/src/logsviewmanager.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -24,6 +24,7 @@
#include "logsdefs.h"
#include "logslogger.h"
#include "logsservicehandler.h"
+#include "logsservicehandlerold.h"
#include "logsmainwindow.h"
//SYSTEM
@@ -33,14 +34,18 @@
#include <QApplication>
#include <hblineedit.h>
#include <dialpad.h>
+#include <hbactivitymanager.h>
+#include <hbapplication.h>
// -----------------------------------------------------------------------------
// LogsViewManager::LogsViewManager
// -----------------------------------------------------------------------------
//
LogsViewManager::LogsViewManager(
- LogsMainWindow& mainWindow, LogsServiceHandler& service ) :
- QObject( 0 ), mMainWindow( mainWindow ), mService( service ),
+ LogsMainWindow& mainWindow, LogsServiceHandler& service,
+ LogsServiceHandlerOld& serviceOld ) :
+ QObject( 0 ), mMainWindow( mainWindow ),
+ mService( service ), mServiceOld( serviceOld ),
mFirstActivation(true), mViewActivationShowDialpad(false)
{
LOGS_QDEBUG( "logs [UI] -> LogsViewManager::LogsViewManager()" );
@@ -58,10 +63,20 @@
connect( &mService, SIGNAL( activateView(QString) ),
this, SLOT( changeMatchesView(QString) ));
+
+ connect( &mServiceOld, SIGNAL( activateView(LogsServices::LogsView, bool) ),
+ this, SLOT( changeRecentView(LogsServices::LogsView, bool) ) );
+
+ connect( &mServiceOld, SIGNAL( activateView(QString) ),
+ this, SLOT( changeMatchesView(QString) ));
connect( &mMainWindow, SIGNAL(appFocusGained()), this, SLOT(appFocusGained()) );
connect( &mMainWindow, SIGNAL(appFocusLost()), this, SLOT(appFocusLost()) );
+ QObject::connect(qApp, SIGNAL(aboutToQuit()), this, SLOT(saveActivity()));
+
+ handleFirstActivation();
+
LOGS_QDEBUG( "logs [UI] <- LogsViewManager::LogsViewManager()" );
}
@@ -87,11 +102,6 @@
{
LOGS_QDEBUG( "logs [UI] -> LogsViewManager::initViews()" );
- // Disable view switching as otherwise flick gestures change
- // views which is not desired.
- //Deprecated:
- //mMainWindow.setViewSwitchingEnabled(false);
-
// Don't activate any view, app focus gaining or service request
// will cause view activation
//
@@ -129,16 +139,7 @@
void LogsViewManager::changeMatchesView(QString dialpadText)
{
LOGS_QDEBUG( "logs [UI] -> LogsViewManager::changeMatchesView()" );
- Dialpad* dialpad = mComponentsRepository->dialpad();
- dialpad->editor().setText(dialpadText);
- LogsModel* model = mComponentsRepository->model();
- if ( model && model->predictiveSearchStatus() == logsContactSearchEnabled ){
- LOGS_QDEBUG( "logs [UI] contact search enabled, go to macthes view" );
- doActivateView(LogsMatchesViewId, true, QVariant());
- } else {
- LOGS_QDEBUG( "logs [UI] contact search disabled, go to recent view" );
- doActivateView(LogsRecentViewId, true, QVariant());
- }
+ doActivateView(LogsMatchesViewId, true, QVariant(), dialpadText);
LOGS_QDEBUG( "logs [UI] <- LogsViewManager::changeMatchesView()" );
}
@@ -156,13 +157,6 @@
foreach ( LogsBaseView* view, mViewStack ){
disconnect( view, SIGNAL(exitAllowed()), this, SLOT(proceedExit()) );
}
-
- if ( mFirstActivation && !mService.isStartedUsingService() ){
- changeRecentView( mService.currentlyActivatedView(), false );
- mMainWindow.bringAppToForeground();
- }
-
- mComponentsRepository->model()->refreshData();
LOGS_QDEBUG( "logs [UI] <- LogsViewManager::appFocusGained()" );
}
@@ -237,10 +231,6 @@
// Fake exit by sending app to background
mMainWindow.sendAppToBackground();
-
- // Set application to default state (recent calls and no dialpad)
- activateView( LogsRecentViewId, false, QVariant() );
- mComponentsRepository->recentCallsView()->resetView();
bool exitAllowed( true );
foreach ( LogsBaseView* view, mViewStack ){
@@ -281,7 +271,7 @@
// -----------------------------------------------------------------------------
//
bool LogsViewManager::doActivateView(
- LogsAppViewId viewId, bool showDialpad, QVariant args)
+ LogsAppViewId viewId, bool showDialpad, QVariant args, const QString& dialpadText)
{
LOGS_QDEBUG( "logs [UI] -> LogsViewManager::doActivateView()" );
@@ -289,6 +279,8 @@
LogsBaseView* newView = 0;
LogsBaseView* oldView = mViewStack.count() > 0 ? mViewStack.at(0) : 0;
+ viewId = checkMatchesViewTransition(viewId, dialpadText);
+
for ( int i = 0; i < mViewStack.count(); ++i ){
if ( mViewStack.at(i)->viewId() == viewId ){
newView = mViewStack.takeAt(i);
@@ -347,3 +339,131 @@
QMetaObject::invokeMethod(mMainWindow.currentView(), "handleOrientationChanged");
LOGS_QDEBUG( "logs [UI] <- LogsViewManager::handleOrientationChanged()" );
}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LogsViewManager::saveActivity()
+{
+ LOGS_QDEBUG( "logs [UI] -> LogsViewManager::saveActivity()" );
+
+ if ( mViewStack.count() == 0 ){
+ return;
+ }
+
+ HbActivityManager* activityManager = static_cast<HbApplication*>(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<HbApplication*>(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<QVariantHash> 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<HbApplication*>(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<HbApplication*>(qApp)->activityManager();
+ foreach ( LogsBaseView* view, mViewStack ){
+ view->clearActivity(*activityManager);
+ }
+ LOGS_QDEBUG( "logs [UI] <- LogsViewManager::handleFirstActivation()" );
+}
--- a/logsui/logsapp/src/main.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/src/main.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -18,6 +18,7 @@
#include "logsmainwindow.h"
#include "logsviewmanager.h"
#include "logsservicehandler.h"
+#include "logsservicehandlerold.h"
#include "logslogger.h"
#include "logsdefs.h"
@@ -26,39 +27,16 @@
#include <hbmainwindow.h>
#include <hbapplication.h>
#include <hbstyleloader.h>
-#include <QTranslator>
+#include <hbtranslator.h>
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();
--- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsbaseview.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsbaseview.h Fri Jun 11 13:38:41 2010 +0300
@@ -85,6 +85,10 @@
void testDeleteEvent();
void testDeleteEventOkAnswer();
void testAskConfirmation();
+ void testMatchWithActivityId();
+ void testSaveActivity();
+ void testLoadActivity();
+ void testClearActivity();
private:
--- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsdetailsview.h Fri Jun 11 13:38:41 2010 +0300
@@ -65,6 +65,8 @@
void testUpdateWidgetsSizeAndLayout();
void testDialpadEditorTextChanged();
void testSendMessage();
+ void testSaveActivity();
+ void testLoadActivity();
private:
--- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h Fri Jun 11 13:38:41 2010 +0300
@@ -54,7 +54,6 @@
void testInitView();
void testActivated();
void testDeactivated();
- void testResetView();
void testInitListWidget();
void testUpdateFilter();
void testUpdateViewName();
@@ -84,6 +83,8 @@
void testIsExitAllowed();
void testContactSearch();
void testDialpadOpened();
+ void testSaveActivity();
+ void testLoadActivity();
private: //helper functions
--- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsservicehandler.h Fri Jun 11 13:38:41 2010 +0300
@@ -21,6 +21,7 @@
#include <QObject>
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;
};
--- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsviewmanager.h Fri Jun 11 13:38:41 2010 +0300
@@ -23,6 +23,8 @@
class HbMainWindow;
class LogsViewManager;
class LogsMainWindow;
+class LogsServiceHandler;
+class LogsServiceHandlerOld;
class UT_LogsViewManager : public QObject
{
@@ -56,11 +58,16 @@
void testStartingWithService();
void testHandleOrientationChanged();
void testCompleteViewActivation();
+ void testSaveActivity();
+ void testLoadActivity();
private:
LogsMainWindow* mMainWindow;
LogsViewManager* mLogsViewManager;
+
+ LogsServiceHandler* mService;
+ LogsServiceHandlerOld* mServiceOld;
};
#endif //UT_LOGSVIEWMANAGER_H
--- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -87,6 +87,16 @@
}
// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LogsEvent LogsDetailsModel::getLogsEvent() const
+{
+ return *mEvent;
+}
+
+
+// -----------------------------------------------------------------------------
// LogsDetailsModel::rowCount
// From QAbstractListModel
// -----------------------------------------------------------------------------
--- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsdetailsmodel.h Fri Jun 11 13:38:41 2010 +0300
@@ -44,6 +44,7 @@
~LogsDetailsModel();
void clearEvent();
void getNumberToClipboard();
+ LogsEvent getLogsEvent() const;
public: // From QAbstractItemModel
--- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -86,6 +86,27 @@
}
// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+LogsEvent::LogsEvent( QDataStream& serializedEvent )
+{
+ serializedEvent >> mLogId;
+ mLogsEventData = 0;
+}
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+bool LogsEvent::serialize( QDataStream& serializeDestination )
+{
+ serializeDestination << mLogId;
+
+ return true;
+}
+
+// ----------------------------------------------------------------------------
// LogsEvent::initializeEventL
// ----------------------------------------------------------------------------
//
--- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h Fri Jun 11 13:38:41 2010 +0300
@@ -27,6 +27,7 @@
class LogsEventData;
class LogsEventStrings;
class CLogEvent;
+class QDataStream;
// CLASS DECLARATION
@@ -181,6 +182,10 @@
*/
QString getNumberForCalling();
+ LogsEvent( QDataStream& serializedEvent );
+
+ bool serialize( QDataStream& serializeDestination );
+
private:
bool setTime( const QDateTime& time );
--- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmatchesmodel.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmatchesmodel.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -34,7 +34,7 @@
{
LOGS_QDEBUG( "logs [ENG] -> LogsMatchesModel::LogsMatchesModel()" )
mDbConnector = &dbConnector;
- mLastCall = QString();
+ mLastCall = QString("constructor");
mTextData.append( "firstitem" );
LOGS_QDEBUG( "logs [ENG] <- LogsMatchesModel::LogsMatchesModel()" )
--- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -87,6 +87,15 @@
}
// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LogsDetailsModel* LogsModel::logsDetailsModel(LogsEvent& event)
+{
+ return new LogsDetailsModel();
+}
+
+// -----------------------------------------------------------------------------
// LogsModel::markEventsSeen
// -----------------------------------------------------------------------------
//
--- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsmodel.h Fri Jun 11 13:38:41 2010 +0300
@@ -24,6 +24,7 @@
class LogsMatchesModel;
class LogsConfigurationParams;
+class LogsDetailsModel;
/**
*
@@ -58,6 +59,7 @@
int refreshData();
int compressData();
int updateConfiguration(LogsConfigurationParams& params);
+ LogsDetailsModel* logsDetailsModel(LogsEvent& event);
public: // From QAbstractItemModel
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsbaseview.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -38,6 +38,8 @@
#include <hblistviewitem.h>
#include <hblistview.h>
#include <QStringListModel>
+#include <hbapplication.h>
+#include <hbactivitymanager.h>
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<HbApplication*>(qApp)->activityManager();
+ manager->addActivity("someact", QVariant(), QVariantHash());
+ QCOMPARE( manager->activities().count(), 1 );
+ mBaseView->mActivities.append( "testActivity1" );
+ mBaseView->clearActivity(*manager);
+ QCOMPARE( manager->activities().count(), 0 );
+}
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsdetailsview.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -68,9 +68,9 @@
void UT_LogsDetailsView::testConstructor()
{
QVERIFY(mDetailsView);
- QVERIFY(mDetailsView->mSoftKeyBackAction);
QVERIFY(mDetailsView->viewId() == LogsDetailsViewId );
QVERIFY(!mDetailsView->mDetailsModel);
+ QCOMPARE( mDetailsView->mActivities.at(0), QString(logsActivityIdViewDetails) );
}
void UT_LogsDetailsView::testActivated()
@@ -339,3 +339,33 @@
QVERIFY( !LogsMessage::isDefaultMessageSent() );
QVERIFY( LogsMessage::isMessageSent() );
}
+
+void UT_LogsDetailsView::testSaveActivity()
+{
+ QByteArray serializedActivity;
+ int sizeBefore = serializedActivity.size();
+ QDataStream stream(&serializedActivity, QIODevice::WriteOnly | QIODevice::Append);
+ QVariantHash metaData;
+ QVERIFY( mDetailsView->saveActivity(stream, metaData) == QString(logsActivityIdViewDetails) );
+ QVERIFY(serializedActivity.size() == sizeBefore); // Event not serialized as no model
+
+ mDetailsView->mDetailsModel = new LogsDetailsModel();
+ mDetailsView->mDetailsModel->mEvent = new LogsEvent;
+ QVERIFY( mDetailsView->saveActivity(stream, metaData) == QString(logsActivityIdViewDetails) );
+ QVERIFY(serializedActivity.size() > sizeBefore); // Event serialized
+
+}
+
+void UT_LogsDetailsView::testLoadActivity()
+{
+ QByteArray serializedActivity;
+ QDataStream stream(&serializedActivity, QIODevice::ReadWrite | QIODevice::Append);
+ LogsEvent event;
+ event.serialize(stream);
+ QVariantHash metaData;
+ QVariant args = mDetailsView->loadActivity(QString(logsActivityIdViewDetails), stream, metaData);
+ QVERIFY( !args.isNull() );
+ LogsDetailsModel* model = qVariantValue<LogsDetailsModel*>(args);
+ QVERIFY( model != 0 );
+ delete model;
+}
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmatchesview.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsmatchesview.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -70,6 +70,7 @@
QVERIFY( mMatchesView->mActionMap.count() == 0 );
QVERIFY( mMatchesView->mLayoutSectionName == "" );
QVERIFY( !mMatchesView->mAddToContactsButton );
+ QCOMPARE( mMatchesView->mActivities.at(0), QString(logsActivityIdViewMatches) );
}
void UT_LogsMatchesView::testActivated()
@@ -104,23 +105,26 @@
//Pass model as input arg
LogsDbConnector* dbConnector = 0;
LogsMatchesModel* model1 = new LogsMatchesModel(*dbConnector);
+ model1->resetLastCall();
QVariant arg = qVariantFromValue( model1 );
mMatchesView->activated( true, arg );
QVERIFY( mMatchesView->mListView );
- QVERIFY( mMatchesView->mModel == model1 );
+ QVERIFY( mMatchesView->mModel == model1 );
+ QVERIFY( mMatchesView->mModel->mLastCall.isEmpty() );
LogsMatchesModel* model2 = new LogsMatchesModel(*dbConnector);
+ model2->resetLastCall();
QVariant arg2 = qVariantFromValue( model2 );
mMatchesView->activated( true, arg2 );
QVERIFY( mMatchesView->mListView );
QVERIFY( mMatchesView->mModel == model2 );
+ QVERIFY( mMatchesView->mModel->mLastCall.isEmpty() );
// After passing model as input arg, do not pass model
mMatchesView->activated( true,QVariant() );
QVERIFY( mMatchesView->mListView );
QVERIFY( mMatchesView->mModel );
- QVERIFY( mMatchesView->mModel != model1 );
- QVERIFY( mMatchesView->mModel != model2 );
+ QVERIFY( mMatchesView->mModel->mLastCall == QLatin1String("constructor") );
}
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -94,6 +94,11 @@
QVERIFY( mRecentCallsView->mCurrentView == LogsServices::ViewAll );
QVERIFY( mRecentCallsView->viewId() == LogsRecentViewId );
QVERIFY( mRecentCallsView->mLayoutSectionName == "" );
+ QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewAll), QString(logsActivityIdViewRecent) );
+ QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewReceived), QString(logsActivityIdViewReceived) );
+ QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewCalled), QString(logsActivityIdViewCalled) );
+ QCOMPARE( mRecentCallsView->mActivities.at(LogsServices::ViewMissed), QString(logsActivityIdViewMissed) );
+
}
void UT_LogsRecentCallsView::testInitView()
@@ -145,14 +150,14 @@
view->mViewManager.mainWindow().setOrientation( Qt::Horizontal );
view->mDialpad->editor().setText( QString("hello") );
- view->mResetted = true;
+ view->mFirstActivation = true;
view->activated(false, QVariant(LogsServices::ViewAll));
QVERIFY( view->mFilter->filterType() == LogsFilter::All );
VERIFY_CHECKED_ACTION( view, logsShowFilterRecentMenuActionId )
QVERIFY( !view->mDialpad->editor().text().isEmpty() );
QVERIFY( view->mListView->layoutName() == logsListLandscapeLayout );
QVERIFY( view->mLayoutSectionName == logsViewDefaultSection );
- QVERIFY( !view->mResetted );
+ QVERIFY( !view->mFirstActivation );
}
void UT_LogsRecentCallsView::testDeactivated()
@@ -160,14 +165,6 @@
mRecentCallsView->deactivated();
}
-void UT_LogsRecentCallsView::testResetView()
-{
- // Opened dialpad is closed and text in it is cleared
- QVERIFY( !mRecentCallsView->mResetted );
- mRecentCallsView->resetView();
- QVERIFY( mRecentCallsView->mResetted );
-}
-
void UT_LogsRecentCallsView::testInitListWidget()
{
//TODO:Q_ASSERT_X
@@ -204,6 +201,7 @@
mRecentCallsView->mListView = 0;
//filter is updated with a new one, missed calls marking as seen is started (by timer)
+ mRecentCallsView->mFirstActivation = false;
QVERIFY( mRecentCallsView->mFilter );
mRecentCallsView->mListView = new HbListView();
mRecentCallsView->updateFilter(LogsFilter::Missed);
@@ -214,9 +212,9 @@
mRecentCallsView->mListView = 0;
//filter is updated with a new one, missed calls marking as seen is not started
- //as view was resetted
+ //as this is first view activation
HbStubHelper::reset();
- mRecentCallsView->mResetted = true;
+ mRecentCallsView->mFirstActivation = true;
mRecentCallsView->mListView = new HbListView();
mRecentCallsView->updateFilter(LogsFilter::Missed);
QVERIFY( mRecentCallsView->mFilter );
@@ -931,3 +929,28 @@
mRecentCallsView->dialpadOpened();
QVERIFY( mViewManager->mViewId == LogsUnknownViewId );
}
+
+void UT_LogsRecentCallsView::testSaveActivity()
+{
+ QByteArray serializedActivity;
+ QDataStream stream(&serializedActivity, QIODevice::WriteOnly | QIODevice::Append);
+ QVariantHash metaData;
+ mRecentCallsView->mCurrentView = LogsServices::ViewMissed;
+ QVERIFY( mRecentCallsView->saveActivity(stream, metaData) == QString(logsActivityIdViewMissed) );
+ mRecentCallsView->mCurrentView = LogsServices::ViewAll;
+ QVERIFY( mRecentCallsView->saveActivity(stream, metaData) == QString(logsActivityIdViewRecent) );
+
+}
+
+void UT_LogsRecentCallsView::testLoadActivity()
+{
+ QByteArray serializedActivity;
+ QDataStream stream(&serializedActivity, QIODevice::ReadOnly);
+ QVariantHash metaData;
+ QVariant args = mRecentCallsView->loadActivity(QString(logsActivityIdViewCalled), stream, metaData);
+ QVERIFY( !args.isNull() );
+ QVERIFY( args.toInt() == LogsServices::ViewCalled );
+ QVariant args2 = mRecentCallsView->loadActivity(QString(logsActivityIdViewMissed), stream, metaData);
+ QVERIFY( !args2.isNull() );
+ QVERIFY( args2.toInt() == LogsServices::ViewMissed);
+}
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsservicehandler.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -18,12 +18,14 @@
//USER
#include "ut_logsservicehandler.h"
#include "logsservicehandler.h"
+#include "logsservicehandlerold.h"
#include "qthighway_stub_helper.h"
#include "ut_logsviewmanager.h"
#include "logsviewmanager.h"
#include "logsmainwindow.h"
#include "logscomponentrepository.h"
#include "logsmatchesview.h"
+#include "logsdefs.h"
//SYSTEM
#include <QtTest/QtTest>
@@ -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 );
+}
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -19,6 +19,7 @@
#include "ut_logsviewmanager.h"
#include "logsviewmanager.h"
#include "logsservicehandler.h"
+#include "logsservicehandlerold.h"
#include "logsmainwindow.h"
#include "logscomponentrepository.h"
#include "logsrecentcallsview.h"
@@ -31,10 +32,11 @@
#include <QtTest/QtTest>
#include <HbView.h>
#include <hbapplication.h>
+#include <hbactivitymanager.h>
+#include <dialpad.h>
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<LogsBaseView*>( 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<LogsBaseView*>( mLogsViewManager->mMainWindow.currentView() )->viewId() == LogsMatchesViewId );
+ QVERIFY( mLogsViewManager->mViewStack.count() == 3 );
+ HbStubHelper::reset();
+
}
void UT_LogsViewManager::testActivateView()
@@ -76,13 +92,13 @@
// Activate already active view
QVERIFY( mLogsViewManager->activateView(LogsRecentViewId) );
QVERIFY( mLogsViewManager->activateView(LogsRecentViewId) );
- QVERIFY( mLogsViewManager->mMainWindow.viewCount() == 3 );
+ QCOMPARE( mLogsViewManager->mMainWindow.views().count(), 3 );
QVERIFY( mLogsViewManager->mMainWindow.currentView() ==
mLogsViewManager->mComponentsRepository->recentCallsView() );
// Activate other view
QVERIFY( mLogsViewManager->activateView(LogsDetailsViewId) );
- QVERIFY( mLogsViewManager->mMainWindow.viewCount() == 3 );
+ QVERIFY( mLogsViewManager->mMainWindow.views().count() == 3 );
QVERIFY( mLogsViewManager->mMainWindow.currentView() ==
mLogsViewManager->mComponentsRepository->detailsView() );
QVERIFY( mLogsViewManager->mViewStack.at(0) ==
@@ -90,7 +106,7 @@
// Try to activate unknown view
QVERIFY( !mLogsViewManager->activateView(LogsUnknownViewId) );
- QVERIFY( mLogsViewManager->mMainWindow.viewCount() == 3 );
+ QVERIFY( mLogsViewManager->mMainWindow.views().count() == 3 );
QVERIFY( mLogsViewManager->mMainWindow.currentView() ==
mLogsViewManager->mComponentsRepository->detailsView() );
QVERIFY( mLogsViewManager->mViewStack.at(0) ==
@@ -98,7 +114,7 @@
// Go back to previous view
QVERIFY( mLogsViewManager->activatePreviousView() );
- QVERIFY( mLogsViewManager->mMainWindow.viewCount() == 3 );
+ QVERIFY( mLogsViewManager->mMainWindow.views().count() == 3 );
QVERIFY( mLogsViewManager->mMainWindow.currentView() ==
mLogsViewManager->mComponentsRepository->recentCallsView() );
QVERIFY( mLogsViewManager->mViewStack.at(0) ==
@@ -157,10 +173,11 @@
LogsMainWindow window;
window.setCurrentView(0); // clear stub static data
LogsServiceHandler service(*mMainWindow);
+ LogsServiceHandlerOld serviceOld(*mMainWindow);
service.mIsAppStartedUsingService = true;
- LogsViewManager vm(window, service);
+ LogsViewManager vm(window, service, serviceOld);
QVERIFY( vm.mComponentsRepository );
- QVERIFY( vm.mMainWindow.viewCount() == 3 );
+ QVERIFY( vm.mMainWindow.views().count() == 3 );
QVERIFY( vm.mMainWindow.currentView() == 0 );
QVERIFY( vm.mViewStack.count() == 3 );
}
@@ -174,7 +191,7 @@
{
// On first activation, wait that view has painted itself once
// before completing activation
- QVERIFY(mLogsViewManager->mFirstActivation);
+ mLogsViewManager->mFirstActivation = true;
mLogsViewManager->activateView(LogsRecentViewId, true, QVariant());
QVERIFY(!mLogsViewManager->mFirstActivation);
QVERIFY(mLogsViewManager->mViewActivationShowDialpad);
@@ -182,3 +199,65 @@
mLogsViewManager->completeViewActivation(); // Simulate paint completion (viewReady signal)
QVERIFY(mLogsViewManager->mComponentsRepository->model()->mMissedCallsCounterCleared);
}
+
+void UT_LogsViewManager::testSaveActivity()
+{
+ HbStubHelper::setActivityReason(Hb::ActivationReasonActivity);
+ HbApplication* hbApp = static_cast<HbApplication*>(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<HbApplication*>(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<LogsBaseView*>( 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<LogsBaseView*>( 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() );
+}
--- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbapplication.h Fri Jun 11 13:38:41 2010 +0300
@@ -20,12 +20,20 @@
#include <qobject.h>
#include <qglobal.h>
-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();
};
--- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -23,7 +23,10 @@
#include <hbmessagebox.h>
#include <hbapplication.h>
#include <hbcolorscheme.h>
+#include <hbview.h>
+#include <hbactivitymanager.h>
#include <QCoreApplication>
+#include <QApplication>
#include <QTimer>
#include <QGesture>
@@ -42,6 +45,11 @@
bool testIsWidgetOpen = false;
bool testIsWidgetRaised = false;
QColor testColor = Qt::white;
+QList<HbView *> testViews;
+QList<QVariantHash> testActivities;
+HbActivityManager testActivityManager;
+Hb::ActivationReason testActivationReason = Hb::ActivationReasonNormal;
+QString testActivityId = "LogsViewMatches";
void HbStubHelper::reset()
{
@@ -52,6 +60,9 @@
testIsWidgetRaised = false;
testDialogShown = false;
testColor = Qt::white;
+ testActivationReason = Hb::ActivationReasonNormal;
+ testActivityId = "LogsViewMatches";
+ testActivities.clear();
}
@@ -114,6 +125,41 @@
testColor = col;
}
+void HbStubHelper::setActivityReason(Hb::ActivationReason reason)
+{
+ testActivationReason = reason;
+}
+
+void HbStubHelper::setActivityId(QString activityId)
+{
+ testActivityId = activityId;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+QCoreApplication::QCoreApplication(int &argc, char **argv)
+{
+
+}
+
+
+void QCoreApplication::quit()
+{
+ testQuitCalled = true;
+}
+
+QApplication::QApplication(QApplication::QS60MainApplicationFactory factory, int &argc, char **argv, int version)
+: QCoreApplication(argc, argv)
+{
+
+}
+
+QApplication::~QApplication()
+{
+
+}
bool QGraphicsWidget::close()
{
@@ -130,11 +176,52 @@
testIsWidgetRaised = true;
}
+QPixmap QPixmap::grabWidget(QWidget *widget, const QRect &rect)
+{
+ Q_UNUSED(widget);
+ Q_UNUSED(rect);
+ return QPixmap();
+}
+
// -----------------------------------------------------------------------------
//
// -----------------------------------------------------------------------------
//
-HbApplication::HbApplication(int &/*argc*/, char */*argv*/[])
+HbActivityManager::HbActivityManager(QObject *parent) : QObject(parent)
+{
+
+}
+HbActivityManager::~HbActivityManager()
+{
+
+}
+
+bool HbActivityManager::addActivity(const QString &activityId, const QVariant &data, const QVariantHash ¶meters)
+{
+ testActivities.append(parameters);
+}
+bool HbActivityManager::removeActivity(const QString &activityId)
+{
+ if ( !testActivities.isEmpty() ){
+ testActivities.takeFirst();
+ }
+}
+QList<QVariantHash> HbActivityManager::activities() const
+{
+ return testActivities;
+}
+
+bool HbActivityManager::waitActivity()
+{
+ return true;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+HbApplication::HbApplication(int &argc, char *argv[]) :
+ QApplication(0, argc, argv, 0)
{
}
@@ -147,9 +234,26 @@
testQuitCalled = true;
}
-void QCoreApplication::quit()
+HbActivityManager *HbApplication::activityManager()
+{
+ return &testActivityManager;
+}
+
+Hb::ActivationReason HbApplication::activateReason() const
{
- testQuitCalled = true;
+ return testActivationReason;
+}
+QVariantHash HbApplication::activateParams() const
+{
+ return QVariantHash();
+}
+QString HbApplication::activateId() const
+{
+ return testActivityId;
+}
+QVariant HbApplication::activateData()
+{
+ return QVariant();
}
// -----------------------------------------------------------------------------
@@ -191,6 +295,7 @@
Q_UNUSED(windowFlags)
testViewCount = 0;
testWindow = this;
+ testViews.clear();
}
HbMainWindow::~HbMainWindow()
@@ -211,13 +316,17 @@
QRectF HbMainWindow::layoutRect() const
{
- return QRectF(0, 0, 100,100);
+ if (windowOrientation == Qt::Vertical) {
+ return QRectF(0, 0, 360, 640);
+ } else {
+ return QRectF(0, 0, 640, 360);
+ }
}
HbView *HbMainWindow::addView(QGraphicsWidget *widget)
{
- Q_UNUSED(widget)
testViewCount++;
+ testViews.append( static_cast<HbView*>(widget) );
}
void HbMainWindow::setCurrentView(HbView *view, bool animate, Hb::ViewSwitchFlags flags)
@@ -227,10 +336,11 @@
testView = view;
}
-int HbMainWindow::viewCount() const
+QList<HbView *> HbMainWindow::views() const
{
- return testViewCount;
+ return testViews;
}
+
HbView *HbMainWindow::currentView() const
{
return testView;
@@ -272,16 +382,6 @@
}
}
-
-HbAction *HbDialog::exec()
-{
- if (selectedActionString == "primary") {
- return primaryAction();
- } else {
- return 0;
- }
-}
-
void QTimer::singleShot(int msec, QObject *receiver, const char *member)
{
testSingleShotTimer = true;
--- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h Fri Jun 11 13:38:41 2010 +0300
@@ -35,6 +35,8 @@
static bool isWidgetOpen();
static bool isWidgetRaised();
static void setColorScheme(QColor col);
+ static void setActivityReason(Hb::ActivationReason reason);
+ static void setActivityId(QString activityId);
};
#endif
--- a/logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/ut_logsapp.pro Fri Jun 11 13:38:41 2010 +0300
@@ -48,6 +48,7 @@
HEADERS += inc/ut_logseffecthandler.h
HEADERS += inc/ut_logspageindicator.h
HEADERS += inc/ut_logspageindicatoritem.h
+HEADERS += inc/ut_logsservicehandler.h
HEADERS += ../../inc/logsmainwindow.h
HEADERS += ../../inc/logsviewmanager.h
HEADERS += ../../inc/logsrecentcallsview.h
@@ -55,12 +56,12 @@
HEADERS += ../../inc/logsdetailsview.h
HEADERS += ../../inc/logsmatchesview.h
HEADERS += ../../inc/logsservicehandler.h
+HEADERS += ../../inc/logsservicehandlerold.h
HEADERS += ../../inc/logseffecthandler.h
HEADERS += ../../inc/logspageindicator.h
HEADERS += ../../inc/logspageindicatoritem.h
#HEADERS += ../../../logsengine/inc/logscommondata.h
HEADERS += ../../../logsengine/inc/logsconfigurationparams.h
-HEADERS += inc/ut_logsservicehandler.h
HEADERS += logsengine_stub/logscontact.h
HEADERS += logsengine_stub/logsforegroundwatcher.h
HEADERS += ./stubs/dialpad.h
@@ -97,6 +98,7 @@
SOURCES += ../../src/logsdetailsview.cpp
SOURCES += ../../src/logsmatchesview.cpp
SOURCES += ../../src/logsservicehandler.cpp
+SOURCES += ../../src/logsservicehandlerold.cpp
SOURCES += ../../src/logseffecthandler.cpp
SOURCES += ../../src/logspageindicator.cpp
SOURCES += ../../src/logspageindicatoritem.cpp
--- a/logsui/logscntfinder/src/logscntfinder.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logscntfinder/src/logscntfinder.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -307,13 +307,8 @@
entry->setPhoneNumber(
contactPhoneNumber.value( QContactPhoneNumber::FieldNumber ) );
QContactAvatar contactAvatar = contact.detail<QContactAvatar>();
- QString subType = contactAvatar.value( QContactAvatar::FieldSubType );
- QString avatar = contactAvatar.value( QContactAvatar::FieldAvatar );
-
- if ( subType == QLatin1String( QContactAvatar::SubTypeImage ) &&
- !avatar.isEmpty() ) {
- entry->setAvatarPath( avatar );
- }
+ QString avatar = contactAvatar.value( QContactAvatar::FieldImageUrl );
+ entry->setAvatarPath( avatar );
updateResult( entry );
}
--- a/logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinder.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinder.h Fri Jun 11 13:38:41 2010 +0300
@@ -14,23 +14,51 @@
* Description:
*
*/
-#ifndef UT_CNTPREFILTERING_H
-#define UT_CNTPREFILTERING_H
+#ifndef PT_LOGSCNTFINDER_H
+#define PT_LOGSCNTFINDER_H
#include <QObject>
#include <qcontactmanager.h>
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<int> 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/inc/pt_logscntfinderqwerty.h Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef PT_LOGSCNTFINDERQWERTY_H
+#define PT_LOGSCNTFINDERQWERTY_H
+
+#include <QObject>
+#include <qcontactmanager.h>
+
+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
--- a/logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/pt_logscntfinder.pro Fri Jun 11 13:38:41 2010 +0300
@@ -37,8 +37,10 @@
# Input
HEADERS += inc\pt_logscntfinder.h
-
+ HEADERS += inc\pt_logscntfinderqwerty.h
SOURCES += src\pt_logscntfinder.cpp
+ SOURCES += src\pt_logscntfinderqwerty.cpp
+ SOURCES += src\main.cpp
symbian: {
TARGET.UID2 = 0x100039CE
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/src/main.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,55 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#include <QtTest/QtTest>
+
+#include "pt_logscntfinder.h"
+#include "pt_logscntfinderqwerty.h"
+
+
+
+int main(int argc, char *argv[]) //on HW
+{
+ int samples = 100;
+ for (int i=0; i<argc; i++) {
+ if (QString(argv[i]) == "-s") {
+ samples = QString(argv[i+1]).toInt();
+ }
+ }
+
+ QApplication app(argc, argv);
+
+ PT_LogsCntFinder pt_logscntfinder( samples );
+ QString resultFileName = "c:/data/others/pt_logscntfinder.txt";
+ QStringList args_logsCntFinder( "PT_logscntfinder");
+ args_logsCntFinder << "-o" << resultFileName;
+ QTest::qExec(&pt_logscntfinder, args_logsCntFinder);
+
+ PT_LogsCntFinderQwerty pt_LogsCntFinderQwerty( samples );
+ resultFileName = "c:/data/others/pt_logscntfinderqwerty.txt";
+ QStringList args_logsCntFinderQwertry( "PT_LogsCntFinderQwerty");
+ args_logsCntFinder << "-o" << resultFileName;
+ QTest::qExec(&pt_LogsCntFinderQwerty, args_logsCntFinderQwertry);
+
+ return 0;
+}
+
+
+
+
+
--- a/logsui/logscntfinder/tsrc/pt_logscntfinder/src/pt_logscntfinder.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/src/pt_logscntfinder.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -14,7 +14,7 @@
* Description:
*
*/
-#include "pt_LogsCntFinder.h"
+#include "pt_Logscntfinder.h"
#include "logscntfinder.h"
#include <qtcontacts.h>
@@ -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<int> 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<QContactLocalId> 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<QContactLocalId> 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<QString> firstnamelist;
- QList<QString> 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<QContactLocalId> 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<argc; i++) {
- if (QString(argv[i]) == "-s") {
- samples = QString(argv[i+1]).toInt();
- }
- }
-
- QApplication app(argc, argv);
-
- pt_LogsCntFinder pt_logscntfinder( samples );
- QString resultFileName = "c:/data/others/pt_logscntfinder.txt";
- QStringList args_logsCntFinder( "pt_logscntfinder");
- args_logsCntFinder << "-o" << resultFileName;
- QTest::qExec(&pt_logscntfinder, args_logsCntFinder);
- return 0;
-}
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logscntfinder/tsrc/pt_logscntfinder/src/pt_logscntfinderqwerty.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,115 @@
+/*
+* 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 "pt_logscntfinderqwerty.h"
+#include "pt_logscntfinder.h"
+
+#include <qtcontacts.h>
+#include <QtTest/QtTest>
+
+
+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<QContactLocalId> 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<QContactLocalId> 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<PtTest> 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";
+}
+
--- a/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h Fri Jun 11 13:38:41 2010 +0300
@@ -26,7 +26,7 @@
class LogsCntFinder;
-class st_LogsCntFinder : public QObject
+class ST_LogsCntFinder : public QObject
{
Q_OBJECT
@@ -48,14 +48,33 @@
void cleanup();
private slots: //test methods
- void testPredictiveSearchQuery();
- void testPredictiveThaiSearchQuery();
- void testKeymap();
+
+ void testKeymap_2();
+ void testKeymap_3();
+ void testKeymap_4();
+ void testKeymap_5();
+ void testKeymap_6();
+ void testKeymap_7();
+ void testKeymap_8();
+ void testKeymap_9();
void testPredictiveSearchQueryZeroStart();
+ void testPredictiveSearchQueryZeroStartZeroEnd();
void testPredictiveSearchQueryZeroMiddle();
+ void testPredictiveSearchQueryMultiZerosMiddle();
+ void testPredictiveSearchQueryZeroMiddleLong();
+ void testPredictiveSearchQueryMultiZerosAndZeroMiddle();
+ void testPredictiveSearchQueryPartialCached();
+ void testPredictiveSearchQueryFullyCached();
+ void testPredictiveSearchQueryPartialCachedNoResults();
+ void testPredictiveSearchQueryFullyCachedNoResults();
+ void testPredictiveSearchQueryCachedZeroCase();
+ void testPredictiveSearchQueryLogs();
+ void testPredictiveSearchQueryLogsZeroCase();
+ void testPredictiveSearchQueryLogsContactsPartialCached();
+ void testPredictiveSearchQueryLogsContactsFullyCached();
+ void testPredictiveSearchQueryLogsContactsZeroCase();
+ void testPredictiveSearchQueryLogsContactsPhoneNumberMatch();
void testPredictiveSearchQueryLimit();
- void testPredictiveSearchQueryLogs();
- void testPredictiveSearchQueryLogsContacts();
void testQueryOrder();
private:
@@ -71,7 +90,6 @@
void createContactsForQueryOrder();
void createContactsForQueryZero();
void createHistoryEvents();
- void createThaiContacts();
void createLogEvent(
QString firstname,
QString Lastname,
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinderqwerty.h Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,68 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef ST_LOGSCNTFINDERQWERTY_H
+#define ST_LOGSCNTFINDERQWERTY_H
+
+#include <QObject>
+#include <qcontactmanager.h>
+#include <hbinputlanguage.h>
+
+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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinderthai.h Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#ifndef ST_LOGSCNTFINDERTHAI_H
+#define ST_LOGSCNTFINDERTHAI_H
+
+#include <QObject>
+#include <qcontactmanager.h>
+#include <hbinputlanguage.h>
+
+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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/src/main.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,71 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#include <QtTest/QtTest>
+
+#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<argc; i++) {
+ if (QString(argv[i]) == "-prompt")
+ promptOnExit = true;
+ else if (QString(argv[i]) == "-noqapp")
+ useQApplication = false;
+ }
+ printf("Running tests...\n");
+
+ QApplication* app = 0;
+ if ( useQApplication )
+ app = new QApplication(argc, argv);
+
+ TestResultXmlParser parser;
+ QString resultFileName;
+
+ STEST_CLASS( ST_LogsCntFinder );
+ STEST_CLASS( ST_LogsCntFinderThai );
+ STEST_CLASS( ST_LogsCntFinderQwerty );
+
+ if (promptOnExit) {
+ printf("Press any key...\n");
+ getchar();
+ }
+ delete app;
+ return 0;
+}
+
+
+
+
--- a/logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinder.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinder.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -22,18 +22,33 @@
#include <QtTest/QtTest>
#include <hbinputsettingproxy.h>
-void st_LogsCntFinder::initTestCase()
+
+#define CHECK_RESULTS( count, first, last )\
+ for(int i=0;i<count; i++ ) {\
+ if ( i == 0 ) {\
+ QCOMPARE(m_finder->resultAt(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<QContactLocalId> cnt_ids = m_manager->contactIds();
qDebug() << "contacts now before deleting" << cnt_ids.count();
-
- QVERIFY(m_manager->removeContacts(&cnt_ids, 0));
+
+ QVERIFY( m_manager->removeContacts(cnt_ids, 0 ) );
cnt_ids = m_manager->contactIds();
QCOMPARE(cnt_ids.count(), 0);
@@ -54,7 +69,7 @@
}
}
-void st_LogsCntFinder::cleanup()
+void ST_LogsCntFinder::cleanup()
{
delete m_manager;
m_manager = 0;
@@ -65,7 +80,7 @@
}
-void st_LogsCntFinder::createContacts()
+void ST_LogsCntFinder::createContacts()
{
/*Create contacts in Contacts DB for keymap testing
Stefann Yadira
@@ -99,41 +114,33 @@
int contactsCount = m_manager->contactIds().count();
QCOMPARE(contactsCount, 13);
- qDebug() << "st_LogsCntFinder::createContacts_testKeymap. created " << contactsCount << " contacts";
}
-void st_LogsCntFinder::createThaiContacts()
+/*
+Dlice 00202 Qwerty 45789348
+#Paula 2003 Augustin Ci 0078945617
+Paula 02010 Ezerty Adam 78945617
+Ced Y,g +78945617
+Jari-Pekka Baraniktestteste 78945617
+*/
+void ST_LogsCntFinder::createContactsForQueryZero()
{
- /*Create contacts in Contacts DB
+ createContacts();
+ createOneContact( QString("Dlice 00202"), QString("Qwerty"), QString("45789348") );
+ createOneContact( QString("#Paula 2003"), QString("Augustin Ci"), QString("0078945617") );
+ createOneContact( QString("Paula 02010"), QString("Ezerty Adam"), QString("78945617") );
+ createOneContact( QString("Ced"), QString("Y,g"), QString("+78945617") );
+ createOneContact( QString("Jari-Pekka"), QString(" "), QString("78945617") );
- */
-
- const QChar thaiFName1[] = {0x0E06,0x0E0A}; // map:23
- const QChar thaiLName1[] = {0x0E0E,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };//map 456789
-
- QString first ( thaiFName1, 2 );
- QString last ( thaiFName1, 6 );
- createOneContact( first, last, QString("932472398") );
-
- const QChar thaiFName2[] = {0x0E30,0x0E0A};//#3,
- const QChar thaiLName2[] = {0x0E2F,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };//*56789
-
- QString first2 ( thaiFName1, 2 );
- QString last2 ( thaiFName1, 6 );
- createOneContact( first2, last2, QString("932472398") );
-
-
-
int contactsCount = m_manager->contactIds().count();
- QCOMPARE(contactsCount, 2);
- qDebug() << "st_LogsCntFinder::createThaiContacts_ThaiSearch. created " << contactsCount << " contacts";
-
-
+ QCOMPARE(contactsCount, 18);
}
-void st_LogsCntFinder::createHistoryEvents()
+
+
+void ST_LogsCntFinder::createHistoryEvents()
{
createLogEvent( QString("Stefann Albert"), QString("Fedrernn"), QString("932472398") );
createLogEvent( QString("Jonn"), QString("Lennon"), QString("932472398") );
@@ -141,7 +148,7 @@
}
-void st_LogsCntFinder::createLogEvent(QString firstname, QString lastname,
+void ST_LogsCntFinder::createLogEvent(QString firstname, QString lastname,
QString phnumber)
{
LogsCntEntryHandle* dummy = 0;
@@ -156,8 +163,20 @@
}
+void ST_LogsCntFinder::createContactsForQueryOrder()
+{
+ createContacts();
+ createOneContact( QString("Anna"), QString("Qwerty"), QString("45789348") );
+ createOneContact( QString("Paula"), QString("Qwerty"), QString("78945617") );
+ createOneContact( QString("Paula"), QString("Azerty"), QString("78945617") );
-void st_LogsCntFinder::createOneContact(QString firstname, QString Lastname,
+ int contactsCount = m_manager->contactIds().count();
+ QCOMPARE(contactsCount, 16);
+}
+
+
+
+void ST_LogsCntFinder::createOneContact(QString firstname, QString Lastname,
QString phnumber)
{
//Currenlty we can only fetch firstname,lastname,companyname and sip/email/phone from the databse
@@ -177,7 +196,7 @@
phonecontact.saveDetail(&number);
m_manager->saveContact(&phonecontact);
- qDebug() << "st_LogsCntFinder::createOneContact done";
+ qDebug() << "ST_LogsCntFinder::createOneContact done";
}
@@ -186,138 +205,6 @@
// Tests
//
-void st_LogsCntFinder::testPredictiveThaiSearchQuery()
-{
- HbInputLanguage thai( QLocale::Thai );
- HbInputSettingProxy::instance()->setGlobalInputLanguage( thai );
-
- createThaiContacts();
-
- //There is no recent call in logs UI
- //case 1
- /*m_finder->predictiveSearchQuery( QString("2") );
- QCOMPARE( m_finder->resultsCount(), 1 );*/
- qDebug() << "-- 2 query starts --";
- m_finder->predictiveSearchQuery( QString("2") );
- qDebug() << "found " << m_finder->resultsCount() << " matches:";
-
- qDebug() << "-- 4 query starts --";
- m_finder->predictiveSearchQuery( QString("4") );
- qDebug() << "found " << m_finder->resultsCount() << " matches:";
- qDebug() << "-- 402 query starts --";
- m_finder->predictiveSearchQuery( QString("402") );
- qDebug() << "found " << m_finder->resultsCount() << " matches:";
- qDebug() << "-- *4 query starts --";
- m_finder->predictiveSearchQuery( QString("*4") );
- qDebug() << "found " << m_finder->resultsCount() << " matches:";
- qDebug() << "-- *402### query starts --";
- m_finder->predictiveSearchQuery( QString("*402###") );
- qDebug() << "found " << m_finder->resultsCount() << " matches:";
-
- /*m_finder->predictiveSearchQuery( QString("4") );
- QCOMPARE( m_finder->resultsCount(), 1 );
-
- m_finder->predictiveSearchQuery( QString("402") );
- QCOMPARE( m_finder->resultsCount(), 1 );
-
- m_finder->predictiveSearchQuery( QString("*4") );
- QCOMPARE( m_finder->resultsCount(), 1 );
-
- m_finder->predictiveSearchQuery( QString("*402###") );
- QCOMPARE( m_finder->resultsCount(), 1 );
-
- m_finder->predictiveSearchQuery( QString("*4***00002###") );
- QCOMPARE( m_finder->resultsCount(), 1 );
- */
-
-
-}
-
-
-// Test basic predictive search, all records with names starting letters "J, K, L" are matched
-void st_LogsCntFinder::testPredictiveSearchQuery()
-{
- createContacts();
-
- //There is no recent call in logs UI
- //case 1
- m_finder->predictiveSearchQuery( QString("5") );
- QCOMPARE( m_finder->resultsCount(), 5 );
- //see half of matched results
- //results == for(int i =0;i<f->resultCount() / 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;i<f->resultCount();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;i<f->resultCount();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;i<f->resultCount() / 2;i++){f->resultAt(i);}
- /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString("Levis"));
- QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Augustin Zi"));
- QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString(""));
- QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/
-
- m_finder->predictiveSearchQuery( QString("20") );
- QCOMPARE( m_finder->resultsCount(), 3 );
- m_finder->predictiveSearchQuery( QString("209") );
- QCOMPARE( m_finder->resultsCount(), 1 );
- m_finder->predictiveSearchQuery( QString("20") );
- QCOMPARE( m_finder->resultsCount(), 3 );
- m_finder->predictiveSearchQuery( QString("2") );
- QCOMPARE( m_finder->resultsCount(), 3 );
-
-}
-
/* Test itut keymap predictive search, checking that press key "2", records with names starting letters "A, B, C" are matched;
Press key "3", records with names starting letters "D,E,F" are matched;
Press key "4", records with names starting letters "G,H,I" are matched;
@@ -329,66 +216,86 @@
Press key "0", records with names starting letters "space" etc. are matched;
Press key "1", records with names starting letters "-,Ä,Ö" etc. are matched;
*/
-void st_LogsCntFinder::testKeymap()
+void ST_LogsCntFinder::testKeymap_2()
+{
+ createContacts();
+ const LogsCntEntry* data;
+ m_finder->predictiveSearchQuery( QString("2") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ data = &m_finder->resultAt( 0 );
+ QCOMPARE( data->firstName().count(), 1 );
+}
+
+void ST_LogsCntFinder::testKeymap_3()
+{
+ createContacts();
+ const LogsCntEntry* data;
+ m_finder->predictiveSearchQuery( QString("3") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ data = &m_finder->resultAt( 0 );
+ QCOMPARE( data->firstName().count(), 1 );
+}
+
+void ST_LogsCntFinder::testKeymap_4()
+{
+ createContacts();
+ const LogsCntEntry* data;
+ m_finder->predictiveSearchQuery( QString("4") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ data = &m_finder->resultAt( 0 );
+ QCOMPARE( data->firstName().count(), 1 );
+}
+
+void ST_LogsCntFinder::testKeymap_5()
{
createContacts();
const LogsCntEntry* data;
-
- for (int i = 2; i < 10; i++)
- {
- m_finder->predictiveSearchQuery( QString::number(i) );
- switch( i )
- {
- case 2:
- QCOMPARE( m_finder->resultsCount(), 3 );
- data = &m_finder->resultAt( 0 );
- QCOMPARE( data->firstName().count(), 1 );
- break;
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 5 );
+ data = &m_finder->resultAt( 0 );
+ QCOMPARE( data->firstName().count(), 1 );
+}
- case 3:
- QCOMPARE( m_finder->resultsCount(), 3 );
- data = &m_finder->resultAt( 0 );
- QCOMPARE( data->firstName().count(), 1 );
- break;
-
- case 4:
- QCOMPARE( m_finder->resultsCount(), 3 );
- data = &m_finder->resultAt( 0 );
- QCOMPARE( data->firstName().count(), 1 );
- break;
+void ST_LogsCntFinder::testKeymap_6()
+{
+ createContacts();
+ const LogsCntEntry* data;
+ m_finder->predictiveSearchQuery( QString("6") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ data = &m_finder->resultAt( 0 );
+ QCOMPARE( data->firstName().count(), 1 );
+}
- case 5:
- QCOMPARE( m_finder->resultsCount(), 5 );
- data = &m_finder->resultAt( 0 );
- QCOMPARE( data->firstName().count(), 1 );
- break;
-
- case 6:
- QCOMPARE( m_finder->resultsCount(), 3 );
- data = &m_finder->resultAt( 0 );
- QCOMPARE( data->firstName().count(), 1 );
- break;
+void ST_LogsCntFinder::testKeymap_7()
+{
+ createContacts();
+ const LogsCntEntry* data;
+ m_finder->predictiveSearchQuery( QString("7") );
+ QCOMPARE( m_finder->resultsCount(), 5 );
+ data = &m_finder->resultAt( 0 );
+ QCOMPARE( data->firstName().count(),1 );
+}
- case 7:
- QCOMPARE( m_finder->resultsCount(), 5 );
- data = &m_finder->resultAt( 0 );
- QCOMPARE( data->firstName().count(),1 );
- break;
+void ST_LogsCntFinder::testKeymap_8()
+{
+ createContacts();
+ const LogsCntEntry* data;
+ m_finder->predictiveSearchQuery( QString("8") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ data = &m_finder->resultAt( 0 );
+ QCOMPARE( data->firstName().count(), 1 );
+}
- case 8:
- QCOMPARE( m_finder->resultsCount(), 2 );
- data = &m_finder->resultAt( 0 );
- QCOMPARE( data->firstName().count(), 1 );
- break;
+void ST_LogsCntFinder::testKeymap_9()
+{
+ createContacts();
+ const LogsCntEntry* data;
+ m_finder->predictiveSearchQuery( QString("9") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ data = &m_finder->resultAt( 0 );
+ QCOMPARE( data->firstName().count(), 1 );
+}
- case 9:
- QCOMPARE( m_finder->resultsCount(), 3 );
- data = &m_finder->resultAt( 0 );
- QCOMPARE( data->firstName().count(), 1 );
- break;
- }
- }
-}
/* Test zero query search: 1. zero between "1-9" numbers, then first zero works as "AND" statement;
2. (multiple) zero at beginning; 3. (multiple) zero at the end;
@@ -396,59 +303,350 @@
6. Query limit is 15, the 16th is ignored, and first 0 works as "AND" statement */
-void st_LogsCntFinder::testPredictiveSearchQueryZeroStart()
+void ST_LogsCntFinder::testPredictiveSearchQueryZeroStart()
{
createContactsForQueryZero();
m_finder->predictiveSearchQuery( QString("00202") );
QCOMPARE( m_finder->resultsCount(), 2 );
-
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryZeroStartZeroEnd()
+{
+ createContactsForQueryZero();
+
m_finder->predictiveSearchQuery( QString("02010") );
QCOMPARE( m_finder->resultsCount(), 1 );
+}
-}
-void st_LogsCntFinder::testPredictiveSearchQueryZeroMiddle()
+void ST_LogsCntFinder::testPredictiveSearchQueryZeroMiddle()
{
createContactsForQueryZero();
- m_finder->predictiveSearchQuery( QString("566") );
- QCOMPARE( m_finder->resultsCount(), 2 );
m_finder->predictiveSearchQuery( QString("56603") );
QCOMPARE( m_finder->resultsCount(), 1 );
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryMultiZerosMiddle()
+{
+ createContactsForQueryZero();
m_finder->predictiveSearchQuery( QString("2003") );
QCOMPARE( m_finder->resultsCount(), 2 );
-
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryZeroMiddleLong()
+{
+ createContactsForQueryZero();
+
m_finder->predictiveSearchQuery( QString("2272645837883065") );
QCOMPARE( m_finder->resultsCount(), 1 );
-
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryMultiZerosAndZeroMiddle()
+{
+ createContactsForQueryZero();
+
m_finder->predictiveSearchQuery( QString("200904") );
QCOMPARE( m_finder->resultsCount(), 1 );
}
-/*
-Dlice 00202 Qwerty 45789348
-#Paula 2003 Augustin Ci 0078945617
-Paula 02010 Ezerty Adam 78945617
-Ced Y,g +78945617
-Jari-Pekka Baraniktestteste 78945617
-*/
-void st_LogsCntFinder::createContactsForQueryZero()
+
+// Test basic predictive search, all records with names starting letters "J, K, L" are matched
+
+// 5 -> 56 -> 5 -> 56 (not all cached)
+void ST_LogsCntFinder::testPredictiveSearchQueryPartialCached()
+{
+ createContacts();
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 5 );
+ //see half of matched results
+ CHECK_RESULTS( 3, "Jonn", "Ennon" );
+
+ m_finder->predictiveSearchQuery( QString("56") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ //see half of matched results
+ CHECK_RESULTS( 1, "Jonn", "Ennon" );
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 5 );
+ CHECK_RESULTS( 3, "Jonn", "Ennon" );
+
+ m_finder->predictiveSearchQuery( QString("56") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ //see half of matched results
+ CHECK_RESULTS( 1, "Jonn", "Ennon" );
+
+}
+
+// 5 -> 56 -> 5 -> 56 (all cached)
+void ST_LogsCntFinder::testPredictiveSearchQueryFullyCached()
+{
+ createContacts();
+
+ //case 1
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 5 );
+ //see all matched results
+ CHECK_RESULTS( 5, "Jonn", "Ennon" );
+
+ m_finder->predictiveSearchQuery( QString("56") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ //see all of matched results
+ CHECK_RESULTS( 2, "Jonn", "Ennon" );
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 5 );
+ //see all of matched results
+ CHECK_RESULTS( 5, "Jonn", "Ennon" );
+
+ m_finder->predictiveSearchQuery( QString("56") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ //see all of matched results
+ CHECK_RESULTS( 2, "Jonn", "Ennon" );
+
+}
+
+// 6 -> 69 (no match) -> 692 (no match) -> 69 (no match) -> 6 -> 69 (not all cached)
+void ST_LogsCntFinder::testPredictiveSearchQueryPartialCachedNoResults()
+{
+ createContacts();
+
+ m_finder->predictiveSearchQuery( QString("6") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ //see half of matched results
+ CHECK_RESULTS( 2, "Maria-Zola", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("69") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+ m_finder->predictiveSearchQuery( QString("692") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+ m_finder->predictiveSearchQuery( QString("69") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+
+ m_finder->predictiveSearchQuery( QString("6") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ //see half of matched results
+ CHECK_RESULTS( 2, "Maria-Zola", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("69") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+
+}
+
+// 6 -> 69 (no match) -> 692 (no match) -> 69 (no match) -> 6 -> 69 (all cached)
+void ST_LogsCntFinder::testPredictiveSearchQueryFullyCachedNoResults()
+{
+ createContacts();
+
+ m_finder->predictiveSearchQuery( QString("6") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ //see all of matched results
+ CHECK_RESULTS( 3, "Maria-Zola", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("69") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+ m_finder->predictiveSearchQuery( QString("692") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+ m_finder->predictiveSearchQuery( QString("69") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+
+ m_finder->predictiveSearchQuery( QString("6") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ //see all of matched results
+ CHECK_RESULTS( 3, "Maria-Zola", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("69") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+
+
+}
+
+// 6 -> 69 (no match) -> 692 (no match) -> 69 (no match) -> 6 (all cached)
+void ST_LogsCntFinder::testPredictiveSearchQueryCachedZeroCase()
{
createContacts();
- createOneContact( QString("Dlice 00202"), QString("Qwerty"), QString("45789348") );
- createOneContact( QString("#Paula 2003"), QString("Augustin Ci"), QString("0078945617") );
- createOneContact( QString("Paula 02010"), QString("Ezerty Adam"), QString("78945617") );
- createOneContact( QString("Ced"), QString("Y,g"), QString("+78945617") );
- createOneContact( QString("Jari-Pekka"), QString(" "), QString("78945617") );
+
+ m_finder->predictiveSearchQuery( QString("2") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi
+
+ m_finder->predictiveSearchQuery( QString("20") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi
+
+ m_finder->predictiveSearchQuery( QString("209") );
+ QCOMPARE( m_finder->resultsCount(), 1 );
+ CHECK_RESULTS( 1, "Levis", "Augustin" ); //Augustin Zi
+
+ m_finder->predictiveSearchQuery( QString("20") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi
+
+ m_finder->predictiveSearchQuery( QString("2") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ CHECK_RESULTS( 2, "Levis", "Augustin" );//Augustin Zi
+
+}
+
+
+//There is recent call in logs, no contacts DB
+void ST_LogsCntFinder::testPredictiveSearchQueryLogs()
+{
+ createHistoryEvents();
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
- int contactsCount = m_manager->contactIds().count();
- QCOMPARE(contactsCount, 18);
+ m_finder->predictiveSearchQuery( QString("53") );
+ QCOMPARE( m_finder->resultsCount(), 1 );
+ CHECK_RESULTS( 1, "Jonn", "Lennon" );
+
+ m_finder->predictiveSearchQuery( QString("539") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+
+ m_finder->predictiveSearchQuery( QString("53") );
+ QCOMPARE( m_finder->resultsCount(), 1 );
+ CHECK_RESULTS( 1, "Jonn", "Lennon" );
+
+ QCOMPARE( m_finder->resultsCount(), 0 );
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryLogsZeroCase()
+{
+ createHistoryEvents();
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("50") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("503") );
+ QCOMPARE( m_finder->resultsCount(), 1 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("50") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
}
+//There is recent call in logs, and contacts DB
+void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsPartialCached()
+{
+ createHistoryEvents();
+ createContacts();
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 7 );
+ CHECK_RESULTS( 5, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("56") );
+ QCOMPARE( m_finder->resultsCount(), 4 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("569") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+
+ m_finder->predictiveSearchQuery( QString("56") );
+ QCOMPARE( m_finder->resultsCount(), 4 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 7 );
+ CHECK_RESULTS( 5, "Dim-Petter", "Jones" );
+
+
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsFullyCached()
+{
+ createHistoryEvents();
+ createContacts();
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 7 );
+ CHECK_RESULTS( 7, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("56") );
+ QCOMPARE( m_finder->resultsCount(), 4 );
+ CHECK_RESULTS( 4, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("569") );
+ QCOMPARE( m_finder->resultsCount(), 0 );
+
+ m_finder->predictiveSearchQuery( QString("56") );
+ QCOMPARE( m_finder->resultsCount(), 4 );
+ CHECK_RESULTS( 4, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 7 );
+ CHECK_RESULTS( 7, "Dim-Petter", "Jones" );
+
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsZeroCase()
+{
+ createHistoryEvents();
+ createContacts();
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 7 );
+ CHECK_RESULTS( 5, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("50") );
+ QCOMPARE( m_finder->resultsCount(), 7 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("503") );
+ QCOMPARE( m_finder->resultsCount(), 2 );
+ CHECK_RESULTS( 2, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("50") );
+ QCOMPARE( m_finder->resultsCount(), 7 );
+ CHECK_RESULTS( 5, "Dim-Petter", "Jones" );
+
+ m_finder->predictiveSearchQuery( QString("5") );
+ QCOMPARE( m_finder->resultsCount(), 7 );
+ CHECK_RESULTS( 5, "Dim-Petter", "Jones" );
+
+}
+
+void ST_LogsCntFinder::testPredictiveSearchQueryLogsContactsPhoneNumberMatch()
+{
+ createHistoryEvents();
+ createContacts();
+
+ m_finder->predictiveSearchQuery( QString("9") );
+ QCOMPARE( m_finder->resultsCount(), 6 ); //3 history + 3 contacts
+ CHECK_RESULTS( 5, "Stefann", "Fedrernn" );
+
+ m_finder->predictiveSearchQuery( QString("93") );
+ QCOMPARE( m_finder->resultsCount(), 3 );
+ CHECK_RESULTS( 1, "Stefann", "Fedrernn" );
+
+}
+
+
// Test query limit is 15, the 16th digit is ignored
-void st_LogsCntFinder::testPredictiveSearchQueryLimit()
+void ST_LogsCntFinder::testPredictiveSearchQueryLimit()
{
createContacts();
@@ -481,96 +679,7 @@
QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString("Baraniktestteste"));
}
-//There is recent call in logs, no contacts DB
-void st_LogsCntFinder::testPredictiveSearchQueryLogs()
-{
- createHistoryEvents();
-
- m_finder->predictiveSearchQuery( QString("5") );
- QCOMPARE( m_finder->resultsCount(), 2 );
-
- //case 1
- m_finder->predictiveSearchQuery( QString("5") );
- QCOMPARE( m_finder->resultsCount(), 2 );
- //see half of matched results
- //results == for(int i =0;i<f->resultCount() / 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;i<f->resultCount() / 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;i<f->resultCount() / 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;i<f->resultCount() / 2;i++){f->resultAt(i);}
- /*QCOMPARE(m_finder->resultAt(0).firstName().at(0).text(), QString(""));
- QCOMPARE(m_finder->resultAt(0).lastName().at(0).text(), QString(""));
- QCOMPARE(m_finder->resultAt(1).firstName().at(0).text(), QString(""));
- QCOMPARE(m_finder->resultAt(1).lastName().at(0).text(), QString(""));*/
-
- m_finder->predictiveSearchQuery( QString("50") );
- QCOMPARE( m_finder->resultsCount(), 2 );
- m_finder->predictiveSearchQuery( QString("503") );
- QCOMPARE( m_finder->resultsCount(), 1 );
- m_finder->predictiveSearchQuery( QString("50") );
- QCOMPARE( m_finder->resultsCount(), 2 );
- m_finder->predictiveSearchQuery( QString("5") );
- QCOMPARE( m_finder->resultsCount(), 2 );
-
-}
-
-void st_LogsCntFinder::testQueryOrder()
+void ST_LogsCntFinder::testQueryOrder()
{
createContactsForQueryOrder();
@@ -602,65 +711,3 @@
QCOMPARE(m_finder->resultAt(7).lastName().at(0).text(), QString("Yadira"));
}
-void st_LogsCntFinder::createContactsForQueryOrder()
-{
- createContacts();
- createOneContact( QString("Anna"), QString("Qwerty"), QString("45789348") );
- createOneContact( QString("Paula"), QString("Qwerty"), QString("78945617") );
- createOneContact( QString("Paula"), QString("Azerty"), QString("78945617") );
-
- int contactsCount = m_manager->contactIds().count();
- QCOMPARE(contactsCount, 16);
-}
-
-//QTEST_MAIN(st_LogsCntFinder);
-
-/*int main(int argc, char *argv[])
-{
- bool promptOnExit(true);
- bool xmlOutput(false);
-
- for (int i=0; i<argc; i++) {
- if (QString(argv[i]) == "-noprompt") {
- promptOnExit = false;
- }
- if (QString(argv[i]) == "-xml") {
- xmlOutput = true;
- }
- }
- printf("Running tests...\n");
-
- QApplication app(argc, argv);
- st_LogsCntFinder st_logscntfinder;
- QString resultFileName = "c:/data/others/st_LogsCntFinder";
- resultFileName.append(xmlOutput ? ".xml" : ".txt");
- QStringList args_logsCntFinder("st_logscntfinder");
- if (xmlOutput)
- args_logsCntFinder.append("-xml");
- args_logsCntFinder << "-v1" << "-o" << resultFileName;
- QTest::qExec(&st_logscntfinder, args_logsCntFinder);
-
- if (xmlOutput) {
- TestResultXmlParser parser;
- parser.parseAndPrintResults(resultFileName);
- }
-
- if (promptOnExit) {
- printf("Press any key...\n");
- getchar();
- }
-
- return 0;
-}*/
-
-int main(int argc, char *argv[]) //on HW
-{
- QApplication app(argc, argv);
-
- st_LogsCntFinder st_logscntfinder;
- QString resultFileName = "c:/data/others/st_logscntfinder.txt";
- QStringList args_logsCntFinder( "st_logscntfinder");
- args_logsCntFinder << "-o" << resultFileName;
- QTest::qExec(&st_logscntfinder, args_logsCntFinder);
- return 0;
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinderqwerty.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,277 @@
+/*
+* 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_logscntfinderqwerty.h"
+#include "testresultxmlparser.h"
+
+#include <qtcontacts.h>
+#include <QtTest/QtTest>
+#include <hbinputsettingproxy.h>
+
+
+#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<QContactLocalId> 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<QContactLocalId> 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<QContactLocalId> 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<QContactLocalId> 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<QContactLocalId> 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<QContactLocalId> 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<QContactLocalId> 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<QContactLocalId> 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" ) );
+
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinderthai.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,157 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+#include "st_logscntfinderthai.h"
+#include "logscntfinder.h"
+#include "testresultxmlparser.h"
+
+#include <qtcontacts.h>
+#include <QtTest/QtTest>
+#include <hbinputsettingproxy.h>
+
+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<QContactLocalId> 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 );
+
+
+}
+
+
--- a/logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro Fri Jun 11 13:38:41 2010 +0300
@@ -21,17 +21,14 @@
QT += testlib xml
CONFIG += qtestlib
CONFIG += hb
-HB = hbcore hbinput
+DEFINES += QT_NO_DEBUG_OUTPUT
-#include(../tsrc.pri)
-
-DEFINES += PBK_UNIT_TEST
DEPENDPATH += .
INCLUDEPATH += ./
INCLUDEPATH += ./inc
INCLUDEPATH += ../inc
-#DEPENDPATH += .
+DEPENDPATH += .
INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
INCLUDEPATH += ../../
INCLUDEPATH += ../../inc
@@ -39,18 +36,18 @@
INCLUDEPATH += ../../../tsrc/qtestutils/inc
# Input
-HEADERS += inc\st_logscntfinder.h
+HEADERS += inc/st_logscntfinder.h
+HEADERS += inc/st_logscntfinderqwerty.h
+HEADERS += inc/st_logscntfinderthai.h
-SOURCES += src\st_logscntfinder.cpp
+SOURCES += src/main.cpp
+SOURCES += src/st_logscntfinder.cpp
+SOURCES += src/st_logscntfinderqwerty.cpp
+SOURCES += src/st_logscntfinderthai.cpp
SOURCES += ../../../tsrc/qtestutils/src/testresultxmlparser.cpp
symbian: {
- TARGET.UID2 = 0x100039CE
- TARGET.UID3 = 0xEfa329b3
TARGET.CAPABILITY = ALL -TCB
TARGET.EPOCALLOWDLLDATA = 1
- LIBS += \
- -lxqservice \
- -lQtContacts \
- -llogscntfinder
+ LIBS += -lflogger -lqtcontacts -llogscntfinder
}
--- a/logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -254,8 +254,7 @@
}
if ( definitionId == QContactAvatar::DefinitionName){
QContactAvatar avatar;
- avatar.setValue(QContactAvatar::FieldSubType, QContactAvatar::SubTypeImage );
- avatar.setValue(QContactAvatar::FieldAvatar, "c:\\data\\images\\logstest1.jpg" );
+ avatar.setValue(QContactAvatar::FieldImageUrl, "c:\\data\\images\\logstest1.jpg" );
return avatar;
}
QContactDetail detail;
--- a/logsui/logsengine/bwins/logsengineu.def Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/bwins/logsengineu.def Fri Jun 11 13:38:41 2010 +0300
@@ -61,4 +61,8 @@
?clearList@LogsModel@@QAE_NW4ClearType@1@@Z @ 60 NONAME ; bool LogsModel::clearList(enum LogsModel::ClearType)
??1LogsContact@@UAE@XZ @ 61 NONAME ; LogsContact::~LogsContact(void)
?clearType@LogsFilter@@QBE?AW4ClearType@LogsModel@@XZ @ 62 NONAME ; enum LogsModel::ClearType LogsFilter::clearType(void) const
+ ?logsDetailsModel@LogsModel@@QAEPAVLogsDetailsModel@@AAVLogsEvent@@@Z @ 63 NONAME ; class LogsDetailsModel * LogsModel::logsDetailsModel(class LogsEvent &)
+ ?getLogsEvent@LogsDetailsModel@@QBE?AVLogsEvent@@XZ @ 64 NONAME ; class LogsEvent LogsDetailsModel::getLogsEvent(void) const
+ ?serialize@LogsEvent@@QAE_NAAVQDataStream@@@Z @ 65 NONAME ; bool LogsEvent::serialize(class QDataStream &)
+ ??0LogsEvent@@QAE@AAVQDataStream@@@Z @ 66 NONAME ; LogsEvent::LogsEvent(class QDataStream &)
--- a/logsui/logsengine/eabi/logsengineu.def Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/eabi/logsengineu.def Fri Jun 11 13:38:41 2010 +0300
@@ -86,4 +86,9 @@
_ZNK9LogsEvent8durationEv @ 85 NONAME
_ZNK9LogsEvent9directionEv @ 86 NONAME
_ZNK9LogsEvent9eventTypeEv @ 87 NONAME
+ _ZN9LogsEvent9serializeER11QDataStream @ 88 NONAME
+ _ZN9LogsEventC1ER11QDataStream @ 89 NONAME
+ _ZN9LogsEventC2ER11QDataStream @ 90 NONAME
+ _ZN9LogsModel16logsDetailsModelER9LogsEvent @ 91 NONAME
+ _ZNK16LogsDetailsModel12getLogsEventEv @ 92 NONAME
--- a/logsui/logsengine/inc/logsdetailsmodel.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/inc/logsdetailsmodel.h Fri Jun 11 13:38:41 2010 +0300
@@ -45,6 +45,7 @@
LOGSENGINE_EXPORT void clearEvent();
LOGSENGINE_EXPORT void getNumberToClipboard();
+ LOGSENGINE_EXPORT LogsEvent getLogsEvent() const;
public: // From QAbstractItemModel
--- a/logsui/logsengine/inc/logseventdata.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/inc/logseventdata.h Fri Jun 11 13:38:41 2010 +0300
@@ -23,6 +23,7 @@
// FORWARD DECLARATION
class CLogEvent;
+class QDataStream;
// CLASS DECLARATION
@@ -43,6 +44,11 @@
* Copy constructor.
*/
LogsEventData( const LogsEventData& data );
+
+ /**
+ * Construct from data stream
+ */
+ LogsEventData( QDataStream& serializedEvent );
/**
* Destructor.
@@ -79,6 +85,8 @@
unsigned int contactLocalId() const;
+ bool serialize( QDataStream& serializeDestination );
+
private:
void setContactLocalId( unsigned int id );
--- a/logsui/logsengine/logsengine.pro Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/logsengine.pro Fri Jun 11 13:38:41 2010 +0300
@@ -19,7 +19,6 @@
TARGET = logsengine
CONFIG += hb dll svg
-RESOURCES += logsengine.qrc
INCLUDEPATH += ./
INCLUDEPATH += ./inc
--- a/logsui/logsengine/logsengine.qrc Thu May 27 12:51:53 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,7 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
- <qresource prefix="/" >
- <file>themes/icons/hbdefault/scalable/qtg_large_missed_voice_call_unseen.svg</file>
- <file>themes/icons/hbdefault/scalable/qtg_large_missed_video_call_unseen.svg</file>
- <file>themes/icons/hbdefault/scalable/qtg_large_missed_voip_call_unseen.svg</file>
- </qresource>
-</RCC>
--- a/logsui/logsengine/logssymbianos/inc/logsdbconnector.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/logssymbianos/inc/logsdbconnector.h Fri Jun 11 13:38:41 2010 +0300
@@ -88,6 +88,13 @@
void dataRemoved(QList<int> 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
*/
--- a/logsui/logsengine/logssymbianos/src/logsdbconnector.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/logssymbianos/src/logsdbconnector.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -475,7 +475,7 @@
mAddedEventIndexes.append( mEvents.at(i)->index() );
}
}
-
+
bool doModelDataReset( !mRemovedEventIndexes.isEmpty() ||
!mAddedEventIndexes.isEmpty() ||
!mUpdatedEventIndexes.isEmpty() );
@@ -487,14 +487,25 @@
}
}
- if ( !mRemovedEventIndexes.isEmpty() ){
- emit dataRemoved(mRemovedEventIndexes);
- }
- if ( !mAddedEventIndexes.isEmpty() ){
- emit dataAdded(mAddedEventIndexes);
- }
- if ( !mUpdatedEventIndexes.isEmpty() ){
- emit dataUpdated(mUpdatedEventIndexes);
+ int changeCount = 0;
+ changeCount += mRemovedEventIndexes.isEmpty() ? 0 : 1;
+ changeCount += mAddedEventIndexes.isEmpty() ? 0 : 1;
+ changeCount += mUpdatedEventIndexes.isEmpty() ? 0 : 1;
+
+ if ( changeCount > 1 ){
+ // If having many changes, it is less error prone
+ // to just report reset.
+ emit dataReset();
+ } else {
+ if ( !mRemovedEventIndexes.isEmpty() ){
+ emit dataRemoved(mRemovedEventIndexes);
+ }
+ if ( !mAddedEventIndexes.isEmpty() ){
+ emit dataAdded(mAddedEventIndexes);
+ }
+ if ( !mUpdatedEventIndexes.isEmpty() ){
+ emit dataUpdated(mUpdatedEventIndexes);
+ }
}
deleteRemoved(readCount);
--- a/logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -256,9 +256,9 @@
QString QContactDetail::value(const QString& key) const
{
- if ( key == QContactName::FieldFirst ){
+ if ( key == QContactName::FieldFirstName ){
return logsFirstName;
- } else if ( key == QContactName::FieldLast ) {
+ } else if ( key == QContactName::FieldLastName ) {
return logsLastName;
} else if ( key == QContactPhoneNumber::FieldNumber ) {
return QString( "12345" );
--- a/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsdbconnector.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logsdbconnector.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -208,12 +208,14 @@
QSignalSpy spyAdded(mDbConnector, SIGNAL(dataAdded(QList<int>)));
QSignalSpy spyRemoved(mDbConnector, SIGNAL(dataRemoved(QList<int>)));
QSignalSpy spyUpdated(mDbConnector, SIGNAL(dataUpdated(QList<int>)));
+ 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<int> updatedIndexes = qvariant_cast< QList<int> >(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<int> removedIndexes = qvariant_cast< QList<int> >(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 );
--- a/logsui/logsengine/src/logsdetailsmodel.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/src/logsdetailsmodel.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -292,6 +292,15 @@
//
// -----------------------------------------------------------------------------
//
+LogsEvent LogsDetailsModel::getLogsEvent() const
+{
+ return *mEvent;
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
bool LogsDetailsModel::isAddress(QString value) const
{
QChar c('@');
--- a/logsui/logsengine/src/logsevent.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/src/logsevent.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -24,6 +24,7 @@
#include <qcontactname.h>
#include <qcontactonlineaccount.h>
#include <hbglobal.h>
+#include <QDataStream>
#include "logsevent.h"
#include "logseventparser.h"
#include "logseventdata.h"
@@ -347,6 +348,85 @@
}
// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+LogsEvent::LogsEvent( QDataStream& serializedEvent )
+{
+ LOGS_QDEBUG( "logs [ENG] -> LogsEvent::LogsEvent deserialize")
+ serializedEvent >> mLogId;
+ int tempEnum;
+ serializedEvent >> tempEnum;
+ mDirection = static_cast<LogsEvent::LogsDirection>( tempEnum );
+ serializedEvent >> tempEnum;
+ mEventType = static_cast<LogsEvent::LogsEventType>( 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<LogsEvent::LogsEventState>( tempEnum );
+ serializedEvent >> mIsLocallySeen;
+ serializedEvent >> mIsPrivate;
+ serializedEvent >> mIsUnknown;
+
+ LogsEventData* logsEventData = new LogsEventData(serializedEvent);
+ if ( serializedEvent.status() == QDataStream::ReadPastEnd ){
+ mLogsEventData = 0;
+ delete logsEventData;
+ } else {
+ mLogsEventData = logsEventData;
+ }
+ LOGS_QDEBUG( "logs [ENG] <- LogsEvent::LogsEvent deserialize")
+
+}
+
+// ----------------------------------------------------------------------------
+//
+// ----------------------------------------------------------------------------
+//
+bool LogsEvent::serialize( QDataStream& serializeDestination )
+{
+ LOGS_QDEBUG( "logs [ENG] -> LogsEvent::serialize")
+ serializeDestination << mLogId;
+ serializeDestination << mDirection;
+ serializeDestination << mEventType;
+ serializeDestination << mUid;
+
+ serializeDestination << mRemoteParty;
+ serializeDestination << mNumber;
+ serializeDestination << mDuplicates;
+ serializeDestination << mTime;
+ serializeDestination << mRingDuration;
+ serializeDestination << mIsRead;
+ serializeDestination << mIsALS;
+ serializeDestination << mDuration;
+
+ serializeDestination << mIndex;
+ serializeDestination << mIsInView;
+ serializeDestination << mEventState;
+ serializeDestination << mIsLocallySeen;
+ serializeDestination << mIsPrivate;
+ serializeDestination << mIsUnknown;
+
+ if ( mLogsEventData ){
+ mLogsEventData->serialize(serializeDestination);
+ }
+
+ LOGS_QDEBUG( "logs [ENG] <- LogsEvent::serialize")
+ return true;
+}
+
+// ----------------------------------------------------------------------------
// LogsEvent::RingDuration
//
// For ring duation feature
@@ -560,8 +640,8 @@
//
QString LogsEvent::parseContactName(const QContactName& name)
{
- QString firstName = name.value(QContactName::FieldFirst);
- QString lastName = name.value(QContactName::FieldLast);
+ QString firstName = name.value(QContactName::FieldFirstName);
+ QString lastName = name.value(QContactName::FieldLastName);
QString parsedName;
if (!lastName.isEmpty()) {
if (!firstName.isEmpty()) {
--- a/logsui/logsengine/src/logseventdata.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/src/logseventdata.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -19,9 +19,11 @@
#include "logseventdata.h"
#include "logsevent.h"
#include "logseventdataparser.h"
+#include "logslogger.h"
#include <QRegExp>
#include <QRegExpValidator>
+#include <QDataStream>
// ----------------------------------------------------------------------------
// 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
// ----------------------------------------------------------------------------
//
--- a/logsui/logsengine/src/logsmodel.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/src/logsmodel.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -59,6 +59,9 @@
this, SLOT( dataUpdated(QList<int>) ));
connect( mDbConnector, SIGNAL( dataRemoved(QList<int>) ),
this, SLOT( dataRemoved(QList<int>) ));
+ connect( mDbConnector, SIGNAL( dataReset() ),
+ this, SLOT( resetModel() ));
+
connect( hbInstance->theme(), SIGNAL ( changeFinished() ),
this, SLOT ( resetModel()));
mDbConnector->init();
@@ -183,6 +186,16 @@
}
// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+LogsDetailsModel* LogsModel::logsDetailsModel(LogsEvent& event)
+{
+ LOGS_QDEBUG( "logs [ENG] -> LogsModel::logsDetailsModel()" )
+ return new LogsDetailsModel( *mDbConnector, event );
+}
+
+// -----------------------------------------------------------------------------
// From QAbstractListModel
// -----------------------------------------------------------------------------
//
@@ -387,7 +400,9 @@
//
void LogsModel::resetModel()
{
- this->reset();
+ LOGS_QDEBUG( "logs [ENG] -> LogsModel::resetModel()" )
+ this->reset();
+ LOGS_QDEBUG( "logs [ENG] <- LogsModel::resetModel()" )
}
// -----------------------------------------------------------------------------
//
--- a/logsui/logsengine/themes/icons/hbdefault/scalable/qtg_large_missed_video_call_unseen.svg Thu May 27 12:51:53 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,148 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5609 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="422.2207" x2="428.7761" y1="-578.2104" y2="-582.472">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.1333" style="stop-color:#FFBE82"/>
-<stop offset="0.6303" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#FFBE82"/>
-</linearGradient>
-<path d="M18.469,33.146c2.09-3.596,4.591-6.497,7.281-9.19c2.594-2.589,6.72-5.299,8.562-6.254L43.916,7.42 c-0.846-0.3-3.693-0.465-7.279,0.616c-3.588,1.083-11.736,6.302-16.979,11.547C14.416,24.83,9.932,31.93,9.077,34.178 c-1.343,3.541-1.222,7.445-0.929,8.58c0,0,0.34,1.035,1.145,2.377C9.636,45.711,18.469,33.146,18.469,33.146z" fill="url(#SVGID_1_)"/>
-<path d="M30.573,20.037c1.488-1.037,2.869-1.883,3.74-2.335l9.346-10.006 c-0.131-0.057-0.209-0.088-0.209-0.088c-0.246-0.088-0.641-0.162-1.123-0.218c-0.793,0.005-1.596,0.093-2.402,0.27 C34.23,8.909,30.409,14.194,30.573,20.037z" fill="#020202" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M31.295,19.542c1.205-0.809,2.291-1.462,3.018-1.84l9.377-10.04 c-0.146-0.063-0.234-0.098-0.234-0.098c-0.232-0.08-0.604-0.152-1.061-0.203c-0.75,0.006-1.508,0.087-2.27,0.253 C34.664,8.813,31.023,13.932,31.295,19.542z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M43.467,7.499c-0.209-0.073-0.549-0.137-0.963-0.186c-0.68,0.006-1.369,0.08-2.059,0.231 c-5.088,1.116-8.426,5.984-7.977,11.233c0.725-0.455,1.363-0.826,1.844-1.076l9.422-10.088C43.566,7.538,43.467,7.499,43.467,7.499z " fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="46.6523" cy="-5.2056" gradientTransform="matrix(0.6122 0 0 0.6122 11.7943 11.6322)" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="20.0698">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.6242" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#FFBE82"/>
-</radialGradient>
-<path d="M34.313,17.702l0.928,1.55c0,0,15.102-6.784,14.084-8.039c-0.514-0.631-0.576-0.656-1.238-1.262 c-1.984-1.815-4.17-2.531-4.17-2.531C43.73,7.357,43.434,7.3,43.07,7.258c-0.596,0.005-1.199,0.069-1.805,0.202 c-4.592,1.008-7.572,5.5-6.965,10.256C34.305,17.713,34.309,17.706,34.313,17.702z" fill="url(#SVGID_2_)"/>
-<path d="M16.873,33.344c-0.989-0.141-2.008-0.121-3.028,0.104c-2.417,0.531-4.375,2.066-5.646,4.131 c-0.367,2.35-0.25,4.408-0.05,5.18c0,0,0.34,1.035,1.145,2.377c0.289,0.484,6.539-8.264,8.555-11.107L16.873,33.344z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M17.755,33.373c-0.989-0.141-2.008-0.119-3.029,0.104c-3.313,0.727-5.776,3.332-6.76,6.623 C7.94,41.125,8,41.973,8.093,42.498c0.002,0.012,0.005,0.033,0.01,0.047c0,0,0.339,1.033,1.143,2.379 c0.3,0.498,6.981-8.887,8.75-11.383L17.755,33.373z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="437.749" cy="-560.2109" gradientTransform="matrix(0.1283 0.5992 -0.5928 0.13 -373.5847 -154.0506)" gradientUnits="userSpaceOnUse" id="SVGID_3_" r="23.8799">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.6242" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#FFBE82"/>
-</radialGradient>
-<path d="M10.591,46.975c0.616,0.74,0.646,0.955,1.294,1.525c1.195,1.055,9.301-13.613,9.301-13.613 l-2.683-1.719c-0.941-0.111-1.913-0.08-2.889,0.135c-4.777,1.049-7.806,5.869-6.87,10.832C9.138,44.922,9.736,45.947,10.591,46.975z " fill="url(#SVGID_3_)"/>
-<path d="M49.324,11.213c-0.178-0.219-0.381-0.445-0.578-0.669l-13.943,7.958l0.438,0.749 C35.24,19.252,50.342,12.468,49.324,11.213z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="421.4131" x2="426.6039" y1="-610.4937" y2="-594.0048">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.6788" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#FFBE82"/>
-</linearGradient>
-<path d="M35.24,19.252l1.178,1.98c0.301,0.515,0.973,0.673,1.57,0.423l4.09-2.335l8.043-4.667 c0.631-0.363,0.877-1.12,0.549-1.685c0,0-0.334-0.501-1.35-1.752L35.24,19.252z" fill="url(#SVGID_4_)"/>
-<path d="M21.186,34.887l-0.725-0.473l-9.214,13.488c0.215,0.203,0.429,0.412,0.638,0.598 C13.081,49.555,21.186,34.887,21.186,34.887z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="438.8232" x2="450.6482" y1="-577.3184" y2="-564.2958">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.6788" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#FFBE82"/>
-</linearGradient>
-<path d="M11.887,48.498c1.193,1.051,1.685,1.371,1.685,1.371c0.568,0.367,1.363,0.168,1.781-0.443 l7.901-11.605c0.418-0.615,0.307-1.412-0.261-1.777l-1.808-1.156L11.887,48.498z" fill="url(#SVGID_5_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_6_" x1="39.1182" x2="44.145" y1="48.6309" y2="48.6309">
-<stop offset="0" style="stop-color:#878A8C"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#5B6163"/>
-<stop offset="1" style="stop-color:#959A9C"/>
-</linearGradient>
-<rect fill="url(#SVGID_6_)" height="7.535" width="4.896" x="39.184" y="44.863"/>
-<path d="M39.184,49.596c0.787,0.189,1.604,0.303,2.449,0.303c0.844,0,1.662-0.113,2.447-0.303v-4.121 h-4.896V49.596z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M39.184,48.982c0.787,0.191,1.604,0.303,2.449,0.303c0.844,0,1.662-0.111,2.447-0.303v-4.119 h-4.896V48.982z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_7_" x1="41.6328" x2="41.6328" y1="27.8325" y2="48.6499">
-<stop offset="0" style="stop-color:#F2F2F2"/>
-<stop offset="0.3212" style="stop-color:#E6E6E6"/>
-<stop offset="1" style="stop-color:#666666"/>
-</linearGradient>
-<path d="M41.633,48.674c-5.74,0-10.408-4.67-10.408-10.408c0-5.74,4.668-10.409,10.408-10.409 c5.738,0,10.408,4.668,10.408,10.409C52.041,44.004,47.371,48.674,41.633,48.674L41.633,48.674z" fill="url(#SVGID_7_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_8_" x1="41.6318" x2="41.6318" y1="28.4473" y2="48.0381">
-<stop offset="0" style="stop-color:#D1D7D9"/>
-<stop offset="0.0667" style="stop-color:#D1D7D9"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#7C8487"/>
-<stop offset="1" style="stop-color:#ADB3B5"/>
-</linearGradient>
-<circle cx="41.632" cy="38.266" fill="url(#SVGID_8_)" r="9.796"/>
-<path d="M41.633,47.037c-5.102,0-9.268-4.059-9.445-9.115c-0.004,0.111-0.008,0.223-0.008,0.334 c0,5.211,4.24,9.451,9.453,9.451c5.211,0,9.451-4.24,9.451-9.451c0-0.111-0.004-0.223-0.008-0.334 C50.898,42.979,46.732,47.037,41.633,47.037z" fill="#FFFFFF" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M49.592,37.848c0,4.516-3.564,8.969-7.963,8.967c-4.395-0.002-7.957-4.457-7.957-8.971 c0.004-4.516,3.568-8.172,7.963-8.172C46.029,29.675,49.594,33.334,49.592,37.848z" fill="#231F20" fill-opacity="0.3" stroke-opacity="0.3"/>
-<path d="M41.629,46.15c-2.291,0-4.443-0.893-6.061-2.512c-1.619-1.619-2.51-3.773-2.508-6.063 c0-4.725,3.846-8.567,8.572-8.567c2.291,0,4.443,0.893,6.063,2.512c1.619,1.619,2.51,3.771,2.508,6.063 c0,4.725-3.846,8.566-8.57,8.566H41.629z" fill="#231F20" fill-opacity="0.2" stroke-opacity="0.2"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_9_" x1="41.6318" x2="41.6318" y1="29.5093" y2="45.4663">
-<stop offset="0" style="stop-color:#CFCFCF"/>
-<stop offset="0.1091" style="stop-color:#CFCFCF"/>
-<stop offset="0.6848" style="stop-color:#121212"/>
-<stop offset="1" style="stop-color:#A6A6A6"/>
-</linearGradient>
-<path d="M41.629,45.539c-2.127-0.002-4.125-0.83-5.629-2.334c-1.502-1.502-2.328-3.502-2.328-5.629 c0-4.387,3.572-7.956,7.961-7.956c2.127,0,4.125,0.83,5.629,2.333c1.504,1.504,2.33,3.504,2.33,5.631 c-0.002,4.387-3.572,7.955-7.959,7.955H41.629z" fill="url(#SVGID_9_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_10_" x1="41.6318" x2="41.6318" y1="30.1289" y2="44.8584">
-<stop offset="0" style="stop-color:#F2F2F2"/>
-<stop offset="1" style="stop-color:#606769"/>
-</linearGradient>
-<circle cx="41.632" cy="37.58" fill="url(#SVGID_10_)" r="7.347"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_11_" x1="41.6318" x2="41.6318" y1="31.4756" y2="43.6433">
-<stop offset="0" style="stop-color:#1A1A1A"/>
-<stop offset="0.503" style="stop-color:#343434"/>
-<stop offset="0.7515" style="stop-color:#9E9E9E"/>
-<stop offset="1" style="stop-color:#CFCFCF"/>
-</linearGradient>
-<path d="M41.633,43.701c-1.639,0-3.176-0.639-4.332-1.795c-1.154-1.156-1.791-2.693-1.791-4.33 c0-3.373,2.746-6.119,6.123-6.119c1.637,0,3.174,0.637,4.33,1.795c1.156,1.156,1.793,2.693,1.791,4.33 C47.754,40.957,45.008,43.701,41.633,43.701L41.633,43.701z" fill="url(#SVGID_11_)"/>
-<radialGradient cx="59.5957" cy="40.5771" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_12_" r="10.1859">
-<stop offset="0" style="stop-color:#000000"/>
-<stop offset="0.5917" style="stop-color:#000000"/>
-<stop offset="0.627" style="stop-color:#050505"/>
-<stop offset="0.7652" style="stop-color:#121212"/>
-<stop offset="0.8876" style="stop-color:#171717"/>
-<stop offset="1" style="stop-color:#171717"/>
-</radialGradient>
-<circle cx="41.632" cy="37.579" fill="url(#SVGID_12_)" r="5.511"/>
-<radialGradient cx="53.6738" cy="32.9404" gradientTransform="matrix(0.621 0 0 0.6209 5.811 13.4188)" gradientUnits="userSpaceOnUse" id="SVGID_13_" r="16.2221">
-<stop offset="0" style="stop-color:#242424"/>
-<stop offset="0.4303" style="stop-color:#242424"/>
-<stop offset="0.7818" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#000000"/>
-</radialGradient>
-<circle cx="41.633" cy="37.58" fill="url(#SVGID_13_)" r="4.521"/>
-<radialGradient cx="56.7607" cy="30.0415" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_14_" r="17.797">
-<stop offset="0" style="stop-color:#A700F5"/>
-<stop offset="0.3091" style="stop-color:#A700F5"/>
-<stop offset="0.4364" style="stop-color:#5E008A"/>
-<stop offset="0.8061" style="stop-color:#0E1402"/>
-<stop offset="1" style="stop-color:#0E1402"/>
-</radialGradient>
-<path d="M45.672,37.58c0,2.232-1.809,4.041-4.041,4.039c-2.232,0-4.041-1.811-4.041-4.041 c0.002-2.232,1.813-4.039,4.041-4.039C43.865,33.541,45.676,35.35,45.672,37.58z" fill="url(#SVGID_14_)"/>
-<radialGradient cx="58.6514" cy="45.2432" gradientTransform="matrix(0.621 1.836735e-004 -1.836735e-004 0.6209 5.2261 12.8455)" gradientUnits="userSpaceOnUse" id="SVGID_15_" r="7.2256">
-<stop offset="0" style="stop-color:#48630C"/>
-<stop offset="0.7879" style="stop-color:#000000"/>
-<stop offset="1" style="stop-color:#000000"/>
-</radialGradient>
-<path d="M45.672,37.58c0,2.232-1.809,4.041-4.041,4.039c-2.232,0-4.041-1.811-4.041-4.041 c0,0,1.385,2.465,4.041,2.465S45.672,37.58,45.672,37.58z" fill="url(#SVGID_15_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_16_" x1="41.6123" x2="41.6123" y1="32.7168" y2="37.5411">
-<stop offset="0" style="stop-color:#F8FBFF"/>
-<stop offset="1" style="stop-color:#808080"/>
-</linearGradient>
-<path d="M41.611,37.518c1.754,0,3.404-0.264,4.863-0.732 c-0.414-2.313-2.432-4.068-4.863-4.068c-2.43,0-4.445,1.756-4.861,4.068C38.207,37.254,39.859,37.518,41.611,37.518z" fill="url(#SVGID_16_)" fill-opacity="0.35" stroke-opacity="0.35"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_17_" x1="32.7676" x2="50.541" y1="51.5801" y2="51.5801">
-<stop offset="0" style="stop-color:#878A8C"/>
-<stop offset="0.2606" style="stop-color:#BDC2C4"/>
-<stop offset="0.6606" style="stop-color:#5B6163"/>
-<stop offset="1" style="stop-color:#959A9C"/>
-</linearGradient>
-<path d="M50.502,52.805c0.025-0.609,0.039-0.486,0.039-0.613v-0.033c0-0.996-0.816-1.803-1.824-1.803H34.592 c-1.008,0-1.824,0.807-1.824,1.803v0.033c0,0.127,0.014,0.004,0.039,0.613H50.502z" fill="url(#SVGID_17_)"/>
-<path d="M32.881,51.557H50.43c-0.08-0.225-0.203-0.426-0.361-0.6H33.242 C33.084,51.131,32.961,51.332,32.881,51.557z" fill="#FFFFFF" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M32.777,52.191c0.008,0.125,0.016,0.309,0.029,0.613h17.695 c0.012-0.305,0.021-0.488,0.027-0.613H32.777z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<path d="M33.24,50.957h16.826c-0.332-0.367-0.811-0.602-1.35-0.602H34.592 C34.053,50.355,33.574,50.59,33.24,50.957z" fill="#FFFFFF" fill-opacity="0.4" stroke-opacity="0.4"/>
-<rect fill="none" height="60" width="60"/>
-</g>
-<g>
-<rect fill="none" height="30" width="30"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="15.0005" x2="15.0005" y1="4.5283" y2="27.0492">
-<stop offset="0" style="stop-color:#FF7042"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<path d="M19.018,16.846v-4.316h4.535l-8.512-8.844l-8.592,8.844h4.631v4.316 c0,7.293,6.068,9.467,11.908,9.467v-6.422C21.189,19.891,19.018,19.002,19.018,16.846z" fill="url(#SVGID_1__)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="15.0005" x2="15.0005" y1="4.0146" y2="12.8168">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2__)" points="15.041,4.508 22.762,12.529 23.553,12.529 15.041,3.686 6.449,12.529 7.248,12.529 "/>
-</g>
-</svg>
--- a/logsui/logsengine/themes/icons/hbdefault/scalable/qtg_large_missed_voice_call_unseen.svg Thu May 27 12:51:53 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5609 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="423.0967" x2="429.6527" y1="-578.646" y2="-582.908">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.6061" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<path d="M19.081,33.911c2.089-3.597,4.591-6.497,7.281-9.189c2.593-2.591,6.72-5.3,8.562-6.256l9.604-10.282 c-0.845-0.3-3.693-0.464-7.279,0.616c-3.586,1.083-11.736,6.303-16.979,11.547c-5.242,5.246-9.727,12.347-10.581,14.595 c-1.343,3.541-1.221,7.445-0.929,8.581c0,0,0.34,1.034,1.144,2.377C10.248,46.476,19.081,33.911,19.081,33.911z" fill="url(#SVGID_1_)"/>
-<path d="M31.184,20.8c1.488-1.036,2.87-1.882,3.74-2.334L44.271,8.46 c-0.132-0.058-0.209-0.088-0.209-0.088c-0.247-0.088-0.642-0.162-1.124-0.219c-0.793,0.006-1.596,0.093-2.401,0.27 C34.843,9.673,31.019,14.958,31.184,20.8z" fill="#020202" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M31.906,20.306c1.205-0.809,2.291-1.462,3.018-1.84l9.377-10.04 c-0.146-0.063-0.233-0.098-0.233-0.098c-0.231-0.08-0.604-0.152-1.06-0.203c-0.751,0.006-1.51,0.087-2.27,0.253 C35.275,9.576,31.636,14.695,31.906,20.306z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M44.079,8.263c-0.21-0.073-0.55-0.137-0.962-0.186c-0.681,0.006-1.369,0.08-2.06,0.231 c-5.087,1.116-8.426,5.984-7.978,11.233c0.725-0.455,1.363-0.826,1.844-1.076l9.424-10.088C44.178,8.302,44.079,8.263,44.079,8.263z " fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="43.3906" cy="8.9175" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="18.5073">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.6061" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</radialGradient>
-<path d="M34.924,18.466l0.929,1.55c0,0,15.101-6.784,14.084-8.038c-0.513-0.631-0.577-0.656-1.237-1.263 c-1.985-1.815-4.172-2.531-4.172-2.531c-0.186-0.063-0.481-0.12-0.845-0.161c-0.596,0.004-1.2,0.068-1.806,0.201 c-4.591,1.009-7.57,5.501-6.963,10.257C34.916,18.477,34.921,18.47,34.924,18.466z" fill="url(#SVGID_2_)"/>
-<path d="M17.483,34.106c-0.988-0.14-2.007-0.119-3.027,0.105c-2.418,0.53-4.376,2.066-5.646,4.131 c-0.367,2.35-0.25,4.407-0.05,5.18c0,0,0.34,1.034,1.144,2.377c0.29,0.482,6.54-8.264,8.556-11.107L17.483,34.106z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M18.366,34.136c-0.989-0.14-2.008-0.118-3.029,0.105c-3.313,0.727-5.775,3.332-6.76,6.623 c-0.026,1.025,0.034,1.872,0.127,2.397c0.003,0.013,0.005,0.034,0.01,0.048c0,0,0.34,1.033,1.144,2.379 c0.3,0.498,6.981-8.888,8.75-11.384L18.366,34.136z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="437.4258" cy="-571.231" gradientTransform="matrix(0.2095 0.9787 -0.9682 0.2124 -629.4526 -270.6148)" gradientUnits="userSpaceOnUse" id="SVGID_3_" r="14.6198">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.6061" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</radialGradient>
-<path d="M11.202,47.738c0.616,0.74,0.646,0.954,1.295,1.524c1.194,1.055,9.301-13.612,9.301-13.612 l-2.683-1.719c-0.941-0.111-1.914-0.079-2.89,0.136c-4.777,1.048-7.806,5.868-6.87,10.832C9.749,45.686,10.349,46.71,11.202,47.738z " fill="url(#SVGID_3_)"/>
-<path d="M49.937,11.978c-0.179-0.22-0.381-0.446-0.578-0.67l-13.944,7.959l0.438,0.749 C35.853,20.016,50.953,13.231,49.937,11.978z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="422.2881" x2="427.4786" y1="-610.9287" y2="-594.4409">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.8121" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<path d="M35.853,20.016l1.178,1.981c0.302,0.515,0.972,0.674,1.569,0.422l4.09-2.334l8.043-4.668 c0.632-0.363,0.878-1.119,0.549-1.686c0,0-0.333-0.501-1.349-1.751L35.853,20.016z" fill="url(#SVGID_4_)"/>
-<path d="M21.798,35.65l-0.725-0.472l-9.215,13.486c0.216,0.204,0.43,0.414,0.639,0.598 C13.691,50.317,21.798,35.65,21.798,35.65z" fill="#020202" fill-opacity="0.4" stroke-opacity="0.4"/>
-<linearGradient gradientTransform="matrix(0.2118 0.9773 -0.9773 0.2118 -634.5599 -270.4865)" gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="439.6982" x2="451.5232" y1="-577.7549" y2="-564.7323">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.8121" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<path d="M12.498,49.262c1.193,1.05,1.686,1.37,1.686,1.37c0.567,0.367,1.363,0.169,1.781-0.442l7.9-11.605 c0.419-0.614,0.307-1.411-0.26-1.777l-1.808-1.156L12.498,49.262z" fill="url(#SVGID_5_)"/>
-<rect fill="none" height="60" width="60"/>
-</g>
-<g>
-<rect fill="none" height="30" width="30"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="15.0005" x2="15.0005" y1="4.5283" y2="27.0492">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<path d="M19.018,16.846v-4.316h4.535l-8.512-8.844l-8.592,8.844h4.631v4.316 c0,7.293,6.068,9.467,11.908,9.467v-6.422C21.189,19.891,19.018,19.002,19.018,16.846z" fill="url(#SVGID_1__)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="15.0005" x2="15.0005" y1="4.0146" y2="12.8168">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2__)" points="15.041,4.508 22.762,12.529 23.553,12.529 15.041,3.686 6.449,12.529 7.248,12.529 "/>
-</g>
-</svg>
--- a/logsui/logsengine/themes/icons/hbdefault/scalable/qtg_large_missed_voip_call_unseen.svg Thu May 27 12:51:53 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,124 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
-<svg baseProfile="tiny" height="60" viewBox="0 0 60 60" width="60" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
-<g>
-<rect fill="none" height="60" width="60"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1_" x1="31.3823" x2="31.3823" y1="49.3193" y2="6.7675">
-<stop offset="0" style="stop-color:#004E8C"/>
-<stop offset="1" style="stop-color:#1B66D8"/>
-</linearGradient>
-<circle cx="31.382" cy="28.137" fill="url(#SVGID_1_)" r="21.429"/>
-<radialGradient cx="23.8237" cy="17.7847" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_2_" r="25.9191">
-<stop offset="0" style="stop-color:#94FFFF"/>
-<stop offset="0.5" style="stop-color:#36B5FF"/>
-<stop offset="1" style="stop-color:#1B66D8"/>
-</radialGradient>
-<path d="M52.262,28.137c0,11.533-9.346,20.877-20.879,20.877c-11.533,0-20.882-9.344-20.882-20.877 c0-11.53,9.35-20.88,20.882-20.88C42.917,7.257,52.262,16.607,52.262,28.137z" fill="url(#SVGID_2_)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_3_" x1="31.3823" x2="31.3823" y1="7.0732" y2="49.1199">
-<stop offset="0" style="stop-color:#31A7F8"/>
-<stop offset="0.497" style="stop-color:#1E74DC"/>
-<stop offset="1" style="stop-color:#88D6EB"/>
-</linearGradient>
-<path d="M31.383,7.257c-11.533,0-20.882,9.35-20.882,20.88c0,11.533,9.35,20.877,20.882,20.877 c11.533,0,20.879-9.344,20.879-20.877C52.262,16.607,42.917,7.257,31.383,7.257z M31.383,47.188 c-10.843,0-19.664-8.818-19.664-19.659c0-10.843,8.82-19.663,19.664-19.663c10.841,0,19.66,8.82,19.66,19.663 C51.043,38.369,42.224,47.188,31.383,47.188z" fill="url(#SVGID_3_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_4_" x1="10.8428" x2="14.1621" y1="30.9775" y2="30.9775">
-<stop offset="0" style="stop-color:#58595B"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M12.462,27.796C12.239,27.5,11.737,27.5,11.516,27.5c-0.437,0-0.669,0.312-0.673,0.616 v0.021l0.001,0.031c-0.001,0.537,0.029,1.14,0.094,1.872c0.013,0.138,0.03,0.276,0.047,0.414l0.024,0.201 c0.056,0.434,0.121,0.86,0.195,1.274l0.034,0.182c0.032,0.164,0.063,0.324,0.098,0.484c0.089,0.406,0.198,0.826,0.332,1.291 c0.02,0.066,0.037,0.133,0.055,0.199c0.028,0.109,0.058,0.217,0.091,0.322l0.005,0.014l0.012,0.033 c-0.003-0.01-0.008-0.023-0.01-0.037l1.198-0.08c0.019-0.188,0.024-0.383,0.019-0.576c-0.01-0.303-0.021-0.676-0.107-0.99 l1.112-1.494l0.12-0.162v-0.203v-1.165v-0.252l-0.179-0.178L12.462,27.796z" fill="url(#SVGID_4_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_5_" x1="17.2432" x2="51.9731" y1="24.897" y2="24.897">
-<stop offset="0" style="stop-color:#58595B"/>
-<stop offset="1" style="stop-color:#000000"/>
-</linearGradient>
-<path d="M51.966,24.045c-0.016-0.079-0.029-0.136-0.043-0.191 c-0.011-0.042-0.021-0.084-0.029-0.125c-0.106-0.495-0.237-1.005-0.392-1.525l-0.017-0.058c-0.033-0.117-0.068-0.234-0.105-0.349 c-0.188-0.588-0.393-1.148-0.608-1.666c-0.027-0.066-0.056-0.125-0.084-0.188l-0.045-0.1c-0.206-0.474-0.436-0.947-0.677-1.403 l-0.03-0.059c-0.047-0.09-0.093-0.181-0.142-0.269c-0.295-0.532-0.604-1.041-0.918-1.512c-0.032-0.049-0.069-0.102-0.106-0.154 c-0.023-0.031-0.045-0.061-0.066-0.092c-0.302-0.437-0.618-0.862-0.946-1.268l-0.064-0.082c-0.044-0.055-0.088-0.111-0.134-0.167 c-0.381-0.456-0.783-0.898-1.199-1.317c-0.056-0.056-0.115-0.115-0.176-0.172l-0.049-0.047c-0.375-0.368-0.774-0.732-1.183-1.074 l-0.081-0.069c-0.041-0.037-0.083-0.073-0.125-0.106c-0.446-0.367-0.931-0.728-1.435-1.075c-0.063-0.042-0.126-0.083-0.19-0.124 l-0.077-0.05c-0.454-0.301-0.928-0.59-1.404-0.853l-0.072-0.042c-0.04-0.023-0.079-0.045-0.119-0.068 c-0.529-0.283-1.081-0.55-1.643-0.792l-0.142-0.057l-0.153-0.063c-0.148-0.061-0.297-0.114-0.443-0.165 c-0.077-0.026-0.152-0.053-0.228-0.08l-0.282-0.105L38.303,8.74c-0.17,0.107-0.84,0.49-1.235,0.715 c-0.438-0.059-1.499-0.192-2.57-0.295c0.33-0.032,0.787-0.069,1.43-0.111l0.09-1.204L35.97,7.832 c-0.039-0.011-0.077-0.021-0.116-0.029l-0.092-0.018l-0.075-0.015c-0.655-0.131-1.271-0.227-1.882-0.291l-0.004-0.001l-0.085-0.009 c-0.698-0.07-1.409-0.106-2.112-0.106c-0.62,0-1.262,0.033-1.964,0.101c-0.109,0.01-0.214,0.021-0.321,0.032 c-0.693,0.078-1.3,0.17-1.873,0.286l-0.02,0.003l-0.015,0.002c-0.604,0.125-1.211,0.281-1.856,0.477 c-0.058,0.018-0.116,0.037-0.173,0.055l-0.131,0.043c-0.547,0.176-1.082,0.371-1.596,0.582c-0.042,0.018-0.071,0.029-0.1,0.04 l-0.078,0.031c-0.564,0.24-1.128,0.512-1.688,0.812c-0.06,0.031-0.118,0.066-0.177,0.099L21.542,9.97 c-0.157,0.087-0.315,0.185-0.473,0.283l-0.203,0.127l-1.118,0.684l1.242,0.415c0.186,0.063,0.385,0.093,0.592,0.093 c0.67,0,1.317-0.329,1.838-0.593c0.209-0.105,0.521-0.264,0.648-0.288c0.152,0.045,0.306,0.068,0.458,0.068 c0.569,0,1.035-0.306,1.446-0.578l0.111-0.072c0.134-0.043,0.362-0.128,0.818-0.299c0.465-0.174,1.314-0.493,1.54-0.546 c0.44-0.005,0.966-0.068,1.339-0.3c0.352,0.058,0.977,0.157,1.619,0.24c-0.047,0.029-0.093,0.059-0.132,0.097 c-0.209,0.192-1.335,0.533-1.68,0.578c-0.647,0.081-0.908,0.408-1.012,0.666c-0.135,0.336-0.054,0.672,0.078,0.946 c-0.245,0.162-0.545,0.342-0.804,0.479c0.001-0.006,0.003-0.012,0.004-0.02c0.093-0.517,0.16-0.89-0.091-1.189 c-0.128-0.153-0.317-0.241-0.519-0.241c-0.295,0-0.525,0.183-0.711,0.362c-0.52,0.502-0.834,1.129-0.952,1.365l-0.022,0.044 l-0.019,0.035c-0.225,0.431-0.317,0.737-0.192,1.688c-0.055,0.04-0.219,0.102-0.445,0.102c-0.03,0-0.058-0.002-0.079-0.003 c-0.146-0.158-0.349-0.248-0.576-0.248l0,0c-0.524,0-1.238,0.589-2.123,1.754l-0.284,0.374l0.289,0.371l0.27,0.343 c-4.216,3.259-4.248,3.444-4.292,3.717c-0.007,0.024-0.044,0.137-0.095,0.293c-0.628,1.952-0.977,3.413-0.637,4.194 c0.784,1.813,1.669,3.505,2.815,3.599c0.101,0.008,0.212,0.012,0.332,0.012c1.051,0,2.753-0.318,3.572-0.485 c0.151,0.283,0.335,0.614,0.438,0.795l0.181,0.323l0.37-0.012c0.004,0,0.199-0.006,0.448-0.006c0.286,0,0.478,0.008,0.602,0.017 c0.446,1.307,1.3,4.317,1.142,4.944L27.272,34.1c-1.441,2.16,0.306,4.975,1.145,6.328c0.066,0.107,0.126,0.203,0.177,0.287 c0.324,0.922,0.716,1.531,1.545,1.531c0.062,0,0.124-0.004,0.188-0.008c0.047-0.002,0.096-0.004,0.146-0.004 c0.092,0,0.157,0.01,0.226,0.035l0.075,0.027l0.08,0.006c0.155,0.014,0.306,0.035,0.453,0.057c0.255,0.035,0.519,0.07,0.788,0.07 c0.721,0,1.293-0.271,1.787-0.855c0.019-0.002,0.036-0.004,0.055-0.006c0.518-0.072,0.712-0.332,0.778-0.564 c0.038-0.039,0.089-0.086,0.131-0.125c0.204-0.188,0.447-0.41,0.615-0.674c0.075-0.045,0.161-0.096,0.258-0.152 c0.167-0.104,0.355-0.217,0.504-0.293c0.131-0.041,0.247-0.117,0.334-0.225c0.209-0.258,0.166-0.549,0.131-0.783 c-0.035-0.242-0.071-0.492,0.06-0.758c0.738-0.355,2.051-1.23,2.263-1.375l-0.001,0.018c-0.014,0.117-0.048,0.43-0.1,0.629 c-0.279,0.279-0.513,0.703-0.586,0.846l-0.049,0.094l-0.015,0.104c-0.019,0.137-0.094,0.85,0.306,1.311 c0.202,0.23,0.49,0.359,0.813,0.359c0.103,0,0.21-0.014,0.319-0.039c1.027-0.232,2.85-2.703,2.998-4.066 c0.072-0.656-0.185-1.172-0.704-1.416l-0.387-0.184l-0.304,0.303l-1.125,1.125c-0.38,0.035-0.678,0.148-0.879,0.326 c0.012-0.48-0.035-0.973-0.086-1.451c-0.155-1.447-0.185-2.369,0.703-2.996l0.045-0.033l0.038-0.039 c0.321-0.326,0.676-0.611,1.052-0.914c0.88-0.707,1.79-1.438,2.332-2.759l0.022-0.056c0.174-0.451,0.437-1.132,0.081-1.651 c-0.089-0.128-0.275-0.327-0.624-0.397c0.462-0.186,0.816-0.332,0.851-0.346l0.107-0.044l0.083-0.08l1.898-1.822l0.278-0.268 l-0.122-0.366c-0.017-0.047-0.12-0.335-0.411-0.747c0.554,0.075,1.029,0.208,1.185,0.326c0.057,0.124,0.171,0.396,0.292,0.683 c2.089,4.924,2.382,5.178,2.926,5.187c0.021,0,0.037,0.002,0.051,0.003c0.044,0.003,0.083,0.005,0.119,0.005 c0.31,0,0.486-0.157,0.564-0.252c0.227-0.274,0.163-0.608,0.14-0.734l-0.009-0.043c-0.025-0.294-0.008-1.618,0.034-2.706 c0.003,0.002,0.004,0.006,0.006,0.01l1.12-0.445L51.966,24.045z M35.508,18.021c-0.087,0.003-0.181,0.008-0.282,0.012 c-0.322,0.015-0.688,0.031-1.053,0.031c-0.955,0-1.174-0.118-1.196-0.131c-0.113-0.082-0.229-0.144-0.35-0.188 c0.216-0.048,0.464-0.214,0.719-0.708c0.251,0.487,0.592,0.917,1.115,0.917c0.142,0,0.277-0.034,0.406-0.101 C35.043,17.856,35.333,17.957,35.508,18.021z M35.133,15.357c-0.072,0-0.131-0.003-0.176-0.007c0.049-0.128,0.107-0.202,0.154-0.244 c0.06,0.093,0.14,0.175,0.232,0.245C35.27,15.355,35.2,15.357,35.133,15.357z M31.331,16.635c0.327,0.641,0.569,0.917,0.762,1.037 c-0.475,0.038-0.833,0.339-1.126,0.625c-0.206-0.068-0.565-0.286-0.672-0.438c-0.063-0.089-0.138-0.166-0.221-0.232 C30.593,17.479,31.049,16.998,31.331,16.635z M29.523,16.163l-0.679-0.033l-2.278-0.111c0.278-0.229,0.541-0.444,0.697-0.57 c0.042-0.015,0.205-0.06,0.605-0.06c0.242,0,0.474,0.017,0.62,0.029L29.523,16.163z" fill="url(#SVGID_5_)" fill-opacity="0.3" stroke-opacity="0.3"/>
-<radialGradient cx="24.4912" cy="10.4414" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_6_" r="23.6744">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M11.451,28.125C11.451,28.125,11.451,28.125,11.451,28.125c0,0.008,0.001,0.012,0.001,0.018 c0,0.622,0.039,1.236,0.093,1.844c0.018,0.198,0.047,0.398,0.069,0.598c0.053,0.417,0.116,0.83,0.19,1.238 c0.042,0.215,0.081,0.434,0.127,0.646c0.094,0.422,0.203,0.838,0.321,1.248c0.05,0.17,0.089,0.342,0.141,0.508 c0.007,0.018,0.015,0.033,0.019,0.051c0.017-0.16,0.021-0.326,0.017-0.496c-0.04-1.199-0.232-1.045-0.232-1.045l1.356-1.822v-1.165 l-1.589-1.589C11.964,28.159,11.452,28.079,11.451,28.125z" fill="url(#SVGID_6_)"/>
-<radialGradient cx="24.4868" cy="10.4395" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_7_" r="23.6775">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M24.212,10.099c0.587,0.193,1.066-0.2,1.613-0.549c0.193-0.04,2.338-0.896,2.57-0.896 c0.231,0,1.011-0.03,1.204-0.34c0,0,3.357,0.584,3.863,0.389c0.275-0.107,1.433-0.2,2.425-0.264 c-0.056-0.012-0.106-0.029-0.162-0.041c-0.054-0.011-0.105-0.019-0.161-0.03c-0.623-0.126-1.252-0.226-1.894-0.29 c-0.006,0-0.01,0-0.016-0.002c-0.674-0.068-1.358-0.104-2.052-0.104c-0.644,0-1.277,0.038-1.906,0.098 c-0.11,0.011-0.221,0.022-0.331,0.035c-0.608,0.067-1.211,0.155-1.801,0.274c-0.01,0.003-0.021,0.004-0.031,0.006 c-0.612,0.127-1.213,0.283-1.802,0.464c-0.102,0.03-0.199,0.064-0.302,0.096c-0.522,0.168-1.038,0.356-1.544,0.564 c-0.06,0.026-0.12,0.048-0.18,0.072c-0.557,0.238-1.1,0.501-1.63,0.784c-0.08,0.043-0.156,0.089-0.234,0.134 c-0.227,0.125-0.44,0.267-0.66,0.402C22.273,11.265,23.635,9.904,24.212,10.099z" fill="url(#SVGID_7_)"/>
-<radialGradient cx="24.4863" cy="10.437" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_8_" r="23.6745">
-<stop offset="0" style="stop-color:#B2F56E"/>
-<stop offset="0.3152" style="stop-color:#B2F56E"/>
-<stop offset="0.7273" style="stop-color:#5CBF1B"/>
-<stop offset="1" style="stop-color:#227A00"/>
-</radialGradient>
-<path d="M51.366,24.146c-0.021-0.102-0.049-0.197-0.069-0.297c-0.106-0.499-0.233-0.99-0.378-1.474 c-0.038-0.13-0.076-0.264-0.118-0.395c-0.176-0.549-0.371-1.09-0.59-1.616c-0.04-0.093-0.085-0.184-0.125-0.275 c-0.202-0.464-0.421-0.918-0.657-1.363c-0.056-0.106-0.109-0.215-0.166-0.319c-0.279-0.502-0.575-0.993-0.893-1.469 c-0.054-0.083-0.114-0.161-0.17-0.243c-0.291-0.422-0.596-0.831-0.916-1.228c-0.064-0.079-0.127-0.16-0.194-0.24 c-0.368-0.442-0.756-0.868-1.161-1.277c-0.069-0.07-0.143-0.14-0.215-0.208c-0.369-0.363-0.755-0.714-1.153-1.047 c-0.067-0.056-0.131-0.116-0.198-0.171c-0.448-0.366-0.915-0.714-1.395-1.043c-0.084-0.057-0.17-0.112-0.256-0.167 c-0.442-0.294-0.898-0.571-1.366-0.83c-0.063-0.035-0.123-0.073-0.187-0.108c-0.52-0.278-1.05-0.533-1.594-0.768 c-0.097-0.041-0.194-0.079-0.29-0.12c-0.211-0.087-0.432-0.156-0.646-0.235c-0.255,0.163-1.438,0.832-1.438,0.832 s-5.141-0.702-5.491-0.353c-0.352,0.353-1.721,0.71-2.033,0.751c-0.311,0.04-0.956,0.206-0.182,1.161 c-0.116,0.118-2.325,1.657-2.325,0.957s0.494-1.953-0.2-1.282c-0.498,0.482-0.796,1.135-0.86,1.257 c-0.163,0.312-0.263,0.461-0.145,1.357s-1.43,0.891-1.534,0.659c-0.276-0.622-1.809,1.394-1.809,1.394l0.646,0.828 c0,0-4.51,3.474-4.548,3.707c-0.04,0.234-1.164,3.25-0.775,4.147c0.39,0.897,1.376,3.158,2.307,3.233 c1.222,0.101,4.186-0.559,4.186-0.559c0.08,0.196,0.638,1.189,0.638,1.189s1.453-0.048,1.534,0.11 c0.026,0.053,1.75,5.122,1.182,5.794c-1.357,2.033,0.775,5.012,1.369,6.02c0.594,1.73,0.977,0.955,1.758,1.238 c0.962,0.084,1.772,0.439,2.589-0.611c0.237-0.195,0.641-0.041,0.641-0.313c0-0.152,0.698-0.598,0.878-1.018 c0.188-0.088,0.674-0.414,1.003-0.572c0.299-0.02-0.283-0.82,0.309-1.666c0.64-0.252,2.364-1.414,2.364-1.414 c0.078-1.705-0.839-3.811,0.873-5.02c1.104-1.126,2.553-1.767,3.255-3.479c0.194-0.506,0.628-1.542-0.619-1.231 c-1.173,0.295-2.48,0.362-1.861-0.154c-0.071-0.634-0.85-0.932-1.55-1.552c-0.361-0.854-0.93-2.378-0.93-2.378l-1.24-1.885 l0.155-0.389l1.474,2.171l1.474,1.781c0.542,1.783,1.007,1.939,1.007,1.939c0.815-0.288,2.753-1.086,2.753-1.086l1.898-1.822 c0,0-0.195-0.581-0.967-1.316l-0.584-0.349c-0.126,0.357-0.802,0.491-0.802,0.491l-1.641-1.964l0.61-0.123l0.471,0.896l1.128,0.39 c0,0,0.313-0.229,0.893,0.371c0.473-0.039,2.318,0.09,2.749,0.636c0.085,0.109,2.287,5.607,2.721,5.614 c0.19,0.002,0.329,0.077,0.267-0.256c-0.078-0.156,0-3.609,0.116-4.349c0.295-0.628,0.343-0.003,1.04,1.188 C51.374,24.204,51.372,24.175,51.366,24.146z M31.993,10.823c0.154-0.459,1.047-0.615,1.047-0.615s-0.256,0.473-0.197,0.716 c0.06,0.247-0.407,0.402-0.46,0.982c-0.051,0.578-1.117,0.239-1.204,0.036C31.09,11.74,31.835,11.281,31.993,10.823z M35.816,18.624 c-0.661,0-2.645,0.196-3.19-0.194c-0.546-0.389-0.97,0.04-1.362,0.43c-0.258,0.253-1.193-0.26-1.468-0.649 c-0.271-0.39-1.188-0.361-1.188-0.361l0.208-1.111l-2.637-0.128l-1.499,0.439l-1.41,0.041l0.79-0.376l0.983-0.232 c0,0,1.431-1.176,1.859-1.526c0.363-0.297,1.811-0.129,1.811-0.129l1.589,1.146c0,0-0.353,0.898-0.508,1.091 c0.583-0.039,1.269-1.099,1.269-1.099c-1.239-1.138-1.188-1.524-1.188-1.524l1.633,1.146l0.016,0.01c0,0,0.661,1.558,0.937,1.558 c0.271,0,0.619-1.073,0.619-1.073l0.465-0.117c0.207,0.492,0.595,1.603,1.059,1.343c0.269-0.147,0.71-0.013,1.215,0.181 c0.509,0.195,0.854-0.104,1.267,0.258C37.03,19.349,36.089,18.702,35.816,18.624z M36.853,15.943 c-0.681-0.259-2.984,0.586-2.47-0.796c0.275-0.746,0.981-0.901,1.223-0.405c0.063,0.204,0.83,0.519,0.824,0.09 c-0.006-0.431,0.771-0.659,0.883-0.338C36.899,14.791,38.932,16.341,36.853,15.943z M41.192,17.252 c-0.377-0.304,0.169-0.564-0.387-1.041c-0.798-0.684-1.421-0.978-0.334-1.532c1.341-0.168,0.218,0.428,0.44,0.786 c0.119,0.19,0.796,0.828,1.325,1.61C42.676,17.725,41.567,17.555,41.192,17.252z" fill="url(#SVGID_8_)"/>
-<radialGradient cx="24.4839" cy="10.4453" gradientTransform="matrix(0.9953 0 0 0.9952 7.3664 3.0238)" gradientUnits="userSpaceOnUse" id="SVGID_9_" r="23.6688">
-<stop offset="0" style="stop-color:#7AF200"/>
-<stop offset="0.3152" style="stop-color:#7AF200"/>
-<stop offset="0.7273" style="stop-color:#1CAD0F"/>
-<stop offset="1" style="stop-color:#007A3A"/>
-</radialGradient>
-<path d="M41.733,35.008l-1.293,1.291c0,0-0.778,0-0.815,0.313c-0.017,0.133-0.063,0.709-0.192,1.006 c-0.258,0.18-0.569,0.775-0.569,0.775s-0.158,1.15,0.699,0.953C40.42,39.152,43.059,35.633,41.733,35.008z" fill="url(#SVGID_9_)"/>
-<path d="M31.68,48.668c1.546,0,3.049-0.174,4.499-0.49c-0.039-0.049-0.071-0.1-0.114-0.145 l-7.534-7.756c-0.434-0.447-1.031-0.705-1.638-0.705c-0.57,0-1.102,0.221-1.5,0.625l-1.144,1.18l-0.472,0.477l-0.436,0.447 c-1.654-1.605-3.133-3.443-4.739-5.873c-0.888-1.348-1.653-2.988-2.138-4.123l-0.178-0.424c-0.001,0-0.242-0.598-0.324-0.811 l-0.027-0.068c-0.067-0.176-0.127-0.341-0.184-0.5l-0.025-0.069l1.843-0.641c1.017-0.344,1.593-1.403,1.363-2.555l-0.007-0.036 l-1.154-3.523l-2.274-6.787c-0.162-0.486-0.47-0.886-0.858-1.16c-2.416,3.407-3.841,7.565-3.841,12.059 C10.797,39.322,20.147,48.668,31.68,48.668z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<path d="M31.68,48.668c1.301,0,2.57-0.125,3.806-0.352l-7.394-7.613c-0.32-0.33-0.758-0.52-1.199-0.52 c-0.404,0-0.779,0.156-1.061,0.441l-1.148,1.182l-0.467,0.473l-0.424,0.436l0.003,0.004l-0.435,0.445 c-1.866-1.736-3.509-3.734-5.269-6.4c-0.91-1.381-1.694-3.059-2.192-4.221l-0.158-0.375l-0.024-0.059c0,0-0.243-0.602-0.327-0.816 l-0.029-0.072c-0.068-0.18-0.129-0.347-0.19-0.513c0,0-0.12-0.337-0.145-0.41l0.071-0.295l2.272-0.791 c0.721-0.244,1.127-1.009,0.966-1.819l-0.007-0.036l-1.142-3.485l-2.274-6.789c-0.119-0.357-0.343-0.65-0.626-0.851 c-2.204,3.31-3.492,7.283-3.492,11.557C10.797,39.322,20.147,48.668,31.68,48.668z" fill="#020202" fill-opacity="0.2" stroke-opacity="0.2"/>
-<radialGradient cx="-859.7427" cy="-265.1074" gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0371)" gradientUnits="userSpaceOnUse" id="SVGID_10_" r="34.2211">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.8364" style="stop-color:#FFBE82"/>
-<stop offset="0.8909" style="stop-color:#FFBE82"/>
-<stop offset="0.9515" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#FFBE82"/>
-</radialGradient>
-<path d="M23.387,44.016c-2.39-2.133-4.191-4.469-5.806-6.914c-1.552-2.357-2.958-5.889-3.393-7.428 l-6.272-8.836c-0.357,0.592-0.921,2.715-0.661,5.588c0.262,2.872,2.939,9.828,6.083,14.596c3.146,4.766,7.81,9.248,9.374,10.24 c2.462,1.561,5.427,2.074,6.329,2.029c0,0,0.833-0.098,1.97-0.496C31.5,52.625,23.387,44.016,23.387,44.016z" fill="url(#SVGID_10_)"/>
-<path d="M15.369,32.857c-0.55-1.283-0.976-2.456-1.18-3.184l-6.104-8.599c-0.064,0.09-0.099,0.144-0.099,0.144 c-0.104,0.172-0.22,0.458-0.338,0.813c-0.118,0.599-0.177,1.219-0.167,1.854C7.541,28.374,10.936,32.078,15.369,32.857z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M15.108,32.234c-0.423-1.033-0.749-1.953-0.919-2.561l-6.125-8.627c-0.069,0.101-0.109,0.161-0.109,0.161 c-0.097,0.162-0.208,0.434-0.318,0.769c-0.111,0.567-0.168,1.151-0.159,1.751C7.536,28.033,10.834,31.572,15.108,32.234z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M7.907,21.188c-0.088,0.148-0.188,0.394-0.289,0.698c-0.102,0.514-0.152,1.046-0.144,1.59 c0.054,4.01,3.21,7.283,7.24,7.757c-0.232-0.618-0.412-1.157-0.526-1.559l-6.154-8.67C7.951,21.121,7.907,21.188,7.907,21.188z" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="-891.105" cy="-262.4795" gradientTransform="matrix(1.0009 -0.0086 0.0135 0.9911 906.6143 271.6763)" gradientUnits="userSpaceOnUse" id="SVGID_11_" r="11.8382">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.0424" style="stop-color:#FFBE82"/>
-<stop offset="0.4" style="stop-color:#FFBE82"/>
-<stop offset="0.7333" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#FFBE82"/>
-</radialGradient>
-<path d="M14.188,29.674l1.312-0.461c0,0-2.781-12.441-3.885-11.868c-0.555,0.29-0.549,0.448-1.11,0.853 c-1.676,1.219-2.589,2.641-2.589,2.641c-0.077,0.13-0.165,0.345-0.252,0.613c-0.088,0.45-0.134,0.916-0.128,1.392 c0.05,3.62,2.979,6.563,6.661,6.841C14.194,29.681,14.189,29.677,14.188,29.674z" fill="url(#SVGID_11_)"/>
-<path d="M23.289,45.25c-0.259,0.727-0.4,1.498-0.39,2.303c0.025,1.906,0.882,3.621,2.242,4.898 c1.716,0.641,3.287,0.871,3.9,0.84c0,0,0.833-0.098,1.97-0.496c0.409-0.143-5.222-6.213-7.055-8.172L23.289,45.25z" fill-opacity="0.05" stroke-opacity="0.05"/>
-<path d="M23.448,44.59c-0.261,0.725-0.401,1.496-0.391,2.301c0.036,2.613,1.621,4.875,3.95,6.125 c0.771,0.18,1.418,0.264,1.829,0.275c0.011,0,0.026,0.002,0.037,0c0,0,0.832-0.096,1.972-0.494c0.422-0.148-5.624-6.641-7.233-8.363 L23.448,44.59z" fill-opacity="0.1" stroke-opacity="0.1"/>
-<radialGradient cx="-877.4263" cy="-238.3691" gradientTransform="matrix(1.0009 -0.0086 0.0135 0.9911 906.6143 271.6763)" gradientUnits="userSpaceOnUse" id="SVGID_12_" r="12.0474">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.0424" style="stop-color:#FFBE82"/>
-<stop offset="0.4" style="stop-color:#FFBE82"/>
-<stop offset="0.7333" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#FFBE82"/>
-</radialGradient>
-<path d="M32.6,52.1c0.653-0.35,0.819-0.34,1.351-0.74c0.98-0.74-8.83-9.123-8.83-9.123l-1.712,1.756 c-0.229,0.695-0.355,1.434-0.345,2.203c0.051,3.766,3.219,6.797,7.107,6.857C30.828,52.877,31.693,52.584,32.6,52.1z" fill="url(#SVGID_12_)"/>
-<path d="M14.866,29.428l0.634-0.215c0,0-2.781-12.441-3.885-11.868 c-0.291,0.151-0.427,0.268-0.573,0.401L14.866,29.428z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0361)" gradientUnits="userSpaceOnUse" id="SVGID_13_" x1="-889.625" x2="-885.2537" y1="-270.9771" y2="-257.0911">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.0424" style="stop-color:#FFBE82"/>
-<stop offset="0.4" style="stop-color:#FFBE82"/>
-<stop offset="0.7333" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#FFBE82"/>
-</linearGradient>
-<path d="M15.5,29.214l1.677-0.583c0.435-0.147,0.659-0.629,0.562-1.119l-1.129-3.446l-2.275-6.79 c-0.177-0.533-0.71-0.836-1.188-0.676c0,0-0.429,0.175-1.529,0.747L15.5,29.214z" fill="url(#SVGID_13_)"/>
-<path d="M25.121,42.236l-0.468,0.473l8.748,9.039c0.188-0.131,0.379-0.26,0.55-0.389 C34.931,50.619,25.121,42.236,25.121,42.236z" fill="#020202" fill-opacity="0.1" stroke-opacity="0.1"/>
-<linearGradient gradientTransform="matrix(0.9999 -0.0111 0.0111 0.9999 905.1068 277.0366)" gradientUnits="userSpaceOnUse" id="SVGID_14_" x1="-876.2178" x2="-867.1104" y1="-245.4277" y2="-235.398">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="0.0424" style="stop-color:#FFBE82"/>
-<stop offset="0.4" style="stop-color:#FFBE82"/>
-<stop offset="0.7333" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#FFBE82"/>
-</linearGradient>
-<path d="M33.95,51.357c0.978-0.738,1.295-1.059,1.295-1.059c0.364-0.373,0.338-1.002-0.059-1.412 l-7.534-7.756c-0.397-0.412-1.016-0.451-1.38-0.08l-1.151,1.186L33.95,51.357z" fill="url(#SVGID_14_)"/>
-</g>
-<g>
-<rect fill="none" height="30" width="30"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_1__" x1="15.0005" x2="15.0005" y1="4.5283" y2="27.0492">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<path d="M19.018,16.846v-4.316h4.535l-8.512-8.844l-8.592,8.844h4.631v4.316 c0,7.293,6.068,9.467,11.908,9.467v-6.422C21.189,19.891,19.018,19.002,19.018,16.846z" fill="url(#SVGID_1__)"/>
-<linearGradient gradientUnits="userSpaceOnUse" id="SVGID_2__" x1="15.0005" x2="15.0005" y1="4.0146" y2="12.8168">
-<stop offset="0" style="stop-color:#FFBE82"/>
-<stop offset="1" style="stop-color:#991B23"/>
-</linearGradient>
-<polygon fill="url(#SVGID_2__)" points="15.041,4.508 22.762,12.529 23.553,12.529 15.041,3.686 6.449,12.529 7.248,12.529 "/>
-</g>
-</svg>
--- a/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsevent.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logsevent.h Fri Jun 11 13:38:41 2010 +0300
@@ -54,6 +54,7 @@
void testSetContactLocalId();
void testUpdateRemotePartyFromContacts();
void testParseContactName();
+ void testSerialization();
private:
--- a/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logseventdata.h Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/tsrc/ut_logsengine/inc/ut_logseventdata.h Fri Jun 11 13:38:41 2010 +0300
@@ -49,6 +49,7 @@
void testSetters();
void testGetters();
void testIsCsCompatible();
+ void testSerialization();
private:
--- a/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsevent.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/tsrc/ut_logsengine/src/ut_logsevent.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -184,3 +184,103 @@
QVERIFY(event.parseContactName(name) == "");
}
+void UT_LogsEvent::testSerialization()
+{
+ // Serialize/deserialize, no event data
+ LogsEvent event;
+ event.mLogId = 3;
+ event.mDirection = LogsEvent::DirMissed;
+ event.mEventType = LogsEvent::TypeVideoCall;
+ event.mUid = 222222;
+ event.mLogsEventData = 0;
+ event.mRemoteParty = "remotePart";
+ event.mNumber = "33333";
+ event.mDuplicates = 2;
+ event.mRingDuration = 3;
+ event.mIsRead = true;
+ event.mIsALS = false;
+ event.mDuration = 30;
+ event.mIndex = 3;
+ event.mIsInView = true;
+ event.mEventState = LogsEvent::EventAdded;
+ event.mIsLocallySeen = true;
+ event.mIsPrivate = false;
+ event.mIsUnknown = false;
+
+ QByteArray serializedEvent;
+ QDataStream stream(&serializedEvent, QIODevice::WriteOnly | QIODevice::Append);
+ event.serialize(stream);
+
+ QDataStream readStream(&serializedEvent, QIODevice::ReadOnly);
+
+ LogsEvent deserializedEvent(readStream);
+ QVERIFY( deserializedEvent.mLogId == 3 );
+ QVERIFY( deserializedEvent.mDirection == LogsEvent::DirMissed );
+ QVERIFY( deserializedEvent.mEventType == LogsEvent::TypeVideoCall );
+ QVERIFY( deserializedEvent.mUid == 222222 );
+ QVERIFY( deserializedEvent.mLogsEventData == 0 );
+ QVERIFY( deserializedEvent.mRemoteParty == "remotePart" );
+ QVERIFY( deserializedEvent.mNumber == "33333" );
+ QVERIFY( deserializedEvent.mDuplicates == 2 );
+ QVERIFY( deserializedEvent.mRingDuration == 3 );
+ QVERIFY( deserializedEvent.mIsRead == true );
+ QVERIFY( deserializedEvent.mIsALS == false );
+ QVERIFY( deserializedEvent.mDuration == 30 );
+ QVERIFY( deserializedEvent.mIndex == 3 );
+ QVERIFY( deserializedEvent.mIsInView == true );
+ QVERIFY( deserializedEvent.mEventState == LogsEvent::EventAdded );
+ QVERIFY( deserializedEvent.mIsLocallySeen == true );
+ QVERIFY( deserializedEvent.mIsPrivate == false );
+ QVERIFY( deserializedEvent.mIsUnknown == false );
+
+ // Serialize/deserialize, event data exists
+ event.mLogsEventData = new LogsEventData();
+
+ QByteArray serializedEvent2;
+ QDataStream stream2(&serializedEvent2, QIODevice::WriteOnly | QIODevice::Append);
+ event.serialize(stream2);
+ QDataStream readStream2(&serializedEvent2, QIODevice::ReadOnly);
+ LogsEvent deserializedEvent2(readStream2);
+ QVERIFY( deserializedEvent2.mLogId == 3 );
+ QVERIFY( deserializedEvent2.mDirection == LogsEvent::DirMissed );
+ QVERIFY( deserializedEvent2.mEventType == LogsEvent::TypeVideoCall );
+ QVERIFY( deserializedEvent2.mUid == 222222 );
+ QVERIFY( deserializedEvent2.mLogsEventData != 0 );
+ QVERIFY( deserializedEvent2.mRemoteParty == "remotePart" );
+ QVERIFY( deserializedEvent2.mNumber == "33333" );
+ QVERIFY( deserializedEvent2.mDuplicates == 2 );
+ QVERIFY( deserializedEvent2.mRingDuration == 3 );
+ QVERIFY( deserializedEvent2.mIsRead == true );
+ QVERIFY( deserializedEvent2.mIsALS == false );
+ QVERIFY( deserializedEvent2.mDuration == 30 );
+ QVERIFY( deserializedEvent2.mIndex == 3 );
+ QVERIFY( deserializedEvent2.mIsInView == true );
+ QVERIFY( deserializedEvent2.mEventState == LogsEvent::EventAdded );
+ QVERIFY( deserializedEvent2.mIsLocallySeen == true );
+ QVERIFY( deserializedEvent2.mIsPrivate == false );
+ QVERIFY( deserializedEvent2.mIsUnknown == false );
+
+ // Incorrect stream
+ QByteArray serializedEvent3;
+ QDataStream stream3(&serializedEvent3, QIODevice::ReadWrite | QIODevice::Append);
+ LogsEvent deserializedEvent3(stream3);
+ QVERIFY( deserializedEvent3.mLogId == 0 );
+ QVERIFY( deserializedEvent3.mDirection == LogsEvent::DirIn );
+ QVERIFY( deserializedEvent3.mEventType == LogsEvent::TypeVoiceCall );
+ QVERIFY( deserializedEvent3.mUid == 0 );
+ QVERIFY( deserializedEvent3.mLogsEventData == 0 );
+ QVERIFY( deserializedEvent3.mRemoteParty == "" );
+ QVERIFY( deserializedEvent3.mNumber == "" );
+ QVERIFY( deserializedEvent3.mDuplicates == 0 );
+ QVERIFY( deserializedEvent3.mRingDuration == 0 );
+ QVERIFY( deserializedEvent3.mIsRead == false );
+ QVERIFY( deserializedEvent3.mIsALS == false );
+ QVERIFY( deserializedEvent3.mDuration == 0 );
+ QVERIFY( deserializedEvent3.mIndex == 0 );
+ QVERIFY( deserializedEvent3.mIsInView == false );
+ QVERIFY( deserializedEvent3.mEventState == LogsEvent::EventAdded );
+ QVERIFY( deserializedEvent3.mIsLocallySeen == false );
+ QVERIFY( deserializedEvent3.mIsPrivate == false );
+ QVERIFY( deserializedEvent3.mIsUnknown == false );
+}
+
--- a/logsui/logsengine/tsrc/ut_logsengine/src/ut_logseventdata.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsengine/tsrc/ut_logsengine/src/ut_logseventdata.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -97,3 +97,8 @@
mEventData->mRemoteUrl = "test@1.2.3.4";
QVERIFY( !mEventData->isCsCompatible() );
}
+
+void UT_LogsEventData::testSerialization()
+{
+
+}
--- a/logsui/logsservices/src/logsservices.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/logsservices/src/logsservices.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -19,10 +19,11 @@
#include <logsservices.h>
#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 )
--- a/logsui/rom/logsresources.iby Thu May 27 12:51:53 2010 +0300
+++ b/logsui/rom/logsresources.iby Fri Jun 11 13:38:41 2010 +0300
@@ -23,4 +23,5 @@
data=DATAZ_\resource\apps\logs.rsc \resource\apps\logs.rsc
data=DATAZ_\QT_TRANSLATIONS_DIR\dialer.qm QT_TRANSLATIONS_DIR\dialer.qm
+
#endif
--- a/logsui/tsrc/logdbmodifier/addeventtest/install/clientlogstest.pkg Thu May 27 12:51:53 2010 +0300
+++ b/logsui/tsrc/logdbmodifier/addeventtest/install/clientlogstest.pkg Fri Jun 11 13:38:41 2010 +0300
@@ -37,7 +37,7 @@
;
; Three files to install
;
-"\epoc32\release\armv5\udeb\logclienttest.exe" -"!:\sys\bin\logclienttest.exe"
+"\epoc32\release\armv5\urel\logclienttest.exe" -"!:\sys\bin\logclienttest.exe"
"\epoc32\winscw\c\system\testlogclients.dat" -"!:\system\testlogclients.dat"
--- a/logsui/tsrc/logsservicestester/install/logsservicestester.pkg Thu May 27 12:51:53 2010 +0300
+++ b/logsui/tsrc/logsservicestester/install/logsservicestester.pkg Fri Jun 11 13:38:41 2010 +0300
@@ -37,6 +37,6 @@
;
; Three files to install
;
-"\epoc32\release\armv5\udeb\logsservicestester.exe" - "!:\sys\bin\logsservicestester.exe"
+"\epoc32\release\armv5\urel\logsservicestester.exe" - "!:\sys\bin\logsservicestester.exe"
"\epoc32\data\z\resource\apps\logsservicestester.rsc" - "!:\resource\apps\logsservicestester.rsc"
"\epoc32\data\z\private\10003a3f\import\apps\logsservicestester_reg.rsc" - "!:\private\10003a3f\import\apps\logsservicestester_reg.rsc"
--- a/logsui/tsrc/logsservicestester/logsservicestester.pro Thu May 27 12:51:53 2010 +0300
+++ b/logsui/tsrc/logsservicestester/logsservicestester.pro Fri Jun 11 13:38:41 2010 +0300
@@ -19,16 +19,22 @@
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
+INCLUDEPATH += ..\..\logsapp\inc
INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
CONFIG += hb
# Input
+HEADERS += logsservicetesterwidget.h
+HEADERS += logsservicetesterappcloser.h
+
SOURCES += main.cpp
+SOURCES += logsservicetesterwidget.cpp
+SOURCES += logsservicetesterappcloser.cpp
symbian: {
TARGET.UID2 = 0x100039CE
TARGET.UID3 = 0xEC209DCF
- TARGET.CAPABILITY = CAP_APPLICATION AllFiles
- LIBS += -llogsservices
+ TARGET.CAPABILITY = CAP_APPLICATION PowerMgmt
+ LIBS += -llogsservices -lxqservice
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/tsrc/logsservicestester/logsservicetesterappcloser.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,183 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QDebug>
+#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()";
+ }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/tsrc/logsservicestester/logsservicetesterappcloser.h Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,110 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef LOGSSERVICETESTERAPPCLOSER_H
+#define LOGSSERVICETESTERAPPCLOSER_H
+
+#include <e32base.h>
+#include <apgtask.h>
+#include <QTimer>
+
+
+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
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/tsrc/logsservicestester/logsservicetesterwidget.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,187 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <QGraphicsLinearLayout>
+#include <QScopedPointer>
+#include <QDebug>
+
+#include <hbmessagebox.h>
+#include <hblabel.h>
+#include <hbpushbutton.h>
+#include <hblineedit.h>
+#include <hbcombobox.h>
+#include <hbcheckbox.h>
+#include <xqappmgr.h>
+#include <xqaiwrequest.h>
+#include <logsservices.h>
+
+#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<XQAiwRequest> request(appMgr.create( QLatin1String(logsServiceName),
+ QLatin1String(logsInterfaceName),
+ QLatin1String(logsOperationName),
+ false));
+ if (!request.isNull()) {
+ int retValue = -1;
+ QList<QVariant> 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);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/tsrc/logsservicestester/logsservicetesterwidget.h Fri Jun 11 13:38:41 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef LOGSSERVICETESTERWIDGET_H
+#define LOGSSERVICETESTERWIDGET_H
+
+#include <hbwidget.h>
+
+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
+
--- a/logsui/tsrc/logsservicestester/main.cpp Thu May 27 12:51:53 2010 +0300
+++ b/logsui/tsrc/logsservicestester/main.cpp Fri Jun 11 13:38:41 2010 +0300
@@ -15,41 +15,19 @@
*
*/
-#include <QString>
-#include <QStringList>
-#include <QDebug>
#include <hbapplication.h>
#include <hbmainwindow.h>
-#include <logsservices.h>
+#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();
}
--- a/recents_plat/logs_engine_api/inc/logsevent.h Thu May 27 12:51:53 2010 +0300
+++ b/recents_plat/logs_engine_api/inc/logsevent.h Fri Jun 11 13:38:41 2010 +0300
@@ -27,6 +27,7 @@
class LogsEventData;
class LogsEventStrings;
class CLogEvent;
+class QDataStream;
QTM_BEGIN_NAMESPACE
class QContactName;
@@ -166,6 +167,16 @@
*/
LOGSENGINE_EXPORT bool isRead() const;
+ /**
+ * Construct event from serialized data stream
+ */
+ LOGSENGINE_EXPORT LogsEvent( QDataStream& serializedEvent );
+
+ /**
+ * Serialize event to data stream
+ */
+ LOGSENGINE_EXPORT bool serialize( QDataStream& serializeDestination );
+
public:
/**
--- a/recents_plat/logs_engine_api/inc/logsmodel.h Thu May 27 12:51:53 2010 +0300
+++ b/recents_plat/logs_engine_api/inc/logsmodel.h Fri Jun 11 13:38:41 2010 +0300
@@ -25,6 +25,7 @@
class LogsDbConnector;
class LogsMatchesModel;
class LogsConfigurationParams;
+class LogsDetailsModel;
/**
* Model for log events.
@@ -112,6 +113,12 @@
* @return 0 if configured succesfully
*/
LOGSENGINE_EXPORT int updateConfiguration(LogsConfigurationParams& params);
+
+ /**
+ * Get details model.
+ * @return details model
+ */
+ LOGSENGINE_EXPORT LogsDetailsModel* logsDetailsModel(LogsEvent& event);
public: // From QAbstractItemModel
--- a/recents_plat/logs_services_api/inc/logsservices.h Thu May 27 12:51:53 2010 +0300
+++ b/recents_plat/logs_services_api/inc/logsservices.h Fri Jun 11 13:38:41 2010 +0300
@@ -22,11 +22,39 @@
/**
* Logs application services
+* @deprecated Use XQApplicationManager instead.
+* Service name: "logs",
+* Interface name: "com.nokia.symbian.ILogsView"
+* Operation signature: "show(QVariantMap)"
+* Operation parameters:
+* "view_index": int, 0 - all recent, 1 - received, 2 - called, 3 - missed
+* "show_dialpad": bool, if true view is shown with dialpad opened on top
+* "dialpad_text": QString, number to be prefilled into dialpad
+*
+* Example usage:
+* XQApplicationManager appMgr;
+* QScopedPointer<XQAiwRequest> request(appMgr.create(QString("logs"),
+* QString("com.nokia.symbian.ILogsView"),
+* QString("show(QVariantMap)"), false));
+* if (!request.isNull()) {
+* int retValue = -1;
+* QList<QVariant> 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