Revision: 201019
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 27 May 2010 12:51:53 +0300
changeset 4 e52d42f9500c
parent 2 7119b73b84d6
child 6 41c0a814d878
Revision: 201019 Kit: 2010121
logsui/logsapp/inc/logspageindicatoritem.h
logsui/logsapp/inc/logsrecentcallsview.h
logsui/logsapp/logsapp.qrc
logsui/logsapp/resources/detailsView.docml
logsui/logsapp/resources/hbgroupboxheadingwidget.css
logsui/logsapp/resources/hblistviewitem.css
logsui/logsapp/resources/hblistviewitem.widgetml
logsui/logsapp/resources/matchesView.docml
logsui/logsapp/resources/recentCallsView.docml
logsui/logsapp/src/logsbaseview.cpp
logsui/logsapp/src/logspageindicatoritem.cpp
logsui/logsapp/src/logsrecentcallsview.cpp
logsui/logsapp/src/logsviewmanager.cpp
logsui/logsapp/tsrc/ut_logsapp/inc/ut_logspageindicatoritem.h
logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h
logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp
logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h
logsui/logsapp/tsrc/ut_logsapp/src/ut_logspageindicatoritem.cpp
logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp
logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp
logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp
logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h
logsui/logscntfinder/inc/logscntentry.h
logsui/logscntfinder/inc/logspredictive12keytranslator.h
logsui/logscntfinder/inc/logspredictivelatin12keytranslator.h
logsui/logscntfinder/inc/logspredictivethai12keytranslator.h
logsui/logscntfinder/inc/logspredictivetranslator.h
logsui/logscntfinder/logscntfinder.pro
logsui/logscntfinder/src/logscntentry.cpp
logsui/logscntfinder/src/logscntfinder.cpp
logsui/logscntfinder/src/logspredictive12keytranslator.cpp
logsui/logscntfinder/src/logspredictivelatin12keytranslator.cpp
logsui/logscntfinder/src/logspredictivethai12keytranslator.cpp
logsui/logscntfinder/src/logspredictivetranslator.cpp
logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h
logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinder.cpp
logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro
logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp
logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logscntentry.h
logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivelatin12keytranslator.h
logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivethai12keytranslator.h
logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivetranslator.h
logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntentry.cpp
logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntfinder.cpp
logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictive12keytranslator.cpp
logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivelatin12keytranslator.cpp
logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivethai12keytranslator.cpp
logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivetranslator.cpp
logsui/logsengine/inc/logsengdefs.h
logsui/logsengine/logssymbianos/inc/logseventparser.h
logsui/logsengine/logssymbianos/src/logseventparser.cpp
logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp
logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logseventparser.cpp
logsui/logsengine/src/logsevent.cpp
logsui/logsengine/src/logsmatchesmodel.cpp
logsui/logsengine/src/logsmodel.cpp
logsui/logsengine/tsrc/symbianos_stub/logseventparser_stub.cpp
recents_plat/logs_engine_api/inc/logsevent.h
--- a/logsui/logsapp/inc/logspageindicatoritem.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/inc/logspageindicatoritem.h	Thu May 27 12:51:53 2010 +0300
@@ -35,10 +35,14 @@
 
     void setActive(bool active = true);
     bool isActive() const;
+   
+protected:
     
-    
+    void changeEvent(QEvent * event);
+
 private:
 
+    void updateColor();
     void startAnimation();
 
 private slots:
--- a/logsui/logsapp/inc/logsrecentcallsview.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/inc/logsrecentcallsview.h	Thu May 27 12:51:53 2010 +0300
@@ -105,6 +105,8 @@
     void gestureEvent(QGestureEvent *event);
     
     QSwipeGesture::SwipeDirection swipeAngleToDirection(int angle, int delta); 
+    int getListItemTextWidth();
+    
     
 private:
     
--- a/logsui/logsapp/logsapp.qrc	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/logsapp.qrc	Thu May 27 12:51:53 2010 +0300
@@ -11,5 +11,6 @@
     <qresource prefix="/logslayouts" >
         <file alias="hblistviewitem.css">resources/hblistviewitem.css</file>
         <file alias="hblistviewitem.widgetml">resources/hblistviewitem.widgetml</file>
+        <file alias="hbgroupboxheadingwidget.css">resources/hbgroupboxheadingwidget.css</file>
     </qresource>
 </RCC>
--- a/logsui/logsapp/resources/detailsView.docml	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/resources/detailsView.docml	Thu May 27 12:51:53 2010 +0300
@@ -1,39 +1,25 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.7">
+<hbdocument version="1.0">
     <object name="logs_act_voice_call" type="HbAction">
-        <string name="iconText" value="Voice call"/>
-        <string name="text" value="Voice call" locid="txt_common_menu_voice_call"/>
-        <string name="toolTip" value="Voice call"/>
+        <string locid="txt_common_menu_voice_call" name="text" value="Voice call"/>
     </object>
     <object name="logs_act_video_call" type="HbAction">
-        <string name="iconText" value="Video call"/>
-        <string name="text" value="Video call" locid="txt_common_opt_video_call"/>
-        <string name="toolTip" value="Video call"/>
+        <string locid="txt_common_opt_video_call" name="text" value="Video call"/>
     </object>
     <object name="logs_act_internet_call" type="HbAction">
-        <string name="iconText" value="Internet call"/>
-        <string name="text" value="Internet call" locid="txt_common_menu_internet_call"/>
-        <string name="toolTip" value="Internet call"/>
+        <string locid="txt_common_menu_internet_call" name="text" value="Internet call"/>
     </object>
     <object name="logs_act_create_message" type="HbAction">
-        <string name="iconText" value="Create message"/>
-        <string name="text" value="Create message" locid="txt_common_opt_send_message"/>
-        <string name="toolTip" value="Create message"/>
+        <string locid="txt_common_opt_send_message" name="text" value="Create message"/>
     </object>
     <object name="logs_act_add_to_contacts" type="HbAction">
-        <string name="iconText" value="Add to contacts"/>
-        <string name="text" value="Add to contacts" locid="txt_common_menu_add_to_contacts"/>
-        <string name="toolTip" value="Add to contacts"/>
+        <string locid="txt_common_menu_add_to_contacts" name="text" value="Add to contacts"/>
     </object>
     <object name="logs_act_open_contact" type="HbAction">
-        <string name="iconText" value="Open contact"/>
-        <string name="text" value="Open contact" locid="txt_dialer_ui_menu_open_contact"/>
-        <string name="toolTip" value="Open contact"/>
+        <string locid="txt_dialer_ui_menu_open_contact" name="text" value="Open contact"/>
     </object>
     <object name="logs_act_delete_event" type="HbAction">
-        <string name="iconText" value="Delete event"/>
-        <string name="text" value="Delete event" locid="txt_dialer_ui_title_delete_event"/>
-        <string name="toolTip" value="Delete event"/>
+        <string locid="txt_dialer_ui_title_delete_event" name="text" value="Delete event"/>
     </object>
     <object name="logs_act_dialer" type="HbAction">
         <icon iconName="qtg_mono_dialer" name="icon"/>
@@ -48,45 +34,43 @@
         <string name="toolTip" value="Show"/>
     </object>
     <object name="logs_act_recent" type="HbAction">
-        <string name="iconText" value="Recent calls"/>
-        <string name="text" value="Recent calls" locid="txt_dialer_subhead_recent_calls"/>
-        <string name="toolTip" value="Recent calls"/>
+        <string locid="txt_dialer_subhead_recent_calls" name="text" value="Recent calls"/>
     </object>
     <object name="logs_act_received" type="HbAction">
-        <string name="iconText" value="Received calls"/>
-        <string name="text" value="Received calls" locid="txt_dial_subhead_received_calls"/>
-        <string name="toolTip" value="Received calls"/>
+        <string locid="txt_dial_subhead_received_calls" name="text" value="Received calls"/>
     </object>
     <object name="logs_act_dialled" type="HbAction">
-        <string name="iconText" value="Dialled calls"/>
-        <string name="text" value="Dialled calls" locid="txt_dialer_subhead_dialled_calls"/>
-        <string name="toolTip" value="Dialled calls"/>
+        <string locid="txt_dialer_subhead_dialled_calls" name="text" value="Dialled calls"/>
     </object>
     <object name="logs_act_missed" type="HbAction">
-        <string name="iconText" value="Missed calls"/>
-        <string name="text" value="Missed calls" locid="txt_dialer_subhead_missed_calls"/>
-        <string name="toolTip" value="Missed calls"/>
+        <string locid="txt_dialer_subhead_missed_calls" name="text" value="Missed calls"/>
     </object>
     <widget name="logs_details_view" type="HbView">
         <widget name="logs_content" role="HbView:widget" type="HbWidget">
-	          <widget name="logs_groupbox_remote_party_info" type="HbGroupBox">
-                <string name="heading" value=""/>
-                <bool name="collapsable" value="FALSE"/>
-                <real name="spacing" value="0un"/>
-            </widget>
-            <widget name="logs_details_list_view" type="HbListView">
-                <real name="z" value="2.0001"/>
-   		          <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                <real name="spacing" value="0un"/>
-            </widget>
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="logs_groupbox_remote_party_info"/>
-                <linearitem itemname="logs_details_list_view"/>
+            <widget name="container" type="HbWidget">
+                <widget name="logs_groupbox_remote_party_info" type="HbGroupBox">
+                    <bool name="collapsable" value="FALSE"/>
+                    <string name="heading"/>
+                </widget>
+                <widget name="logs_details_list_view" type="HbListView">
+                    <widget name="listItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem"/>
+                </widget>
+                <real name="z" value="1"/>
+                <layout orientation="Vertical" type="linear">
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                    <linearitem itemname="logs_groupbox_remote_party_info"/>
+                    <linearitem itemname="logs_details_list_view"/>
+                </layout>
+            </widget>		
+            <contentsmargins bottom="expr(var(hb-param-margin-view-bottom))" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-margin-view-right))" top="expr(var(hb-param-margin-view-top))"/>
+            <layout type="anchor">
+                <anchoritem dst="container" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="container" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                <anchoritem dst="container" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="container" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
             </layout>
         </widget>
         <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <real name="z" value="2"/>
             <enums name="orientation" value="Horizontal"/>
             <ref object="logs_act_contacts" role="HbToolBar:addAction"/>
             <ref object="logs_act_dialer" role="HbToolBar:addAction"/>
@@ -103,56 +87,8 @@
         </widget>
         <string name="title" value="Dialer"/>
     </widget>
-    <section name="portrait_dialpad">
-        <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="expr(var(hb-param-margin-view-bottom)+54un)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="logs_groupbox_remote_party_info"/>
-                <linearitem itemname="logs_details_list_view"/>
-            </layout>
-        </widget>
-        <widget name="logs_label_empty_list" type="HbLabel">
-            <rect height="26.12959" name="geometry" width="349.95" x="0.75un" y="8un"/>
-        </widget>
-        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <bool name="visible" value="FALSE"/>
-        </widget>
-    </section>
-    <section name="landscape_dialpad">
-        <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="expr(var(hb-param-margin-view-right)+48un)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="logs_groupbox_remote_party_info"/>
-                <linearitem itemname="logs_details_list_view"/>
-            </layout>
-        </widget>
-        <widget name="logs_label_empty_list" type="HbLabel">
-            <rect height="26" name="geometry" width="312.75" x="0.75un" y="8un"/>
-        </widget>
-        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <bool name="visible" value="FALSE"/>
-        </widget>
-    </section>
-    <section name="default">
-        <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="logs_groupbox_remote_party_info"/>
-                <linearitem itemname="logs_details_list_view"/>
-            </layout>
-        </widget>
-        <widget name="logs_label_empty_list" type="HbLabel">
-            <rect height="26.12959" name="geometry" width="349.95" x="0.75un" y="8un"/>
-        </widget>
-        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <bool name="visible" value="TRUE"/>
-        </widget>
-    </section>
-    
     <!-- Context menu -->    
     <widget name="logs_show_filter_menu" type="HbMenu">
-        <integer name="timeout" value="5000000"/>  <!-- 5 seconds timeout -->
-        <enums name="dismissPolicy" value="TapAnywhere"/>
         <ref object="logs_act_recent" role="HbMenu:addAction"/>
         <ref object="logs_act_dialled" role="HbMenu:addAction"/>
         <ref object="logs_act_received" role="HbMenu:addAction"/>
@@ -169,11 +105,38 @@
     <connect receiver="logs_details_view" sender="logs_act_contacts" signal="triggered(bool)" slot="openContactsApp()"/>
     <connect receiver="logs_details_view" sender="logs_act_show" signal="triggered(bool)" slot="showFilterMenu()"/>
     <connect receiver="logs_details_view" sender="logs_show_filter_menu" signal="triggered(HbAction*)" slot="changeFilter(HbAction*)"/>
-    <metadata activeUIState="Common ui state" display="QHD portrait" unit="un">
+    <section name="portrait_dialpad">
+        <widget name="logs_label_empty_list" type="HbLabel">
+            <rect height="var(hb-param-text-height-primary)" name="geometry" width="expr(var(hb-param-screen-width)-2*var(hb-param-margin-gene-screen))" x="var(hb-param-margin-gene-screen)" y="8.5un"/>
+        </widget>
+        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
+            <bool name="visible" value="FALSE"/>
+        </widget>
+        <widget name="logs_content" role="HbView:widget" type="HbWidget">
+            <contentsmargins bottom="expr(var(hb-param-screen-height)*0.55)" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-margin-view-right))" top="expr(var(hb-param-margin-view-top))"/>
+        </widget>
+    </section>
+    <section name="landscape_dialpad">
+        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
+            <bool name="visible" value="FALSE"/>
+        </widget>
+        <widget name="logs_content" role="HbView:widget" type="HbWidget">
+            <contentsmargins bottom="expr(var(hb-param-margin-view-bottom))" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-screen-height)/2)" top="expr(var(hb-param-margin-view-top))"/>
+        </widget>
+    </section>
+    <section name="default">
+        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
+            <bool name="visible" value="TRUE"/>
+        </widget>
+        <widget name="logs_content" role="HbView:widget" type="HbWidget">
+            <contentsmargins bottom="expr(var(hb-param-margin-view-bottom))" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-margin-view-right))" top="expr(var(hb-param-margin-view-top))"/>
+        </widget>
+    </section>
+    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
         <uistate name="portrait" sections="#common portrait_dialpad"/>
         <uistate name="landscape" sections="#common landscape_dialpad"/>
         <uistate name="default" sections="#common default"/>
-        <dummydata objectName="logs_list_view" section="#common" value="0"/>
-    </metadata>    
+        <dummydata objectName="logs_details_list_view" section="#common" value="app_list_template5"/>
+    </metadata>
 </hbdocument>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/logsui/logsapp/resources/hbgroupboxheadingwidget.css	Thu May 27 12:51:53 2010 +0300
@@ -0,0 +1,9 @@
+HbGroupBoxHeadingWidget[groupBoxType="1"]::text
+{
+    right:expr(4*var(hb-param-graphic-size-secondary));
+}
+ 
+HbGroupBoxHeadingWidget[groupBoxType="3"]::text
+{
+    right:expr(4*var(hb-param-graphic-size-secondary));
+}
--- a/logsui/logsapp/resources/hblistviewitem.css	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/resources/hblistviewitem.css	Thu May 27 12:51:53 2010 +0300
@@ -1,3 +1,7 @@
+HbListViewItem[layoutName="default"]{
+    layout:logs-portrait;
+}
+
 HbListViewItem[layoutName="logsLandscape"]{
     layout:logs-landscape;
 }
@@ -6,33 +10,22 @@
     layout:logs-landscape;
 }
 
-HbListViewItem::text-1[layoutName="logsLandscape"]{
-	fixed-width: 40.0un;
-	text-height: var(hb-param-text-height-primary);
+HbListViewItem::text-2[layoutName="default"]{
+    max-width:-1;
+    text-height: var(hb-param-text-height-secondary);
 }
 
-HbListViewItem::text-2[layoutName="logsLandscape"]{
-	
-	fixed-width: 40.0un;
-	text-height: var(hb-param-text-height-secondary);
+HbListViewItem::text-1[layoutName="logsLandscape"]{	
+    pref-width: expr(var(hb-param-screen-width)/2 - var(hb-param-graphic-size-primary-medium) - var(hb-param-margin-gene-left) - var(hb-param-margin-gene-middle-horizontal));
 }
 
-HbListViewItem::text-1[layoutName="logsLandscapeDialpad"]{
-	fixed-width: 38.0un;
-	text-height: var(hb-param-text-height-primary);
+HbListViewItem::text-2[layoutName="logsLandscape"]{	
+    max-width:-1;
+    text-height: var(hb-param-text-height-secondary);
 }
 
 HbListViewItem::text-2[layoutName="logsLandscapeDialpad"]{
-	fixed-width: 0.0un;
-	text-height: 0.0un;
+    max-width: 0.0un;
+    text-height: 0.0un;
 }
 
-HbListViewItem::text-1[layoutName="default"]{
-	fixed-width: 40.0un;
-	text-height: var(hb-param-text-height-primary);
-}
-
-HbListViewItem::text-2[layoutName="default"]{
-	fixed-width: 40.0un;
-	text-height: var(hb-param-text-height-secondary);
-}
--- a/logsui/logsapp/resources/hblistviewitem.widgetml	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/resources/hblistviewitem.widgetml	Thu May 27 12:51:53 2010 +0300
@@ -1,5 +1,45 @@
-<hbwidget version="0.1" type="listviewitem">
+<hbwidget version="0.1" type="listviewitem">    
     
+<!-- layout-portrait -->
+    <!--
+        Required items: 
+            text-1
+            
+        Items from left to right:
+            <- selection icon <- icon-1 <- text-1 -> icon-2 ->
+                                           text-2 ->
+                                         
+        Other:
+            selection icon: center aligned with text-1 center
+            icon-1: top aligned with text-1 top
+            icon-2: center aligned with text-1 center
+            
+            text-1: connected from TOP to item TOP and BOTTOM to text-2 TOP
+            text-2: connected BOTTOM to BOTTOM
+            text-3: connected BOTTOM to text-2 BOTTOM    
+    -->
+    <layout name="logs-portrait" type="mesh">
+      <meshitem src="icon-1" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-var(hb-param-margin-gene-left)" />
+      <meshitem src="icon-1" srcEdge="TOP" dst="text-1" dstEdge="TOP" />
+      
+      <meshitem src="text-1" srcEdge="LEFT" dst="icon-1" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" />
+      <meshitem src="text-1" srcEdge="TOP" dst="" dstEdge="TOP" spacing="-var(hb-param-margin-gene-top)"/>
+      <meshitem src="text-1" srcEdge="RIGHT" dst="icon-2" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" />
+      <meshitem src="text-1" srcEdge="BOTTOM" dst="text-2" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" />
+      
+      <meshitem src="text-2" srcEdge="LEFT" dst="text-1" dstEdge="LEFT" />
+      <meshitem src="text-2" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-right)" />
+      <meshitem src="text-2" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacing="var(hb-param-margin-gene-bottom)" />
+      
+      <meshitem src="icon-2" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-right)" />
+      <meshitem src="icon-2" srcEdge="CENTERV" dst="text-1" dstEdge="CENTERV" />
+      
+      <meshitem src="multiselection-toucharea" srcEdge="CENTERH" dst="selection-icon" dstEdge="CENTERH" />
+      <meshitem src="multiselection-toucharea" srcEdge="TOP" dst="" dstEdge="TOP" />
+      <meshitem src="multiselection-toucharea" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+    </layout>
+        
+                
 <!-- logs-landscape -->    
     <!--
         Required items: 
@@ -30,15 +70,9 @@
       <meshitem src="icon-2" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-right)"/>
       <meshitem src="icon-2" srcEdge="CENTERV" dst="icon-1" dstEdge="CENTERV" />
 
