WIP: first draft of contact engine
authorJohn Kern <johnk@symbian.org>
Thu, 05 Aug 2010 16:40:47 -0700
changeset 19 e4b6ee329501
parent 18 5707b75503d5
child 20 a7451a8eb5dc
WIP: first draft of contact engine
contactengine/.make.cache
contactengine/contactengine.pro
contactengine/contactengine.pro.user
contactengine/contactsengine.cpp
contactengine/contactsengine.h
contactengine/main.cpp
contactengine/mainwindow.cpp
contactengine/mainwindow.h
contactengine/mainwindow.ui
contactengine/ui_mainwindow.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactengine/.make.cache	Thu Aug 05 16:40:47 2010 -0700
@@ -0,0 +1,11 @@
+# ============================================================================== 
+# This file is generated by make and should not be modified by the user 
+#  Name        : .make.cache 
+#  Part of     : contact215 
+#  Description : This file is used to cache last build target for 
+#                make sis target. 
+#  Version     :  
+# 
+# ============================================================================== 
+ 
+QT_SIS_TARGET ?= DEBUG-GCCE 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactengine/contactengine.pro	Thu Aug 05 16:40:47 2010 -0700
@@ -0,0 +1,31 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2010-08-03T16:15:24
+#
+#-------------------------------------------------
+
+QT       += core gui webkit
+
+TARGET = contactengine
+TEMPLATE = app
+
+CONFIG += debug
+
+SOURCES += main.cpp\
+        mainwindow.cpp \
+    contactsengine.cpp
+
+HEADERS  += mainwindow.h \
+    contactsengine.h
+
+FORMS    += mainwindow.ui
+
+CONFIG += mobility
+MOBILITY = contacts
+
+symbian {
+    TARGET.UID3 = 0xec200759
+    # TARGET.CAPABILITY += 
+    TARGET.EPOCSTACKSIZE = 0x14000
+    TARGET.EPOCHEAPSIZE = 0x020000 0x800000
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactengine/contactengine.pro.user	Thu Aug 05 16:40:47 2010 -0700
@@ -0,0 +1,395 @@
+<!DOCTYPE QtCreatorProject>
+<qtcreator>
+ <data>
+  <variable>ProjectExplorer.Project.ActiveTarget</variable>
+  <value type="int">0</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.EditorSettings</variable>
+  <valuemap type="QVariantMap">
+   <value key="EditorConfiguration.Codec" type="QByteArray">System</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.0</variable>
+  <valuemap type="QVariantMap">
+   <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Qt Simulator</value>
+   <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Target.QtSimulatorTarget</value>
+   <value key="ProjectExplorer.Target.ActiveBuildConfiguration" type="int">0</value>
+   <value key="ProjectExplorer.Target.ActiveRunConfiguration" type="int">0</value>
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.0" type="QVariantMap">
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+     <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
+    <valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+      <value type="QString">clean</value>
+     </valuelist>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
+    <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+    <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Debug</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">C:/workspace/QtExamples/contactengine-build-simulator</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">28</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">2</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
+   </valuemap>
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.1" type="QVariantMap">
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+     <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">2</value>
+    <valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+      <value type="QString">clean</value>
+     </valuelist>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
+    <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+    <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Release</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">C:/workspace/QtExamples/contactengine-build-simulator</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">28</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">2</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">true</value>
+   </valuemap>
+   <value key="ProjectExplorer.Target.BuildConfigurationCount" type="int">2</value>
+   <valuemap key="ProjectExplorer.Target.RunConfiguration.0" type="QVariantMap">
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">contactengine</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4RunConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase" type="int">2</value>
+    <valuelist key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments" type="QVariantList"/>
+    <value key="Qt4ProjectManager.Qt4RunConfiguration.ProFile" type="QString">contactengine.pro</value>
+    <value key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix" type="bool">false</value>
+    <value key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal" type="bool">false</value>
+    <valuelist key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="Qt4ProjectManager.Qt4RunConfiguration.UserSetName" type="bool">false</value>
+    <value key="Qt4ProjectManager.Qt4RunConfiguration.UserSetWorkingDirectory" type="bool">false</value>
+    <value key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory" type="QString"></value>
+   </valuemap>
+   <value key="ProjectExplorer.Target.RunConfigurationCount" type="int">1</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Target.1</variable>
+  <valuemap type="QVariantMap">
+   <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Symbian Device</value>
+   <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Target.S60DeviceTarget</value>
+   <value key="ProjectExplorer.Target.ActiveBuildConfiguration" type="int">0</value>
+   <value key="ProjectExplorer.Target.ActiveRunConfiguration" type="int">0</value>
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.0" type="QVariantMap">
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+     <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.2" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Create SIS Package</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.S60SignBuildStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Certificate" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Keyfile" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.SignMode" type="int">0</value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">3</value>
+    <valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+      <value type="QString">clean</value>
+     </valuelist>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
+    <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+    <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">4.6.3 Debug</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">C:/workspace/QtExamples/contactengine</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">34</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">6</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
+   </valuemap>
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.1" type="QVariantMap">
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+     <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.2" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Create SIS Package</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.S60SignBuildStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Certificate" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Keyfile" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.SignMode" type="int">0</value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">3</value>
+    <valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+      <value type="QString">clean</value>
+     </valuelist>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
+    <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+    <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">4.6.3 Release</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">C:/workspace/QtExamples/contactengine</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">34</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">6</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
+   </valuemap>
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.2" type="QVariantMap">
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+     <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.2" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Create SIS Package</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.S60SignBuildStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Certificate" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Keyfile" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.SignMode" type="int">0</value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">3</value>
+    <valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+      <value type="QString">clean</value>
+     </valuelist>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
+    <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+    <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">S60_5th_Edition_SDK_v1.0 (Qt 4.6.3) Debug</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">C:/workspace/QtExamples/contactengine</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">42</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">6</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
+   </valuemap>
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.3" type="QVariantMap">
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+     <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.2" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Create SIS Package</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.S60SignBuildStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Certificate" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Keyfile" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.SignMode" type="int">0</value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">3</value>
+    <valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+      <value type="QString">clean</value>
+     </valuelist>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
+    <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+    <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">S60_5th_Edition_SDK_v1.0 (Qt 4.6.3) Release</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">C:/workspace/QtExamples/contactengine</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">42</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">6</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
+   </valuemap>
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.4" type="QVariantMap">
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+     <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.2" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Create SIS Package</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.S60SignBuildStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Certificate" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Keyfile" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.SignMode" type="int">0</value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">3</value>
+    <valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+      <value type="QString">clean</value>
+     </valuelist>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
+    <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+    <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">S60_3rd_FP2_SDK_v1.1 (Qt 4.6.3) Debug</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">2</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">C:/workspace/QtExamples/contactengine</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">44</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">6</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
+   </valuemap>
+   <valuemap key="ProjectExplorer.Target.BuildConfiguration.5" type="QVariantMap">
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">qmake</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">QtProjectManager.QMakeBuildStep</value>
+     <valuelist key="QtProjectManager.QMakeBuildStep.QMakeArguments" type="QVariantList"/>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.1" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <valuemap key="ProjectExplorer.BuildConfiguration.BuildStep.2" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Create SIS Package</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.S60SignBuildStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">false</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList"/>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Certificate" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.Keyfile" type="QString"></value>
+     <value key="Qt4ProjectManager.S60CreatePackageStep.SignMode" type="int">0</value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.BuildStepsCount" type="int">3</value>
+    <valuemap key="ProjectExplorer.BuildConfiguration.CleanStep.0" type="QVariantMap">
+     <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">Make</value>
+     <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.MakeStep</value>
+     <value key="Qt4ProjectManager.MakeStep.Clean" type="bool">true</value>
+     <valuelist key="Qt4ProjectManager.MakeStep.MakeArguments" type="QVariantList">
+      <value type="QString">clean</value>
+     </valuelist>
+     <value key="Qt4ProjectManager.MakeStep.MakeCommand" type="QString"></value>
+    </valuemap>
+    <value key="ProjectExplorer.BuildConfiguration.CleanStepsCount" type="int">1</value>
+    <value key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment" type="bool">false</value>
+    <valuelist key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges" type="QVariantList"/>
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">S60_3rd_FP2_SDK_v1.1 (Qt 4.6.3) Release</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.Qt4BuildConfiguration</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration" type="int">0</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory" type="QString">C:/workspace/QtExamples/contactengine</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.QtVersionId" type="int">44</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.ToolChain" type="int">6</value>
+    <value key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild" type="bool">false</value>
+   </valuemap>
+   <value key="ProjectExplorer.Target.BuildConfigurationCount" type="int">6</value>
+   <valuemap key="ProjectExplorer.Target.RunConfiguration.0" type="QVariantMap">
+    <value key="ProjectExplorer.ProjectConfiguration.DisplayName" type="QString">contactengine on Symbian Device</value>
+    <value key="ProjectExplorer.ProjectConfiguration.Id" type="QString">Qt4ProjectManager.S60DeviceRunConfiguration</value>
+    <valuelist key="Qt4ProjectManager.S60DeviceRunConfiguration.CommandLineArguments" type="QVariantList"/>
+    <value key="Qt4ProjectManager.S60DeviceRunConfiguration.ProFile" type="QString">contactengine.pro</value>
+    <value key="Qt4ProjectManager.S60DeviceRunConfiguration.SerialPortName" type="QString">COM5</value>
+   </valuemap>
+   <value key="ProjectExplorer.Target.RunConfigurationCount" type="int">1</value>
+  </valuemap>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.TargetCount</variable>
+  <value type="int">2</value>
+ </data>
+ <data>
+  <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+  <value type="int">4</value>
+ </data>
+</qtcreator>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactengine/contactsengine.cpp	Thu Aug 05 16:40:47 2010 -0700
@@ -0,0 +1,287 @@
+#include <QContact>
+#include <QContactAddress>
+#include <QContactOrganization>
+#include <QContactPhoneNumber>
+
+#include "contactsengine.h"
+
+using namespace QtMobility;
+
+ContactsEngine::ContactsEngine(QObject *parent) :
+    QAbstractListModel(parent)
+{
+    this->m_manager = 0;
+}
+ContactsEngine::~ContactsEngine()
+{
+    QList<QContactManager*> initialisedManagers = m_initialisedManagers.values();
+    while (!initialisedManagers.isEmpty()) {
+        QContactManager *deleteMe = initialisedManagers.takeFirst();
+        delete deleteMe;
+    }
+}
+
+void ContactsEngine::setManager(QString aMgrName)
+{
+    QString managerUri = m_availableManagers.value(aMgrName);
+
+    // first, check to see if they reselected the same backend.
+    if (m_manager && m_manager->managerUri() == managerUri)
+        return;
+
+    // the change is real.  update.
+    if (m_initialisedManagers.contains(managerUri)) {
+        m_manager = m_initialisedManagers.value(managerUri);
+    } else {
+        m_manager = QContactManager::fromUri(managerUri);
+        if (m_manager->error()) {
+            // todo switch to qDebug()
+            // QMessageBox::information(this, tr("Failed!"), QString("Failed to open store!\n(error code %1)").arg(m_manager->error()));
+            delete m_manager;
+            m_manager = 0;
+            return;
+        }
+        m_initialisedManagers.insert(managerUri, m_manager);
+    }
+
+    // compute a new list of contact names
+    QStringList displayNames;
+    QList<QContact> c = this->m_manager->contacts();
+
+    // signal that the manager has changed.
+
+    // emit managerChanged(m_manager);
+
+    // and... rebuild the list.
+    // rebuildList(m_currentFilter);
+}
+
+void ContactsEngine::populateAddresses()
+{
+    QContact *contact;
+    QContactOrganization *dept;
+    QStringList departmentName;
+    QContactPhoneNumber *number;
+    QContactAddress *address;
+
+    // this source is open source. Do not put private numbers in here.
+
+    // emergency numbers
+    // fire Foster City
+    contact = new QContact();
+
+    dept = new QContactOrganization();
+    departmentName << "Foster City Fire department";
+    dept->setDepartment(departmentName);
+    contact->saveDetail(dept);
+
+    number = new QContactPhoneNumber();
+    number->setContexts(QContactDetail::ContextWork);
+    number->setNumber("+1-650-286-3350?");
+    contact->saveDetail(number);
+    //fire.setPreferredDetail("DialAction",number); //doesn't compile. Has it been depreciated?
+
+    // create address detail
+    address = new QContactAddress();
+    address->setCountry("USA");
+    address->setRegion("CA");
+    address->setLocality("Foster City"); // RFC 2426 - defines the difference locality and region.
+    address->setStreet("1040 East Hillsdale Boulevard");
+    address->setPostcode("94404");
+    contact->saveDetail(address);
+
+    this->m_manager->saveContact(contact);
+    // Note that the caller retains ownership of the detail.
+    delete dept;
+    while (!departmentName.isEmpty())
+        departmentName.takeFirst();
+    delete number;
+    delete address;
+    delete contact;
+
+    // police - foster city
+    contact = new QContact();
+
+    dept = new QContactOrganization();
+
+    departmentName << "Foster City Police department";
+    dept->setDepartment(departmentName);
+    contact->saveDetail(dept);
+
+    number = new QContactPhoneNumber();
+    number->setContexts(QContactDetail::ContextWork);
+    number->setNumber("+1(650)286-3300?");
+    contact->saveDetail(number);
+
+    // create address detail
+    address = new QContactAddress();
+    address->setCountry("USA");
+    address->setRegion("CA");
+    address->setLocality("Foster City");
+    address->setStreet("1030 East Hillsdale Boulevard");
+    address->setPostcode("94404");
+    contact->saveDetail(address);
+
+    this->m_manager->saveContact(contact);
+    delete dept;
+    while (!departmentName.isEmpty())
+        departmentName.takeFirst();
+    delete number;
+    delete address;
+    delete contact;
+
+    // taxi - Foster City
+    contact = new QContact();
+
+    dept = new QContactOrganization();
+    departmentName << "Foster City Yellow Cab";
+    dept->setDepartment(departmentName);
+    contact->saveDetail(dept);
+
+    number = new QContactPhoneNumber();
+    number->setContexts(QContactDetail::ContextWork);
+    number->setNumber("+1(650)367-9999?");
+    contact->saveDetail(number);
+
+    // create address detail
+    address = new QContactAddress();
+    address->setCountry("USA");
+    address->setRegion("CA");
+    address->setLocality("Foster City");
+    address->setStreet("1055 foster city blvd");
+    address->setPostcode("94404");
+    contact->saveDetail(address);
+
+    this->m_manager->saveContact(contact);
+    delete dept;
+    while (!departmentName.isEmpty())
+        departmentName.takeFirst();
+    delete number;
+    delete address;
+    delete contact;
+
+    // fire  - Menlo Park
+    contact = new QContact();
+
+    dept = new QContactOrganization();
+    departmentName << "Menlo Park fire department";
+    dept->setDepartment(departmentName);
+    contact->saveDetail(dept);
+
+    number = new QContactPhoneNumber();
+    number->setContexts(QContactDetail::ContextWork);
+    number->setNumber("+1(650)688-8400??");
+    contact->saveDetail(number);
+
+    // create address detail
+    address = new QContactAddress();
+    address->setCountry("USA");
+    address->setRegion("CA");
+    address->setLocality("Menlo Park");
+    address->setStreet("170 Middlefield Road");
+    address->setPostcode("94025");
+    contact->saveDetail(address);
+
+    this->m_manager->saveContact(contact);
+    delete dept;
+    while (!departmentName.isEmpty())
+        departmentName.takeFirst();
+    delete number;
+    delete address;
+    delete contact;
+
+    //701 Laurel Street, Menlo Park, CA? -
+    // police  - Menlo Park
+    contact = new QContact();
+
+    dept = new QContactOrganization();
+    departmentName << "Menlo Park police department";
+    dept->setDepartment(departmentName);
+    contact->saveDetail(dept);
+
+    number = new QContactPhoneNumber();
+    number->setContexts(QContactDetail::ContextWork);
+    number->setNumber("+1(650)858-3328???");
+    contact->saveDetail(number);
+
+    // create address detail
+    address = new QContactAddress();
+    address->setCountry("USA");
+    address->setRegion("CA");
+    address->setLocality("Menlo Park");
+    address->setStreet("701 Laurel Street");
+    address->setPostcode("94025");
+    contact->saveDetail(address);
+
+    this->m_manager->saveContact(contact);
+    delete dept;
+    while (!departmentName.isEmpty())
+        departmentName.takeFirst();
+    delete number;
+    delete address;
+    delete contact;
+}
+
+
+
+QStringList ContactsEngine::dataSources()
+{
+     QStringList availableManagers = QContactManager::availableManagers();
+     availableManagers.removeAll("invalid");
+     foreach(QString managerName, availableManagers) {
+
+         QMap<QString, QString> params;
+         QString managerUri = QContactManager::buildUri(managerName, params);
+
+         // Add some parameters to SIM backend so that we can use
+         // all the stores.
+         if (managerName == "symbiansim") {
+             availableManagers.removeAll("symbiansim");
+
+             availableManagers.append("symbiansim:adn");
+             params.insert("store", "ADN");
+             managerUri = QContactManager::buildUri(managerName, params);
+             m_availableManagers.insert(availableManagers.last(), managerUri);
+
+             availableManagers.append("symbiansim:fdn");
+             params.clear();
+             params.insert("store", "FDN");
+             managerUri = QContactManager::buildUri(managerName, params);
+             m_availableManagers.insert(availableManagers.last(), managerUri);
+
+             availableManagers.append("symbiansim:sdn");
+             params.clear();
+             params.insert("store", "SDN");
+             managerUri = QContactManager::buildUri(managerName, params);
+             m_availableManagers.insert(availableManagers.last(), managerUri);
+         }
+         else {
+             m_availableManagers.insert(managerName, managerUri);
+         }
+     }
+     return (availableManagers);
+}
+
+int ContactsEngine::rowCount(const QModelIndex &parent) const
+ {
+    QList<QContact> allContacts;
+    allContacts = this->m_manager->contacts();
+    // return stringList.count();
+    return allContacts.count();
+ }
+
+QVariant ContactsEngine::data(const QModelIndex &index, int role) const
+ {
+    QVariant rc;
+    QList<QContact> allContacts;
+
+    allContacts = this->m_manager->contacts();
+
+    if (!index.isValid() || index.row() >= allContacts.size()) {
+         return rc;
+    }
+    if (role == Qt::DisplayRole) {
+        rc = QVariant(allContacts.at(index.row()).displayLabel());
+    }
+    return rc;
+ }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactengine/contactsengine.h	Thu Aug 05 16:40:47 2010 -0700
@@ -0,0 +1,40 @@
+#ifndef CONTACTSENGINE_H
+#define CONTACTSENGINE_H
+
+#include <QAbstractListModel>
+
+#include <QContactManager>
+
+#include "contactsengine.h"
+
+using namespace QtMobility;
+
+class ContactsEngine : public QAbstractListModel
+{
+    Q_OBJECT
+public:
+    explicit ContactsEngine(QObject *parent = 0);
+    ~ContactsEngine();
+
+    // required by list model interface.
+    int rowCount(const QModelIndex &parent = QModelIndex()) const;
+    QVariant data(const QModelIndex &index, int role) const;
+
+    QStringList dataSources();
+    void setManager(QString aMgr);
+
+public:
+    void populateAddresses();
+
+signals:
+    void managerChanged(QStringList containNames);
+
+public slots:
+
+private:
+    QContactManager *m_manager;
+    QMap<QString, QString> m_availableManagers;
+    QMap<QString, QContactManager*> m_initialisedManagers;
+};
+
+#endif // CONTACTSENGINE_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactengine/main.cpp	Thu Aug 05 16:40:47 2010 -0700
@@ -0,0 +1,16 @@
+#include <QtGui/QApplication>
+#include "mainwindow.h"
+
+int main(int argc, char *argv[])
+{
+    QApplication a(argc, argv);
+    MainWindow w;
+
+#if defined(Q_WS_S60)
+    w.showMaximized();
+#else
+    w.show();
+#endif
+
+    return a.exec();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactengine/mainwindow.cpp	Thu Aug 05 16:40:47 2010 -0700
@@ -0,0 +1,25 @@
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+#include "contactsengine.h"
+
+MainWindow::MainWindow(QWidget *parent) :
+    QMainWindow(parent),
+    ui(new Ui::MainWindow)
+{
+    ui->setupUi(this);
+    this->ce = new ContactsEngine(this);
+
+    ui->comboBox->addItems(this->ce->dataSources());
+
+}
+
+void MainWindow::backendSelected(QString txt)
+{
+    // based on this string create a contact manager.
+    this->ce->setManager(txt);
+}
+
+MainWindow::~MainWindow()
+{
+    delete ui;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactengine/mainwindow.h	Thu Aug 05 16:40:47 2010 -0700
@@ -0,0 +1,27 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include "contactsengine.h"
+
+namespace Ui {
+    class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    explicit MainWindow(QWidget *parent = 0);
+    ~MainWindow();
+
+public slots:
+    void backendSelected(QString );
+
+private:
+    Ui::MainWindow *ui;
+    ContactsEngine *ce;
+};
+
+#endif // MAINWINDOW_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactengine/mainwindow.ui	Thu Aug 05 16:40:47 2010 -0700
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>360</width>
+    <height>640</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>MainWindow</string>
+  </property>
+  <widget class="QWidget" name="centralWidget">
+   <widget class="QWidget" name="">
+    <property name="geometry">
+     <rect>
+      <x>0</x>
+      <y>0</y>
+      <width>361</width>
+      <height>641</height>
+     </rect>
+    </property>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <item>
+      <widget class="QComboBox" name="comboBox">
+       <property name="font">
+        <font>
+         <pointsize>12</pointsize>
+        </font>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <widget class="QListView" name="listView"/>
+     </item>
+    </layout>
+   </widget>
+  </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contactengine/ui_mainwindow.h	Thu Aug 05 16:40:47 2010 -0700
@@ -0,0 +1,83 @@
+/********************************************************************************
+** Form generated from reading UI file 'mainwindow.ui'
+**
+** Created: Thu Aug 5 16:24:17 2010
+**      by: Qt User Interface Compiler version 4.6.3
+**
+** WARNING! All changes made in this file will be lost when recompiling UI file!
+********************************************************************************/
+
+#ifndef UI_MAINWINDOW_H
+#define UI_MAINWINDOW_H
+
+#include <QtCore/QVariant>
+#include <QtGui/QAction>
+#include <QtGui/QApplication>
+#include <QtGui/QButtonGroup>
+#include <QtGui/QComboBox>
+#include <QtGui/QHeaderView>
+#include <QtGui/QListView>
+#include <QtGui/QMainWindow>
+#include <QtGui/QVBoxLayout>
+#include <QtGui/QWidget>
+
+QT_BEGIN_NAMESPACE
+
+class Ui_MainWindow
+{
+public:
+    QWidget *centralWidget;
+    QWidget *widget;
+    QVBoxLayout *verticalLayout;
+    QComboBox *comboBox;
+    QListView *listView;
+
+    void setupUi(QMainWindow *MainWindow)
+    {
+        if (MainWindow->objectName().isEmpty())
+            MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
+        MainWindow->resize(360, 640);
+        centralWidget = new QWidget(MainWindow);
+        centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
+        widget = new QWidget(centralWidget);
+        widget->setObjectName(QString::fromUtf8("widget"));
+        widget->setGeometry(QRect(0, 0, 361, 641));
+        verticalLayout = new QVBoxLayout(widget);
+        verticalLayout->setSpacing(6);
+        verticalLayout->setContentsMargins(11, 11, 11, 11);
+        verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
+        verticalLayout->setContentsMargins(0, 0, 0, 0);
+        comboBox = new QComboBox(widget);
+        comboBox->setObjectName(QString::fromUtf8("comboBox"));
+        QFont font;
+        font.setPointSize(12);
+        comboBox->setFont(font);
+
+        verticalLayout->addWidget(comboBox);
+
+        listView = new QListView(widget);
+        listView->setObjectName(QString::fromUtf8("listView"));
+
+        verticalLayout->addWidget(listView);
+
+        MainWindow->setCentralWidget(centralWidget);
+
+        retranslateUi(MainWindow);
+
+        QMetaObject::connectSlotsByName(MainWindow);
+    } // setupUi
+
+    void retranslateUi(QMainWindow *MainWindow)
+    {
+        MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
+    } // retranslateUi
+
+};
+
+namespace Ui {
+    class MainWindow: public Ui_MainWindow {};
+} // namespace Ui
+
+QT_END_NAMESPACE
+
+#endif // UI_MAINWINDOW_H