-      <meshitem src="background" srcEdge="LEFT" dst="" dstEdge="LEFT" />
-      <meshitem src="background" srcEdge="TOP" dst="" dstEdge="TOP" />
-      <meshitem src="background" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
-      <meshitem src="background" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
-  
-      <meshitem src="frame" srcEdge="LEFT" dst="" dstEdge="LEFT" />
-      <meshitem src="frame" srcEdge="TOP" dst="" dstEdge="TOP" />
-      <meshitem src="frame" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
-      <meshitem src="frame" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+      <meshitem src="multiselection-toucharea" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+      <meshitem src="multiselection-toucharea" srcEdge="TOP" dst="" dstEdge="TOP" />
+      <meshitem src="multiselection-toucharea" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
     </layout>
     
     
@@ -51,9 +85,9 @@
             icon -1 -> text-1
                                          
         Other:
-            icon-1: connected from TOP to item TOP and BOTTOM to item BOTTOM
-            
+            icon-1: connected from TOP to item TOP and BOTTOM to item BOTTOM            
             text-1: center aligned with icon-1 center
+            text-2 is forced not to become visible. It's size is set (0.0,0.0) in .css.
     -->
     <layout name="logs-landscape-dialpad" type="mesh">
       <meshitem src="icon-1" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-var(hb-param-margin-gene-left)"/>
@@ -64,15 +98,9 @@
       <meshitem src="text-1" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-right)" />
       <meshitem src="text-1" srcEdge="CENTERV" dst="icon-1" dstEdge="CENTERV" />
 
-      <meshitem src="background" srcEdge="LEFT" dst="" dstEdge="LEFT" />
-      <meshitem src="background" srcEdge="TOP" dst="" dstEdge="TOP" />
-      <meshitem src="background" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
-      <meshitem src="background" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
-
-      <meshitem src="frame" srcEdge="LEFT" dst="" dstEdge="LEFT" />
-      <meshitem src="frame" srcEdge="TOP" dst="" dstEdge="TOP" />
-      <meshitem src="frame" srcEdge="RIGHT" dst="" dstEdge="RIGHT" />
-      <meshitem src="frame" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
+      <meshitem src="multiselection-toucharea" srcEdge="LEFT" dst="" dstEdge="LEFT" />
+      <meshitem src="multiselection-toucharea" srcEdge="TOP" dst="" dstEdge="TOP" />
+      <meshitem src="multiselection-toucharea" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" />
     </layout>
     
 </hbwidget>
\ No newline at end of file
--- a/logsui/logsapp/resources/matchesView.docml	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/resources/matchesView.docml	Thu May 27 12:51:53 2010 +0300
@@ -1,19 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.7">
+<hbdocument version="1.0">
     <object name="logs_act_video_call" type="HbAction">
-        <string name="iconText" value="Video call"/>
-        <string name="text" value="Video call" locid="txt_common_opt_video_call"/>
-        <string name="toolTip" value="Video call"/>
+        <string locid="txt_common_opt_video_call" name="text" value="Video call"/>
     </object>
     <object name="logs_act_create_message" type="HbAction">
-        <string name="iconText" value="Send message"/>
-        <string name="text" value="Send message" locid="txt_common_opt_create_message"/>
-        <string name="toolTip" value="Send message"/>
+        <string locid="txt_common_opt_create_message" name="text" value="Send message"/>
     </object>
     <object name="logs_act_contact_search" type="HbAction">
-        <string name="iconText" value="Contact search"/>
-        <string name="text" value="Contact search" locid="txt_dialer_ui_opt_contact_search"/>
-        <string name="toolTip" value="Contact search"/>
+        <string locid="txt_dialer_ui_opt_contact_search" name="text" value="Contact search"/>
     </object>
     <object name="logs_act_dialer" type="HbAction">
         <icon iconName="qtg_mono_dialer" name="icon"/>
@@ -28,64 +22,60 @@
         <string name="toolTip" value="Show"/>
     </object>
     <object name="logs_act_recent" type="HbAction">
-        <string name="iconText" value="Recent calls"/>
-        <string name="text" value="Recent calls" locid="txt_dialer_subhead_recent_calls"/>
-        <string name="toolTip" value="Recent calls"/>
+        <string locid="txt_dialer_subhead_recent_calls" name="text" value="Recent calls"/>
     </object>
     <object name="logs_act_received" type="HbAction">
-        <string name="iconText" value="Received calls"/>
-        <string name="text" value="Received calls" locid="txt_dial_subhead_received_calls"/>
-        <string name="toolTip" value="Received calls"/>
+        <string locid="txt_dial_subhead_received_calls" name="text" value="Received calls"/>
     </object>
     <object name="logs_act_dialled" type="HbAction">
-        <string name="iconText" value="Dialled calls"/>
-        <string name="text" value="Dialled calls" locid="txt_dialer_subhead_dialled_calls"/>
-        <string name="toolTip" value="Dialled calls"/>
+        <string locid="txt_dialer_subhead_dialled_calls" name="text" value="Dialled calls"/>
     </object>
     <object name="logs_act_missed" type="HbAction">
-        <string name="iconText" value="Missed calls"/>
-        <string name="text" value="Missed calls" locid="txt_dialer_subhead_missed_calls"/>
-        <string name="toolTip" value="Missed calls"/>
+        <string locid="txt_dialer_subhead_missed_calls" name="text" value="Missed calls"/>
     </object>
     <widget name="logs_matches_view" type="HbView">
         <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <widget name="logs_list_view" type="HbListView">
-                <real name="z" value="2.0001"/>
-                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                <real name="spacing" value="0un"/>
-            </widget>
             <widget name="logs_label_empty_list" type="HbLabel">
                 <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <real name="z" value="3"/>
-                <rect height="26.12959" name="geometry" width="349.95" x="0.75un" y="8.25un"/>
-                <sizehint height="3.9un" type="PREFERRED" width="18.91045un"/>
-                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <real name="z" value="1"/>
                 <bool name="visible" value="FALSE"/>
-                <string name="plainText" value="No matches found" locid="txt_dialer_ui_list_no_matches_found"/>
-                <enums name="logicalFont" value="FontPrimary"/>
-            </widget>
-            <widget name="logs_groupbox_matched_calls" type="HbGroupBox">
-                <string name="heading" value="Matches" locid="txt_dialer_ui_subhead_matches"/>
-                <bool name="collapsable" value="FALSE"/>
-                <real name="spacing" value="0un"/>
+                <string locid="txt_dialer_ui_list_no_matches_found" name="plainText" value="No matches found"/>
+                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
             </widget>
             <widget name="logs_button_addtocontacts" type="HbPushButton">
-                <icon iconName="qtg_mono_add_contact" name="icon"/>
-                <enums name="layoutDirection" value="RightToLeft"/>
-                <real name="z" value="4"/>
-                <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                <sizehint height="9.0un" type="PREFERRED" width="22.0un"/>
-                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                <rect height="9.0un" name="geometry" width="22.0un" x="15.86un" y="16.71642un"/>
-            </widget>	    
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="logs_groupbox_matched_calls"/>
-                <linearitem itemname="logs_list_view"/>
+                <icon iconName="qtg_mono_add_to_contact" name="icon"/>
+                <real name="z" value="2"/>
+                <sizehint height="9un" type="PREFERRED" width="22un"/>
+            </widget>
+            <widget name="container" type="HbWidget">
+                <widget name="logs_groupbox_matched_calls" type="HbGroupBox">
+                    <bool name="collapsable" value="FALSE"/>
+                    <string locid="txt_dialer_ui_subhead_matches" name="heading" value="Matches"/>
+                </widget>
+                <widget name="logs_list_view" type="HbListView">
+                    <widget name="listItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem"/>
+                </widget>
+                <real name="z" value="3"/>
+                <layout orientation="Vertical" type="linear">
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                    <linearitem itemname="logs_groupbox_matched_calls"/>
+                    <linearitem itemname="logs_list_view"/>
+                </layout>
+            </widget>
+            <contentsmargins bottom="expr(var(hb-param-margin-view-bottom))" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-margin-view-right))" top="expr(var(hb-param-margin-view-top))"/>
+            <layout type="anchor">
+                <anchoritem dst="logs_button_addtocontacts" dstEdge="TOP" spacing="15un" src="" srcEdge="TOP"/>
+                <anchoritem dst="logs_button_addtocontacts" dstEdge="CENTERH" spacing="0un" src="" srcEdge="CENTERH"/>
+                <anchoritem dst="container" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="container" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                <anchoritem dst="container" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="container" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                <anchoritem dst="logs_label_empty_list" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-screen) )" src="" srcEdge="LEFT"/>
+                <anchoritem dst="logs_label_empty_list" dstEdge="TOP" spacing="8.5un" src="" srcEdge="TOP"/>
+                <anchoritem dst="logs_label_empty_list" dstEdge="RIGHT" spacing="expr(-var(hb-param-margin-gene-screen) )" src="" srcEdge="RIGHT"/>
             </layout>
         </widget>
         <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <real name="z" value="2"/>
             <enums name="orientation" value="Horizontal"/>
             <ref object="logs_act_contacts" role="HbToolBar:addAction"/>
             <ref object="logs_act_dialer" role="HbToolBar:addAction"/>
@@ -94,66 +84,12 @@
         <widget name="logs_view_menu2" role="HbView:menu" type="HbMenu">
             <ref object="logs_act_video_call" role="HbMenu:addAction"/>
             <ref object="logs_act_create_message" role="HbMenu:addAction"/>
-	    <ref object="logs_act_contact_search" role="HbMenu:addAction"/>
+            <ref object="logs_act_contact_search" role="HbMenu:addAction"/>
         </widget>
         <string name="title" value="Dialer"/>
     </widget>
-    <section name="portrait_dialpad">
-        <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="expr(var(hb-param-margin-view-bottom)+54un)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="logs_groupbox_matched_calls"/>
-                <linearitem itemname="logs_list_view"/>
-            </layout>
-        </widget>
-        <widget name="logs_label_empty_list" type="HbLabel">
-            <rect height="26.12959" name="geometry" width="349.95" x="0.75un" y="8un"/>
-        </widget>
-        <widget name="logs_button_addtocontacts" type="HbPushButton">
-            <rect height="9.0un" name="geometry" width="22.0un" x="15.86un" y="16.71642un"/>
-        </widget>
-        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <bool name="visible" value="FALSE"/>
-        </widget>
-    </section>
-    <section name="landscape_dialpad">
-        <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="expr(var(hb-param-margin-view-right)+48un)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="logs_groupbox_matched_calls"/>
-                <linearitem itemname="logs_list_view"/>
-            </layout>
-        </widget>
-        <widget name="logs_label_empty_list" type="HbLabel">
-            <rect height="26" name="geometry" width="312.75" x="0.75un" y="8un"/>
-        </widget>
-        <widget name="logs_button_addtocontacts" type="HbPushButton">
-            <rect height="9.0un" name="geometry" width="22.0un" x="12.88un" y="16.71642un"/>
-        </widget>
-        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <bool name="visible" value="FALSE"/>
-        </widget>
-    </section>
-    <section name="default">
-        <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="logs_groupbox_matched_calls"/>
-                <linearitem itemname="logs_list_view"/>
-            </layout>
-        </widget>
-        <widget name="logs_label_empty_list" type="HbLabel">
-            <rect height="26.12959" name="geometry" width="349.95" x="0.75un" y="8un"/>
-        </widget>
-        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <bool name="visible" value="TRUE"/>
-        </widget>
-    </section>
-
     <!-- Context menu -->    
     <widget name="logs_show_filter_menu" type="HbMenu">
-        <integer name="timeout" value="5000000"/> <!-- 5 seconds timeout -->
-        <enums name="dismissPolicy" value="TapAnywhere"/>
         <ref object="logs_act_recent" role="HbMenu:addAction"/>
         <ref object="logs_act_dialled" role="HbMenu:addAction"/>
         <ref object="logs_act_received" role="HbMenu:addAction"/>
@@ -167,7 +103,31 @@
     <connect receiver="logs_matches_view" sender="logs_button_addtocontacts" signal="clicked()" slot="saveNumberInDialpadToContacts()"/>
     <connect receiver="logs_matches_view" sender="logs_act_show" signal="triggered(bool)" slot="showFilterMenu()"/>
     <connect receiver="logs_matches_view" sender="logs_show_filter_menu" signal="triggered(HbAction*)" slot="changeFilter(HbAction*)"/>
-    <metadata activeUIState="Common ui state" display="QHD portrait" unit="un">
+    <section name="portrait_dialpad">
+        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
+            <bool name="visible" value="FALSE"/>
+        </widget>
+        <widget name="logs_content" role="HbView:widget" type="HbWidget">
+            <contentsmargins bottom="expr(var(hb-param-screen-height)*0.55)" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-margin-view-right))" top="expr(var(hb-param-margin-view-top))"/>
+        </widget>
+    </section>
+    <section name="landscape_dialpad">
+        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
+            <bool name="visible" value="FALSE"/>
+        </widget>
+        <widget name="logs_content" role="HbView:widget" type="HbWidget">
+            <contentsmargins bottom="expr(var(hb-param-margin-view-bottom))" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-screen-height)/2)" top="expr(var(hb-param-margin-view-top))"/>
+        </widget>
+    </section>
+    <section name="default">
+        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
+            <bool name="visible" value="TRUE"/>
+        </widget>
+        <widget name="logs_content" role="HbView:widget" type="HbWidget">
+            <contentsmargins bottom="expr(var(hb-param-margin-view-bottom))" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-margin-view-right))" top="expr(var(hb-param-margin-view-top))"/>
+        </widget>
+    </section>
+    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
         <uistate name="portrait" sections="#common portrait_dialpad"/>
         <uistate name="landscape" sections="#common landscape_dialpad"/>
--- a/logsui/logsapp/resources/recentCallsView.docml	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/resources/recentCallsView.docml	Thu May 27 12:51:53 2010 +0300
@@ -1,31 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="0.7">
+<hbdocument version="1.0">
     <object name="logs_act_video_call" type="HbAction">
-        <string name="iconText" value="Video call"/>
-        <string name="text" value="Video call" locid="txt_common_opt_video_call"/>
-        <string name="toolTip" value="Video call"/>
+        <string locid="txt_common_opt_video_call" name="text" value="Video call"/>
     </object>
     <object name="logs_act_create_message" type="HbAction">
-        <string name="iconText" value="Send message"/>
-        <string name="text" value="Send message" locid="txt_common_opt_create_message"/>
-        <string name="toolTip" value="Send message"/>
+        <string locid="txt_common_opt_create_message" name="text" value="Send message"/>
     </object>
     <object name="logs_act_add_to_contacts" type="HbAction">
-        <string name="iconText" value="Add to contacts"/>
-        <string name="text" value="Add to contacts" locid="txt_common_menu_add_to_contacts"/>
-        <string name="toolTip" value="Add to contacts"/>
+        <string locid="txt_common_menu_add_to_contacts" name="text" value="Add to contacts"/>
     </object>
     <object name="logs_act_clear_list" type="HbAction">
-        <string name="iconText" value="Clear list"/>
-        <string name="text" value="Clear list" locid="txt_dialer_ui_opt_clear_list"/>
-        <string name="toolTip" value="Clear list"/>
+        <string locid="txt_dialer_ui_opt_clear_list" name="text" value="Clear list"/>
     </object>
     <object name="logs_act_contact_search" type="HbAction">
-        <string name="iconText" value="Contact search"/>
-        <string name="text" value="Contact search" locid="txt_dialer_ui_opt_contact_search"/>
-        <string name="toolTip" value="Contact search"/>
+        <string locid="txt_dialer_ui_opt_contact_search" name="text" value="Contact search"/>
     </object>
-    
     <object name="logs_act_dialer" type="HbAction">
         <icon iconName="qtg_mono_dialer" name="icon"/>
         <string name="toolTip" value="Dialer"/>
@@ -39,74 +28,73 @@
         <string name="toolTip" value="Show"/>
     </object>
     <object name="logs_act_recent" type="HbAction">
-        <string name="iconText" value="Recent calls"/>
-        <string name="text" value="Recent calls" locid="txt_dialer_subhead_recent_calls"/>
-        <string name="toolTip" value="Recent calls"/>
+        <string locid="txt_dialer_subhead_recent_calls" name="text" value="Recent calls"/>
         <string name="checkable" value="TRUE"/>
     </object>
     <object name="logs_act_received" type="HbAction">
-        <string name="iconText" value="Received calls"/>
-        <string name="text" value="Received calls" locid="txt_dial_subhead_received_calls"/>
-        <string name="toolTip" value="Received calls"/>
+        <string locid="txt_dial_subhead_received_calls" name="text" value="Received calls"/>
         <string name="checkable" value="TRUE"/>        
     </object>
     <object name="logs_act_dialled" type="HbAction">
-        <string name="iconText" value="Dialled calls"/>
-        <string name="text" value="Dialled calls" locid="txt_dialer_subhead_dialled_calls"/>
-        <string name="toolTip" value="Dialled calls"/>
+        <string locid="txt_dialer_subhead_dialled_calls" name="text" value="Dialled calls"/>
         <string name="checkable" value="TRUE"/>        
     </object>
     <object name="logs_act_missed" type="HbAction">
-        <string name="iconText" value="Missed calls"/>
-        <string name="text" value="Missed calls" locid="txt_dialer_subhead_missed_calls"/>
-        <string name="toolTip" value="Missed calls"/>
+        <string locid="txt_dialer_subhead_missed_calls" name="text" value="Missed calls"/>
         <string name="checkable" value="TRUE"/>        
     </object>
     <widget name="logs_recent_calls_view" type="HbView">
         <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <widget name="logs_list_view" type="HbListView">
-                <real name="z" value="2.0001"/>
-                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                <real name="spacing" value="0un"/>
-            </widget>
             <widget name="logs_label_empty_list" type="HbLabel">
                 <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <real name="z" value="3"/>
-                <rect height="26.12959" name="geometry" width="349.95" x="0.75un" y="8.25un"/>
-                <sizehint height="3.9un" type="PREFERRED" width="18.91045un"/>
-                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                <real name="z" value="1"/>
                 <bool name="visible" value="FALSE"/>
-                <string name="plainText" value="No history of calls" locid="txt_dialer_ui_list_no_history_of_calls"/>
-                <enums name="logicalFont" value="FontPrimary"/>    
+                <string locid="txt_dialer_ui_list_no_history_of_calls" name="plainText" value="No history of calls"/>
+                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-primary)"/>
             </widget>
-            <widget name="qroupbox_container" type="HbWidget">
-                <widget name="logs_groupbox_recent_calls" type="HbGroupBox">
-	                <string name="heading" value="Recent calls"/>
-	                <bool name="collapsable" value="FALSE"/>
-	                <real name="spacing" value="0un"/>
+            <widget name="container" type="HbWidget">
+                <widget name="qroupbox_container" type="HbWidget">
+                    <widget name="logs_groupbox_recent_calls" type="HbGroupBox">
+                        <real name="z" value="1"/>
+                        <bool name="collapsable" value="FALSE"/>
+                        <string name="heading" value="Recent calls"/>
+                    </widget>
+                    <widget name="logs_page_indicator" type="LogsPageIndicator">
+                        <real name="z" value="2"/>
+                        <sizehint height="var(hb-param-graphic-size-secondary)" type="PREFERRED" width="expr(4*var(hb-param-graphic-size-secondary))"/>
+                    </widget>
+                    <real name="z" value="0"/>
+                    <layout type="anchor">
+                        <anchoritem dst="logs_groupbox_recent_calls" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                        <anchoritem dst="logs_groupbox_recent_calls" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                        <anchoritem dst="logs_groupbox_recent_calls" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                        <anchoritem dst="logs_groupbox_recent_calls" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                        <anchoritem dst="logs_page_indicator" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                        <anchoritem dst="logs_page_indicator" dstEdge="CENTERV" spacing="0un" src="" srcEdge="CENTERV"/>
+                    </layout>
                 </widget>
-                <widget name="logs_page_indicator" type="LogsPageIndicator">
-                    <real name="z" value="3"/>
-	                <sizehint type="PREFERRED" height="var(hb-param-graphic-size-secondary)" width="expr(4*var(hb-param-graphic-size-secondary))"/>
+                <widget name="logs_list_view" type="HbListView">
+                    <widget name="listItemPrototype" role="HbAbstractView:prototype" type="HbListViewItem"/>
                 </widget>
                 <real name="z" value="2"/>
-                <layout type="anchor" widget="qroupbox_container">
-                    <anchoritem dst="logs_groupbox_recent_calls" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                    <anchoritem dst="logs_groupbox_recent_calls" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
-                    <anchoritem dst="logs_groupbox_recent_calls" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
-                    <anchoritem dst="logs_groupbox_recent_calls" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
-                    <anchoritem dst="logs_page_indicator" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
-                    <anchoritem dst="logs_page_indicator" dstEdge="CENTERV" spacing="0un" src="" srcEdge="CENTERV"/>
+                <layout orientation="Vertical" type="linear">
+                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                    <linearitem itemname="qroupbox_container"/>
+                    <linearitem itemname="logs_list_view"/>
                 </layout>
             </widget>
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="qroupbox_container"/>
-                <linearitem itemname="logs_list_view"/>
+            <contentsmargins bottom="expr(var(hb-param-margin-view-bottom))" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-margin-view-right))" top="expr(var(hb-param-margin-view-top))"/>
+            <layout type="anchor">
+                <anchoritem dst="container" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                <anchoritem dst="container" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                <anchoritem dst="container" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="container" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                <anchoritem dst="logs_label_empty_list" dstEdge="LEFT" spacing="expr(var(hb-param-margin-gene-screen))" src="" srcEdge="LEFT"/>
+                <anchoritem dst="logs_label_empty_list" dstEdge="TOP" spacing="8.5un" src="" srcEdge="TOP"/>
+                <anchoritem dst="logs_label_empty_list" dstEdge="RIGHT" spacing="expr(-var(hb-param-margin-gene-screen))" src="" srcEdge="RIGHT"/>
             </layout>
         </widget>
         <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <real name="z" value="2"/>
             <enums name="orientation" value="Horizontal"/>
             <ref object="logs_act_contacts" role="HbToolBar:addAction"/>
             <ref object="logs_act_dialer" role="HbToolBar:addAction"/>
@@ -121,73 +109,13 @@
         </widget>
         <string name="title" value="Dialer"/>
     </widget>
-    <section name="portrait_dialpad">
-        <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="expr(var(hb-param-margin-view-bottom)+54un)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="qroupbox_container"/>
-                <linearitem itemname="logs_list_view"/>
-            </layout>
-        </widget>
-        <widget name="logs_label_empty_list" type="HbLabel">
-            <rect height="26.12959" name="geometry" width="349.95" x="0.75un" y="8un"/>
-        </widget>
-        <widget name="logs_page_indicator" type="LogsPageIndicator">
-	        <sizehint type="PREFERRED" width="expr(4*var(hb-param-graphic-size-secondary))"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-        </widget>        
-        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <bool name="visible" value="FALSE"/>
-        </widget>
-    </section>
-    <section name="landscape_dialpad">
-        <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="expr(var(hb-param-margin-view-right)+48un)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="qroupbox_container"/>
-                <linearitem itemname="logs_list_view"/>
-            </layout>
-        </widget>
-        <widget name="logs_label_empty_list" type="HbLabel">
-            <rect height="26" name="geometry" width="312.75" x="0.75un" y="8un"/>
-        </widget>
-        <widget name="logs_page_indicator" type="LogsPageIndicator">
-	        <sizehint type="PREFERRED" width="expr(4*var(hb-param-graphic-size-secondary)+0.75un)"/>
-            <contentsmargins bottom="0un" left="0un" right="0.75un" top="0un"/>
-        </widget>
-        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <bool name="visible" value="FALSE"/>
-        </widget>
-    </section>
-    <section name="default">
-        <widget name="logs_content" role="HbView:widget" type="HbWidget">
-            <layout orientation="Vertical" type="linear">
-                <contentsmargins bottom="var(hb-param-margin-view-bottom)" left="var(hb-param-margin-view-left)" right="var(hb-param-margin-view-right)" top="var(hb-param-margin-view-top)"/>
-                <linearitem itemname="qroupbox_container"/>
-                <linearitem itemname="logs_list_view"/>
-            </layout>
-        </widget>
-        <widget name="logs_label_empty_list" type="HbLabel">
-            <rect height="26.12959" name="geometry" width="349.95" x="0.75un" y="8un"/>
-        </widget>
-        <widget name="logs_page_indicator" type="LogsPageIndicator">
-	        <sizehint type="PREFERRED" width="expr(4*var(hb-param-graphic-size-secondary))"/>
-            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-        </widget>
-        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
-            <bool name="visible" value="TRUE"/>
-        </widget>
-    </section>
-
     <!-- Context menu -->    
     <widget name="logs_show_filter_menu" type="HbMenu">
-        <integer name="timeout" value="5000000"/> <!-- 5 seconds timeout -->
-        <enums name="dismissPolicy" value="TapAnywhere"/>
         <ref object="logs_act_recent" role="HbMenu:addAction"/>
         <ref object="logs_act_dialled" role="HbMenu:addAction"/>
         <ref object="logs_act_received" role="HbMenu:addAction"/>
         <ref object="logs_act_missed" role="HbMenu:addAction"/>
-    </widget>    
+    </widget>
     <connect receiver="logs_recent_calls_view" sender="logs_act_video_call" signal="triggered(bool)" slot="videoCallToCurrentNum()"/>
     <connect receiver="logs_recent_calls_view" sender="logs_act_create_message" signal="triggered(bool)" slot="sendMessageToCurrentNum()"/>
     <connect receiver="logs_recent_calls_view" sender="logs_act_add_to_contacts" signal="triggered(bool)" slot="addToContacts()"/>
@@ -197,7 +125,43 @@
     <connect receiver="logs_recent_calls_view" sender="logs_act_contacts" signal="triggered(bool)" slot="openContactsApp()"/>
     <connect receiver="logs_recent_calls_view" sender="logs_act_show" signal="triggered(bool)" slot="showFilterMenu()"/>
     <connect receiver="logs_recent_calls_view" sender="logs_show_filter_menu" signal="triggered(HbAction*)" slot="changeFilter(HbAction*)"/>
-    <metadata activeUIState="Common ui state" display="QHD portrait" unit="un">
+    <section name="portrait_dialpad">
+        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
+            <bool name="visible" value="FALSE"/>
+        </widget>
+        <widget name="logs_content" role="HbView:widget" type="HbWidget">
+            <contentsmargins bottom="expr(var(hb-param-screen-height)*0.55)" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-margin-view-right))" top="expr(var(hb-param-margin-view-top))"/>
+        </widget>
+        <widget name="logs_page_indicator" type="LogsPageIndicator">
+            <sizehint type="PREFERRED" width="expr(4*var(hb-param-graphic-size-secondary))"/>
+            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+        </widget>
+    </section>
+    <section name="landscape_dialpad">
+        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
+            <bool name="visible" value="FALSE"/>
+        </widget>
+        <widget name="logs_content" role="HbView:widget" type="HbWidget">
+            <contentsmargins bottom="expr(var(hb-param-margin-view-bottom))" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-screen-height)/2)" top="expr(var(hb-param-margin-view-top))"/>
+        </widget>
+        <widget name="logs_page_indicator" type="LogsPageIndicator">
+            <sizehint type="PREFERRED" width="expr(4*var(hb-param-graphic-size-secondary)+0.75un)"/>
+            <contentsmargins bottom="0un" left="0un" right="0.75un" top="0un"/>
+        </widget>
+    </section>
+    <section name="default">
+        <widget name="logs_toolbar" role="HbView:toolBar" type="HbToolBar">
+            <bool name="visible" value="TRUE"/>
+        </widget>
+        <widget name="logs_content" role="HbView:widget" type="HbWidget">
+            <contentsmargins bottom="expr(var(hb-param-margin-view-bottom))" left="expr(var(hb-param-margin-view-left))" right="expr(var(hb-param-margin-view-right))" top="expr(var(hb-param-margin-view-top))"/>
+        </widget>
+        <widget name="logs_page_indicator" type="LogsPageIndicator">
+            <sizehint type="PREFERRED" width="expr(4*var(hb-param-graphic-size-secondary))"/>
+            <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+        </widget>
+    </section>
+    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
         <uistate name="portrait" sections="#common portrait_dialpad"/>
         <uistate name="landscape" sections="#common landscape_dialpad"/>
--- a/logsui/logsapp/src/logsbaseview.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/src/logsbaseview.cpp	Thu May 27 12:51:53 2010 +0300
@@ -392,11 +392,11 @@
         mDialpad->setPreferredSize(screenRect.width()/2,
                                    (screenRect.height()-scenePos().y()));                                  
     } else {
-        // dialpad takes 65% of the screen height
+        // dialpad takes 55% of the screen height
         qreal screenHeight = screenRect.height();
-        mDialpad->setPos(QPointF(0, screenHeight/2.25));
+        mDialpad->setPos(QPointF(0, screenHeight*0.45));
         mDialpad->setPreferredSize(screenRect.width(),
-                                   screenHeight-screenHeight/2.25);        
+                                   screenHeight*0.55);        
     }
     LOGS_QDEBUG( "logs [UI] <- LogsBaseView::setDialpadPosition()" );
 }
@@ -510,17 +510,6 @@
     if (itemContextMenu->actions().count() > 0) {
         itemContextMenu->setPreferredPos(coords,HbPopup::TopLeftCorner);
         itemContextMenu->open();
-        //TODO: 
-        //the hack below is needed since otherwise listbox will get mouse event
-        //and "activated" signal will be emitted (=>initiateCallback() called)
-        //Remove it, when something is done in platform code for that
-        if (scene()) {
-             QGraphicsItem *item = scene()->mouseGrabberItem();
-             if (item) {
-                 LOGS_QDEBUG( "logs [UI] -> LogsBaseView::showListItemMenu() ungrabbing the mouse" );
-                 item->ungrabMouse();
-             }
-        }
     }
 }
 
@@ -715,7 +704,7 @@
                 new HbLabel(hbTrId("txt_dial_title_add_to_contacts"), popup));
         popup->setAttribute(Qt::WA_DeleteOnClose);
         popup->setTimeout( HbPopup::NoTimeout );
-        popup->setSecondaryAction(
+        popup->addAction(
                 new HbAction(hbTrId("txt_dial_button_cancel"), popup));
 
         HbWidget* buttonWidget = new HbWidget(popup);
@@ -1037,7 +1026,7 @@
 //
 void LogsBaseView::handleOrientationChanged()
 {
-    LOGS_QDEBUG( "logs [UI] -> LogsBaseView::handleOrientationChanged()!" );
+    LOGS_QDEBUG( "logs [UI] -> LogsBaseView::handleOrientationChanged()" );
     setDialpadPosition();
     updateWidgetsSizeAndLayout();    
     LOGS_QDEBUG( "logs [UI] <- LogsBaseView::handleOrientationChanged()");
@@ -1063,16 +1052,22 @@
 {
     HbMessageBox* note = new HbMessageBox(text, HbMessageBox::MessageTypeQuestion);
     note->setAttribute(Qt::WA_DeleteOnClose);
-    note->setHeadingWidget(new HbLabel( heading ));
-    //note->setText( text );
-    note->setPrimaryAction(new HbAction(hbTrId("txt_common_button_ok"), note));
-    note->setSecondaryAction(new HbAction(hbTrId("txt_common_button_cancel"), note));
-
-    if (receiver && okSlot) {
-        connect(note->primaryAction(), SIGNAL(triggered()), receiver, okSlot);
+    note->setHeadingWidget(new HbLabel(heading));
+    note->setDismissPolicy(HbPopup::TapOutside);    
+    
+    if (note->actions().count() > 0 && note->actions().at(0)) {
+        note->actions().at(0)->setText(hbTrId("txt_common_button_ok"));
+        
+        if (receiver && okSlot) {
+            connect(note->actions().at(0), SIGNAL(triggered()), receiver, okSlot);
+        }
     }
-    if (receiver && cancelSlot) {
-        connect(note->secondaryAction(), SIGNAL(triggered()), receiver, cancelSlot);
+    if (note->actions().count() > 1 && note->actions().at(1)) {
+        note->actions().at(1)->setText(hbTrId("txt_common_button_cancel"));
+    
+        if (receiver && cancelSlot) {
+            connect(note->actions().at(1), SIGNAL(triggered()), receiver, cancelSlot);
+        }
     }
     note->open();
 }
@@ -1090,11 +1085,9 @@
         if ( isContactSearchPermanentlyDisabled() ){
            contactSearchAction->setVisible(false);
         } else if ( isContactSearchEnabled() ){
-           contactSearchAction->setIconText("Contact search off");
            contactSearchAction->setText(hbTrId("txt_dialer_ui_opt_contact_search_off"));
            contactSearchAction->setVisible(mDialpad->isOpen());
         } else {
-           contactSearchAction->setIconText("Contact search on");
            contactSearchAction->setText(hbTrId("txt_dialer_ui_opt_contact_search_on"));
            contactSearchAction->setVisible(mDialpad->isOpen());
         }
--- a/logsui/logsapp/src/logspageindicatoritem.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/src/logspageindicatoritem.cpp	Thu May 27 12:51:53 2010 +0300
@@ -17,12 +17,14 @@
 
 #include <QGraphicsColorizeEffect>
 #include <QPropertyAnimation>
-
+#include <hbcolorscheme.h>
+#include <hbevent.h>
 #include "logspageindicatoritem.h"
+#include "logslogger.h"
 
-
-const char logsNormalIconName[]    = "qtg_graf_hspage_normal";//"qtg_mono_tab_passive";//
-const char logsHighlightIconName[] = "qtg_graf_hspage_highlight";//"qtg_mono_tab_active";//
+const char logsNormalIconName[]    = "qtg_mono_tab_passive";
+const char logsHighlightIconName[] = "qtg_mono_tab_active";
+const char logsIconColor[] = "qtc_button_normal";//"qtc_default_main_pane_normal");//
   
 const int logsEffectDurationInMs = 1000;
 
@@ -40,6 +42,9 @@
         setIcon(HbIcon(logsNormalIconName));
     }
 
+    setFlags(HbIcon::Colorized);
+    updateColor();
+     
     QGraphicsColorizeEffect *effect = new QGraphicsColorizeEffect;
     effect->setColor(Qt::white);
     effect->setStrength(0);
@@ -85,6 +90,32 @@
 //
 // -----------------------------------------------------------------------------
 //
+void LogsPageIndicatorItem::changeEvent(QEvent * event)
+{
+    if (event->type() == HbEvent::ThemeChanged) {
+        LOGS_QDEBUG( "logs [UI] LogsPageIndicatorItem::changeEvent(), themeChanged" );
+        updateColor();
+    }
+    HbIconItem::changeEvent(event);
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void LogsPageIndicatorItem::updateColor()
+{
+    QColor col = HbColorScheme::color(logsIconColor);
+    if (col.isValid() && (color() != col) ) {
+        setColor(col);
+        LOGS_QDEBUG_2( "logs [UI] LogsPageIndicatorItem::updateColor(), color: ", col );
+    }
+}
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 void LogsPageIndicatorItem::startAnimation()
 {
     graphicsEffect()->setEnabled(true);
--- a/logsui/logsapp/src/logsrecentcallsview.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/src/logsrecentcallsview.cpp	Thu May 27 12:51:53 2010 +0300
@@ -412,7 +412,6 @@
             this,
             SLOT(showListItemMenu(HbAbstractViewItem*, const QPointF&)));
     
-    mListView->setScrollingStyle(HbScrollArea::PanOrFlick); 
     mListView->setFrictionEnabled(true);
     
     mListViewX = mListView->pos().x();
@@ -706,22 +705,51 @@
         updateMenu();
         updateListLayoutName(*mListView);
         updateListSize();
-        HbDeviceProfile deviceProf;
         LogsConfigurationParams param;
-        QString testString = mListView->layoutName();
-        //note: ListItemTextWidth values are currently hardcoded and 
-        //they are taken from hblistviewitem.css "text-1" field
-        if (mListView->layoutName() == logsListLandscapeDialpadLayout) {
-            param.setListItemTextWidth( 38 * deviceProf.unitValue() );
-        } else {
-            param.setListItemTextWidth( 40 * deviceProf.unitValue() );
-        }
+        param.setListItemTextWidth( getListItemTextWidth() );
         mModel->updateConfiguration(param);
     }
     LOGS_QDEBUG( "logs [UI] <- LogsRecentCallsView::updateWidgetsSizeAndLayout()" );
 }
 
 // -----------------------------------------------------------------------------
+// LogsRecentCallsView::getListItemTextWidth
+// -----------------------------------------------------------------------------
+//
+int LogsRecentCallsView::getListItemTextWidth()
+{
+    LOGS_QDEBUG( "logs [UI] -> LogsRecentCallsView::ListItemText()" );
+
+    qreal width = 0;
+
+    // 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);
+    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))";
+        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))";
+        width = screenRect.width() / 2;
+    }
+    
+    if ( expr.isEmpty() || !style()->parameter(expr, modifier) ){
+        LOGS_QDEBUG( "logs [UI] No expression or incorrect expression" );
+    }
+    width -= modifier;
+    
+    LOGS_QDEBUG_2( "logs [UI] <- LogsRecentCallsView::ListItemText(): ", width );   
+    return qRound(width);
+}
+
+
+// -----------------------------------------------------------------------------
 // LogsRecentCallsView::updateCallButton
 // If dialpad contains text or there is items in list, call button is enabled
 // -----------------------------------------------------------------------------
--- a/logsui/logsapp/src/logsviewmanager.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/src/logsviewmanager.cpp	Thu May 27 12:51:53 2010 +0300
@@ -186,7 +186,12 @@
 {
     LOGS_QDEBUG( "logs [UI] -> LogsViewManager::proceedExit()" );
     
-    mComponentsRepository->model()->compressData();
+    // Instead of compressing data, exit the application for real because
+    // of bug in wk16 platform which prevents bg/fg switching of the app.
+    //
+    
+    //mComponentsRepository->model()->compressData();
+    qApp->quit();
     
     LOGS_QDEBUG( "logs [UI] <- LogsViewManager::proceedExit()" );
 }
--- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logspageindicatoritem.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logspageindicatoritem.h	Thu May 27 12:51:53 2010 +0300
@@ -48,6 +48,8 @@
      
     void testConstructorDestructor();
     void testSetActive();
+    void testChangeEvent();
+    void testUpdateColor();
     void testAnimationFinnished();
     
 private:
--- a/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/inc/ut_logsrecentcallsview.h	Thu May 27 12:51:53 2010 +0300
@@ -77,6 +77,7 @@
     void testActivateEmptyListIndicator();
     void testUpdateMenu();
     void testUpdateWidgetsSizeAndLayout();
+    void testGetListItemTextWidth();
     void testDialpadClosed();
     void testClearList();
     void testClearListOkAnswer();
--- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.cpp	Thu May 27 12:51:53 2010 +0300
@@ -243,9 +243,11 @@
 // LogsEvent::setEventType
 // ----------------------------------------------------------------------------
 //
-void LogsEvent::setEventType( LogsEventType eventType )
+bool LogsEvent::setEventType( LogsEventType eventType )
 {
+    bool changed( mEventType != eventType );
     mEventType = eventType;
+    return changed;
 }
 
 // ----------------------------------------------------------------------------
--- a/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/logsengine_stub/logsevent.h	Thu May 27 12:51:53 2010 +0300
@@ -193,7 +193,7 @@
 
         void setEventUid( int uid );
 
-        void setEventType( LogsEventType aEventType );
+        bool setEventType( LogsEventType aEventType );
 
         void setLogsEventData( LogsEventData* logsEventData );
 
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logspageindicatoritem.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logspageindicatoritem.cpp	Thu May 27 12:51:53 2010 +0300
@@ -18,10 +18,13 @@
 //USER
 #include "ut_logspageindicatoritem.h"
 #include "logspageindicatoritem.h"
+#include "hbstubs_helper.h"
 
 //SYSTEM
 #include <QtTest/QtTest>
 #include <QGraphicsColorizeEffect>
+#include <hbcolorscheme.h>
+#include <hbevent.h>
 
 void UT_LogsPageIndicatorItem::initTestCase()
 {
@@ -46,6 +49,7 @@
 {
     QVERIFY(!mIndicatorItem->mIsActive);
     QVERIFY(mIndicatorItem->graphicsEffect());
+    QVERIFY(mIndicatorItem->color() == QColor(Qt::white));
     
     delete mIndicatorItem;
     mIndicatorItem = 0;
@@ -73,6 +77,43 @@
     QVERIFY(mIndicatorItem->graphicsEffect()->isEnabled());
 }
 
+void UT_LogsPageIndicatorItem::testChangeEvent()
+{
+    QColor whiteCol(Qt::white);
+    QColor redCol(Qt::red);
+    
+    // theme changed event, color is updated
+    HbStubHelper::setColorScheme(redCol);
+    QVERIFY(mIndicatorItem->color() == whiteCol);
+    HbEvent event(HbEvent::ThemeChanged);
+    mIndicatorItem->event(&event);
+    QVERIFY(mIndicatorItem->color() == redCol);
+    
+    // some other event, color is not updated
+    HbStubHelper::setColorScheme(whiteCol);
+    HbEvent event2(HbEvent::DeviceProfileChanged);
+    mIndicatorItem->event(&event2);
+    QVERIFY(mIndicatorItem->color() == redCol);
+}
+
+void UT_LogsPageIndicatorItem::testUpdateColor()
+{
+    QColor whiteCol(Qt::white);
+    QColor redCol(Qt::red);
+    QColor invalidCol(QColor::Invalid);
+    
+    // color updated successfully
+    QVERIFY(mIndicatorItem->color() == whiteCol);
+    HbStubHelper::setColorScheme(redCol);
+    mIndicatorItem->updateColor();
+    QVERIFY(mIndicatorItem->color() == redCol);
+    
+    // color couldn't be updated
+    HbStubHelper::setColorScheme(invalidCol);
+    mIndicatorItem->updateColor();
+    QVERIFY(mIndicatorItem->color() == redCol);
+}
+
 void UT_LogsPageIndicatorItem::testAnimationFinnished()
 {
     QVERIFY(mIndicatorItem->graphicsEffect());
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsrecentcallsview.cpp	Thu May 27 12:51:53 2010 +0300
@@ -743,8 +743,8 @@
     view->mViewManager.mainWindow().setOrientation( Qt::Vertical );
     view->mDialpad->closeDialpad();
     view->mListView = &list;
-    view->mListView->setLayoutName("dummy");
-    view->mLayoutSectionName = "dummy";
+    view->mListView->setLayoutName(QLatin1String("dummy"));
+    view->mLayoutSectionName = QLatin1String("dummy");
     view->updateWidgetsSizeAndLayout();
     QVERIFY( view->mListView->layoutName() == logsListDefaultLayout );
     QVERIFY( view->mLayoutSectionName == logsViewDefaultSection );
@@ -755,12 +755,39 @@
        
     // When dialpad is opened and has input, menu content is different
     view->mDialpad->openDialpad();
-    QString hello("hello");
+    QLatin1String hello("hello");
     view->mDialpad->editor().setText( hello );
     view->updateWidgetsSizeAndLayout();
     QVERIFY(action && action->isVisible());
 }
 
+
+void UT_LogsRecentCallsView::testGetListItemTextWidth()
+{
+    mRecentCallsView->mListView = new HbListView();
+    
+    mRecentCallsView->mViewManager.mainWindow().setOrientation( Qt::Vertical );
+    
+    // Default layout
+    mRecentCallsView->mListView->setLayoutName(
+                            QLatin1String(logsListDefaultLayout));
+    QCOMPARE( mRecentCallsView->getListItemTextWidth(), 200 );
+    
+    // Landscape layout
+    mRecentCallsView->mViewManager.mainWindow().setOrientation( Qt::Horizontal );
+    mRecentCallsView->mListView->setLayoutName(
+                            QLatin1String(logsListLandscapeLayout));
+    QCOMPARE( mRecentCallsView->getListItemTextWidth(), 206 );
+    
+    // Landscape with dialpad layout
+    mRecentCallsView->mListView->setLayoutName(
+                            QLatin1String(logsListLandscapeDialpadLayout));
+    QCOMPARE( mRecentCallsView->getListItemTextWidth(), 206 );
+    
+    delete mRecentCallsView->mListView;
+    mRecentCallsView->mListView = 0;
+}
+
 void UT_LogsRecentCallsView::testDialpadClosed()
 {
     HbListView list;
--- a/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/src/ut_logsviewmanager.cpp	Thu May 27 12:51:53 2010 +0300
@@ -126,7 +126,7 @@
     mLogsViewManager->mComponentsRepository->model()->mCompressCalled = false;
     mLogsViewManager->mMainWindow.mForeground = true;
     mLogsViewManager->exitApplication();
-    QVERIFY( mLogsViewManager->mComponentsRepository->model()->mCompressCalled );
+    QVERIFY( HbStubHelper::quitCalled() );
     QVERIFY( !mLogsViewManager->mMainWindow.isForeground() );
     
     // Exit not yet possible, app sent only to bg
@@ -135,13 +135,13 @@
     mLogsViewManager->mComponentsRepository->recentCallsView()->mMarkingMissedAsSeen = true;
     HbStubHelper::reset();
     mLogsViewManager->exitApplication();
-    QVERIFY( !mLogsViewManager->mComponentsRepository->model()->mCompressCalled );
+    QVERIFY( !HbStubHelper::quitCalled() );
     QVERIFY( !mLogsViewManager->mMainWindow.isForeground() );
     
     // Simulate view allowing exit after denying it first
     mLogsViewManager->mComponentsRepository->recentCallsView()->mMarkingMissedAsSeen = false;
     mLogsViewManager->proceedExit();
-    QVERIFY( mLogsViewManager->mComponentsRepository->model()->mCompressCalled );
+    QVERIFY( HbStubHelper::quitCalled() );
 }
 
 void UT_LogsViewManager::testAppFocusGained()
--- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs.cpp	Thu May 27 12:51:53 2010 +0300
@@ -22,6 +22,7 @@
 #include "hbstubs_helper.h"
 #include <hbmessagebox.h>
 #include <hbapplication.h>
+#include <hbcolorscheme.h>
 #include <QCoreApplication>
 #include <QTimer>
 #include <QGesture>
@@ -40,6 +41,7 @@
 Qt::GestureState testState = Qt::NoGesture;
 bool testIsWidgetOpen = false;
 bool testIsWidgetRaised = false;
+QColor testColor = Qt::white;
 
 void HbStubHelper::reset()
 {
@@ -49,6 +51,7 @@
     testQuitCalled = false;
     testIsWidgetRaised = false;
     testDialogShown = false;
+    testColor = Qt::white;
 }
 
 
@@ -106,6 +109,12 @@
     testIsWidgetOpen = isOpen;
 }
 
+void HbStubHelper::setColorScheme(QColor col)
+{
+    testColor = col;
+}
+
+
 bool QGraphicsWidget::close()
 {
     testIsWidgetOpen = false;
@@ -191,7 +200,7 @@
     
 void HbMainWindow::setOrientation(Qt::Orientation orientation, bool animate)
 {
-		Q_UNUSED(animate)
+    Q_UNUSED(animate)
     windowOrientation = orientation; 
 }
 
@@ -256,13 +265,11 @@
 
 void HbMessageBox::setText(const QString &string)
 {
-    
     if (string == "Ok") {
     	selectedActionString = "primary";
     } else if (string == "Cancel") {
     	selectedActionString = "secondary";
     }
-   
 }
 
 
@@ -279,3 +286,21 @@
 {
     testSingleShotTimer = true;
 }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+bool HbStyle::parameter(const QString &parameter, qreal &value, const HbDeviceProfile &profile) const
+{
+    Q_UNUSED( profile );
+    value = parameter.length();
+    return true;
+}
+
+
+QColor HbColorScheme::color( const QString &colorRole )
+{
+    Q_UNUSED(colorRole);
+    return testColor;
+}
--- a/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsapp/tsrc/ut_logsapp/stubs/hbstubs_helper.h	Thu May 27 12:51:53 2010 +0300
@@ -34,6 +34,7 @@
         static void setWidgetOpen(bool isOpen);
         static bool isWidgetOpen();    
         static bool isWidgetRaised();
+        static void setColorScheme(QColor col);
 };
 
 #endif
--- a/logsui/logscntfinder/inc/logscntentry.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/inc/logscntentry.h	Thu May 27 12:51:53 2010 +0300
@@ -91,6 +91,8 @@
     void resetHighlights( LogsCntTextList& nameArray );
     bool doSimpleMatch( const QString& pattern ) const;
     bool doComplexMatch( QStringList patternArray ) const;
+    int startsWith( const LogsCntText& nameItem, const QString& pattern, 
+                    bool optimize = true ) const;
     
 
 private:
--- a/logsui/logscntfinder/inc/logspredictive12keytranslator.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/inc/logspredictive12keytranslator.h	Thu May 27 12:51:53 2010 +0300
@@ -34,7 +34,6 @@
 
 public: 
 
-    explicit LogsPredictive12KeyTranslator();
     ~LogsPredictive12KeyTranslator();
     
 public: //from LogsPredictiveTranslator
@@ -42,7 +41,11 @@
     QStringList patternTokens( const QString& pattern ) const;
     int hasPatternSeparators( const QString& pattern ) const;
     const QChar translateChar( const QChar character ) const;
+
+protected:
     
+    explicit LogsPredictive12KeyTranslator( const HbInputLanguage& lang );
+
 private:
     
     void padWithZeros( QString& token, const QString& source, int padIndex ) const;
--- a/logsui/logscntfinder/inc/logspredictivelatin12keytranslator.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/inc/logspredictivelatin12keytranslator.h	Thu May 27 12:51:53 2010 +0300
@@ -23,7 +23,12 @@
 #include <QHash>
 
 #include "logspredictive12keytranslator.h"
+class HbInputLanguage;
 
+//Name: ISO_8859-1:1987 [RFC1345,KXS2]
+//MIBenum: 4
+//Source: ECMA registry
+const int MIBenumLatin = 4;
 
 /**
  * translator for Latin ITU-T 12 keys keyboard 
@@ -35,17 +40,23 @@
 public: 
 
     explicit LogsPredictiveLatin12KeyTranslator();
+    explicit LogsPredictiveLatin12KeyTranslator( const HbInputLanguage& lang );
     ~LogsPredictiveLatin12KeyTranslator();
 
 public: //from LogsPredictiveTranslator
     
     QStringList nameTokens( const QString& name ) const;
+    inline int mib() const {return MIBenumLatin;}
+    
     
 public: //from LogsPredictive12KeyTranslator
     
-    const QChar translateChar( const QChar character ) const;
+    const QChar translateChar( const QChar character, bool& ok ) const;
     
-
+private:
+    
+    void createSpecialMapping();
+    
 private:
     
     QHash<QChar,QChar> mSpecialKeyMap;
--- a/logsui/logscntfinder/inc/logspredictivethai12keytranslator.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/inc/logspredictivethai12keytranslator.h	Thu May 27 12:51:53 2010 +0300
@@ -25,6 +25,14 @@
 #include "logspredictive12keytranslator.h"
 
 class HbKeymap;
+class HbInputLanguage;
+
+
+//Name: TIS-620
+//MIBenum: 2259
+//Source: Thai Industrial Standards Institute (TISI) [Tantsetthi]
+const int MIBenumThai = 2259;
+
 
 
 /**
@@ -37,13 +45,15 @@
 public: 
 
     explicit LogsPredictiveThai12KeyTranslator();
+    explicit LogsPredictiveThai12KeyTranslator( const HbInputLanguage& lang );
     ~LogsPredictiveThai12KeyTranslator();
     
 public: //from LogsPredictiveTranslator
     
-    const QChar translateChar( const QChar character ) const;
+    const QChar translateChar( const QChar character, bool& ok ) const;
     QStringList nameTokens( const QString& name ) const;
-    
+    inline int mib() const {return MIBenumThai;}
+  
 private:
     
     bool isIgnored( const QChar character ) const;
--- a/logsui/logscntfinder/inc/logspredictivetranslator.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/inc/logspredictivetranslator.h	Thu May 27 12:51:53 2010 +0300
@@ -20,8 +20,10 @@
 
 #include <QObject>
 #include <QChar>
+#include <QList>
 
 class HbKeymap;
+class HbInputLanguage;
 
 /**
  * predictive translator. Singelton
@@ -37,27 +39,34 @@
     
     ~LogsPredictiveTranslator();
     
-    const QString translate( const QString& name, int count = -1 ) const;
-    int startsWith( const QString& text, const QString& pattern, 
-                    bool optimize = true ) const;
+    const QString translatePattern( const QString& pattern ) const;
+    const QString translateText( const QString& text );
     
 public: //abstracts
     
     virtual QStringList nameTokens( const QString& name ) const = 0;
     virtual QStringList patternTokens( const QString& pattern ) const = 0;
     virtual int hasPatternSeparators( const QString& pattern ) const = 0;
-    virtual const QChar translateChar( const QChar character ) const = 0;
+    virtual const QChar translateChar( const QChar character, bool& ok ) const = 0;
+    virtual int mib() const = 0;
     
 protected:
     
-    explicit LogsPredictiveTranslator();
-
+    explicit LogsPredictiveTranslator( const HbInputLanguage& lang );
+    bool encodes( const QString& sniplet );
+    const QString translate( const QString& text, bool* ok = 0, int count = -1 ) const;
+    
+private:
+    
+    const LogsPredictiveTranslator& nameTranslator( const QString& name );
+    
 protected:
     
     const HbKeymap* mKeyMap;
 
 private:
     
+    LogsPredictiveTranslator* mNameTranslator;
     static LogsPredictiveTranslator* mInstance;
     friend class UT_LogsPredictiveTranslator;
     
--- a/logsui/logscntfinder/logscntfinder.pro	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/logscntfinder.pro	Thu May 27 12:51:53 2010 +0300
@@ -26,6 +26,7 @@
 INCLUDEPATH += ../inc
 INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
 
+DEFINES += QT_NO_DEBUG_OUTPUT
 
 # Input
 HEADERS += inc/logscntfinder.h
--- a/logsui/logscntfinder/src/logscntentry.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/src/logscntentry.cpp	Thu May 27 12:51:53 2010 +0300
@@ -203,7 +203,7 @@
     
     mCached=true;
     mPhoneNumber.mText = number;
-    mPhoneNumber.mTranslatedText = translator->translate( mPhoneNumber.mText );
+    mPhoneNumber.mTranslatedText = translator->translateText( mPhoneNumber.mText );
     
 }
 
@@ -221,7 +221,7 @@
     while( iter.hasNext() ) {
         LogsCntText txt;
         txt.mText = iter.next();
-        txt.mTranslatedText = translator->translate( txt.mText );
+        txt.mTranslatedText = translator->translateText( txt.mText );
         textlist.append( txt );
     }
     if ( textlist.count() == 0 ) {
@@ -278,8 +278,8 @@
     //simple
     while( names.hasNext() ) {
         LogsCntText& nameItem = names.next();
-        nameItem.mHighlights = 
-                translator->startsWith( nameItem.mText, pattern, false );
+        //must use non-optimized version with whole pattern
+        nameItem.mHighlights = startsWith( nameItem, pattern, false );
     }
     
     //complex
@@ -289,14 +289,42 @@
         names.toFront();
         while( names.hasNext() ) {
             LogsCntText& nameItem = names.next();
-            int matchSize = translator->startsWith( nameItem.mText, 
-                                                    patternItem, !hasSeparators );
+            int matchSize = startsWith( nameItem, patternItem, !hasSeparators );
             nameItem.mHighlights = matchSize > nameItem.mHighlights ?
                                    matchSize : nameItem.mHighlights; 
         }
     }
 }
 
+
+// -----------------------------------------------------------------------------
+// LogsCntEntry::startsWith()
+// -----------------------------------------------------------------------------
+//
+int LogsCntEntry::startsWith( const LogsCntText& nameItem, 
+                              const QString& pattern, bool optimize ) const
+{
+    LOGS_QDEBUG( "logs [FINDER] -> LogsCntEntry::startsWith()" )
+    //assumed that text has found based on pattern, thus only checking with
+    //first char is enough, if mightContainZeroes eq false
+    const QString& text = nameItem.mTranslatedText;
+    
+    int matchCount = pattern.length();
+    if ( text.isEmpty() || matchCount > text.length() ) {
+        matchCount = 0;
+    } else {
+        if ( !optimize ) {
+            matchCount = text.startsWith( pattern ) ? matchCount : 0; 
+        } else {
+            matchCount = *text.data() == *pattern.data() ? 
+                         matchCount : 0;
+        }
+    }
+    LOGS_QDEBUG( "logs [FINDER] -> LogsCntEntry::startsWith()" )
+    return matchCount;
+}
+
+
 // -----------------------------------------------------------------------------
 // LogsCntEntry::setSpeedDial()
 // -----------------------------------------------------------------------------
--- a/logsui/logscntfinder/src/logscntfinder.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/src/logscntfinder.cpp	Thu May 27 12:51:53 2010 +0300
@@ -273,7 +273,7 @@
             LogsPredictiveTranslator::instance();
     
     mCurrentInputPattern = pattern;
-    mCurrentPredictivePattern = translator->translate( mCurrentInputPattern );
+    mCurrentPredictivePattern = translator->translatePattern( mCurrentInputPattern );
     
 }
 
@@ -300,18 +300,20 @@
         LOGS_QDEBUG_2( "logs [FINDER] caching from DB cid=", entry->contactId() )
         QContact contact = mContactManager->contact( entry->contactId() );
         QContactName contactName = contact.detail( QContactName::DefinitionName );
-        entry->setFirstName( contactName.value( QContactName::FieldFirst ) );
-        entry->setLastName( contactName.value( QContactName::FieldLast ) );
+        entry->setFirstName( contactName.value( QContactName::FieldFirstName ) );
+        entry->setLastName( contactName.value( QContactName::FieldLastName ) );
         QContactPhoneNumber contactPhoneNumber = 
               contact.detail( QContactPhoneNumber::DefinitionName );
         entry->setPhoneNumber( 
               contactPhoneNumber.value( QContactPhoneNumber::FieldNumber ) );
-        QContactAvatar contactAvatar = contact.detail<QContactAvatar>();  
-        if (contactAvatar.subType().compare(
-        QLatin1String(QContactAvatar::SubTypeImage)) == 0 && 
-               !contactAvatar.avatar().isEmpty()) {
-                  entry->setAvatarPath(contactAvatar.avatar());
-              } 
+        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 );
+        }
         
         updateResult( entry );      
     }
--- a/logsui/logscntfinder/src/logspredictive12keytranslator.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/src/logspredictive12keytranslator.cpp	Thu May 27 12:51:53 2010 +0300
@@ -31,8 +31,9 @@
 // LogsPredictive12KeyTranslator::LogsPredictive12KeyTranslator()
 // -----------------------------------------------------------------------------
 //
-LogsPredictive12KeyTranslator::LogsPredictive12KeyTranslator() 
-    : LogsPredictiveTranslator()
+LogsPredictive12KeyTranslator::LogsPredictive12KeyTranslator( 
+                                                    const HbInputLanguage& lang ) 
+    : LogsPredictiveTranslator( lang )
 {
     LOGS_QDEBUG( "logs [FINDER] -> LogsPredictive12KeyTranslator::\
 LogsPredictive12KeyTranslator()" )
@@ -60,15 +61,28 @@
 //
 QStringList LogsPredictive12KeyTranslator::patternTokens( const QString& pattern ) const
 {
+    LOGS_QDEBUG( "logs [FINDER] -> LogsPredictive12KeyTranslator::\
+patternTokens()" )
+    LOGS_QDEBUG_2( "logs [FINDER] pattern ", pattern );
+
     QStringList target = pattern.split( ZeroSepar, QString::SkipEmptyParts );
     if ( target.length() > 1 ) {
+        LOGS_QDEBUG( "logs [FINDER] has separator(s) " )
         QString& first = target[0];
         QString& last = target[target.length()-1];
         padWithZeros( first, pattern, 0 );
         padWithZeros( last, pattern, last.length() );
+    } else if ( target.length() == 1 && //0280 -> 028
+                pattern[pattern.length()-1] == ZeroSepar ) {
+        LOGS_QDEBUG( "logs [FINDER] no separators, trailing zero(s) " )
+        QString& first = target[0];
+        padWithZeros( first, pattern, 0 );
     } else if ( target.length() == 0 ) {
+        LOGS_QDEBUG( "logs [FINDER] only separators " )
         target.append( ZeroSepar );
     }
+    LOGS_QDEBUG( "logs [FINDER] <- LogsPredictive12KeyTranslator::\
+patternTokens()" )
     return target;
 }
 
--- a/logsui/logscntfinder/src/logspredictivelatin12keytranslator.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/src/logspredictivelatin12keytranslator.cpp	Thu May 27 12:51:53 2010 +0300
@@ -17,9 +17,9 @@
 #include <QObject>
 #include <QLocale>
 #include <QHash>
-#include <hbinputkeymapfactory.h>
 #include <hbinputkeymap.h>
 #include <hbinputsettingproxy.h>
+#include <QTextCodec>
 
 #include "logspredictivelatin12keytranslator.h"
 #include "logslogger.h"
@@ -34,16 +34,41 @@
 // LogsPredictiveLatin12KeyTranslator::LogsPredictiveLatin12KeyTranslator()
 // -----------------------------------------------------------------------------
 //
-LogsPredictiveLatin12KeyTranslator::LogsPredictiveLatin12KeyTranslator()
-    : LogsPredictive12KeyTranslator()
+LogsPredictiveLatin12KeyTranslator::LogsPredictiveLatin12KeyTranslator() 
+    : LogsPredictive12KeyTranslator( QLocale::English )
 {
     LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveLatin12KeyTranslator::\
 LogsPredictiveLatin12KeyTranslator()" )
-    HbInputLanguage lang = 
-            HbInputSettingProxy::instance()->globalInputLanguage();
-    mKeyMap = HbKeymapFactory::instance()->keymap( lang.language(), 
-                                                   lang.variant() );
+    
+    createSpecialMapping();
     
+    LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveLatin12KeyTranslator::\
+LogsPredictiveLatin12KeyTranslator()" )
+}
+
+
+// -----------------------------------------------------------------------------
+// LogsPredictiveLatin12KeyTranslator::LogsPredictiveLatin12KeyTranslator()
+// -----------------------------------------------------------------------------
+//
+LogsPredictiveLatin12KeyTranslator::LogsPredictiveLatin12KeyTranslator( 
+        const HbInputLanguage& lang )
+    : LogsPredictive12KeyTranslator( lang )
+{
+    LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveLatin12KeyTranslator::\
+LogsPredictiveLatin12KeyTranslator()" )
+    createSpecialMapping();
+    
+    LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveLatin12KeyTranslator::\
+LogsPredictiveLatin12KeyTranslator()" )
+}
+
+// -----------------------------------------------------------------------------
+// LogsPredictiveLatin12KeyTranslator::createSpecialMapping()
+// -----------------------------------------------------------------------------
+//
+void LogsPredictiveLatin12KeyTranslator::createSpecialMapping()
+{
     int index = 0;
     int arraySize = SpecialsCount * 2;
     while( index < arraySize ) {
@@ -52,11 +77,8 @@
         mSpecialKeyMap[ character ] = keycode;
     }
     
-    LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveLatin12KeyTranslator::\
-LogsPredictiveLatin12KeyTranslator()" )
 }
 
-
 // -----------------------------------------------------------------------------
 // LogsPredictiveLatin12KeyTranslator::~LogsPredictiveLatin12KeyTranslator()
 // -----------------------------------------------------------------------------
@@ -76,17 +98,20 @@
 // -----------------------------------------------------------------------------
 //
 const QChar LogsPredictiveLatin12KeyTranslator::translateChar( 
-                                                    const QChar character ) const
+                                                    const QChar character,
+                                                    bool& ok ) const
 {
+    ok = true;
     QChar keycode = mSpecialKeyMap[ character ]; 
     if ( keycode.isNull() ) {
         keycode = LogsPredictive12KeyTranslator::translateChar( character );
         if ( keycode.isNull() ) {
             QString decomposed = character.decomposition();
             if (decomposed.isEmpty()) {
+                ok = false;
                 return keycode;
             }
-            return translateChar (decomposed.at(0));
+            return translateChar (decomposed.at(0), ok);
         }
     }
     return keycode;
@@ -103,4 +128,9 @@
 {
     return name.split( SpaceSepar, QString::SkipEmptyParts );
 }
-        
+
+
+
+
+
+
--- a/logsui/logscntfinder/src/logspredictivethai12keytranslator.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/src/logspredictivethai12keytranslator.cpp	Thu May 27 12:51:53 2010 +0300
@@ -19,6 +19,7 @@
 #include <hbinputkeymapfactory.h>
 #include <hbinputkeymap.h>
 #include <hbinputsettingproxy.h>
+#include <QTextCodec>
 
 #include "logspredictivethai12keytranslator.h"
 #include "logslogger.h"
@@ -27,26 +28,35 @@
 const int IgnoreCount = 2;
 
 
+
+
 // -----------------------------------------------------------------------------
 // LogsPredictiveThai12KeyTranslator::LogsPredictiveThai12KeyTranslator()
 // -----------------------------------------------------------------------------
 //
 LogsPredictiveThai12KeyTranslator::LogsPredictiveThai12KeyTranslator()
-    : LogsPredictive12KeyTranslator()
+    : LogsPredictive12KeyTranslator( QLocale::Thai )
 {
     LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveThai12KeyTranslator::\
 LogsPredictiveThai12KeyTranslator()" )
-    HbInputLanguage lang = 
-            HbInputSettingProxy::instance()->globalInputLanguage();
-    ASSERT( lang.language() == QLocale::Thai );
-    mKeyMap = HbKeymapFactory::instance()->keymap( lang.language(), 
-                                                   lang.variant() );
-    
-    
     LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveThai12KeyTranslator::\
 LogsPredictiveThai12KeyTranslator()" )
 }
 
+// -----------------------------------------------------------------------------
+// LogsPredictiveThai12KeyTranslator::LogsPredictiveThai12KeyTranslator()
+// -----------------------------------------------------------------------------
+//
+LogsPredictiveThai12KeyTranslator::LogsPredictiveThai12KeyTranslator(
+        const HbInputLanguage& lang )
+    : LogsPredictive12KeyTranslator( lang )
+{
+    LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveThai12KeyTranslator::\
+LogsPredictiveThai12KeyTranslator()" )
+    ASSERT( lang.language() == QLocale::Thai );
+    LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveThai12KeyTranslator::\
+LogsPredictiveThai12KeyTranslator()" )
+}
 
 // -----------------------------------------------------------------------------
 // LogsPredictiveThai12KeyTranslator::~LogsPredictiveThai12KeyTranslator()
@@ -66,11 +76,14 @@
 // -----------------------------------------------------------------------------
 //
 const QChar LogsPredictiveThai12KeyTranslator::translateChar( 
-                                                    const QChar character ) const
+                                                    const QChar character, 
+                                                    bool& ok ) const
 {
+    ok = true;
     QChar keycode;
     if ( !isIgnored( character ) ) {
         keycode = LogsPredictive12KeyTranslator::translateChar( character );
+        ok = !keycode.isNull();
         keycode = !keycode.isNull() && !isIgnored( keycode ) ? 
                     keycode : QChar();
     }
@@ -102,8 +115,3 @@
     }
     return found;
 }
-
-
-
-
-
--- a/logsui/logscntfinder/src/logspredictivetranslator.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/src/logspredictivetranslator.cpp	Thu May 27 12:51:53 2010 +0300
@@ -17,8 +17,10 @@
 #include <QObject>
 #include <QLocale>
 #include <QHash>
+#include <hbinputkeymapfactory.h>
 #include <hbinputsettingproxy.h>
 #include <QStringList>
+#include <QTextCodec>
 
 #include "logspredictivetranslator.h"
 #include "logspredictivelatin12keytranslator.h"
@@ -34,18 +36,24 @@
 //
 LogsPredictiveTranslator* LogsPredictiveTranslator::instance()
 {
+    LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::\
+instance()" )
     if ( !mInstance ) {
         HbInputLanguage lang = 
                 HbInputSettingProxy::instance()->globalInputLanguage();
+        LOGS_QDEBUG_2( "logs [FINDER] Input lang is %d", 
+                       lang.language() )
         switch( lang.language() ) {
             case QLocale::Thai:
-                mInstance = new LogsPredictiveThai12KeyTranslator();
+                mInstance = new LogsPredictiveThai12KeyTranslator( lang );
                 break;
             default:
-                mInstance = new LogsPredictiveLatin12KeyTranslator();
+                mInstance = new LogsPredictiveLatin12KeyTranslator( lang );
                 break;
             }
     }
+    LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
+instance()" )
     return mInstance;
 }
 
@@ -64,10 +72,16 @@
 // LogsPredictiveTranslator::LogsPredictiveTranslator()
 // -----------------------------------------------------------------------------
 //
-LogsPredictiveTranslator::LogsPredictiveTranslator()
+LogsPredictiveTranslator::LogsPredictiveTranslator( const HbInputLanguage& lang )
+    : mNameTranslator(0)
+
 {
     LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::\
 LogsPredictiveTranslator()" )
+
+    mKeyMap = HbKeymapFactory::instance()->keymap( lang.language(), 
+                                                   lang.variant() );
+
     LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
 LogsPredictiveTranslator()" )
 }
@@ -83,62 +97,130 @@
 ~LogsPredictiveTranslator()" )
     mInstance = 0;
     mKeyMap = 0;
+    delete mNameTranslator;
+    mNameTranslator = 0;
     LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
 ~LogsPredictiveTranslator()" )
     
 }
 
 // -----------------------------------------------------------------------------
+// LogsPredictiveTranslator::translateText()
+// -----------------------------------------------------------------------------
+//
+const QString LogsPredictiveTranslator::translateText( 
+                                                  const QString& text )
+{
+    LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::translateText()" )
+    LOGS_QDEBUG_2( "logs [FINDER] text ", text );
+            
+    bool ok;
+    
+    QString result = translate( text, &ok );
+    if ( !ok ) {
+        LOGS_QDEBUG( "logs [FINDER] Text is not in input language" )
+        result = nameTranslator( text ).translate( text );
+    }
+    
+    LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::translateText()" )
+    return result;
+}
+
+// -----------------------------------------------------------------------------
+// LogsPredictiveTranslator::nameTranslator()
+// -----------------------------------------------------------------------------
+//
+const LogsPredictiveTranslator& LogsPredictiveTranslator::nameTranslator( 
+                                                   const QString& name )
+{
+    LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::nameTranslator()" )
+    
+    const LogsPredictiveTranslator* nameTranslator = this;
+    if ( mNameTranslator && mNameTranslator->encodes( name ) ) {
+        LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
+nameTranslator() - use current" )
+        nameTranslator = mNameTranslator;
+    } else { 
+        delete mNameTranslator;
+        mNameTranslator = new LogsPredictiveLatin12KeyTranslator();
+        if( mNameTranslator->encodes( name ) ) {
+            nameTranslator = mNameTranslator;
+            LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
+nameTranslator() - use latin" )
+            return *nameTranslator;
+        }
+        delete mNameTranslator;
+        mNameTranslator = new LogsPredictiveThai12KeyTranslator();
+        if( mNameTranslator->encodes( name ) ) {
+            nameTranslator = mNameTranslator;
+            LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
+nameTranslator() - use thai" )
+            return *nameTranslator;
+        }
+        delete mNameTranslator;
+        mNameTranslator = 0;
+        LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::\
+nameTranslator() - use global input language" )
+
+    }
+    
+        
+    return *nameTranslator;
+    
+}
+
+// -----------------------------------------------------------------------------
+// LogsPredictiveTranslator::encodes()
+// -----------------------------------------------------------------------------
+//
+bool LogsPredictiveTranslator::encodes( const QString& sniplet )
+{
+    bool ok;
+    translate( sniplet, &ok );
+    return ok;
+}
+
+// -----------------------------------------------------------------------------
+// LogsPredictiveTranslator::translatePattern()
+// -----------------------------------------------------------------------------
+//
+const QString LogsPredictiveTranslator::translatePattern( 
+                                                   const QString& pattern ) const
+{
+    LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::translatePattern()" )
+    QString result = translate( pattern );
+    
+    LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::translatePattern()" )
+    return result;
+}
+
+// -----------------------------------------------------------------------------
 // LogsPredictiveTranslator::translate()
 // -----------------------------------------------------------------------------
 //
-const QString LogsPredictiveTranslator::translate( const QString& name, 
-                                                   int count ) const
+const QString LogsPredictiveTranslator::translate( const QString& text,
+                                                   bool* ok, int count ) const
 {
     LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::translate()" )
-    LOGS_QDEBUG_2( "logs [FINDER] name ", name );
+    LOGS_QDEBUG_2( "logs [FINDER] text ", text );
     
-    count = count == -1 ? name.length() : count;
+    count = count == -1 ? text.length() : count;
+    bool isok = ok ? *ok : true;
     QString result;
-    const QChar* content = name.data();
+    const QChar* content = text.data();
     int index = 0;
-    while( index < count ) {
-        QChar ch = translateChar( *content++ );
+    while( index < count && isok ) {
+        QChar ch = translateChar( *content++, isok );
         if ( !ch.isNull() ) {
             result.append( ch );
         }
         index++;
     }
+    if ( ok ) {
+        *ok = isok;
+    }
     LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::translate()" )
     return result;
 }
 
-// -----------------------------------------------------------------------------
-// LogsPredictiveTranslator::startsWith()
-// -----------------------------------------------------------------------------
-//
-int LogsPredictiveTranslator::startsWith( const QString& text, 
-                                          const QString& pattern,
-                                          bool optimize ) const
-{
-    LOGS_QDEBUG( "logs [FINDER] -> LogsPredictiveTranslator::startsWith()" )
-    //assumed that text has found based on pattern, thus only checking with
-    //first char is enough, if mightContainZeroes eq false
-    int matchCount = pattern.length();
-    if ( text.isEmpty() || matchCount > text.length() ) {
-        matchCount = 0;
-    } else {
-        if ( !optimize ) {
-            QString translatedText = translate( text, pattern.length() );
-            matchCount = translatedText == pattern ? matchCount : 0; 
-        } else {
-            matchCount = translateChar( *text.data() ) == *pattern.data() ? 
-                         matchCount : 0;
-        }
-    }
-        
-    LOGS_QDEBUG_2( "logs [FINDER] matchCount=", matchCount )
-    LOGS_QDEBUG( "logs [FINDER] <- LogsPredictiveTranslator::startsWith()" )
-    return matchCount;
-}
 
--- a/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/inc/st_logscntfinder.h	Thu May 27 12:51:53 2010 +0300
@@ -19,6 +19,7 @@
 
 #include <QObject>
 #include <qcontactmanager.h>
+#include <hbinputlanguage.h>
 
 QTM_USE_NAMESPACE
 
@@ -48,8 +49,10 @@
 
 private slots: //test methods
     void testPredictiveSearchQuery();
+    void testPredictiveThaiSearchQuery();
     void testKeymap();
-    void testPredictiveSearchQueryZero();
+    void testPredictiveSearchQueryZeroStart();
+    void testPredictiveSearchQueryZeroMiddle();
     void testPredictiveSearchQueryLimit();
     void testPredictiveSearchQueryLogs();
     void testPredictiveSearchQueryLogsContacts();
@@ -68,6 +71,7 @@
     void createContactsForQueryOrder();
     void createContactsForQueryZero();
     void createHistoryEvents();
+    void createThaiContacts();
     void createLogEvent(
         QString firstname, 
         QString Lastname, 
--- a/logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinder.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/src/st_logscntfinder.cpp	Thu May 27 12:51:53 2010 +0300
@@ -20,7 +20,7 @@
 
 #include <qtcontacts.h>
 #include <QtTest/QtTest>
-
+#include <hbinputsettingproxy.h>
 
 void st_LogsCntFinder::initTestCase()
 {
@@ -60,6 +60,9 @@
     m_manager = 0;
     delete m_finder;
     m_finder = 0;
+    HbInputLanguage eng( QLocale::English );
+    HbInputSettingProxy::instance()->setGlobalInputLanguage( eng );
+    
 }
 
 void st_LogsCntFinder::createContacts()
@@ -92,6 +95,7 @@
     createOneContact( QString("Tisha"), QString("Iatzkovits"), QString("932472398") );
     createOneContact( QString("Wilda"), QString("Lazar"), QString("932472398") );
     createOneContact( QString("Una Vivi"), QString("Kantsak"), QString("932472398") );
+    
    
     int contactsCount = m_manager->contactIds().count();
     QCOMPARE(contactsCount, 13);
@@ -100,6 +104,34 @@
     
 }
 
+void st_LogsCntFinder::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);
+    qDebug() << "st_LogsCntFinder::createThaiContacts_ThaiSearch. created " << contactsCount << " contacts";
+
+    
+}
 
 void st_LogsCntFinder::createHistoryEvents()
 {
@@ -154,6 +186,54 @@
 // 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()
 {
@@ -315,38 +395,53 @@
 4-5. multi-zeros between "1-9" numbers, only the first works as "AND" statement;
 6. Query limit is 15, the 16th is ignored, and first 0 works as "AND" statement */
 
-void st_LogsCntFinder::testPredictiveSearchQueryZero()
+
+void st_LogsCntFinder::testPredictiveSearchQueryZeroStart()
 {
     createContactsForQueryZero();
-
-    m_finder->predictiveSearchQuery( QString("56603") );
-    QCOMPARE( m_finder->resultsCount(), 1 );
     
     m_finder->predictiveSearchQuery( QString("00202") );
     QCOMPARE( m_finder->resultsCount(), 2 );
     
     m_finder->predictiveSearchQuery( QString("02010") );
+    QCOMPARE( m_finder->resultsCount(), 1 );
+
+}
+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 );
+
     m_finder->predictiveSearchQuery( QString("2003") );
     QCOMPARE( m_finder->resultsCount(), 2 );
     
-    m_finder->predictiveSearchQuery( QString("200904") );
+    m_finder->predictiveSearchQuery( QString("2272645837883065") );
     QCOMPARE( m_finder->resultsCount(), 1 );
-    
-    m_finder->predictiveSearchQuery( QString("2272645837883065") );
+       
+    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()
 {
     createContacts();
     createOneContact( QString("Dlice 00202"), QString("Qwerty"), QString("45789348") );
-    createOneContact( QString("#Paula 2003"), QString("Augustin Ci"), QString("78945617") );
+    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("Baraniktestteste"), QString("78945617") );
+    createOneContact( QString("Ced"), QString("Y,g"), QString("+78945617") );
+    createOneContact( QString("Jari-Pekka"), QString(" "), QString("78945617") );
 
     int contactsCount = m_manager->contactIds().count();
     QCOMPARE(contactsCount, 18);
--- a/logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/st_logscntfinder/st_logscntfinder.pro	Thu May 27 12:51:53 2010 +0300
@@ -20,6 +20,8 @@
 
 QT += testlib xml
 CONFIG  += qtestlib
+CONFIG  += hb
+HB = hbcore hbinput 
 
 #include(../tsrc.pri)
 
--- a/logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/stubs/qtcontacts_stubs.cpp	Thu May 27 12:51:53 2010 +0300
@@ -155,11 +155,9 @@
 
 
 QList<QContactLocalId> QContactManager::contactIds(
-        const QContactFilter& filter, 
+        const QContactFilter& /*filter*/, 
         const QList<QContactSortOrder>& /*sortOrders*/) const
 {
-    const QContactDetailFilter& df = 
-        static_cast<const QContactDetailFilter&>( filter );
         
     QList<QContactLocalId> list;
     ContactQueryResults* resultSet = ContactQueryResults::instance();
@@ -174,7 +172,7 @@
 
 QContact QContactManager::contact( 
     const QContactLocalId& contactId, 
-    const QStringList& definitionRestrictions ) const
+    const QStringList& /*definitionRestrictions*/ ) const
 {
     QContact contact;
     QContactId id;
@@ -232,9 +230,9 @@
 }
 
 
-QContact& QContact::operator=(const QContact& other)
+QContact& QContact::operator=(const QContact& /*other*/)
 {
-
+    return *this;
 }
 
 QContactDetail QContact::detail(const QString& definitionId) const
@@ -244,8 +242,8 @@
     if ( definitionId == QContactName::DefinitionName ){
         QContactName name;
         QContactLocalId id = localId();
-        name.setValue(QContactName::FieldFirst, results->firstNameAt( (int) id-1 ) );
-        name.setValue(QContactName::FieldLast, results->lastNameAt( (int) id-1 ) );
+        name.setValue(QContactName::FieldFirstName, results->firstNameAt( (int) id-1 ) );
+        name.setValue(QContactName::FieldLastName, results->lastNameAt( (int) id-1 ) );
         return name;
     }
     if ( definitionId == QContactPhoneNumber::DefinitionName ){
@@ -256,10 +254,8 @@
     }
     if ( definitionId == QContactAvatar::DefinitionName){
         QContactAvatar avatar;
-        avatar.setSubType(QContactAvatar::SubTypeImage);
-        avatar.setAvatar("c:\\data\\images\\logstest1.jpg");
-        QString a( "Avatar" );
-        avatar.setValue( QContactAvatar::FieldAvatar, a );
+        avatar.setValue(QContactAvatar::FieldSubType, QContactAvatar::SubTypeImage );
+        avatar.setValue(QContactAvatar::FieldAvatar, "c:\\data\\images\\logstest1.jpg" );
         return avatar;
     }
     QContactDetail detail;
@@ -275,19 +271,21 @@
 {
 
 }
-QContactDetail::QContactDetail(const QString& definitionName) : d(new QContactDetailPrivate)
+
+QContactDetail::QContactDetail(const QString& /*definitionName*/) : d(new QContactDetailPrivate)
 {
 
 }
+
 QContactDetail::~QContactDetail()
 {
 
 }
 
 
-QContactDetail& QContactDetail::operator=(const QContactDetail& other)
+QContactDetail& QContactDetail::operator=(const QContactDetail& /*other*/)
 {
-
+    return *this;
 }
 
 QString QContactDetail::definitionName() const
--- a/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logscntentry.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logscntentry.h	Thu May 27 12:51:53 2010 +0300
@@ -54,6 +54,8 @@
     void testSetHighlights_latin12k();
     void testRichText_latin12k();
     void testMatch_latin12k();
+    void testStartsWith_latin12k();
+    
     //with thai 12 keys
     void testMatch_thai12k();
     void testSetHighlights_thai12k();
--- a/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivelatin12keytranslator.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivelatin12keytranslator.h	Thu May 27 12:51:53 2010 +0300
@@ -45,8 +45,10 @@
 private slots: //test methods
      
     void testConstructor();
-    void testTranslate();
+    void testTranslateText();
+    void testTranslatePattern();
     void testTranslateChar();
+    void testEncodes();
     
 private:
  
--- a/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivethai12keytranslator.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivethai12keytranslator.h	Thu May 27 12:51:53 2010 +0300
@@ -46,12 +46,13 @@
 private slots: //test methods
      
     void testConstructor();
-    void testTranslate();
+    void testTranslateText();
+    void testTranslatePattern();
     void testTranslateChar();
+    void testEncodes();
     
 private:
  
-    HbInputLanguage mOrigLang; 
     LogsPredictiveThai12KeyTranslator* mTranslator;  
 };
 
--- a/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivetranslator.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/inc/ut_logspredictivetranslator.h	Thu May 27 12:51:53 2010 +0300
@@ -47,7 +47,9 @@
      
     void testConstructor();
     void testTranslate();
-    void testStartsWith(); 
+    void testTranslatePattern();
+    void testTranslateText();
+    void testNameTranslator();
     
 private:
  
--- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntentry.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntentry.cpp	Thu May 27 12:51:53 2010 +0300
@@ -23,7 +23,7 @@
 #include <QtTest/QtTest>
 
 #define PATTERN( pattern )\
-    LogsPredictiveTranslator::instance()->translate( QString( pattern ) )
+    LogsPredictiveTranslator::instance()->translatePattern( QString( pattern ) )
     
 
 void UT_LogsCntEntry::initTestCase()
@@ -625,7 +625,7 @@
     mEntry->setFirstName( QString("Alice 028") );
     mEntry->setLastName( QString( "Ming" ) );
     QVERIFY( mEntry->match( PATTERN( "02806" ) ) );
-    QVERIFY( !mEntry->match( PATTERN( "0280" ) ) );//not supported
+    QVERIFY( mEntry->match( PATTERN( "0280" ) ) );//not supported
     
     mEntry->mType = LogsCntEntry::EntryTypeContact;
     QVERIFY( !mEntry->match( PATTERN( "+202" ) ) );
@@ -636,6 +636,24 @@
     
 }
 
+void UT_LogsCntEntry::testStartsWith_latin12k()
+{
+    //just using numbers as name
+    mEntry->setFirstName( QString( "" ) );
+    QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("") ), 0 );
+    QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("123") ), 0 );
+    
+    mEntry->setFirstName( QString( "123" ) );
+    QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("") ), 0 );
+    QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("1234") ), 0 );
+    QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("1") ), 1 );
+    QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("123") ), 3 );
+    QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("12"), true ), 2 );
+    QCOMPARE( mEntry->startsWith( mEntry->firstName()[0], QString("12"), false ), 2 );
+    
+}
+
+
 void UT_LogsCntEntry::testMatch_thai12k()
 {
     
@@ -689,3 +707,4 @@
     
 }
 
+
--- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntfinder.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logscntfinder.cpp	Thu May 27 12:51:53 2010 +0300
@@ -72,7 +72,6 @@
     QSignalSpy queryReadySpy(mFinder, SIGNAL(queryReady() ) );
     QSignalSpy resultsAddedSpy(mCntResults, SIGNAL(resultsAdded() ) );
     
-    int resultsCount = 0;
     LogsCntEntryHandle* handle1 = (LogsCntEntryHandle*)1;
     LogsCntEntryHandle* handle2 = (LogsCntEntryHandle*)2;
     LogsCntEntryHandle* handle3 = (LogsCntEntryHandle*)3;
--- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictive12keytranslator.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictive12keytranslator.cpp	Thu May 27 12:51:53 2010 +0300
@@ -28,14 +28,18 @@
 public:
     
     inline LogsPredictive12KeyTranslator_mock() 
-        :LogsPredictive12KeyTranslator() 
-    {  mKeyMap = 
-       HbKeymapFactory::instance()->keymap( QLocale::English, 
-                                            QLocale::AnyCountry );
+        :LogsPredictive12KeyTranslator( QLocale::English ) 
+    {  
     }
     
     inline QStringList nameTokens( const QString& /*name*/ ) const
             {return QStringList();}
+    inline const QChar translateChar( const QChar /*character*/, bool& /*ok*/ ) const
+            {return QChar();}
+    inline bool encodes( const QString& /*sniplet*/ )
+        {return true;}
+    inline int mib() const {return 0;}
+    
 
 };
 
--- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivelatin12keytranslator.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivelatin12keytranslator.cpp	Thu May 27 12:51:53 2010 +0300
@@ -17,6 +17,7 @@
 #include "ut_logspredictivelatin12keytranslator.h"
 #include "logspredictivelatin12keytranslator.h"
 
+#include <hbinputsettingproxy.h>
 #include <QtTest/QtTest>
 #include <QSignalSpy>
 
@@ -32,7 +33,8 @@
 
 void UT_LogsPredictiveLatin12KeyTranslator::init()
 {
-    mTranslator = new LogsPredictiveLatin12KeyTranslator();
+    mTranslator = new LogsPredictiveLatin12KeyTranslator( 
+            HbInputSettingProxy::instance()->globalInputLanguage() );
 }
 
 void UT_LogsPredictiveLatin12KeyTranslator::cleanup()
@@ -48,139 +50,164 @@
     
 }
 
-void UT_LogsPredictiveLatin12KeyTranslator::testTranslate()
+void UT_LogsPredictiveLatin12KeyTranslator::testTranslateText()
 {
-    QVERIFY( mTranslator->translate( QString( "Nokia" ) ) == QString( "66542" ) );
-    QVERIFY( mTranslator->translate( QString( "Aarne" ) ) == QString( "22763" ) );
-    QVERIFY( mTranslator->translate( QString( "Bertta" ) ) == QString( "237882" ) );
-    QVERIFY( mTranslator->translate( QString( "Celsius" ) ) == QString( "2357487" ) );
-    QVERIFY( mTranslator->translate( QString( "Daavid" ) ) == QString( "322843" ) );
-    QVERIFY( mTranslator->translate( QString( "Eemeli" ) ) == QString( "336354" ) );
-    QVERIFY( mTranslator->translate( QString( "Faarao" ) ) == QString( "322726" ) );
-    QVERIFY( mTranslator->translate( QString( "Gideon" ) ) == QString( "443366" ) );
-    QVERIFY( mTranslator->translate( QString( "Heikki" ) ) == QString( "434554" ) );
-    QVERIFY( mTranslator->translate( QString( "Iivari" ) ) == QString( "448274" ) );
-    QVERIFY( mTranslator->translate( QString( "Jussi" ) ) == QString( "58774" ) );
-    QVERIFY( mTranslator->translate( QString( "Kalle" ) ) == QString( "52553" ) );
-    QVERIFY( mTranslator->translate( QString( "Lauri" ) ) == QString( "52874" ) );
-    QVERIFY( mTranslator->translate( QString( "Matti" ) ) == QString( "62884" ) );
-    QVERIFY( mTranslator->translate( QString( "Niilo" ) ) == QString( "64456" ) );
-    QVERIFY( mTranslator->translate( QString( "Otto" ) ) == QString( "6886" ) );
-    QVERIFY( mTranslator->translate( QString( "Paavo" ) ) == QString( "72286" ) );
-    QVERIFY( mTranslator->translate( QString( "Kuu" ) ) == QString( "588" ) );
-    QVERIFY( mTranslator->translate( QString( "Risto" ) ) == QString( "74786" ) );
-    QVERIFY( mTranslator->translate( QString( "Sakari" ) ) == QString( "725274" ) );
-    QVERIFY( mTranslator->translate( QString( "Tyyne" ) ) == QString( "89963" ) );
-    QVERIFY( mTranslator->translate( QString( "Urho" ) ) == QString( "8746" ) );
-    QVERIFY( mTranslator->translate( QString( "Vihtori" ) ) == QString( "8448674" ) );
-    QVERIFY( mTranslator->translate( QString( "Wiski" ) ) == QString( "94754" ) );
-    QVERIFY( mTranslator->translate( QString( "Yrjö" ) ) == QString( "9756" ) );
-    QVERIFY( mTranslator->translate( QString( "Tseta" ) ) == QString( "87382" ) );
-    QVERIFY( mTranslator->translate( QString( "Åke" ) ) == QString( "253" ) );
-    QVERIFY( mTranslator->translate( QString( "Äiti" ) ) == QString( "2484" ) );
-    QVERIFY( mTranslator->translate( QString( "Öljy" ) ) == QString( "6559" ) );
-    QVERIFY( mTranslator->translate( QString( "Adam" ) ) == QString( "2326" ) );
-    QVERIFY( mTranslator->translate( QString( "Bertil" ) ) == QString( "237845" ) );
-    QVERIFY( mTranslator->translate( QString( "Cesar" ) ) == QString( "23727" ) );
-    QVERIFY( mTranslator->translate( QString( "David" ) ) == QString( "32843" ) );
-    QVERIFY( mTranslator->translate( QString( "Erik" ) ) == QString( "3745" ) );
-    QVERIFY( mTranslator->translate( QString( "Filip" ) ) == QString( "34547" ) );
-    QVERIFY( mTranslator->translate( QString( "Gustav" ) ) == QString( "487828" ) );
-    QVERIFY( mTranslator->translate( QString( "Helge" ) ) == QString( "43543" ) );
-    QVERIFY( mTranslator->translate( QString( "Ivar" ) ) == QString( "4827" ) );
-    QVERIFY( mTranslator->translate( QString( "Johan" ) ) == QString( "56426" ) );
-    QVERIFY( mTranslator->translate( QString( "Kalle" ) ) == QString( "52553" ) );
-    QVERIFY( mTranslator->translate( QString( "Ludvig" ) ) == QString( "583844" ) );
-    QVERIFY( mTranslator->translate( QString( "Martin" ) ) == QString( "627846" ) );
-    QVERIFY( mTranslator->translate( QString( "Niklas" ) ) == QString( "645527" ) );
-    QVERIFY( mTranslator->translate( QString( "Olof" ) ) == QString( "6563" ) );
-    QVERIFY( mTranslator->translate( QString( "Petter" ) ) == QString( "738837" ) );
-    QVERIFY( mTranslator->translate( QString( "Quintus" ) ) == QString( "7846887" ) );
-    QVERIFY( mTranslator->translate( QString( "Rudolf" ) ) == QString( "783653" ) );
-    QVERIFY( mTranslator->translate( QString( "Sigurd" ) ) == QString( "744873" ) );
-    QVERIFY( mTranslator->translate( QString( "Tore" ) ) == QString( "8673" ) );
-    QVERIFY( mTranslator->translate( QString( "Urban" ) ) == QString( "87226" ) );
-    QVERIFY( mTranslator->translate( QString( "Viktor" ) ) == QString( "845867" ) );
-    QVERIFY( mTranslator->translate( QString( "Wilhelm" ) ) == QString( "9454356" ) );
-    QVERIFY( mTranslator->translate( QString( "Xerxes" ) ) == QString( "937937" ) );
-    QVERIFY( mTranslator->translate( QString( "Yngve" ) ) == QString( "96483" ) );
-    QVERIFY( mTranslator->translate( QString( "Zäta" ) ) == QString( "9282" ) );
-    QVERIFY( mTranslator->translate( QString( "Ärlig" ) ) == QString( "27544" ) );
-    QVERIFY( mTranslator->translate( QString( "Östen" ) ) == QString( "67836" ) );
-    QVERIFY( mTranslator->translate( QString( "Alpha" ) ) == QString( "25742" ) );
-    QVERIFY( mTranslator->translate( QString( "Bravo" ) ) == QString( "27286" ) );
-    QVERIFY( mTranslator->translate( QString( "Charlie" ) ) == QString( "2427543" ) );
-    QVERIFY( mTranslator->translate( QString( "Delta" ) ) == QString( "33582" ) );
-    QVERIFY( mTranslator->translate( QString( "Echo" ) ) == QString( "3246" ) );
-    QVERIFY( mTranslator->translate( QString( "Foxtrot" ) ) == QString( "3698768" ) );
-    QVERIFY( mTranslator->translate( QString( "Golf" ) ) == QString( "4653" ) );
-    QVERIFY( mTranslator->translate( QString( "Hotel" ) ) == QString( "46835" ) );
-    QVERIFY( mTranslator->translate( QString( "India" ) ) == QString( "46342" ) );
-    QVERIFY( mTranslator->translate( QString( "Juliet" ) ) == QString( "585438" ) );
-    QVERIFY( mTranslator->translate( QString( "Kilo" ) ) == QString( "5456" ) );
-    QVERIFY( mTranslator->translate( QString( "Lima" ) ) == QString( "5462" ) );
-    QVERIFY( mTranslator->translate( QString( "Mike" ) ) == QString( "6453" ) );
-    QVERIFY( mTranslator->translate( QString( "November" ) ) == QString( "66836237" ) );
-    QVERIFY( mTranslator->translate( QString( "Oscar" ) ) == QString( "67227" ) );
-    QVERIFY( mTranslator->translate( QString( "Papa" ) ) == QString( "7272" ) );
-    QVERIFY( mTranslator->translate( QString( "Quebec" ) ) == QString( "783232" ) );
-    QVERIFY( mTranslator->translate( QString( "Romeo" ) ) == QString( "76636" ) );
-    QVERIFY( mTranslator->translate( QString( "Sierra" ) ) == QString( "743772" ) );
-    QVERIFY( mTranslator->translate( QString( "Tanga" ) ) == QString( "82642" ) );
-    QVERIFY( mTranslator->translate( QString( "Uniform" ) ) == QString( "8643676" ) );
-    QVERIFY( mTranslator->translate( QString( "Vârlan" ) ) == QString( "827526" ) );
-    QVERIFY( mTranslator->translate( QString( "Victor" ) ) == QString( "842867" ) );
-    QVERIFY( mTranslator->translate( QString( "Whiskey" ) ) == QString( "9447539" ) );
-    QVERIFY( mTranslator->translate( QString( "Xray" ) ) == QString( "9729" ) );
-    QVERIFY( mTranslator->translate( QString( "Yankee" ) ) == QString( "926533" ) );
-    QVERIFY( mTranslator->translate( QString( "Zulu" ) ) == QString( "9858" ) );
-    QVERIFY( mTranslator->translate( QString( "1234567890" ) ) == QString( "1234567890" ) );
-    QCOMPARE( mTranslator->translate( QString( "+1234567890" ) ) ,QString( "*1234567890" ) );
-    QCOMPARE( mTranslator->translate( QString( "*1234567890" ) ) ,QString( "*1234567890" ) );
-    QCOMPARE( mTranslator->translate( QString( "#1234567890" ) ), QString( "#1234567890" ) );
-    QCOMPARE( mTranslator->translate( QString( "++##" ) ), QString( "**##" ) );
-    QCOMPARE( mTranslator->translate( QString( "-+##" ) ), QString( "1*##" ) );
-    QCOMPARE( mTranslator->translate( QString( "/+##" ) ), QString( "1*##" ) );
-    QCOMPARE( mTranslator->translate( QString( "*+##" ) ), QString( "**##" ) );
+    QVERIFY( mTranslator->translateText( QString( "Nokia" ) ) == QString( "66542" ) );
+    QVERIFY( mTranslator->translateText( QString( "Aarne" ) ) == QString( "22763" ) );
+    QVERIFY( mTranslator->translateText( QString( "Bertta" ) ) == QString( "237882" ) );
+    QVERIFY( mTranslator->translateText( QString( "Celsius" ) ) == QString( "2357487" ) );
+    QVERIFY( mTranslator->translateText( QString( "Daavid" ) ) == QString( "322843" ) );
+    QVERIFY( mTranslator->translateText( QString( "Eemeli" ) ) == QString( "336354" ) );
+    QVERIFY( mTranslator->translateText( QString( "Faarao" ) ) == QString( "322726" ) );
+    QVERIFY( mTranslator->translateText( QString( "Gideon" ) ) == QString( "443366" ) );
+    QVERIFY( mTranslator->translateText( QString( "Heikki" ) ) == QString( "434554" ) );
+    QVERIFY( mTranslator->translateText( QString( "Iivari" ) ) == QString( "448274" ) );
+    QVERIFY( mTranslator->translateText( QString( "Jussi" ) ) == QString( "58774" ) );
+    QVERIFY( mTranslator->translateText( QString( "Kalle" ) ) == QString( "52553" ) );
+    QVERIFY( mTranslator->translateText( QString( "Lauri" ) ) == QString( "52874" ) );
+    QVERIFY( mTranslator->translateText( QString( "Matti" ) ) == QString( "62884" ) );
+    QVERIFY( mTranslator->translateText( QString( "Niilo" ) ) == QString( "64456" ) );
+    QVERIFY( mTranslator->translateText( QString( "Otto" ) ) == QString( "6886" ) );
+    QVERIFY( mTranslator->translateText( QString( "Paavo" ) ) == QString( "72286" ) );
+    QVERIFY( mTranslator->translateText( QString( "Kuu" ) ) == QString( "588" ) );
+    QVERIFY( mTranslator->translateText( QString( "Risto" ) ) == QString( "74786" ) );
+    QVERIFY( mTranslator->translateText( QString( "Sakari" ) ) == QString( "725274" ) );
+    QVERIFY( mTranslator->translateText( QString( "Tyyne" ) ) == QString( "89963" ) );
+    QVERIFY( mTranslator->translateText( QString( "Urho" ) ) == QString( "8746" ) );
+    QVERIFY( mTranslator->translateText( QString( "Vihtori" ) ) == QString( "8448674" ) );
+    QVERIFY( mTranslator->translateText( QString( "Wiski" ) ) == QString( "94754" ) );
+    QVERIFY( mTranslator->translateText( QString( "Yrjö" ) ) == QString( "9756" ) );
+    QVERIFY( mTranslator->translateText( QString( "Tseta" ) ) == QString( "87382" ) );
+    QVERIFY( mTranslator->translateText( QString( "Åke" ) ) == QString( "253" ) );
+    QVERIFY( mTranslator->translateText( QString( "Äiti" ) ) == QString( "2484" ) );
+    QVERIFY( mTranslator->translateText( QString( "Öljy" ) ) == QString( "6559" ) );
+    QVERIFY( mTranslator->translateText( QString( "Adam" ) ) == QString( "2326" ) );
+    QVERIFY( mTranslator->translateText( QString( "Bertil" ) ) == QString( "237845" ) );
+    QVERIFY( mTranslator->translateText( QString( "Cesar" ) ) == QString( "23727" ) );
+    QVERIFY( mTranslator->translateText( QString( "David" ) ) == QString( "32843" ) );
+    QVERIFY( mTranslator->translateText( QString( "Erik" ) ) == QString( "3745" ) );
+    QVERIFY( mTranslator->translateText( QString( "Filip" ) ) == QString( "34547" ) );
+    QVERIFY( mTranslator->translateText( QString( "Gustav" ) ) == QString( "487828" ) );
+    QVERIFY( mTranslator->translateText( QString( "Helge" ) ) == QString( "43543" ) );
+    QVERIFY( mTranslator->translateText( QString( "Ivar" ) ) == QString( "4827" ) );
+    QVERIFY( mTranslator->translateText( QString( "Johan" ) ) == QString( "56426" ) );
+    QVERIFY( mTranslator->translateText( QString( "Kalle" ) ) == QString( "52553" ) );
+    QVERIFY( mTranslator->translateText( QString( "Ludvig" ) ) == QString( "583844" ) );
+    QVERIFY( mTranslator->translateText( QString( "Martin" ) ) == QString( "627846" ) );
+    QVERIFY( mTranslator->translateText( QString( "Niklas" ) ) == QString( "645527" ) );
+    QVERIFY( mTranslator->translateText( QString( "Olof" ) ) == QString( "6563" ) );
+    QVERIFY( mTranslator->translateText( QString( "Petter" ) ) == QString( "738837" ) );
+    QVERIFY( mTranslator->translateText( QString( "Quintus" ) ) == QString( "7846887" ) );
+    QVERIFY( mTranslator->translateText( QString( "Rudolf" ) ) == QString( "783653" ) );
+    QVERIFY( mTranslator->translateText( QString( "Sigurd" ) ) == QString( "744873" ) );
+    QVERIFY( mTranslator->translateText( QString( "Tore" ) ) == QString( "8673" ) );
+    QVERIFY( mTranslator->translateText( QString( "Urban" ) ) == QString( "87226" ) );
+    QVERIFY( mTranslator->translateText( QString( "Viktor" ) ) == QString( "845867" ) );
+    QVERIFY( mTranslator->translateText( QString( "Wilhelm" ) ) == QString( "9454356" ) );
+    QVERIFY( mTranslator->translateText( QString( "Xerxes" ) ) == QString( "937937" ) );
+    QVERIFY( mTranslator->translateText( QString( "Yngve" ) ) == QString( "96483" ) );
+    QVERIFY( mTranslator->translateText( QString( "Zäta" ) ) == QString( "9282" ) );
+    QVERIFY( mTranslator->translateText( QString( "Ärlig" ) ) == QString( "27544" ) );
+    QVERIFY( mTranslator->translateText( QString( "Östen" ) ) == QString( "67836" ) );
+    QVERIFY( mTranslator->translateText( QString( "Alpha" ) ) == QString( "25742" ) );
+    QVERIFY( mTranslator->translateText( QString( "Bravo" ) ) == QString( "27286" ) );
+    QVERIFY( mTranslator->translateText( QString( "Charlie" ) ) == QString( "2427543" ) );
+    QVERIFY( mTranslator->translateText( QString( "Delta" ) ) == QString( "33582" ) );
+    QVERIFY( mTranslator->translateText( QString( "Echo" ) ) == QString( "3246" ) );
+    QVERIFY( mTranslator->translateText( QString( "Foxtrot" ) ) == QString( "3698768" ) );
+    QVERIFY( mTranslator->translateText( QString( "Golf" ) ) == QString( "4653" ) );
+    QVERIFY( mTranslator->translateText( QString( "Hotel" ) ) == QString( "46835" ) );
+    QVERIFY( mTranslator->translateText( QString( "India" ) ) == QString( "46342" ) );
+    QVERIFY( mTranslator->translateText( QString( "Juliet" ) ) == QString( "585438" ) );
+    QVERIFY( mTranslator->translateText( QString( "Kilo" ) ) == QString( "5456" ) );
+    QVERIFY( mTranslator->translateText( QString( "Lima" ) ) == QString( "5462" ) );
+    QVERIFY( mTranslator->translateText( QString( "Mike" ) ) == QString( "6453" ) );
+    QVERIFY( mTranslator->translateText( QString( "November" ) ) == QString( "66836237" ) );
+    QVERIFY( mTranslator->translateText( QString( "Oscar" ) ) == QString( "67227" ) );
+    QVERIFY( mTranslator->translateText( QString( "Papa" ) ) == QString( "7272" ) );
+    QVERIFY( mTranslator->translateText( QString( "Quebec" ) ) == QString( "783232" ) );
+    QVERIFY( mTranslator->translateText( QString( "Romeo" ) ) == QString( "76636" ) );
+    QVERIFY( mTranslator->translateText( QString( "Sierra" ) ) == QString( "743772" ) );
+    QVERIFY( mTranslator->translateText( QString( "Tanga" ) ) == QString( "82642" ) );
+    QVERIFY( mTranslator->translateText( QString( "Uniform" ) ) == QString( "8643676" ) );
+    QVERIFY( mTranslator->translateText( QString( "Vârlan" ) ) == QString( "827526" ) );
+    QVERIFY( mTranslator->translateText( QString( "Victor" ) ) == QString( "842867" ) );
+    QVERIFY( mTranslator->translateText( QString( "Whiskey" ) ) == QString( "9447539" ) );
+    QVERIFY( mTranslator->translateText( QString( "Xray" ) ) == QString( "9729" ) );
+    QVERIFY( mTranslator->translateText( QString( "Yankee" ) ) == QString( "926533" ) );
+    QVERIFY( mTranslator->translateText( QString( "Zulu" ) ) == QString( "9858" ) );
     
     QString uni;
     uni.append(QChar(0x0219));
     uni.append(QChar(0x4E0F));
     QString result("7");
     
-    QCOMPARE(mTranslator->translate(uni), result);
+    QCOMPARE(mTranslator->translateText(uni), result);
     
     QString uni1;
     uni1.append(QChar(0x4E0E));
     uni1.append(QChar(0x4E0F));
     QString result1("");
-    QCOMPARE(mTranslator->translate(uni1), result1);
+    QCOMPARE(mTranslator->translateText(uni1), result1);
     
     QString result2;
-    QCOMPARE(mTranslator->translate(uni1), result2);
+    QCOMPARE(mTranslator->translateText(uni1), result2);
+
+}
+
+void UT_LogsPredictiveLatin12KeyTranslator::testTranslatePattern()
+{
+
+    QVERIFY( mTranslator->translatePattern( QString( "1234567890" ) ) == QString( "1234567890" ) );
+    QCOMPARE( mTranslator->translatePattern( QString( "+1234567890" ) ) ,QString( "*1234567890" ) );
+    QCOMPARE( mTranslator->translatePattern( QString( "*1234567890" ) ) ,QString( "*1234567890" ) );
+    QCOMPARE( mTranslator->translatePattern( QString( "#1234567890" ) ), QString( "#1234567890" ) );
+    QCOMPARE( mTranslator->translatePattern( QString( "++##" ) ), QString( "**##" ) );
+    QCOMPARE( mTranslator->translatePattern( QString( "-+##" ) ), QString( "1*##" ) );
+    QCOMPARE( mTranslator->translatePattern( QString( "/+##" ) ), QString( "1*##" ) );
+    QCOMPARE( mTranslator->translatePattern( QString( "*+##" ) ), QString( "**##" ) );
     
 }
 
 void UT_LogsPredictiveLatin12KeyTranslator::testTranslateChar()
 {
-
-    QCOMPARE( mTranslator->translateChar( QChar('+') ), QChar('*') );
-    QCOMPARE( mTranslator->translateChar( QChar('*') ), QChar('*') );
-    QCOMPARE( mTranslator->translateChar( QChar('#') ), QChar('#') );
-    QCOMPARE( mTranslator->translateChar( QChar('0') ), QChar('0') );
-    QCOMPARE( mTranslator->translateChar( QChar('a') ), QChar('2') );
-    QCOMPARE( mTranslator->translateChar( QChar('A') ), QChar('2') );
-    QCOMPARE( mTranslator->translateChar( QChar('1') ), QChar('1') );
-    QCOMPARE( mTranslator->translateChar( QChar('ä') ), QChar('2') );
-    QCOMPARE( mTranslator->translateChar( QChar('Ä') ), QChar('2') );
-    QCOMPARE( mTranslator->translateChar( QChar('-') ), QChar('1') );
+    bool ok;
+    
+    QCOMPARE( mTranslator->translateChar( QChar('+'), ok ), QChar('*') );
+    QCOMPARE( mTranslator->translateChar( QChar('*'), ok ), QChar('*') );
+    QCOMPARE( mTranslator->translateChar( QChar('#'), ok ), QChar('#') );
+    QCOMPARE( mTranslator->translateChar( QChar('0'), ok ), QChar('0') );
+    QCOMPARE( mTranslator->translateChar( QChar('a'), ok ), QChar('2') );
+    QCOMPARE( mTranslator->translateChar( QChar('A'), ok ), QChar('2') );
+    QCOMPARE( mTranslator->translateChar( QChar('1'), ok ), QChar('1') );
+    QCOMPARE( mTranslator->translateChar( QChar('ä'), ok ), QChar('2') );
+    QCOMPARE( mTranslator->translateChar( QChar('Ä'), ok ), QChar('2') );
+    QCOMPARE( mTranslator->translateChar( QChar('-'), ok ), QChar('1') );
     // Romanian unicode character "sh"
-    QCOMPARE( mTranslator->translateChar( QChar(0x0219) ), QChar('7') );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0219), ok ), QChar('7') );
     // Chinese unicode character
     QChar chn(0x4E0F);
-    QCOMPARE( mTranslator->translateChar( QChar(0x4E0F) ), QChar() );
+    QCOMPARE( mTranslator->translateChar( QChar(0x4E0F), ok ), QChar() );
+    QVERIFY( !ok );
+
+
+}
+
+void UT_LogsPredictiveLatin12KeyTranslator::testEncodes()
+{
+    QVERIFY( mTranslator->encodes( QString( "Zulu" ) ) );
+    QVERIFY( mTranslator->encodes( QString( "Öistämö" ) ) );
+    
+    //china
+    QString uni1;
+    uni1.append(QChar(0x4E0E));
+    uni1.append(QChar(0x4E0F));
+    QVERIFY( !mTranslator->encodes( uni1) );
+    
+    const int ucsize = 9;
+    const QChar thaiName2[] = {0x0E01,0x0E06,0x0E2F,0x0E0E,0x0E14,0x0E19,0x0E30,0x0E23,0x0E2A };
+    QVERIFY( !mTranslator->encodes( QString( thaiName2,ucsize ) ) );
     
 }
 
 
-
--- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivethai12keytranslator.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivethai12keytranslator.cpp	Thu May 27 12:51:53 2010 +0300
@@ -25,13 +25,11 @@
 
 void UT_LogsPredictiveThai12KeyTranslator::initTestCase()
 {
-    mOrigLang = HbInputSettingProxy::instance()->globalInputLanguage();
 }
 
 void UT_LogsPredictiveThai12KeyTranslator::cleanupTestCase()
 {
     
-    HbInputSettingProxy::instance()->setGlobalInputLanguage( mOrigLang );
     
 }
 
@@ -40,15 +38,12 @@
 {
     
     HbInputLanguage thai( QLocale::Thai );
-    
-    HbInputSettingProxy::instance()->setGlobalInputLanguage( thai );
-    mTranslator = new LogsPredictiveThai12KeyTranslator();
+    mTranslator = new LogsPredictiveThai12KeyTranslator( thai );
     
 }
 
 void UT_LogsPredictiveThai12KeyTranslator::cleanup()
 {
-    HbInputSettingProxy::instance()->setGlobalInputLanguage( mOrigLang );
     delete mTranslator;
     mTranslator = 0;
 }
@@ -59,44 +54,80 @@
     
 }
 
-void UT_LogsPredictiveThai12KeyTranslator::testTranslate()
+void UT_LogsPredictiveThai12KeyTranslator::testTranslateText()
 {
-    QCOMPARE( mTranslator->translate( QString( "0123456789" ) ), QString( "0123456789" ) );
-    QCOMPARE( mTranslator->translate( QString( "Nokia" ) ), QString( "" ) );
-    QCOMPARE( mTranslator->translate( QString( "*0123##456*789*" ) ), QString( "0123456789" ) );
+    QCOMPARE( mTranslator->translateText( QString( "0123456789" ) ), QString( "0123456789" ) );
+    //finds name latin name translator
+    QCOMPARE( mTranslator->translateText( QString( "Nokia" ) ), QString( "66542" ) );
     
     const int ucsize = 9;
     //                           1      2      3      4      5     6      7      8     9
     const QChar thaiName1[] = {0x0E01,0x0E06,0x0E0A,0x0E0E,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };
-    QCOMPARE( mTranslator->translate( QString( thaiName1,ucsize ) ), QString( "123456789" ) );
+    QCOMPARE( mTranslator->translateText( QString( thaiName1,ucsize ) ), QString( "123456789" ) );
     
     //                          1       2      *      4      5     6      #      8     9
     const QChar thaiName2[] = {0x0E01,0x0E06,0x0E2F,0x0E0E,0x0E14,0x0E19,0x0E30,0x0E23,0x0E2A };
-    QCOMPARE( mTranslator->translate( QString( thaiName2,ucsize ) ), QString( "1245689" ) );
+    QCOMPARE( mTranslator->translateText( QString( thaiName2,ucsize ) ), QString( "1245689" ) );
     
             
 }
 
+void UT_LogsPredictiveThai12KeyTranslator::testTranslatePattern()
+{
+    QCOMPARE( mTranslator->translatePattern( QString( "0123456789" ) ), QString( "0123456789" ) );
+    QCOMPARE( mTranslator->translatePattern( QString( "*0123##456*789*" ) ), QString( "0123456789" ) );
+            
+}
+
 void UT_LogsPredictiveThai12KeyTranslator::testTranslateChar()
 {
-
-    QCOMPARE( mTranslator->translateChar( QChar('0') ), QChar('0') );
-    QCOMPARE( mTranslator->translateChar( QChar('1') ), QChar('1') );
-    QCOMPARE( mTranslator->translateChar( QChar('N') ), QChar() );
-    QCOMPARE( mTranslator->translateChar( QChar('*') ), QChar() );
-    QCOMPARE( mTranslator->translateChar( QChar('#') ), QChar() );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E01) ), QChar('1') );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E06) ), QChar('2') );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E0A) ), QChar('3') );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E0E) ), QChar('4') );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E14) ), QChar('5') );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E19) ), QChar('6') );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E1E) ), QChar('7') );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E23) ), QChar('8') );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E2A) ), QChar('9') );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E2F) ), QChar() );
-    QCOMPARE( mTranslator->translateChar( QChar(0x0E30) ), QChar() );
+    bool ok;
+    
+    QCOMPARE( mTranslator->translateChar( QChar('0'), ok ), QChar('0') );
+    QVERIFY( ok );
+    QCOMPARE( mTranslator->translateChar( QChar('1'), ok ), QChar('1') );
+    QVERIFY( ok );
+    QCOMPARE( mTranslator->translateChar( QChar('N'), ok ), QChar() );
+    QVERIFY( !ok );
+    QCOMPARE( mTranslator->translateChar( QChar('*'), ok ), QChar() );
+    QVERIFY( ok );
+    QCOMPARE( mTranslator->translateChar( QChar('#'), ok ), QChar() );
+    QVERIFY( ok );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E01), ok ), QChar('1') );
+    QVERIFY( ok );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E06), ok ), QChar('2') );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E0A), ok ), QChar('3') );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E0E), ok ), QChar('4') );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E14), ok ), QChar('5') );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E19), ok ), QChar('6') );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E1E), ok ), QChar('7') );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E23), ok ), QChar('8') );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E2A), ok ), QChar('9') );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E2F), ok ), QChar() );
+    QVERIFY( ok );
+    QCOMPARE( mTranslator->translateChar( QChar(0x0E30), ok ), QChar() );
+    QVERIFY( ok );
     
 }
 
 
+void UT_LogsPredictiveThai12KeyTranslator::testEncodes()
+{
+    //thai
+    const int ucsize = 9;
+    const QChar thaiName2[] = {0x0E01,0x0E06,0x0E2F,0x0E0E,0x0E14,0x0E19,0x0E30,0x0E23,0x0E2A };
+    
+    QVERIFY( mTranslator->encodes( QString( thaiName2,ucsize ) ) );
+    
+    //china
+    QString uni1;
+    uni1.append(QChar(0x4E0E));
+    uni1.append(QChar(0x4E0F));
+    QVERIFY( !mTranslator->encodes( uni1) );
+    
+    QVERIFY( !mTranslator->encodes( QString( "Zulu" ) ) );
+        
+
+}
+
+
--- a/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivetranslator.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logscntfinder/tsrc/ut_logscntfinder/src/ut_logspredictivetranslator.cpp	Thu May 27 12:51:53 2010 +0300
@@ -19,6 +19,8 @@
 
 #include "ut_logspredictivetranslator.h"
 #include "logspredictivetranslator.h"
+#include "logspredictivelatin12keytranslator.h"
+#include "logspredictivethai12keytranslator.h"
 
 #include <QtTest/QtTest>
 
@@ -52,7 +54,10 @@
 {
     QVERIFY( mTranslator );
     QVERIFY( mTranslator->mKeyMap );
+    QVERIFY( mTranslator->mNameTranslator == 0 );
+    QVERIFY( LogsPredictiveTranslator::mInstance != 0 );
     LogsPredictiveTranslator::deleteInstance();
+    QVERIFY( LogsPredictiveTranslator::mInstance == 0 );
     
     mTranslator = 0;
     HbInputLanguage thai( QLocale::Thai );
@@ -61,31 +66,84 @@
     mTranslator = LogsPredictiveTranslator::instance();
     QVERIFY( mTranslator );
     QVERIFY( mTranslator->mKeyMap );
+    QVERIFY( mTranslator->mNameTranslator == 0 );
+    QVERIFY( LogsPredictiveTranslator::mInstance != 0 );
+    
+    LogsPredictiveTranslator::deleteInstance();
+    QVERIFY( LogsPredictiveTranslator::mInstance == 0 );
+    mTranslator = 0;
     
 }
 
-
 void UT_LogsPredictiveTranslator::testTranslate()
 {
     QString test1( "12345" );
+    bool ok;
     
     QCOMPARE( mTranslator->LogsPredictiveTranslator::translate( test1 ).length(),
               test1.length() );
     
-    QCOMPARE( mTranslator->LogsPredictiveTranslator::translate( test1, 2 ).length(),
+    QCOMPARE( mTranslator->LogsPredictiveTranslator::translate( test1, &ok, 2 ).length(),
               2 );
+    QVERIFY( ok );
+    
+}
+
+void UT_LogsPredictiveTranslator::testTranslatePattern()
+{
+    QString test1( "12345" );
+    
+    QCOMPARE( mTranslator->LogsPredictiveTranslator::translatePattern( test1 ).length(),
+              test1.length() );
+    
+}
+
+
+void UT_LogsPredictiveTranslator::testTranslateText()
+{
+    QString test1( "12345" );
+    
+    QCOMPARE( mTranslator->translateText( test1 ).length(), test1.length() );
+    
+    //text is thai, input lang latin
+    const int ucsize = 9;
+    //                           1      2      3      4      5     6      7      8     9
+    const QChar thaiName1[] = {0x0E01,0x0E06,0x0E0A,0x0E0E,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };
+    QCOMPARE( mTranslator->translateText( QString( thaiName1,ucsize ) ), QString( "123456789" ) );
+    
 }
 
-void UT_LogsPredictiveTranslator::testStartsWith()
+void UT_LogsPredictiveTranslator::testNameTranslator()
 {
-    QCOMPARE( mTranslator->startsWith( QString("" ), QString("") ), 0 ); 
-    QCOMPARE( mTranslator->startsWith( QString("123" ), QString("") ), 0 );
-    QCOMPARE( mTranslator->startsWith( QString("" ), QString("123") ), 0 );
-    QCOMPARE( mTranslator->startsWith( QString("123" ), QString("1234") ), 0 ); 
-    QCOMPARE( mTranslator->startsWith( QString("123" ), QString("1") ), 1 ); 
-    QCOMPARE( mTranslator->startsWith( QString("123" ), QString("123") ), 3 ); 
-    QCOMPARE( mTranslator->startsWith( QString("123" ), QString("12"), true ), 2 ); 
-    QCOMPARE( mTranslator->startsWith( QString("123" ), QString("12"), false ), 2 );
+    QString test1( "12345" );
+    QCOMPARE( mTranslator->mib(), MIBenumLatin );
+    QVERIFY( !mTranslator->mNameTranslator );
+    QCOMPARE( mTranslator->nameTranslator( test1 ).mib(), MIBenumLatin );
+    QVERIFY( mTranslator->mNameTranslator );
+    
+    //text is thai, input lang latin
+    const int ucsize = 9;
+    //                           1      2      3      4      5     6      7      8     9
+    const QChar thaiName1[] = {0x0E01,0x0E06,0x0E0A,0x0E0E,0x0E14,0x0E19,0x0E1E,0x0E23,0x0E2A };
+    QCOMPARE( mTranslator->nameTranslator( QString( thaiName1,ucsize ) ).mib(), MIBenumThai );
+    QVERIFY( mTranslator->mNameTranslator );
+    QCOMPARE( mTranslator->mNameTranslator->mib(), MIBenumThai );
+    QCOMPARE( mTranslator->mib(), MIBenumLatin );
+    
+    QCOMPARE( mTranslator->nameTranslator( QString( thaiName1,ucsize ) ).mib(), MIBenumThai );
+    QVERIFY( mTranslator->mNameTranslator );
+    QCOMPARE( mTranslator->mNameTranslator->mib(), MIBenumThai );
+    QCOMPARE( mTranslator->mib(), MIBenumLatin );
+    
+    
+    //china
+    QString uni;
+    uni.append(QChar(0x0219));
+    uni.append(QChar(0x4E0F));
+    QCOMPARE( mTranslator->nameTranslator( uni ).mib(), MIBenumLatin );
+    QVERIFY( !mTranslator->mNameTranslator );
+    QCOMPARE( mTranslator->mib(), MIBenumLatin );
+    
     
 }
 
--- a/logsui/logsengine/inc/logsengdefs.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsengine/inc/logsengdefs.h	Thu May 27 12:51:53 2010 +0300
@@ -31,7 +31,7 @@
 const char logsVoipCallIconId[] = "qtg_large_voip";
 
 const char logsRemotePartyInfoIconId[] = "qtg_large_info";
-const char logsCallDurationIconId[] = "qtg_large_callduration";
+const char logsCallDurationIconId[] = "qtg_large_call_duration";
 const char logsCallDateAndTimeIconId[] = "qtg_large_calendar";
 const char logsThumbUnknownId[] = "qtg_large_avatar";
 
--- a/logsui/logsengine/logssymbianos/inc/logseventparser.h	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsengine/logssymbianos/inc/logseventparser.h	Thu May 27 12:51:53 2010 +0300
@@ -54,7 +54,7 @@
         /**
          * Resolve event type based on available information.
          */
-        static void resolveEventType(LogsEvent& dest);
+        static bool resolveEventType(LogsEvent& dest);
         
         static void eventTypeSpecificParsing(LogsEvent& dest);
         
--- a/logsui/logsengine/logssymbianos/src/logseventparser.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsengine/logssymbianos/src/logseventparser.cpp	Thu May 27 12:51:53 2010 +0300
@@ -103,6 +103,18 @@
         dest.setDuration(source.Duration());
     }
     
+    LogsEventData* logsEventData = new LogsEventData();
+    if ( logsEventData->parse(source) != 0 ){
+        // Parsing failed, clear event data
+        delete logsEventData;
+        dest.setLogsEventData( 0 );
+    } else {
+        dest.setLogsEventData( logsEventData );  //Ownership transferred
+    }
+    
+    // Resolve event type based on current event data
+    dataChanged |= resolveEventType(dest);
+    
     int currLogId = dest.logId();
     int newLogId = source.Id();
     bool logIdChanged( currLogId != newLogId );
@@ -114,19 +126,7 @@
         dest.mEventState = LogsEvent::EventNotUpdated;
     }
     dest.setLogId( newLogId ); // Store unique identifier
-    
-    LogsEventData* logsEventData = new LogsEventData();
-    if ( logsEventData->parse(source) != 0 ){
-        // Parsing failed, clear event data
-        delete logsEventData;
-        dest.setLogsEventData( 0 );
-    } else {
-        dest.setLogsEventData( logsEventData );  //Ownership transferred
-    }
-    
-    // Resolve event type based on current event data
-    resolveEventType(dest);
-    
+
     eventTypeSpecificParsing(dest);
     
     dest.setDuplicates( 0 );
@@ -140,7 +140,7 @@
 // LogsEventParser::resolveEventType
 // ----------------------------------------------------------------------------
 //
-void LogsEventParser::resolveEventType(LogsEvent& dest)
+bool LogsEventParser::resolveEventType(LogsEvent& dest)
 {
     LogsEvent::LogsEventType type( LogsEvent::TypeVoiceCall );
     if ( dest.mLogsEventData ){
@@ -157,7 +157,7 @@
         }
     }
     LOGS_QDEBUG_2( "LogsEventParser::resolveEventType, type:", type )
-    dest.setEventType( type );
+    return dest.setEventType( type );
 }
 
 // ----------------------------------------------------------------------------
--- a/logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsengine/logssymbianos/tsrc/stubs/qtcontacts_stubs.cpp	Thu May 27 12:51:53 2010 +0300
@@ -97,25 +97,18 @@
 
 }
 
-QList<QContactLocalId> QContactManager::contacts(
-        const QContactFilter& filter, const QList<QContactSortOrder>& sortOrders) const
-{
-    Q_UNUSED(filter)
-    Q_UNUSED(sortOrders)
-    QList<QContactLocalId> list;
-    if ( QString("11112222").endsWith(logsTestNumber) ){
-        list.append( logsTestContactId );
-    }
-    return list;
-}
-
 QList<QContactLocalId> QContactManager::contactIds(
         const QContactFilter& filter, const QList<QContactSortOrder>& sortOrders) const
 {
     Q_UNUSED(filter)
     Q_UNUSED(sortOrders)
     QList<QContactLocalId> list;
-    if ( QString("11112222").endsWith(logsTestNumber) ){
+    QString matchNum = logsTestNumber;
+    // simulate contact API behavior
+    if ( matchNum.length() > 4 && matchNum.startsWith('+') ){
+        matchNum.remove(0,4);
+    }
+    if ( QString("11112222").endsWith(matchNum) ){
         list.append( logsTestContactId );
     }
     return list;
@@ -131,6 +124,16 @@
     return contact;
 }
 
+QContact QContactManager::contact(const QContactLocalId& contactId, const QContactFetchHint& fetchHint) const
+{
+    Q_UNUSED(fetchHint)
+    QContact contact;
+    if ( contactId == logsTestContactId ) {
+        logsTestContactLocalId = logsTestContactId;
+    }
+    return contact;
+}
+
 
 // ----------------------------------------------------------------------------
 // QContactDetailFilter
--- a/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logseventparser.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsengine/logssymbianos/tsrc/ut_logssymbianos/src/ut_logseventparser.cpp	Thu May 27 12:51:53 2010 +0300
@@ -166,26 +166,26 @@
     LogsEventParser::resolveEventType(*mEvent);
     QVERIFY( mEvent->eventType() == LogsEvent::TypeVoiceCall );
     
-    // Event data
+    // Event data, type not changed
     LogsEventData* eventData = new LogsEventData();
     mEvent->setLogsEventData(eventData);
-    LogsEventParser::resolveEventType(*mEvent);
+    QVERIFY( !LogsEventParser::resolveEventType(*mEvent) );
     QVERIFY( mEvent->eventType() == LogsEvent::TypeVoiceCall );
-    
+
     eventData->mIsVoIP = true;
-    LogsEventParser::resolveEventType(*mEvent);
+    QVERIFY( LogsEventParser::resolveEventType(*mEvent) );
     QVERIFY( mEvent->eventType() == LogsEvent::TypeVoIPCall );
     
     eventData->mIsVoIP = false;
     eventData->mIsVT = true;
-    LogsEventParser::resolveEventType(*mEvent);
+    QVERIFY( LogsEventParser::resolveEventType(*mEvent) );
     QVERIFY( mEvent->eventType() == LogsEvent::TypeVideoCall );
     
     // PoC not supported
     eventData->mIsVoIP = false;
     eventData->mIsVT = false;
     eventData->mIsPoC = true;
-    LogsEventParser::resolveEventType(*mEvent);
+    QVERIFY( LogsEventParser::resolveEventType(*mEvent) );
     QVERIFY( mEvent->eventType() == LogsEvent::TypeUndefined );
     
     // Msgs not supported
@@ -193,6 +193,6 @@
     eventData->mIsVT = false;
     eventData->mIsPoC = false;
     eventData->mMsgPartsNumber = 2;
-    LogsEventParser::resolveEventType(*mEvent);
+    QVERIFY( !LogsEventParser::resolveEventType(*mEvent) );
     QVERIFY( mEvent->eventType() == LogsEvent::TypeUndefined );
 }
--- a/logsui/logsengine/src/logsevent.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsengine/src/logsevent.cpp	Thu May 27 12:51:53 2010 +0300
@@ -257,9 +257,11 @@
 // LogsEvent::setEventType
 // ----------------------------------------------------------------------------
 //
-void LogsEvent::setEventType( LogsEventType eventType )
+bool LogsEvent::setEventType( LogsEventType eventType )
 {
+    bool changed( mEventType != eventType );
     mEventType = eventType;
+    return changed;
 }
 
 // ----------------------------------------------------------------------------
@@ -519,10 +521,9 @@
         phoneFilter.setValue(mLogsEventData->remoteUrl());
         phoneFilter.setMatchFlags(QContactFilter::MatchExactly);
     } else if ( !mNumber.isEmpty() ){
-         // remove non-significant parts from number for better matching
         phoneFilter.setDetailDefinitionName( QContactPhoneNumber::DefinitionName,  
                                              QContactPhoneNumber::FieldNumber);
-        phoneFilter.setValue(stripPhoneNumber(mNumber));
+        phoneFilter.setValue(mNumber);
         phoneFilter.setMatchFlags(QContactFilter::MatchEndsWith);
     } else {
         // Searching not possible
@@ -553,39 +554,6 @@
     return contactNameStr;
 }
 
-
-// ----------------------------------------------------------------------------
-// LogsEvent::stripPhoneNumber
-// ----------------------------------------------------------------------------
-//
-QString LogsEvent::stripPhoneNumber(const QString& num)
-{
-    // Remove international part from beginning if starts with '+'
-    // and leading digit can be removed if doesn't start with '+'
-    // NOTE: since international part is not fixed length, this
-    // approach is not bulletproof (i.e. if international part is
-    // only one digit long, part of group identification code is ignored
-    // which might lead to incorrect matching in case where user
-    // would have two contacts with same subscriber number part but for
-    // different operator (quite unlikely).
-
-    if ( num.length() == 0 ){
-        return num;
-    }
-    QString modifiedNum( num );
-    if ( modifiedNum.at(0) == '+' ) {
-        // QString handles automatically case of removing too much
-        const int removePlusAndInternationalPart = 4;
-        modifiedNum.remove( 0, removePlusAndInternationalPart );
-    }
-    else {
-        const int removeFirstDigit = 1;
-        modifiedNum.remove( 0, removeFirstDigit );
-    }
-
-    return modifiedNum;
-}
-
 // ----------------------------------------------------------------------------
 // LogsEvent::parseContactName
 // ----------------------------------------------------------------------------
--- a/logsui/logsengine/src/logsmatchesmodel.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsengine/src/logsmatchesmodel.cpp	Thu May 27 12:51:53 2010 +0300
@@ -714,5 +714,5 @@
     }
     contactName = contactName.trimmed();
     
-    contactNumber = entry.phoneNumber().richText();    
+    contactNumber = entry.phoneNumber().text();
 }
--- a/logsui/logsengine/src/logsmodel.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsengine/src/logsmodel.cpp	Thu May 27 12:51:53 2010 +0300
@@ -368,11 +368,13 @@
     qreal totalwidth = 0;
     int x = 0;
     if (fontMetrics.width(fullString) > maxwidth){
-    		maxwidth = maxwidth - fontMetrics.width(tr("...")+secondarystring);
+    	maxwidth = maxwidth - fontMetrics.width(tr("...")+secondarystring);
         for (x = 0; (x < basestring.count()) && (totalwidth < maxwidth); x++){
             totalwidth  = totalwidth + fontMetrics.width(basestring[x]);
         }
-        if ( ( totalwidth > maxwidth ) && ( x>0 ) ) x--;
+        if ( x>1 ){
+            x -= 2;
+        }
         return basestring.left(x) + tr("...") + secondarystring;
     } else {
         return fullString;  
--- a/logsui/logsengine/tsrc/symbianos_stub/logseventparser_stub.cpp	Fri May 14 15:52:41 2010 +0300
+++ b/logsui/logsengine/tsrc/symbianos_stub/logseventparser_stub.cpp	Thu May 27 12:51:53 2010 +0300
@@ -44,8 +44,9 @@
 // LogsEventParser::resolveEventType
 // ----------------------------------------------------------------------------
 //
-void LogsEventParser::resolveEventType(LogsEvent& /*dest*/)
+bool LogsEventParser::resolveEventType(LogsEvent& /*dest*/)
 {
+    return false;
 }
 
 // End of file
--- a/recents_plat/logs_engine_api/inc/logsevent.h	Fri May 14 15:52:41 2010 +0300
+++ b/recents_plat/logs_engine_api/inc/logsevent.h	Thu May 27 12:51:53 2010 +0300
@@ -288,7 +288,7 @@
 
         void setEventUid( int uid );
 
-        void setEventType( LogsEventType aEventType );
+        bool setEventType( LogsEventType aEventType );
 
         void setLogsEventData( LogsEventData* logsEventData );