summaryrefslogtreecommitdiff
path: root/lib-phone/ph-dialer
diff options
context:
space:
mode:
Diffstat (limited to 'lib-phone/ph-dialer')
-rw-r--r--lib-phone/ph-dialer/.cproject594
-rw-r--r--lib-phone/ph-dialer/.project43
-rw-r--r--lib-phone/ph-dialer/.tproject11
-rwxr-xr-xlib-phone/ph-dialer/CMakeLists.txt26
-rw-r--r--lib-phone/ph-dialer/inc/PhDialerAddToContactsPopup.h42
-rw-r--r--lib-phone/ph-dialer/inc/PhDialerEntry.h67
-rw-r--r--lib-phone/ph-dialer/inc/PhDialerKey.h68
-rw-r--r--lib-phone/ph-dialer/inc/PhDialerResultListPopup.h49
-rw-r--r--lib-phone/ph-dialer/inc/PhDialerSearchController.h84
-rw-r--r--lib-phone/ph-dialer/inc/PhDialerSpeeddialPopup.h39
-rw-r--r--lib-phone/ph-dialer/inc/PhDialerView.h89
-rw-r--r--lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumber.h82
-rw-r--r--lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumberTypes.h39
-rw-r--r--lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumberUtils.h70
-rw-r--r--lib-phone/ph-dialer/inc/predictive-number/PhDialerSearchInfo.h117
-rw-r--r--lib-phone/ph-dialer/res/edje/CMakeLists.txt30
-rw-r--r--lib-phone/ph-dialer/res/edje/PhDialerLayout.h83
-rw-r--r--lib-phone/ph-dialer/res/edje/PhDialerLayoutColors.h100
-rw-r--r--lib-phone/ph-dialer/res/edje/PhDialerLayoutMetrics.h78
-rw-r--r--lib-phone/ph-dialer/res/edje/ph-dialer-keypad.edc153
-rw-r--r--lib-phone/ph-dialer/res/edje/ph-dialer-layout.edc118
-rw-r--r--lib-phone/ph-dialer/res/edje/ph-dialer-predictive.edc388
-rw-r--r--lib-phone/ph-dialer/res/images/contacts_caller_id_default_02.pngbin0 -> 2782 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/contacts_caller_id_default_bg_02.pngbin0 -> 2400 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/contacts_caller_id_default_masking_02.pngbin0 -> 2400 bytes
-rwxr-xr-xlib-phone/ph-dialer/res/images/default_contact.pngbin0 -> 2162 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_english_01.pngbin0 -> 1627 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_english_02.pngbin0 -> 1347 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_english_03.pngbin0 -> 1356 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_english_04.pngbin0 -> 1385 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_english_05.pngbin0 -> 1620 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_english_06.pngbin0 -> 1766 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_english_07.pngbin0 -> 1452 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_english_08.pngbin0 -> 1751 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_english_10.pngbin0 -> 1152 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_ic_back.pngbin0 -> 4017 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_ic_call.pngbin0 -> 2172 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_00.pngbin0 -> 1719 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_01.pngbin0 -> 1267 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_02.pngbin0 -> 1602 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_03.pngbin0 -> 1587 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_04.pngbin0 -> 1449 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_05.pngbin0 -> 1606 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_06.pngbin0 -> 1755 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_07.pngbin0 -> 1419 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_08.pngbin0 -> 1831 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_09.pngbin0 -> 1760 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_asterisk.pngbin0 -> 1573 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_number_sharp.pngbin0 -> 1507 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_predictive_arrow.pngbin0 -> 1340 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_speed_dial_add.pngbin0 -> 1225 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_speed_dial_ic.pngbin0 -> 1230 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/keypad_speed_dial_ic_bg.#.pngbin0 -> 1667 bytes
-rw-r--r--lib-phone/ph-dialer/res/images/predictive_results_mask.pngbin0 -> 3219 bytes
-rw-r--r--lib-phone/ph-dialer/src/PhDialerAddToContactsPopup.cpp98
-rw-r--r--lib-phone/ph-dialer/src/PhDialerEntry.cpp89
-rw-r--r--lib-phone/ph-dialer/src/PhDialerKey.cpp108
-rw-r--r--lib-phone/ph-dialer/src/PhDialerResultListPopup.cpp126
-rw-r--r--lib-phone/ph-dialer/src/PhDialerSearchController.cpp210
-rw-r--r--lib-phone/ph-dialer/src/PhDialerSpeeddialPopup.cpp81
-rw-r--r--lib-phone/ph-dialer/src/PhDialerView.cpp392
-rw-r--r--lib-phone/ph-dialer/src/predictive-number/PhDialerPredictiveNumber.cpp223
-rw-r--r--lib-phone/ph-dialer/src/predictive-number/PhDialerPredictiveNumberUtils.cpp219
-rw-r--r--lib-phone/ph-dialer/src/predictive-number/PhDialerSearchInfo.cpp157
64 files changed, 4073 insertions, 0 deletions
diff --git a/lib-phone/ph-dialer/.cproject b/lib-phone/ph-dialer/.cproject
new file mode 100644
index 0000000..4fd20e9
--- /dev/null
+++ b/lib-phone/ph-dialer/.cproject
@@ -0,0 +1,594 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+ <storageModule moduleId="org.eclipse.cdt.core.settings">
+ <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <externalSettings/>
+ <extensions>
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="ph-dialer" buildArtefactType="org.tizen.nativecore.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.sharedLib" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.so.debug">
+ <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.so.debug.1901856276" name="Tizen Core Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.so.debug">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.109029664" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder autoBuildTarget="all" buildPath="${workspace_loc:/ph-dialer}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.33649487" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" parallelBuildOn="true" parallelizationNumber="unlimited" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.1405004172" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+ <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1950179025" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+ <option id="gnu.cpp.compiler.option.optimization.level.315623720" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+ <option id="sbi.gnu.cpp.compiler.option.debugging.level.core.1861914823" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option defaultValue="true" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1074302357" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+ <option id="sbi.gnu.cpp.compiler.option.1760981851" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-2.3-emulator.core_llvm34.i386.core.sharedLib"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1951899281" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SDK_INSTALL_PATH}/library&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/AL&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/curl&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/e_dbus-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libexif&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/EGL&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/GLES&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/GLES2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/KHR&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-manager&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ewebkit2-0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1138204775" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="-target i386-tizen-linux-gnueabi -gcc-toolchain ${SDK_INSTALL_PATH}/tools/smart-build-interface/../i386-linux-gnueabi-gcc-4.6/ -ccc-gcc-name i386-linux-gnueabi-g++ -march=i386 -Wno-gnu"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+ <listOptionValue builtIn="false" value="-fvisibility=hidden"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.1198911347" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc/app-assist}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/carriermatch/inc}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ph-common/inc}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/dbus}&quot;"/>
+ <listOptionValue builtIn="false" value="../../../app-assist-efl/inc"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/common/inc}&quot;"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1703854218" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+ <listOptionValue builtIn="false" value="Native_API"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.1422240551" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_DEBUG"/>
+ <listOptionValue builtIn="false" value="TIZEN_DEBUG_ENABLE"/>
+ <listOptionValue builtIn="false" value="_SDK_BUILD"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.other.other.1518675757" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -std=c++0x" valueType="string"/>
+ <inputType id="sbi.gnu.cpp.compiler.tizen.inputType.2136307221"/>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.560868363" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+ </tool>
+ <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.1466654101" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+ <option id="sbi.gnu.c.compiler.option.debugging.level.core.1448906718" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option defaultValue="true" id="sbi.gnu.c.compiler.option.misc.pic.core.790106586" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+ <option id="sbi.gnu.c.compiler.option.2088959274" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-2.3-emulator.core_llvm34.i386.core.sharedLib"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.305788398" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SDK_INSTALL_PATH}/library&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/AL&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/curl&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/e_dbus-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libexif&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/EGL&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/GLES&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/GLES2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/KHR&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-manager&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ewebkit2-0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1437660569" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="-target i386-tizen-linux-gnueabi -gcc-toolchain ${SDK_INSTALL_PATH}/tools/smart-build-interface/../i386-linux-gnueabi-gcc-4.6/ -ccc-gcc-name i386-linux-gnueabi-g++ -march=i386 -Wno-gnu"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+ <listOptionValue builtIn="false" value="-fvisibility=hidden"/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.1449885404" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks.core.1143175968" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+ <listOptionValue builtIn="false" value="Native_API"/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.556123847" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_DEBUG"/>
+ </option>
+ <inputType id="sbi.gnu.c.compiler.tizen.inputType.1271839318"/>
+ <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.187306255" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1746596689" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+ <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1561214539" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+ <option defaultValue="true" id="sbi.gnu.cpp.linker.option.shared_flag.core.1602429789" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.487061050" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="-target i386-tizen-linux-gnueabi -gcc-toolchain ${SDK_INSTALL_PATH}/tools/smart-build-interface/../i386-linux-gnueabi-gcc-4.6/ -ccc-gcc-name i386-linux-gnueabi-g++ -march=i386 -Xlinker --as-needed"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="-lpthread "/>
+ <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+ <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+ <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+ </option>
+ <option id="gnu.cpp.link.option.paths.1725268383" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/common/Debug}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ph-common/Debug}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/carriermatch/Debug}&quot;"/>
+ <listOptionValue builtIn="false" value="../../../app-assist-efl/Debug"/>
+ </option>
+ <option id="gnu.cpp.link.option.libs.1672653320" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+ <listOptionValue builtIn="false" value="common"/>
+ <listOptionValue builtIn="false" value="ph-common"/>
+ <listOptionValue builtIn="false" value="carriermatch"/>
+ <listOptionValue builtIn="false" srcPrefixMapping="" srcRootPath="" value="app-assist-efl"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.2001966770" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool command="i386-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1663226854" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1653697587" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecore.tool.sbi.po.compiler.854294349" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.914715388" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.730258204" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1802661538" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+ <tool id="org.tizen.nativecore.tool.ast.2114540036" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+ <tool id="org.tizen.nativecore.tool.ast.cpp.945547352" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+ </toolChain>
+ </folderInfo>
+ <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067.1970268669" name="/" resourcePath="dbus">
+ <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.so.debug.1698842383" name="Tizen Core Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.so.debug" unusedChildren="">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.1862062100" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.1405004172"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1322073362" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1950179025">
+ <option id="gnu.cpp.compiler.option.include.paths.1862024141" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/app-assist-efl/inc}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/carriermatch/inc}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/ph-common/inc}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/dbus}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/common/inc}&quot;"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.801747878" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1322073362.2055251519"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1322073362.1212492831"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1322073362.1127111318"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1322073362.536892725"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1322073362.983250407"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1322073362.328190824"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1322073362.677325310"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1322073362.864011291"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1322073362.700307932"/>
+ </tool>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075796817" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288">
+ <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1235218917" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075796817.1563160697"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075796817.1071647721"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075796817.769788277"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075796817.1030493901"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075796817.1783671564"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075796817.997359349"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075796817.705477442"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075796817.65243218"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1075796817.1155268849"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.578327765" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1746596689"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1274254929" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.1561214539"/>
+ <tool id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1226503116" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1663226854">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1421785689" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.1714536879" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.730258204"/>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.226210515" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp.1802661538"/>
+ <tool id="org.tizen.nativecore.tool.ast.1435515500" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast.2114540036"/>
+ <tool id="org.tizen.nativecore.tool.ast.cpp.981231587" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp.945547352"/>
+ <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1245617004" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler.854294349"/>
+ <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.668555117" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler.914715388"/>
+ </toolChain>
+ </folderInfo>
+ <fileInfo id="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067.1505275290" name="dbus_async_base.c" rcbsApplicability="disable" resourcePath="dbus/dbus_async_base.c" toolsToInvoke="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227">
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288">
+ <option id="gnu.c.compiler.option.include.paths.699057084" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/app-assist-efl/inc}&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/common/inc}&quot;"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.726109033" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.261590111"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.1451193473"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.1132199515"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.1591402278"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.62950640"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.1833409931"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.2031417097"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.2039087771"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.1097643191"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.569597624"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.1348198631"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.1341746581"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.317438633"/>
+ <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.749891288.2082759227.377523416"/>
+ </tool>
+ </fileInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="dbus"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.so.release.1383355163">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.so.release.1383355163" moduleId="org.eclipse.cdt.core.settings" name="Release">
+ <externalSettings/>
+ <extensions>
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="ph-dialer" buildArtefactType="org.tizen.nativecore.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.sharedLib" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.so.release.1383355163" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.so.release">
+ <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.so.release.1383355163." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.so.release.2103970634" name="Tizen Core Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.so.release">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.482636569" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder buildPath="${workspace_loc:/ph-dialer}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1168087568" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.582015912" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+ <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.2112780933" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+ <option id="gnu.cpp.compiler.option.optimization.level.1070303096" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+ <option id="sbi.gnu.cpp.compiler.option.debugging.level.core.1116646323" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core"/>
+ <option defaultValue="true" id="sbi.gnu.cpp.compiler.option.misc.pic.core.983700984" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+ <option id="sbi.gnu.cpp.compiler.option.583665033" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-2.3-emulator.core_llvm34.i386.core.sharedLib"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1528573108" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SDK_INSTALL_PATH}/library&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/AL&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/curl&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/e_dbus-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libexif&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/EGL&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/GLES&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/GLES2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/KHR&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-manager&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ewebkit2-0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.527401068" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="-target i386-tizen-linux-gnueabi -gcc-toolchain ${SDK_INSTALL_PATH}/tools/smart-build-interface/../i386-linux-gnueabi-gcc-4.6/ -ccc-gcc-name i386-linux-gnueabi-g++ -march=i386 -Wno-gnu"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+ <listOptionValue builtIn="false" value="-fvisibility=hidden"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.1695246603" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks.core.269168654" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+ <listOptionValue builtIn="false" value="Native_API"/>
+ </option>
+ <inputType id="sbi.gnu.cpp.compiler.tizen.inputType.387448962"/>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1176017145" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+ </tool>
+ <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.631239000" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.1093071292" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+ <option id="sbi.gnu.c.compiler.option.debugging.level.core.577917793" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core"/>
+ <option defaultValue="true" id="sbi.gnu.c.compiler.option.misc.pic.core.1659273903" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+ <option id="sbi.gnu.c.compiler.option.1632820987" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-2.3-emulator.core_llvm34.i386.core.sharedLib"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1999072555" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libxml2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SDK_INSTALL_PATH}/library&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/AL&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appcore-agent&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/appfw&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/base&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/cairo&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/calendar-service2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ckm&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/contacts-svc&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/content&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/curl&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dbus-1.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/dbus-1.0/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/dlog&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ecore-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/e_dbus-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/edje-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eet-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efreet-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1/eina&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eina-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/elementary-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ethumb-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/evas-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/fontconfig&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/freetype2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/gio-unix-2.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/glib-2.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/lib/glib-2.0/include&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/libexif&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media-content&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/media&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/minizip&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/network&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/notification&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/shortcut&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/storage&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/system&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ui&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/vconf&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/web&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/EGL&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/badge&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/eio-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/email-service&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/embryo-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/GLES&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/GLES2&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/KHR&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/messaging&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/msg-service&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ug-1&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/context-manager&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/telephony-client&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/ewebkit2-0&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/location&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/sensor&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/efl-extension&quot;"/>
+ <listOptionValue builtIn="false" value="&quot;${SBI_SYSROOT}/usr/include/wifi-direct&quot;"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1884899962" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="-target i386-tizen-linux-gnueabi -gcc-toolchain ${SDK_INSTALL_PATH}/tools/smart-build-interface/../i386-linux-gnueabi-gcc-4.6/ -ccc-gcc-name i386-linux-gnueabi-g++ -march=i386 -Wno-gnu"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+ <listOptionValue builtIn="false" value="-fvisibility=hidden"/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.1481984696" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/inc}&quot;"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks.core.947209727" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+ <listOptionValue builtIn="false" value="Native_API"/>
+ </option>
+ <inputType id="sbi.gnu.c.compiler.tizen.inputType.443814160"/>
+ <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1326071906" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1440071815" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+ <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.759705633" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+ <option defaultValue="true" id="sbi.gnu.cpp.linker.option.shared_flag.core.419497209" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1194318619" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="-target i386-tizen-linux-gnueabi -gcc-toolchain ${SDK_INSTALL_PATH}/tools/smart-build-interface/../i386-linux-gnueabi-gcc-4.6/ -ccc-gcc-name i386-linux-gnueabi-g++ -march=i386 -Xlinker --as-needed"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="-lpthread "/>
+ <listOptionValue builtIn="false" value="--sysroot=&quot;${SBI_SYSROOT}&quot;"/>
+ <listOptionValue builtIn="false" value="-L&quot;${SBI_SYSROOT}/usr/lib&quot;"/>
+ <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+ </option>
+ <option id="gnu.cpp.link.option.paths.1675585394" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+ <listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/lib}&quot;"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1090659610" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool command="i386-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1451815898" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.967540411" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecore.tool.sbi.po.compiler.555891162" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1519348535" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.881350209" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1758335872" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+ <tool id="org.tizen.nativecore.tool.ast.139286310" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+ <tool id="org.tizen.nativecore.tool.ast.cpp.295723611" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="ph-dialer.org.tizen.nativecore.target.sbi.gcc45.so.738986982" name="Tizen Core Shared Library" projectType="org.tizen.nativecore.target.sbi.gcc45.so"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.so.release.1383355163">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.tizen.nativecommon.TizenGCCManagedMakePerProjectProfileCPP"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.tizen.nativecommon.TizenGCCManagedMakePerProjectProfileCPP"/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+ <storageModule moduleId="org.tizen.tizen.nativeapp.projectInfo" version="1.0.0"/>
+ <storageModule moduleId="refreshScope" versionNumber="2">
+ <configuration configurationName="Release">
+ <resource resourceType="PROJECT" workspacePath="/ph-dialer"/>
+ </configuration>
+ <configuration configurationName="Debug">
+ <resource resourceType="PROJECT" workspacePath="/ph-dialer"/>
+ </configuration>
+ </storageModule>
+</cproject>
diff --git a/lib-phone/ph-dialer/.project b/lib-phone/ph-dialer/.project
new file mode 100644
index 0000000..5cc7b71
--- /dev/null
+++ b/lib-phone/ph-dialer/.project
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>ph-dialer</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.tizen.nativecore.apichecker.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.core.ccnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ <nature>org.tizen.nativecore.apichecker.core.tizenCppNature</nature>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>1413282659403</id>
+ <name></name>
+ <type>26</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-projectRelativePath-matches-false-false-*/.tpk</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
diff --git a/lib-phone/ph-dialer/.tproject b/lib-phone/ph-dialer/.tproject
new file mode 100644
index 0000000..f1cc1fd
--- /dev/null
+++ b/lib-phone/ph-dialer/.tproject
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tproject xmlns="http://www.tizen.org/tproject">
+ <platforms>
+ <platform>
+ <name>mobile-2.3</name>
+ </platform>
+ </platforms>
+ <package>
+ <blacklist/>
+ </package>
+</tproject>
diff --git a/lib-phone/ph-dialer/CMakeLists.txt b/lib-phone/ph-dialer/CMakeLists.txt
new file mode 100755
index 0000000..4ed5da4
--- /dev/null
+++ b/lib-phone/ph-dialer/CMakeLists.txt
@@ -0,0 +1,26 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+PROJECT(ph-dialer CXX)
+
+INCLUDE_DIRECTORIES(
+ ${CMAKE_SOURCE_DIR}/lib-common/inc
+ ${CMAKE_SOURCE_DIR}/app-assist-efl/inc
+ ${CMAKE_SOURCE_DIR}/lib-phone/ph-common/inc
+ ${CMAKE_SOURCE_DIR}/lib-phone/ph-speeddial/inc
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
+ ${CMAKE_CURRENT_SOURCE_DIR}/inc
+ ${CMAKE_CURRENT_SOURCE_DIR}/inc/predictive-number
+ ${CMAKE_CURRENT_SOURCE_DIR}/res/edje
+)
+
+FILE(GLOB_RECURSE SRCS "src/*.cpp")
+ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS})
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${TIZEN_PKGS_LDFLAGS}
+ "app-assist-efl"
+ "contacts-common"
+ "ph-common"
+ "ph-speeddial"
+)
+
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_APP_LIB_DIR})
+
+ADD_SUBDIRECTORY(res/edje)
diff --git a/lib-phone/ph-dialer/inc/PhDialerAddToContactsPopup.h b/lib-phone/ph-dialer/inc/PhDialerAddToContactsPopup.h
new file mode 100644
index 0000000..aff43d0
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/PhDialerAddToContactsPopup.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef __PH_DIALER_ADD_TO_CONTACTS_POPUP_H__
+#define __PH_DIALER_ADD_TO_CONTACTS_POPUP_H__
+
+#include "WPopup.h"
+#include <Elementary.h>
+
+class PhDialerAddToContactsPopup : public WPopup
+{
+public:
+ PhDialerAddToContactsPopup(std::string number);
+
+private:
+ virtual Evas_Object *onCreate(Evas_Object *parent, void *param);
+
+ Evas_Object *createGenlist(Evas_Object *parent);
+ Elm_Genlist_Item_Class *createItemClass();
+ static char *getItemText(void *data, Evas_Object *obj, const char *part);
+
+ static void launchContactCreate(void *data, Evas_Object *obj, void *event_info);
+ static void launchContactUpdate(void *data, Evas_Object *obj, void *event_info);
+
+ std::string m_Number;
+};
+
+#endif /* __PH_DIALER_ADD_TO_CONTACTS_POPUP_H__ */
diff --git a/lib-phone/ph-dialer/inc/PhDialerEntry.h b/lib-phone/ph-dialer/inc/PhDialerEntry.h
new file mode 100644
index 0000000..ed4b6dd
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/PhDialerEntry.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_ENTRY_H_
+#define _PH_DIALER_ENTRY_H_
+
+#include "WControl.h"
+#include <string>
+#include <functional>
+
+class PhDialerEntry : public WControl
+{
+public:
+ /**
+ * @return Entered number
+ */
+ std::string getNumber();
+
+ /**
+ * @brief Set number
+ */
+ void setNumber(const std::string &number);
+
+ /**
+ * @brief Insert character at the cursor position.
+ * @param c Character to insert
+ */
+ void insert(char c);
+
+ /**
+ * @brief Remove last character from the current entry.
+ */
+ void popBack();
+
+ /**
+ * @brief Erase current entry.
+ */
+ void clear();
+
+ /**
+ * @brief Set changed event callback.
+ */
+ void setOnChanged(std::function<void(PhDialerEntry&)> callback);
+
+private:
+ virtual Evas_Object *onCreate(Evas_Object *parent, void *param);
+
+ static void onChanged(void *data, Evas_Object *obj, void *event_info);
+
+ std::function<void(PhDialerEntry&)> m_Changed;
+};
+
+#endif /* _PH_DIALER_ENTRY_H_ */
diff --git a/lib-phone/ph-dialer/inc/PhDialerKey.h b/lib-phone/ph-dialer/inc/PhDialerKey.h
new file mode 100644
index 0000000..b085ffb
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/PhDialerKey.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_KEY_H_
+#define _PH_DIALER_KEY_H_
+
+#include "WButton.h"
+
+class PhDialerKey : public WButton
+{
+public:
+ enum Id
+ {
+ ID_1,
+ ID_2,
+ ID_3,
+ ID_4,
+ ID_5,
+ ID_6,
+ ID_7,
+ ID_8,
+ ID_9,
+ ID_STAR,
+ ID_0,
+ ID_SHARP,
+ };
+
+ /**
+ * @brief Create dialer key.
+ * @param id Key ID
+ */
+ PhDialerKey(Id id);
+
+ /**
+ * @return Key character value.
+ */
+ char getValue() const;
+
+ /**
+ * @return Key ID.
+ */
+ Id getId() const;
+
+private:
+ virtual Evas_Object *onCreate(Evas_Object *parent, void *param);
+ static void onMouseDown(void *data, Evas *e, Evas_Object *obj, void *event_info);
+ static void onMouseUp(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
+ Id m_Id;
+ char m_Value;
+ int m_Tone;
+};
+
+#endif /* _PH_DIALER_KEY_H_ */
diff --git a/lib-phone/ph-dialer/inc/PhDialerResultListPopup.h b/lib-phone/ph-dialer/inc/PhDialerResultListPopup.h
new file mode 100644
index 0000000..a6e90f9
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/PhDialerResultListPopup.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_RESULT_LIST_POPUP_H_
+#define _PH_DIALER_RESULT_LIST_POPUP_H_
+
+#include "PhDialerPredictiveNumberTypes.h"
+#include "WPopup.h"
+#include <Elementary.h>
+
+class PhDialerEntry;
+
+class PhDialerResultListPopup : public WPopup
+{
+public:
+ /**
+ * @brief Constructor
+ * @param[in] result Search data
+ * @param[in] entry Dialer entry
+ */
+ PhDialerResultListPopup(const Ph::Dialer::SearchList &result, PhDialerEntry &entry);
+
+private:
+ virtual Evas_Object *onCreate(Evas_Object *parent, void *param);
+ Evas_Object *createContactList(Evas_Object *parent);
+ Elm_Genlist_Item_Class *createItemClass();
+ static char *getItemText(void *data, Evas_Object *obj, const char *part);
+
+ static void onItemClicked(void *data, Evas_Object *obj, void *event_info);
+
+ const Ph::Dialer::SearchList &m_Result;
+ PhDialerEntry &m_Entry;
+};
+
+#endif //_PH_DIALER_RESULT_LIST_POPUP_H_
diff --git a/lib-phone/ph-dialer/inc/PhDialerSearchController.h b/lib-phone/ph-dialer/inc/PhDialerSearchController.h
new file mode 100644
index 0000000..ed761c9
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/PhDialerSearchController.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_SEARCH_CONTROLLER_H_
+#define _PH_DIALER_SEARCH_CONTROLLER_H_
+
+#include <memory>
+#include <Evas.h>
+
+class PhDialerEntry;
+class PhDialerView;
+
+namespace Ph
+{
+ namespace Dialer
+ {
+ class PredictiveNumber;
+ class SearchInfo;
+ }
+}
+
+class PhDialerSearchController
+{
+public:
+ PhDialerSearchController();
+ ~PhDialerSearchController();
+
+ /**
+ * @brief Creates predictive layout
+ * @param[in] view Parent view
+ */
+ void create(PhDialerView &view);
+
+private:
+ enum class LayoutType
+ {
+ NONE,
+ NO_CONTACTS,
+ ONE_CONTACT,
+ FEW_CONTACTS
+ };
+
+private:
+ void onEntryChanged(PhDialerEntry &entry);
+
+ void setLayout(const std::string &number);
+ void setNoContactsLayout();
+ void setLayoutWithContacts(const Ph::Dialer::SearchInfo &info);
+ void setResultLayout(Evas_Object *parent, size_t count);
+
+ void createSpeeddialLayout(Evas_Object *parent, const Ph::Dialer::SearchInfo &info);
+
+ static void fillPredictiveLayout(Evas_Object *layout, const Ph::Dialer::SearchInfo &info);
+
+ static void showResulListPopup(void *data, Evas *e, Evas_Object *obj, void *event_info);
+
+ static void createAddToContactsPopup(void* data, Evas* e, Evas_Object* obj, void* event_info);
+
+ static void onDbChanged(const char *view_uri, void *data);
+
+ PhDialerView *m_View;
+
+ std::unique_ptr<Ph::Dialer::PredictiveNumber> m_PredictiveNumber;
+
+ LayoutType m_CurrentLayoutType;
+ Evas_Object *m_Layout;
+ Evas_Object *m_ResultLayout;
+};
+
+#endif //_PH_DIALER_SEARCH_CONTROLLER_H_
diff --git a/lib-phone/ph-dialer/inc/PhDialerSpeeddialPopup.h b/lib-phone/ph-dialer/inc/PhDialerSpeeddialPopup.h
new file mode 100644
index 0000000..25b2eaa
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/PhDialerSpeeddialPopup.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_SPEEDDIAL_POPUP_H_
+#define _PH_DIALER_SPEEDDIAL_POPUP_H_
+
+#include "WPopup.h"
+#include <app_control.h>
+
+class PhDialerSpeeddialPopup : public WPopup
+{
+public:
+ PhDialerSpeeddialPopup(int speedNumber);
+
+private:
+ virtual Evas_Object *onCreate(Evas_Object* parent, void* param);
+ void onOkPressed(bool *destroyPopup);
+
+ static void onPickResult(app_control_h request, app_control_h reply,
+ app_control_result_e result, void *data);
+
+ int m_SpeedNumber;
+};
+
+#endif /* _PH_DIALER_SPEEDDIAL_POPUP_H_ */
diff --git a/lib-phone/ph-dialer/inc/PhDialerView.h b/lib-phone/ph-dialer/inc/PhDialerView.h
new file mode 100644
index 0000000..a8675c0
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/PhDialerView.h
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_VIEW_H_
+#define _PH_DIALER_VIEW_H_
+
+#include "IContactsTabPageView.h"
+#include <string>
+
+class WButton;
+class PhDialerEntry;
+class PhDialerSearchController;
+
+class WAPP_ASSIST_EXPORT PhDialerView : public IContactsTabPageView
+{
+public:
+ PhDialerView();
+ ~PhDialerView();
+
+ /**
+ * @brief Sets predictive layout
+ * @param[in] layout Layout with predictive search results
+ */
+ void setPredictiveLayout(Evas_Object *layout);
+
+ /**
+ * @return dialer entry
+ */
+ PhDialerEntry *getEntry() const;
+
+ /**
+ * @brief set number
+ * @param[in] number Number
+ */
+ void setNumber(std::string& number);
+
+private:
+ virtual Evas_Object *onCreate(Evas_Object *parent, void *viewParam);
+ virtual void onPush(Elm_Object_Item *naviItem);
+ virtual void onTabSelect(Elm_Object_Item *naviItem);
+ virtual void onTabUnselect(Elm_Object_Item *naviItem);
+ virtual bool onTabPop();
+ virtual void onTabScrollStart();
+ virtual void onTabScrollStop();
+
+ Evas_Object *createKeypad(Evas_Object *parent);
+ Evas_Object *createCallButton(Evas_Object *parent);
+ Evas_Object *createBackspaceButton(Evas_Object *parent);
+
+ void onKeyPressed(WButton &button);
+ bool onKeyLongpressed(WButton &button);
+
+ void onBackspacePressed(WButton &button);
+ bool onBackspaceLongpressed(WButton &button);
+
+ static void onCallPressed(void *data, Evas_Object *obj, void *event_info);
+ static void onMenuPressed(void *data, Evas_Object *obj, void *event_info);
+
+ void onSendMessage();
+ void onAddWait();
+ void onAddPause();
+ void onSpeeddialSettings();
+ void onCallSettings();
+
+ static void launchCall(const std::string &number);
+ void launchSpeeddial(int digit);
+ static std::string getSpeeddialNumber(int digit);
+ static std::string getLastNumber();
+
+ PhDialerEntry *m_Entry;
+ PhDialerSearchController *m_Controller;
+ std::string m_InitialNumber;
+};
+
+#endif /* _PH_DIALER_VIEW_H_ */
diff --git a/lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumber.h b/lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumber.h
new file mode 100644
index 0000000..0d5c0d5
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumber.h
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_PREDICTIVE_NUMBER_
+#define _PH_DIALER_PREDICTIVE_NUMBER_
+
+#include <string>
+
+#include "PhDialerSearchInfo.h"
+#include "PhDialerPredictiveNumberTypes.h"
+
+namespace Ph {
+
+ namespace Dialer {
+
+ /**
+ * @brief This class provides incremental search logic for predictive number functionality
+ */
+ class PredictiveNumber
+ {
+ public:
+ PredictiveNumber();
+
+ /**
+ * @brief Perform incremental search
+ * @param[in] number Value to find
+ */
+ void search(const std::string &number);
+
+ /**
+ * @brief Retrieves result list
+ * @return Result list or nullptr on empty list
+ */
+ const SearchList *getSearchResult() const;
+
+ /**
+ * @return true if there is no results, otherwise false
+ */
+ bool empty() const;
+
+ /**
+ * @brief make search like a first time
+ * @param[in] number value to find
+ */
+ void searchFromScratch(const std::string &number);
+
+ private:
+ void distinctLogs(SearchList &searchList);
+ void firstSearch(const std::string &number);
+ SearchList searchInDB(const std::string &number);
+ void chooseSearch(const std::string &number);
+
+ bool searchInCache(Cache::iterator from, const std::string &number);
+ Cache::reverse_iterator firstMismatch(const std::string &number);
+ Cache::reverse_iterator skipEmptyResults(size_t offset);
+
+ void clear();
+
+ bool needSearch(const std::string &number);
+
+ std::string m_Number;
+ Cache m_PredictiveNumberCache;
+ int m_LastFoundIndex;
+ };
+ }
+}
+
+#endif //_PH_DIALER_PREDICTIVE_NUMBER_
diff --git a/lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumberTypes.h b/lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumberTypes.h
new file mode 100644
index 0000000..988f63d
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumberTypes.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_PREDICTIVE_NUMBER_TYPES_H_
+#define _PH_DIALER_PREDICTIVE_NUMBER_TYPES_H_
+
+#include "PhDialerSearchInfo.h"
+#include <memory>
+#include <vector>
+
+namespace Ph {
+
+ namespace Dialer {
+ //Smart pointer on SearchInfo
+ typedef std::shared_ptr<SearchInfo> PSearchInfo;
+
+ //List of searchable results
+ typedef std::vector<PSearchInfo> SearchList;
+
+ //History of results
+ typedef std::vector<SearchList> Cache;
+ }
+}
+
+#endif //_PH_DIALER_PREDICTIVE_NUMBER_TYPES_H_
diff --git a/lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumberUtils.h b/lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumberUtils.h
new file mode 100644
index 0000000..0bfc676
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/predictive-number/PhDialerPredictiveNumberUtils.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_PREDICTIVE_NUMBER_UTILS_H_
+#define _PH_DIALER_PREDICTIVE_NUMBER_UTILS_H_
+
+#include <string>
+#include <contacts.h>
+#include <Evas.h>
+
+namespace Ph {
+
+ namespace Dialer {
+
+ namespace Utils {
+
+ /**
+ * @param[in] number Speed dial number
+ * @return contact with speed dial matched @a number
+ */
+ contacts_list_h getSpeedDial(char number);
+
+ /**
+ * @param[in] digit Digit in log number
+ * @return log list with numbers contains @a digit
+ */
+ contacts_list_h getLogList(char digit);
+
+ /**
+ * @param[in] digit Digit on keypad
+ * @return contacts list with names contains @a digit on phone keypad
+ */
+ contacts_list_h getContactListByName(char digit);
+
+ /**
+ * @param[in] digit Digit in contact's number
+ * @return contacts list with numbers contains @a digit
+ */
+ contacts_list_h getContactListByNumber(char digit);
+
+ /**
+ * @param[in] name Contact name
+ * @return converted contact name to letter mask
+ */
+ std::string contactNameToMask(const std::string &name);
+
+ /**
+ * param[in] parent Parent layout
+ * param[in] contactId Contact ID
+ */
+ Evas_Object *createThumbnail(Evas_Object *parent, int contactId);
+ }
+ }
+}
+
+#endif //_PH_DIALER_PREDICTIVE_NUMBER_UTILS_H_
diff --git a/lib-phone/ph-dialer/inc/predictive-number/PhDialerSearchInfo.h b/lib-phone/ph-dialer/inc/predictive-number/PhDialerSearchInfo.h
new file mode 100644
index 0000000..e978b02
--- /dev/null
+++ b/lib-phone/ph-dialer/inc/predictive-number/PhDialerSearchInfo.h
@@ -0,0 +1,117 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_SEARCH_INFO_H_
+#define _PH_DIALER_SEARCH_INFO_H_
+
+#include <string>
+#include <contacts.h>
+
+/**
+ * @brief This class provides contact info for predictive number functionality
+ */
+namespace Ph {
+ namespace Dialer {
+
+ enum InfoType {
+ IT_NONE = -1,
+ IT_SPEED_DIAL,
+ IT_LOG,
+ IT_NAME,
+ IT_NUMBER,
+ IT_MAX
+ };
+
+ class SearchInfo
+ {
+ public:
+ SearchInfo(InfoType type, const contacts_record_h record = NULL);
+
+ /**
+ * @brief Gets searchable string, according to info type
+ * @return Returns searchable string
+ */
+ std::string getSearchString() const;
+
+ /**
+ * @return info type value on successfully constructed object, otherwise IT_NONE value
+ */
+ InfoType getType() const;
+
+ /**
+ * @return contact ID on success or 0 if object constructed with errors
+ */
+ int getId() const;
+
+ /**
+ * @return speeddial ID on success or 0 if object constructed with errors
+ */
+ int getSpeedDialId() const;
+
+ /**
+ * @brief Gets normal or highlighted name
+ * @param[in] isHighlighted Should highlighted name be returned
+ * @return name of contact
+ *
+ * @remark This function returns reference to string,
+ * it should be used before object destruction
+ */
+ const std::string &getName(bool isHighlighted) const;
+
+ /**
+ * @brief Gets normal or highlighted number
+ * @param[in] isHighlighted Should highlighted number be returned
+ * @return number of contact
+ *
+ * @remark This function returns reference to string,
+ * it should be used before object destruction
+ */
+ const std::string &getNumber(bool isHighlighted) const;
+
+ /**
+ * @return highlighted text
+ *
+ * @remark This function returns reference to string,
+ * it should be used before object destruction
+ */
+ const std::string &getHighlightedText() const;
+
+ /**
+ * @brief Highlights match text
+ * @param[in] searchStr Search string
+ * @return true if text was highlighted
+ */
+ bool updateHighlightText(const std::string searchStr, size_t position);
+
+ private:
+ bool fillWithRecord(InfoType type, const contacts_record_h record);
+ void fillSpeedDial(const contacts_record_h record);
+ void fillLog(const contacts_record_h record);
+ void fillContact(InfoType type, const contacts_record_h record);
+
+ InfoType m_Type;
+ int m_Id;
+ int m_SpeedDialId;
+ std::string m_MaskedName;
+ std::string m_Name;
+ std::string m_Number;
+ std::string m_HighlightedText;
+ };
+ }
+}
+
+#endif //_PH_DIALER_SEARCH_INFO_H_
diff --git a/lib-phone/ph-dialer/res/edje/CMakeLists.txt b/lib-phone/ph-dialer/res/edje/CMakeLists.txt
new file mode 100644
index 0000000..aebb2a6
--- /dev/null
+++ b/lib-phone/ph-dialer/res/edje/CMakeLists.txt
@@ -0,0 +1,30 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+
+SET(PH_EDJ_PATH "${CMAKE_APP_RES_DIR}/edje/phone")
+
+ADD_CUSTOM_TARGET(ph-dialer-layout.edj
+ COMMAND edje_cc ${EDJE_CFLAGS}
+ -id ${CMAKE_CURRENT_SOURCE_DIR}/../images
+ ${CMAKE_CURRENT_SOURCE_DIR}/ph-dialer-layout.edc ph-dialer-layout.edj
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ph-dialer-layout.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} ph-dialer-layout.edj)
+INSTALL(FILES ph-dialer-layout.edj DESTINATION ${PH_EDJ_PATH})
+
+ADD_CUSTOM_TARGET(ph-dialer-keypad.edj
+ COMMAND edje_cc ${EDJE_CFLAGS}
+ -id ${CMAKE_CURRENT_SOURCE_DIR}/../images
+ ${CMAKE_CURRENT_SOURCE_DIR}/ph-dialer-keypad.edc ph-dialer-keypad.edj
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ph-dialer-keypad.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} ph-dialer-keypad.edj)
+INSTALL(FILES ph-dialer-keypad.edj DESTINATION ${PH_EDJ_PATH})
+
+ADD_CUSTOM_TARGET(ph-dialer-predictive.edj
+ COMMAND edje_cc ${EDJE_CFLAGS}
+ -id ${CMAKE_CURRENT_SOURCE_DIR}/../images
+ ${CMAKE_CURRENT_SOURCE_DIR}/ph-dialer-predictive.edc ph-dialer-predictive.edj
+ DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ph-dialer-predictive.edc
+)
+ADD_DEPENDENCIES(${PROJECT_NAME} ph-dialer-predictive.edj)
+INSTALL(FILES ph-dialer-predictive.edj DESTINATION ${PH_EDJ_PATH})
diff --git a/lib-phone/ph-dialer/res/edje/PhDialerLayout.h b/lib-phone/ph-dialer/res/edje/PhDialerLayout.h
new file mode 100644
index 0000000..de831f8
--- /dev/null
+++ b/lib-phone/ph-dialer/res/edje/PhDialerLayout.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_LAYOUT_H_
+#define _PH_DIALER_LAYOUT_H_
+
+#define GROUP_DIALER "dialer"
+#define PART_SWALLOW_ENTRY "swallow.entry"
+#define PART_SWALLOW_PREDICTIVE "swallow.predictive"
+#define PART_SWALLOW_KEYPAD "swallow.keypad"
+#define PART_SWALLOW_CALL "swallow.call"
+#define PART_SWALLOW_BACKSPACE "swallow.backspace"
+
+#define GROUP_PREDICTIVE_NO_RESULTS "predictive_noresults"
+#define PART_TEXT_ADD "text.add"
+
+#define GROUP_PREDICTIVE "predictive"
+#define PART_SWALLOW_THUMBNAIL "swallow.thumbnail"
+#define PART_SWALLOW_SPEEDDIAL "swallow.speeddial"
+#define PART_TEXT_NAME "text.name"
+#define PART_TEXT_NUMBER "text.number"
+#define PART_TEXT_1_LINE "text.1line"
+#define PART_SWALLOW_RESULTS "swallow.results"
+
+#define GROUP_SPEEDDIAL_NUMBER "speeddial_number"
+
+#define GROUP_PREDICTIVE_RES_COUNT "predictive_res_count"
+#define PART_TEXT_COUNT "text.count"
+#define PART_SWALLOW_ARROW "swallow.arrow"
+
+#define KEYPAD_NUMBER_1 "keypad_number_01"
+#define KEYPAD_NUMBER_2 "keypad_number_02"
+#define KEYPAD_NUMBER_3 "keypad_number_03"
+#define KEYPAD_NUMBER_4 "keypad_number_04"
+#define KEYPAD_NUMBER_5 "keypad_number_05"
+#define KEYPAD_NUMBER_6 "keypad_number_06"
+#define KEYPAD_NUMBER_7 "keypad_number_07"
+#define KEYPAD_NUMBER_8 "keypad_number_08"
+#define KEYPAD_NUMBER_9 "keypad_number_09"
+#define KEYPAD_NUMBER_ASTERISK "keypad_number_asterisk"
+#define KEYPAD_NUMBER_0 "keypad_number_00"
+#define KEYPAD_NUMBER_SHARP "keypad_number_sharp"
+
+#define KEYPAD_LETTERS_2 "keypad_english_01"
+#define KEYPAD_LETTERS_3 "keypad_english_02"
+#define KEYPAD_LETTERS_4 "keypad_english_03"
+#define KEYPAD_LETTERS_5 "keypad_english_04"
+#define KEYPAD_LETTERS_6 "keypad_english_05"
+#define KEYPAD_LETTERS_7 "keypad_english_06"
+#define KEYPAD_LETTERS_8 "keypad_english_07"
+#define KEYPAD_LETTERS_9 "keypad_english_08"
+#define KEYPAD_LETTERS_0 "keypad_english_10"
+
+#define BUTTON_CALL "keypad_ic_call"
+#define BUTTON_BACKSPACE "keypad_ic_back"
+
+#define PREDICTIVE_ADD "keypad_speed_dial_add"
+
+#define PREDICTIVE_RESULTS_MASK "predictive_results_mask"
+#define PREDICTIVE_ARROW "keypad_predictive_arrow"
+
+#define SPEEDDIAL_IC_BG "keypad_speed_dial_ic_bg.#"
+#define SPEEDDIAL_IC "keypad_speed_dial_ic"
+#define PART_TEXT_NUMBER "text.number"
+
+#define BUTTON_CALL_NORMAL 89, 176, 58, 255
+#define BUTTON_CALL_PRESSED 127, 184, 106, 255
+
+#endif /* _PH_DIALER_LAYOUT_H_ */
diff --git a/lib-phone/ph-dialer/res/edje/PhDialerLayoutColors.h b/lib-phone/ph-dialer/res/edje/PhDialerLayoutColors.h
new file mode 100644
index 0000000..161ba41
--- /dev/null
+++ b/lib-phone/ph-dialer/res/edje/PhDialerLayoutColors.h
@@ -0,0 +1,100 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_LAYOUT_COLORS_H_
+#define _PH_DIALER_LAYOUT_COLORS_H_
+
+color_classes {
+ color_class {//AO005
+ name: "keypad_bg_normal";
+ color: 255 255 255 255;
+ }
+ color_class {//AO005P
+ name: "keypad_bg_pressed";
+ color: 61 185 204 77;
+ }
+ color_class {//AO003
+ name: "button_number";
+ color: 0 0 0 217;
+ }
+ color_class {//AO003D
+ name: "button_number_pressed";
+ color: 0 0 0 77;
+ }
+ color_class {//AO004
+ name: "button_letter";
+ color: 51 51 51 205;
+ }
+ color_class {//AO004D
+ name: "button_letter_pressed";
+ color: 51 51 51 64;
+ }
+ color_class {//AO002
+ name: "action_button_normal";
+ color: 90 176 58 255;
+ }
+ color_class {//AO002D
+ name: "action_button_pressed";
+ color: 120 84 97 255;
+ }
+ color_class {//AO008
+ name: "divider_bg";
+ color: 217 217 217 255;
+ }
+ color_class {//AO006
+ name: "predictive_bg";
+ color: 255 255 255 26;
+ }
+ color_class {
+ name: "predictive_bg_pressed";
+ color: 0 0 0 26;
+ }
+ color_class {//A03O003L1
+ name: "predictive_icon";
+ color: 61 185 204 128;
+ }
+ color_class {//A03O003
+ name: "predictive_icon_bg";
+ color: 255 255 255 255;
+ }
+ color_class {//AO001
+ name: "action_panel_bg";
+ color: 255 255 255 255;
+ }
+ color_class {//AO014
+ name: "action_button_icon_normal";
+ color: 255 255 255 255;
+ }
+ color_class {
+ name: "back_button_icon_normal";
+ color: 180 180 180 255;
+ }
+ color_class {//AO014D
+ name: "action_button_icon_pressed";
+ color: 255 255 255 128;
+ }
+ color_class {
+ name: "transparent_bg";
+ color: 0 0 0 0;
+ }
+ color_class {//AO027
+ name: "speeddial_ic_bg";
+ color: 250 250 250 102;
+ }
+}
+
+#endif /* _PH_DIALER_LAYOUT_COLORS_H_ */
diff --git a/lib-phone/ph-dialer/res/edje/PhDialerLayoutMetrics.h b/lib-phone/ph-dialer/res/edje/PhDialerLayoutMetrics.h
new file mode 100644
index 0000000..b3e9988
--- /dev/null
+++ b/lib-phone/ph-dialer/res/edje/PhDialerLayoutMetrics.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#ifndef _PH_DIALER_LAYOUT_METRICS_H_
+#define _PH_DIALER_LAYOUT_METRICS_H_
+
+#define TOTAL_W 720
+#define TOTAL_H 1120
+
+#define ENTRY_H 296
+#define PREDICTIVE_H 144
+#define KEYPAD_H 528
+#define ACTION_PANEL_H 152
+
+#define BUTTON_NUMBER_W 238
+#define BUTTON_NUMBER_H 130
+#define DIVIDER_SIZE 2
+
+#define BUTTON_PART_W 108
+#define BUTTON_PART_NUMBER_H 71
+#define BUTTON_PART_LETTERS_H 36
+
+#define OFFSET_BUTTON_PART_X 65
+#define OFFSET_BUTTON_PART_Y 12
+
+#define ACTION_BUTTONS_H 152
+
+#define BUTTON_CALL_SIZE 104
+#define BUTTON_CALL_X ((TOTAL_W - BUTTON_CALL_SIZE) / 2)
+#define BUTTON_CALL_Y ((ACTION_BUTTONS_H - BUTTON_CALL_SIZE) / 2)
+
+#define BUTTON_BACKSPACE_SIZE 90
+#define BUTTON_BACKSPACE_X 82
+#define BUTTON_BACKSPACE_Y ((ACTION_BUTTONS_H - BUTTON_BACKSPACE_SIZE) / 2)
+
+#define PREDICTIVE_PICTURE_BG_W 162
+#define PREDICTIVE_PICTURE_SIZE 98
+#define PREDICTIVE_MAIN_TEXT_H 57
+#define PREDICTIVE_SUB_TEXT_H 45
+#define PREDICTIVE_TEXT_W 446
+#define PREDICTIVE_PARTS_H 48
+#define PREDICTIVE_PARTS_W 48
+#define PREDICTIVE_RESULTS_BG_W 112
+#define PREDICTIVE_ADD_SIZE 80
+
+#define OFFSET_PREDICTIVE_Y 24
+#define OFFSET_PREDICTIVE_TEXT_Y ((PREDICTIVE_H - PREDICTIVE_MAIN_TEXT_H - PREDICTIVE_SUB_TEXT_H) / 2)
+#define OFFSET_PREDICTIVE_1_LINE_TEXT_Y ((PREDICTIVE_H - PREDICTIVE_MAIN_TEXT_H) / 2)
+#define SPACER_PREDICTIVE_Y 1
+#define SPACER_PREDICTIVE_X 32
+#define OFFSET_PREDICTIVE_ADD 32
+
+#define SPEEDDIAL_AREA_W 76
+#define SPEEDDIAL_AREA_H 45
+#define SPEEDDIAL_IC_SIZE 28
+#define SPEEDIAL_TEXT_W 18
+
+#define SPEEDDIAL_SPACER 12
+#define OFFSET_INNER_SPEEDDIAL_AREA_H ((SPEEDDIAL_AREA_W - SPEEDDIAL_IC_SIZE - SPEEDIAL_TEXT_W) / 2)
+#define OFFSET_T_SPEEDDIAL_IC 9
+#define OFFSET_B_SPEEDDIAL_IC 8
+
+
+#endif /* _PH_DIALER_LAYOUT_METRICS_H_ */
diff --git a/lib-phone/ph-dialer/res/edje/ph-dialer-keypad.edc b/lib-phone/ph-dialer/res/edje/ph-dialer-keypad.edc
new file mode 100644
index 0000000..0882b6a
--- /dev/null
+++ b/lib-phone/ph-dialer/res/edje/ph-dialer-keypad.edc
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerLayout.h"
+#include "PhDialerLayoutMetrics.h"
+#include "PhDialerLayoutColors.h"
+
+#define PART_BG \
+ part { \
+ name: "bg"; \
+ type: RECT; \
+ description { \
+ state: "default" 0.0; \
+ color_class: "keypad_bg_normal"; \
+ } \
+ description { \
+ state: "pressed" 0.0; \
+ color_class: "keypad_bg_pressed"; \
+ } \
+ }
+
+#define PART_NUMBER(number_name) \
+ part { \
+ name: "image.number"; \
+ type: IMAGE; \
+ description { \
+ state: "default" 0.0; \
+ aspect: 0.0 1.0; \
+ aspect_preference: SOURCE; \
+ color_class: "button_number"; \
+ rel1 { relative: (OFFSET_BUTTON_PART_X / BUTTON_NUMBER_W) (OFFSET_BUTTON_PART_Y / BUTTON_NUMBER_H); } \
+ rel2 { relative: ((OFFSET_BUTTON_PART_X + BUTTON_PART_W) / BUTTON_NUMBER_W) ((OFFSET_BUTTON_PART_Y + BUTTON_PART_NUMBER_H) / BUTTON_NUMBER_H); } \
+ image.normal: number_name".png"; \
+ } \
+ description { \
+ inherit: "default" 0.0; \
+ state: "pressed" 0.0; \
+ color_class: "button_number_pressed"; \
+ } \
+ }
+
+#define PART_LETTERS(letter_name) \
+ part { \
+ name: "image.letters"; \
+ type: IMAGE; \
+ description { \
+ state: "default" 0.0; \
+ aspect: 1.0 1.0; \
+ aspect_preference: SOURCE; \
+ color_class: "button_letter"; \
+ rel1 { relative: (OFFSET_BUTTON_PART_X / BUTTON_NUMBER_W) ((OFFSET_BUTTON_PART_Y + BUTTON_PART_NUMBER_H) / BUTTON_NUMBER_H); } \
+ rel2 { relative: ((OFFSET_BUTTON_PART_X + BUTTON_PART_W) / BUTTON_NUMBER_W) ((OFFSET_BUTTON_PART_Y + BUTTON_PART_NUMBER_H + BUTTON_PART_LETTERS_H) / BUTTON_NUMBER_H); } \
+ image.normal: letter_name".png"; \
+ } \
+ description { \
+ inherit: "default" 0.0; \
+ state: "pressed" 0.0; \
+ color_class: "button_letter_pressed"; \
+ } \
+ }
+
+#define PROGRAMS \
+ programs { \
+ program { \
+ name: "pressed"; \
+ signal: "mouse,down,*"; \
+ source: "*"; \
+ action: STATE_SET "pressed" 0.0; \
+ target: "bg"; \
+ } \
+ program { \
+ name: "unpressed"; \
+ signal: "mouse,up,*"; \
+ source: "*"; \
+ action: STATE_SET "default" 0.0; \
+ target: "bg"; \
+ } \
+ }
+
+#define KEYPAD_BUTTON_WITH_LETTERS(number_name, letter_name) \
+ group { \
+ name: number_name; \
+ parts { \
+ PART_BG \
+ PART_NUMBER(number_name) \
+ PART_LETTERS(letter_name) \
+ } \
+ PROGRAMS \
+ }
+
+#define KEYPAD_BUTTON_WITHOUT_LETTERS(number_name) \
+ group { \
+ name: number_name; \
+ parts { \
+ PART_BG \
+ PART_NUMBER(number_name) \
+ } \
+ PROGRAMS \
+ }
+
+images {
+ image: KEYPAD_NUMBER_1".png" COMP;
+ image: KEYPAD_NUMBER_2".png" COMP;
+ image: KEYPAD_NUMBER_3".png" COMP;
+ image: KEYPAD_NUMBER_4".png" COMP;
+ image: KEYPAD_NUMBER_5".png" COMP;
+ image: KEYPAD_NUMBER_6".png" COMP;
+ image: KEYPAD_NUMBER_7".png" COMP;
+ image: KEYPAD_NUMBER_8".png" COMP;
+ image: KEYPAD_NUMBER_9".png" COMP;
+ image: KEYPAD_NUMBER_ASTERISK".png" COMP;
+ image: KEYPAD_NUMBER_0".png" COMP;
+ image: KEYPAD_NUMBER_SHARP".png" COMP;
+
+ image: KEYPAD_LETTERS_2".png" COMP;
+ image: KEYPAD_LETTERS_3".png" COMP;
+ image: KEYPAD_LETTERS_4".png" COMP;
+ image: KEYPAD_LETTERS_5".png" COMP;
+ image: KEYPAD_LETTERS_6".png" COMP;
+ image: KEYPAD_LETTERS_7".png" COMP;
+ image: KEYPAD_LETTERS_8".png" COMP;
+ image: KEYPAD_LETTERS_9".png" COMP;
+ image: KEYPAD_LETTERS_0".png" COMP;
+}
+
+collections {
+ KEYPAD_BUTTON_WITHOUT_LETTERS(KEYPAD_NUMBER_1);
+ KEYPAD_BUTTON_WITH_LETTERS(KEYPAD_NUMBER_2, KEYPAD_LETTERS_2);
+ KEYPAD_BUTTON_WITH_LETTERS(KEYPAD_NUMBER_3, KEYPAD_LETTERS_3);
+ KEYPAD_BUTTON_WITH_LETTERS(KEYPAD_NUMBER_4, KEYPAD_LETTERS_4);
+ KEYPAD_BUTTON_WITH_LETTERS(KEYPAD_NUMBER_5, KEYPAD_LETTERS_5);
+ KEYPAD_BUTTON_WITH_LETTERS(KEYPAD_NUMBER_6, KEYPAD_LETTERS_6);
+ KEYPAD_BUTTON_WITH_LETTERS(KEYPAD_NUMBER_7, KEYPAD_LETTERS_7);
+ KEYPAD_BUTTON_WITH_LETTERS(KEYPAD_NUMBER_8, KEYPAD_LETTERS_8);
+ KEYPAD_BUTTON_WITH_LETTERS(KEYPAD_NUMBER_9, KEYPAD_LETTERS_9);
+ KEYPAD_BUTTON_WITHOUT_LETTERS(KEYPAD_NUMBER_ASTERISK);
+ KEYPAD_BUTTON_WITH_LETTERS(KEYPAD_NUMBER_0, KEYPAD_LETTERS_0);
+ KEYPAD_BUTTON_WITHOUT_LETTERS(KEYPAD_NUMBER_SHARP);
+} \ No newline at end of file
diff --git a/lib-phone/ph-dialer/res/edje/ph-dialer-layout.edc b/lib-phone/ph-dialer/res/edje/ph-dialer-layout.edc
new file mode 100644
index 0000000..b9f381b
--- /dev/null
+++ b/lib-phone/ph-dialer/res/edje/ph-dialer-layout.edc
@@ -0,0 +1,118 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerLayout.h"
+#include "PhDialerLayoutMetrics.h"
+#include "../../../../lib-common/res/edje/Utils.h"
+#include "PhDialerLayoutColors.h"
+
+
+collections {
+ base_scale: 2.6;
+
+ group {
+ name: GROUP_DIALER;
+
+ parts {
+ part {
+ name: PART_SWALLOW_ENTRY;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; }
+ rel2 { relative: 1.0 (ENTRY_H / TOTAL_H); }
+ }
+ }
+ part {
+ name: PART_SWALLOW_PREDICTIVE;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ fixed: 1 1;
+ rel1 { relative: 0.0 ((ENTRY_H + 1) / TOTAL_H); }
+ rel2 { relative: 1.0 ((ENTRY_H + PREDICTIVE_H) / TOTAL_H); }
+ }
+ }
+ part {
+ name: "keypad_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color_class: "divider_bg";
+ rel1 { relative: 0.0 ((ENTRY_H + PREDICTIVE_H + 1) / TOTAL_H); }
+ rel2 { relative: 1.0 ((ENTRY_H + PREDICTIVE_H + KEYPAD_H - DIVIDER_SIZE) / TOTAL_H); }
+ }
+ }
+ part {
+ name: PART_SWALLOW_KEYPAD;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.0 0.0; to: "keypad_bg"; }
+ rel2 { relative: 1.0 1.0; to: "keypad_bg"; }
+ }
+ }
+ part {
+ name: "divider";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color_class: "divider_bg";
+ rel1 { relative: 0.0 1.0; to: "keypad_bg"; }
+ rel2 { relative: 1.0 ((ENTRY_H + PREDICTIVE_H + KEYPAD_H) / TOTAL_H); }
+ }
+ }
+ part {
+ name: "action_panel_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color_class: "action_panel_bg";
+ rel1 { relative: 0.0 1.0; to: "divider"; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ part {
+ name: PART_SWALLOW_CALL;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ aspect: 1.0 1.0;
+ aspect_preference: SOURCE;
+ fixed: 1 1;
+ rel1 { relative: (BUTTON_CALL_X / TOTAL_W) (BUTTON_CALL_Y / ACTION_PANEL_H); to: "action_panel_bg"; }
+ rel2 { relative: (1.0 - (BUTTON_CALL_X / TOTAL_W)) (1.0 - (BUTTON_CALL_Y / ACTION_PANEL_H)); to: "action_panel_bg"; }
+ }
+ }
+ part {
+ name: PART_SWALLOW_BACKSPACE;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ aspect: 1.0 1.0;
+ aspect_preference: SOURCE;
+ fixed: 1 1;
+ rel1 { relative: (1.0 - ((BUTTON_BACKSPACE_X + BUTTON_BACKSPACE_SIZE) / TOTAL_W)) (BUTTON_BACKSPACE_Y / ACTION_PANEL_H); to: "action_panel_bg"; }
+ rel2 { relative: (1.0 - (BUTTON_BACKSPACE_X / TOTAL_W)) (1.0 - (BUTTON_BACKSPACE_Y / ACTION_PANEL_H)); to: "action_panel_bg"; }
+ }
+ }
+ }
+ }
+
+ RESOURCE_IMAGE_WITH_COLOR_CODE(BUTTON_CALL, "action_button_icon_normal");
+ RESOURCE_IMAGE_WITH_COLOR_CODE(BUTTON_BACKSPACE, "back_button_icon_normal");
+}
diff --git a/lib-phone/ph-dialer/res/edje/ph-dialer-predictive.edc b/lib-phone/ph-dialer/res/edje/ph-dialer-predictive.edc
new file mode 100644
index 0000000..7ff0bb9
--- /dev/null
+++ b/lib-phone/ph-dialer/res/edje/ph-dialer-predictive.edc
@@ -0,0 +1,388 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerLayout.h"
+#include "PhDialerLayoutMetrics.h"
+#include "PhDialerLayoutColors.h"
+
+images {
+ image: PREDICTIVE_ADD".png" COMP;
+ image: PREDICTIVE_ARROW".png" COMP;
+ image: SPEEDDIAL_IC_BG".png" COMP;
+ image: SPEEDDIAL_IC".png" COMP;
+}
+
+styles {
+ style {
+ name: "add_to_contacts_style";
+ base: "font=Tizen:style=Light font_size=46 color=#FAFAFA ellipsis=1.0";
+ }
+ style {
+ name: "highlight_style";
+ base: "font=Tizen:style=Light font_size=40 color=#FAFAFA ellipsis=1.0";
+ tag: "match" "+color=#86EDFC";
+ }
+ style {
+ name: "small_highlight_style";
+ base: "font=Tizen:style=Light font_size=32 color=#FAFAFA ellipsis=1.0";
+ tag: "match" "+color=#86EDFC";
+ }
+ style {
+ name: "count_style";
+ base: "font=Tizen:style=Regular font_size=36 align=center color=#FAFAFA ellipsis=1.0";
+ }
+ style {
+ name: "predictive_speeddial_style";
+ base: "font=Tizen:style=Regular font_size=32 color=#FFFAFA";
+ }
+
+}
+
+collections {
+ base_scale: 2.6;
+ group {
+ name: GROUP_PREDICTIVE_NO_RESULTS;
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color_class: "predictive_bg";
+ }
+ }
+ part {
+ name: PART_TEXT_ADD;
+ type: TEXTBLOCK;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ text {
+ align: 0.1 0.5;
+ style: "add_to_contacts_style";
+ }
+ rel1 { relative: ((OFFSET_PREDICTIVE_ADD + 1) / TOTAL_W) ((OFFSET_PREDICTIVE_ADD + 1) / PREDICTIVE_H); }
+ rel2 { relative: ((TOTAL_W - PREDICTIVE_H) / TOTAL_W) ((OFFSET_PREDICTIVE_ADD + PREDICTIVE_ADD_SIZE) / PREDICTIVE_H); to_x: "add_bg"; }
+ }
+ }
+ part {
+ name: "add_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color_class: "transparent_bg";
+ rel1 { relative: ((TOTAL_W - PREDICTIVE_H + 1) / TOTAL_W) 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ part {
+ name: "image.add";
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ aspect: 1.0 1.0;
+ aspect_preference: SOURCE;
+ image.normal: PREDICTIVE_ADD".png";
+ rel1 { relative: ((OFFSET_PREDICTIVE_ADD + 1) / PREDICTIVE_H) ((OFFSET_PREDICTIVE_ADD + 1) / PREDICTIVE_H); to:"add_bg"; }
+ rel2 { relative: ((OFFSET_PREDICTIVE_ADD + PREDICTIVE_ADD_SIZE) / PREDICTIVE_H) ((OFFSET_PREDICTIVE_ADD + PREDICTIVE_ADD_SIZE) / PREDICTIVE_H); to:"add_bg"; }
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color_class: "predictive_icon";
+ }
+ }
+ }
+
+ programs {
+ program {
+ name: "pressed";
+ signal: "mouse,down,*";
+ source: "*";
+ action: STATE_SET "pressed" 0.0;
+ target: "image.add";
+ }
+ program {
+ name: "unpressed";
+ signal: "mouse,up,*";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "image.add";
+ }
+ }
+ }
+
+ group {
+ name: GROUP_PREDICTIVE;
+ parts {
+ part {
+ name: "bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color_class: "predictive_bg";
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color_class: "predictive_bg_pressed";
+ }
+ }
+ part {
+ name: "thumbnail_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color_class: "transparent_bg";
+ rel2 { relative: (PREDICTIVE_PICTURE_BG_W / TOTAL_W) 1.0; }
+ }
+ }
+ part {
+ name: PART_SWALLOW_THUMBNAIL;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: ((SPACER_PREDICTIVE_X + 1) / PREDICTIVE_PICTURE_BG_W) ((OFFSET_PREDICTIVE_Y + 1) / PREDICTIVE_H); to: "thumbnail_bg"; }
+ rel2 { relative: ((SPACER_PREDICTIVE_X + PREDICTIVE_PICTURE_SIZE) / PREDICTIVE_PICTURE_BG_W) ((OFFSET_PREDICTIVE_Y + PREDICTIVE_PICTURE_SIZE) / PREDICTIVE_H); to: "thumbnail_bg"; }
+ }
+ }
+ part {
+ name: PART_SWALLOW_SPEEDDIAL;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ visible: 0;
+ rel1 { relative: 1.0 ((OFFSET_PREDICTIVE_TEXT_Y + 1) / PREDICTIVE_H); to_x: "thumbnail_bg"; }
+ rel2 { relative: ((PREDICTIVE_PICTURE_BG_W + SPEEDDIAL_AREA_W) / TOTAL_W) ((OFFSET_PREDICTIVE_TEXT_Y + PREDICTIVE_MAIN_TEXT_H) / PREDICTIVE_H); }
+ }
+ description {
+ state: "speeddial" 0.0;
+ inherit: "default" 0.0;
+ visible: 1;
+ }
+ }
+ part {
+ name: PART_TEXT_NAME;
+ type: TEXTBLOCK;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ text {
+ align: 0.0 0.5;
+ style: "highlight_style";
+ }
+ rel1 { relative: 1.0 ((OFFSET_PREDICTIVE_TEXT_Y + 1) / PREDICTIVE_H); to_x: "thumbnail_bg"; }
+ rel2 { relative: 0.0 ((OFFSET_PREDICTIVE_TEXT_Y + PREDICTIVE_MAIN_TEXT_H) / PREDICTIVE_H); to_x: "result_bg"; }
+ }
+ description {
+ state: "speeddial" 0.0;
+ inherit: "default" 0.0;
+ rel1 {
+ relative: ((PREDICTIVE_PICTURE_BG_W + SPEEDDIAL_AREA_W + SPEEDDIAL_SPACER) / TOTAL_W) ((OFFSET_PREDICTIVE_TEXT_Y + 1) / PREDICTIVE_H);
+ to_x: "";
+ }
+ rel2 {
+ relative: 0.0 ((OFFSET_PREDICTIVE_TEXT_Y + PREDICTIVE_MAIN_TEXT_H) / PREDICTIVE_H);
+ to_x: "result_bg";
+ }
+ }
+ }
+ part {
+ name: PART_TEXT_NUMBER;
+ type: TEXTBLOCK;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ text {
+ align: 0.0 0.5;
+ style: "small_highlight_style";
+ }
+ rel1 { relative: 1.0 ((OFFSET_PREDICTIVE_TEXT_Y + PREDICTIVE_MAIN_TEXT_H + 1) / PREDICTIVE_H); to_x: "thumbnail_bg"; }
+ rel2 { relative: 0.0 ((OFFSET_PREDICTIVE_TEXT_Y + PREDICTIVE_MAIN_TEXT_H + PREDICTIVE_SUB_TEXT_H) / PREDICTIVE_H); to_x: "result_bg"; }
+ }
+ }
+ part {
+ name: PART_TEXT_1_LINE;
+ type: TEXTBLOCK;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ text {
+ align: 0.0 0.5;
+ style: "highlight_style";
+ }
+ rel1 { relative: 1.0 ((OFFSET_PREDICTIVE_1_LINE_TEXT_Y + 1) / PREDICTIVE_H); to_x: "thumbnail_bg"; }
+ rel2 { relative: 0.0 ((OFFSET_PREDICTIVE_1_LINE_TEXT_Y + PREDICTIVE_MAIN_TEXT_H) / PREDICTIVE_H); to_x: "result_bg"; }
+ }
+ }
+ part {
+ name: "result_bg";
+ type: RECT;
+ description {
+ state: "default" 0.0;
+ color_class: "transparent_bg";
+ rel1 { relative: ((PREDICTIVE_PICTURE_BG_W + PREDICTIVE_TEXT_W + 1) / TOTAL_W) 0.0; }
+ rel2 { relative: 1.0 1.0; }
+ }
+ }
+ part {
+ name: PART_SWALLOW_RESULTS;
+ type: SWALLOW;
+ description {
+ state: "default" 0.0;
+ rel1.to: "result_bg";
+ rel2.to: "result_bg";
+ }
+ }
+ }
+ programs {
+ program {
+ name: "pressed";
+ signal: "mouse,down,*";
+ source: "*";
+ action: STATE_SET "pressed" 0.0;
+ target: "bg";
+ }
+ program {
+ name: "unpressed";
+ signal: "mouse,up,*";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: "bg";
+ }
+ program {
+ name: "show_speeddial_icon";
+ signal: "show,speeddial,icon";
+ action: STATE_SET "speeddial" 0.0;
+ target: PART_SWALLOW_SPEEDDIAL;
+ target: PART_TEXT_NAME;
+ }
+ program {
+ name: "hide_speeddial_icon";
+ signal: "hide,speeddial,icon";
+ action: STATE_SET "default" 0.0;
+ target: PART_SWALLOW_SPEEDDIAL;
+ target: PART_TEXT_NAME;
+ }
+ }
+ }
+
+ group {
+ name: GROUP_SPEEDDIAL_NUMBER;
+ parts {
+ part {
+ name: "bg";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ image.normal: SPEEDDIAL_IC_BG".png";
+ color_class: "speeddial_ic_bg";
+ }
+ }
+ part {
+ name: "swallow.icon";
+ type: IMAGE;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1.relative: (OFFSET_INNER_SPEEDDIAL_AREA_H / SPEEDDIAL_AREA_W) (OFFSET_T_SPEEDDIAL_IC / SPEEDDIAL_AREA_H);
+ rel2.relative: ((OFFSET_INNER_SPEEDDIAL_AREA_H + SPEEDDIAL_IC_SIZE) / SPEEDDIAL_AREA_W) ((OFFSET_T_SPEEDDIAL_IC + SPEEDDIAL_IC_SIZE) / SPEEDDIAL_AREA_H);
+ image.normal: SPEEDDIAL_IC".png";
+ }
+ }
+ part {
+ name: PART_TEXT_NUMBER;
+ type: TEXTBLOCK;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ rel1 {
+ relative: 1.0 0.0;
+ to_x: "swallow.icon";
+ }
+ rel2.relative: 1.0 1.0;
+ text {
+ align: 0.0 0.5;
+ style: "predictive_speeddial_style";
+ }
+ }
+ }
+ }
+ }
+
+ group {
+ name: GROUP_PREDICTIVE_RES_COUNT;
+ parts {
+ part {
+ name: "bg";
+ type: "RECT";
+ description {
+ state: "default" 0.0;
+ color_class: "transparent_bg";
+ }
+ }
+ part {
+ name: PART_TEXT_COUNT;
+ type: TEXTBLOCK;
+ scale: 1;
+ description {
+ state: "default" 0.0;
+ text {
+ align: 0.5 0.0;
+ style: "count_style";
+ }
+ rel1 { relative: 0.0 ((OFFSET_PREDICTIVE_Y + 1) / PREDICTIVE_H); }
+ rel2 { relative: 1.0 ((OFFSET_PREDICTIVE_Y + PREDICTIVE_PARTS_H) / PREDICTIVE_H); }
+ }
+ }
+ part {
+ name: PART_SWALLOW_ARROW;
+ type: IMAGE;
+ description {
+ state: "default" 0.0;
+ aspect: 1.0 1.0;
+ aspect_preference: SOURCE;
+ rel1 { relative: ((SPACER_PREDICTIVE_X + 1) / PREDICTIVE_RESULTS_BG_W) ((OFFSET_PREDICTIVE_Y + PREDICTIVE_PARTS_H + SPACER_PREDICTIVE_Y + 1) / PREDICTIVE_H); }
+ rel2 { relative: ((SPACER_PREDICTIVE_X + PREDICTIVE_PARTS_W) / PREDICTIVE_RESULTS_BG_W) ((OFFSET_PREDICTIVE_Y + 2 * PREDICTIVE_PARTS_H + SPACER_PREDICTIVE_Y) / PREDICTIVE_H); }
+ image.normal: PREDICTIVE_ARROW".png";
+ }
+ description {
+ state: "pressed" 0.0;
+ inherit: "default" 0.0;
+ color_class: "predictive_icon";
+ }
+ }
+ }
+ programs {
+ program {
+ name: "pressed";
+ signal: "mouse,down,*";
+ source: "*";
+ action: STATE_SET "pressed" 0.0;
+ target: PART_SWALLOW_ARROW;
+ }
+ program {
+ name: "unpressed";
+ signal: "mouse,up,*";
+ source: "*";
+ action: STATE_SET "default" 0.0;
+ target: PART_SWALLOW_ARROW;
+ }
+ }
+ }
+}
diff --git a/lib-phone/ph-dialer/res/images/contacts_caller_id_default_02.png b/lib-phone/ph-dialer/res/images/contacts_caller_id_default_02.png
new file mode 100644
index 0000000..9715b8b
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/contacts_caller_id_default_02.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/contacts_caller_id_default_bg_02.png b/lib-phone/ph-dialer/res/images/contacts_caller_id_default_bg_02.png
new file mode 100644
index 0000000..6c51cac
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/contacts_caller_id_default_bg_02.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/contacts_caller_id_default_masking_02.png b/lib-phone/ph-dialer/res/images/contacts_caller_id_default_masking_02.png
new file mode 100644
index 0000000..37787dd
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/contacts_caller_id_default_masking_02.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/default_contact.png b/lib-phone/ph-dialer/res/images/default_contact.png
new file mode 100755
index 0000000..c63d7f0
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/default_contact.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_english_01.png b/lib-phone/ph-dialer/res/images/keypad_english_01.png
new file mode 100644
index 0000000..309dd86
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_english_01.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_english_02.png b/lib-phone/ph-dialer/res/images/keypad_english_02.png
new file mode 100644
index 0000000..2fa7a0b
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_english_02.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_english_03.png b/lib-phone/ph-dialer/res/images/keypad_english_03.png
new file mode 100644
index 0000000..98f7ad1
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_english_03.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_english_04.png b/lib-phone/ph-dialer/res/images/keypad_english_04.png
new file mode 100644
index 0000000..6b6a172
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_english_04.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_english_05.png b/lib-phone/ph-dialer/res/images/keypad_english_05.png
new file mode 100644
index 0000000..288854f
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_english_05.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_english_06.png b/lib-phone/ph-dialer/res/images/keypad_english_06.png
new file mode 100644
index 0000000..f346c46
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_english_06.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_english_07.png b/lib-phone/ph-dialer/res/images/keypad_english_07.png
new file mode 100644
index 0000000..e70e9a8
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_english_07.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_english_08.png b/lib-phone/ph-dialer/res/images/keypad_english_08.png
new file mode 100644
index 0000000..f4de8af
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_english_08.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_english_10.png b/lib-phone/ph-dialer/res/images/keypad_english_10.png
new file mode 100644
index 0000000..2072f56
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_english_10.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_ic_back.png b/lib-phone/ph-dialer/res/images/keypad_ic_back.png
new file mode 100644
index 0000000..2f08d97
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_ic_back.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_ic_call.png b/lib-phone/ph-dialer/res/images/keypad_ic_call.png
new file mode 100644
index 0000000..526483c
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_ic_call.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_00.png b/lib-phone/ph-dialer/res/images/keypad_number_00.png
new file mode 100644
index 0000000..255c897
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_00.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_01.png b/lib-phone/ph-dialer/res/images/keypad_number_01.png
new file mode 100644
index 0000000..409bfb8
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_01.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_02.png b/lib-phone/ph-dialer/res/images/keypad_number_02.png
new file mode 100644
index 0000000..b12b92f
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_02.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_03.png b/lib-phone/ph-dialer/res/images/keypad_number_03.png
new file mode 100644
index 0000000..058876c
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_03.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_04.png b/lib-phone/ph-dialer/res/images/keypad_number_04.png
new file mode 100644
index 0000000..3906f18
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_04.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_05.png b/lib-phone/ph-dialer/res/images/keypad_number_05.png
new file mode 100644
index 0000000..a104591
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_05.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_06.png b/lib-phone/ph-dialer/res/images/keypad_number_06.png
new file mode 100644
index 0000000..4c0893b
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_06.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_07.png b/lib-phone/ph-dialer/res/images/keypad_number_07.png
new file mode 100644
index 0000000..e9eb6a0
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_07.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_08.png b/lib-phone/ph-dialer/res/images/keypad_number_08.png
new file mode 100644
index 0000000..f6bd01b
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_08.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_09.png b/lib-phone/ph-dialer/res/images/keypad_number_09.png
new file mode 100644
index 0000000..ede6db2
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_09.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_asterisk.png b/lib-phone/ph-dialer/res/images/keypad_number_asterisk.png
new file mode 100644
index 0000000..923ea88
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_asterisk.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_number_sharp.png b/lib-phone/ph-dialer/res/images/keypad_number_sharp.png
new file mode 100644
index 0000000..e0118d4
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_number_sharp.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_predictive_arrow.png b/lib-phone/ph-dialer/res/images/keypad_predictive_arrow.png
new file mode 100644
index 0000000..7617f4e
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_predictive_arrow.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_speed_dial_add.png b/lib-phone/ph-dialer/res/images/keypad_speed_dial_add.png
new file mode 100644
index 0000000..39c6a86
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_speed_dial_add.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_speed_dial_ic.png b/lib-phone/ph-dialer/res/images/keypad_speed_dial_ic.png
new file mode 100644
index 0000000..7297b95
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_speed_dial_ic.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/keypad_speed_dial_ic_bg.#.png b/lib-phone/ph-dialer/res/images/keypad_speed_dial_ic_bg.#.png
new file mode 100644
index 0000000..584f366
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/keypad_speed_dial_ic_bg.#.png
Binary files differ
diff --git a/lib-phone/ph-dialer/res/images/predictive_results_mask.png b/lib-phone/ph-dialer/res/images/predictive_results_mask.png
new file mode 100644
index 0000000..b247e5d
--- /dev/null
+++ b/lib-phone/ph-dialer/res/images/predictive_results_mask.png
Binary files differ
diff --git a/lib-phone/ph-dialer/src/PhDialerAddToContactsPopup.cpp b/lib-phone/ph-dialer/src/PhDialerAddToContactsPopup.cpp
new file mode 100644
index 0000000..4ed3e85
--- /dev/null
+++ b/lib-phone/ph-dialer/src/PhDialerAddToContactsPopup.cpp
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "ContactsAppControl.h"
+#include "PhDialerAddToContactsPopup.h"
+#include "PhStrings.h"
+#include "WDebugBase.h"
+
+#define STYLE_ITEM "type1"
+#define PART_MAIN_TEXT "elm.text"
+
+PhDialerAddToContactsPopup::PhDialerAddToContactsPopup(std::string number)
+ : m_Number(std::move(number))
+{}
+
+Evas_Object* PhDialerAddToContactsPopup::onCreate(Evas_Object *parent, void *param)
+{
+ setTitle(PAT_(PH_KPD_BUTTON_ADD_TO_CONTACTS_ABB2));
+ setContent(std::bind(&PhDialerAddToContactsPopup::createGenlist, this, std::placeholders::_1));
+
+ Evas_Object *popup = WPopup::onCreate(parent, param);
+ elm_popup_orient_set(popup, ELM_POPUP_ORIENT_CENTER);
+
+ return popup;
+}
+
+Evas_Object *PhDialerAddToContactsPopup::createGenlist(Evas_Object *parent)
+{
+ Evas_Object *genlist = elm_genlist_add(parent);
+ elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+ elm_genlist_mode_set( genlist, ELM_LIST_COMPRESS );
+ elm_scroller_content_min_limit( genlist, EINA_FALSE, EINA_TRUE );
+
+ Elm_Genlist_Item_Class *itc = createItemClass();
+
+ elm_genlist_item_append(genlist, itc, PAT_(PH_LOGS_BUTTON_CREATE_CONTACT_ABB),
+ NULL, ELM_GENLIST_ITEM_NONE, launchContactCreate, this);
+ elm_genlist_item_append(genlist, itc, PAT_(PH_LOGS_BUTTON_UPDATE_CONTACT_ABB2),
+ NULL, ELM_GENLIST_ITEM_NONE, launchContactUpdate, this);
+
+ elm_genlist_item_class_free(itc);
+ return genlist;
+}
+
+Elm_Genlist_Item_Class *PhDialerAddToContactsPopup::createItemClass()
+{
+ Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+ WPRET_VM(!itc, NULL, "elm_genlist_item_class_new() failed");
+ itc->item_style = STYLE_ITEM;
+ itc->func.text_get = getItemText;
+ return itc;
+}
+
+char *PhDialerAddToContactsPopup::getItemText(void *data, Evas_Object *obj, const char *part)
+{
+ WPRET_VM(!data, NULL, "data = NULL");
+ const char *text = (const char *)data;
+
+ if(!strcmp(part, PART_MAIN_TEXT)) {
+ return strdup(text);
+ }
+
+ return NULL;
+}
+
+void PhDialerAddToContactsPopup::launchContactCreate(void *data,
+ Evas_Object *obj, void *event_info)
+{
+ WPRET_M(!data, "data = NULL");
+ PhDialerAddToContactsPopup *popup = (PhDialerAddToContactsPopup*)data;
+
+ ::launchContactCreate(popup->m_Number.c_str());
+ popup->destroy();
+}
+
+void PhDialerAddToContactsPopup::launchContactUpdate(void *data,
+ Evas_Object *obj, void *event_info)
+{
+ WPRET_M(!data, "data = NULL");
+ PhDialerAddToContactsPopup *popup = (PhDialerAddToContactsPopup*)data;
+
+ ::launchContactEdit(0, popup->m_Number.c_str());
+ popup->destroy();
+}
diff --git a/lib-phone/ph-dialer/src/PhDialerEntry.cpp b/lib-phone/ph-dialer/src/PhDialerEntry.cpp
new file mode 100644
index 0000000..960bb27
--- /dev/null
+++ b/lib-phone/ph-dialer/src/PhDialerEntry.cpp
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerEntry.h"
+#include <Elementary.h>
+#include <efl_extension.h>
+
+std::string PhDialerEntry::getNumber()
+{
+ std::string number;
+
+ char *str = elm_entry_markup_to_utf8(elm_entry_entry_get(getEvasObj()));
+ if (str) {
+ number = str;
+ free(str);
+ }
+
+ return number;
+}
+
+void PhDialerEntry::setNumber(const std::string &number)
+{
+ elm_entry_entry_set(getEvasObj(), number.c_str());
+ elm_entry_cursor_line_end_set(getEvasObj());
+}
+
+void PhDialerEntry::insert(char c)
+{
+ char str[] = { c, '\0' };
+ elm_entry_entry_insert(getEvasObj(), str);
+}
+
+void PhDialerEntry::popBack()
+{
+ int pos = elm_entry_cursor_pos_get(getEvasObj());
+ if (pos > 0) {
+ elm_entry_select_region_set(getEvasObj(), pos - 1, pos);
+ elm_entry_entry_insert(getEvasObj(), "");
+ }
+}
+
+void PhDialerEntry::clear()
+{
+ elm_entry_entry_set(getEvasObj(), "");
+}
+
+void PhDialerEntry::setOnChanged(std::function<void(PhDialerEntry&)> callback)
+{
+ m_Changed = std::move(callback);
+}
+
+Evas_Object *PhDialerEntry::onCreate(Evas_Object *parent, void *param)
+{
+ Evas_Object *entry = elm_entry_add(parent);
+ elm_entry_single_line_set(entry, EINA_TRUE);
+ elm_entry_scrollable_set(entry, EINA_TRUE);
+ elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
+
+ static Elm_Entry_Filter_Accept_Set filter = { "+*#;,1234567890", NULL };
+ elm_entry_markup_filter_append(entry, elm_entry_filter_accept_set, &filter);
+ elm_entry_text_style_user_push(entry, "DEFAULT='font=Tizen:style=Light font_size=60 color=#fff align=center'");
+
+ eext_entry_selection_back_event_allow_set(entry, EINA_TRUE);
+ evas_object_smart_callback_add(entry, "changed",
+ &PhDialerEntry::onChanged, this);
+ return entry;
+}
+
+void PhDialerEntry::onChanged(void *data, Evas_Object *obj, void *event_info)
+{
+ PhDialerEntry *entry = (PhDialerEntry*) data;
+ if (entry->m_Changed) {
+ entry->m_Changed(*entry);
+ }
+}
diff --git a/lib-phone/ph-dialer/src/PhDialerKey.cpp b/lib-phone/ph-dialer/src/PhDialerKey.cpp
new file mode 100644
index 0000000..bf42fb9
--- /dev/null
+++ b/lib-phone/ph-dialer/src/PhDialerKey.cpp
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerKey.h"
+#include "ContactsCommon.h"
+#include "ContactsDebug.h"
+#include "PhDialerLayout.h"
+
+#include <Elementary.h>
+#include <feedback.h>
+
+#define DIALER_LAYOUT_EDJ "phone/ph-dialer-keypad.edj"
+
+namespace
+{
+ char values[] = {
+ '1',
+ '2',
+ '3',
+ '4',
+ '5',
+ '6',
+ '7',
+ '8',
+ '9',
+ '*',
+ '0',
+ '#',
+ };
+
+ const char *groups[] = {
+ KEYPAD_NUMBER_1,
+ KEYPAD_NUMBER_2,
+ KEYPAD_NUMBER_3,
+ KEYPAD_NUMBER_4,
+ KEYPAD_NUMBER_5,
+ KEYPAD_NUMBER_6,
+ KEYPAD_NUMBER_7,
+ KEYPAD_NUMBER_8,
+ KEYPAD_NUMBER_9,
+ KEYPAD_NUMBER_ASTERISK,
+ KEYPAD_NUMBER_0,
+ KEYPAD_NUMBER_SHARP
+ };
+
+ const feedback_pattern_e patterns[] = {
+ FEEDBACK_PATTERN_KEY1,
+ FEEDBACK_PATTERN_KEY2,
+ FEEDBACK_PATTERN_KEY3,
+ FEEDBACK_PATTERN_KEY4,
+ FEEDBACK_PATTERN_KEY5,
+ FEEDBACK_PATTERN_KEY6,
+ FEEDBACK_PATTERN_KEY7,
+ FEEDBACK_PATTERN_KEY8,
+ FEEDBACK_PATTERN_KEY9,
+ FEEDBACK_PATTERN_KEY_STAR,
+ FEEDBACK_PATTERN_KEY0,
+ FEEDBACK_PATTERN_KEY_SHARP
+ };
+}
+
+PhDialerKey::PhDialerKey(Id id)
+ : m_Id(id), m_Value(values[id]), m_Tone(0)
+{
+}
+
+Evas_Object *PhDialerKey::onCreate(Evas_Object *parent, void *param)
+{
+ static const std::string path = ContactsCommon::getAppEdjePath(DIALER_LAYOUT_EDJ);
+ Evas_Object *layout = elm_layout_add(parent);
+ Eina_Bool res = elm_layout_file_set(layout, path.c_str(), groups[m_Id]);
+ WPWARN(res != EINA_TRUE, "elm_layout_file_set() failed");
+
+ evas_object_event_callback_add(layout, EVAS_CALLBACK_MOUSE_DOWN,
+ &PhDialerKey::onMouseDown, this);
+
+ return layout;
+}
+
+char PhDialerKey::getValue() const
+{
+ return m_Value;
+}
+
+PhDialerKey::Id PhDialerKey::getId() const
+{
+ return m_Id;
+}
+
+void PhDialerKey::onMouseDown(void *data, Evas *e, Evas_Object *obj, void *event_info)
+{
+ PhDialerKey *key = (PhDialerKey*) data;
+ feedback_play(patterns[key->m_Id]);
+}
diff --git a/lib-phone/ph-dialer/src/PhDialerResultListPopup.cpp b/lib-phone/ph-dialer/src/PhDialerResultListPopup.cpp
new file mode 100644
index 0000000..f923c18
--- /dev/null
+++ b/lib-phone/ph-dialer/src/PhDialerResultListPopup.cpp
@@ -0,0 +1,126 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerResultListPopup.h"
+#include "PhDialerLayout.h"
+#include "PhDialerPredictiveNumberUtils.h"
+#include "PhStrings.h"
+#include "PhDialerEntry.h"
+#include "ContactsCommon.h"
+#include "ContactsDebug.h"
+
+#include <Elementary.h>
+
+#define PREDICTIVE_LAYOUT_EDJ "phone/ph-dialer-predictive.edj"
+
+#define STYLE_ITEM "type1"
+#define PART_MAIN_TEXT "elm.text"
+#define PART_SUB_TEXT "elm.text.sub"
+#define PART_CONTENT "elm.swallow.icon"
+
+using namespace Ph::Dialer;
+
+namespace
+{
+ const std::string layoutFilePath = ContactsCommon::getAppEdjePath(PREDICTIVE_LAYOUT_EDJ);
+}
+
+PhDialerResultListPopup::PhDialerResultListPopup(const Ph::Dialer::SearchList &result, PhDialerEntry &entry)
+ : m_Result(result), m_Entry(entry)
+{}
+
+Evas_Object* PhDialerResultListPopup::onCreate(Evas_Object *parent, void *param)
+{
+ const size_t bufferSize = 32;
+ char buffer[bufferSize];
+ snprintf(buffer, bufferSize, PAT_(PH_KPD_HEADER_SEARCH_RESULTS_HPD_ABB), m_Result.size());
+
+ setTitle(buffer);
+ setContent(std::bind(&PhDialerResultListPopup::createContactList, this, std::placeholders::_1));
+
+ Evas_Object *popup = WPopup::onCreate(parent, param);
+ elm_popup_align_set(popup, ELM_NOTIFY_ALIGN_FILL, 1.0);
+ elm_object_style_set(popup, "theme_bg");
+ elm_popup_orient_set(popup, ELM_POPUP_ORIENT_CENTER);
+
+ return popup;
+}
+
+Evas_Object* PhDialerResultListPopup::createContactList(Evas_Object *parent)
+{
+ Evas_Object *genlist = elm_genlist_add(parent);
+ elm_genlist_homogeneous_set(genlist, EINA_TRUE);
+ elm_genlist_mode_set( genlist, ELM_LIST_COMPRESS );
+
+ Elm_Genlist_Item_Class *itc = createItemClass();
+
+ for(auto &info : m_Result) {
+ elm_genlist_item_append(genlist, itc, info.get(), nullptr,
+ ELM_GENLIST_ITEM_NONE, onItemClicked, this);
+ }
+
+ elm_genlist_item_class_free(itc);
+ return genlist;
+}
+
+Elm_Genlist_Item_Class* PhDialerResultListPopup::createItemClass()
+{
+ Elm_Genlist_Item_Class *itc = elm_genlist_item_class_new();
+ WPRET_VM(!itc, NULL, "elm_genlist_item_class_new() failed");
+ itc->item_style = STYLE_ITEM;
+ itc->func.text_get = getItemText;
+ itc->func.content_get = [](void *data, Evas_Object *obj, const char *part) -> Evas_Object* {
+ const SearchInfo &info = *(SearchInfo*)data;
+
+ if(!strcmp(part, PART_CONTENT)) {
+ return Utils::createThumbnail(obj, info.getId());
+ }
+
+ return nullptr;
+ };
+
+ return itc;
+}
+
+char *PhDialerResultListPopup::getItemText(void *data, Evas_Object *obj, const char *part)
+{
+ const SearchInfo &info = *(SearchInfo*)data;
+ const std::string &name = info.getName(true);
+ const std::string &number = info.getNumber(true);
+
+ if(!strcmp(part, PART_MAIN_TEXT)) {
+ return strdup(name.empty() ? number.c_str() : name.c_str());
+ } else if(!strcmp(part, PART_SUB_TEXT)) {
+ if (!name.empty()) {
+ return strdup(number.c_str());
+ }
+ }
+
+ return nullptr;
+}
+
+void PhDialerResultListPopup::onItemClicked(void* data, Evas_Object* obj, void* event_info)
+{
+ elm_genlist_item_selected_set((Elm_Object_Item*)event_info, false);
+
+ const SearchInfo *info = (SearchInfo*)elm_object_item_data_get((Elm_Object_Item*)event_info);
+
+ PhDialerResultListPopup *self = (PhDialerResultListPopup*)data;
+ self->m_Entry.setNumber(info->getNumber(false));
+
+ self->destroy();
+}
diff --git a/lib-phone/ph-dialer/src/PhDialerSearchController.cpp b/lib-phone/ph-dialer/src/PhDialerSearchController.cpp
new file mode 100644
index 0000000..6ae90fd
--- /dev/null
+++ b/lib-phone/ph-dialer/src/PhDialerSearchController.cpp
@@ -0,0 +1,210 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerSearchController.h"
+#include "PhDialerAddToContactsPopup.h"
+#include "PhDialerResultListPopup.h"
+#include "PhDialerView.h"
+#include "PhDialerPredictiveNumber.h"
+#include "PhDialerPredictiveNumberUtils.h"
+#include "PhDialerLayout.h"
+#include "PhDialerEntry.h"
+#include "PhPath.h"
+#include "PhStrings.h"
+#include "ContactsDebug.h"
+
+#define PREDICTIVE_LAYOUT_EDJ "phone/ph-dialer-predictive.edj"
+
+using namespace Ph::Dialer;
+
+namespace
+{
+ const std::string layoutFilePath = ContactsCommon::getAppEdjePath(PREDICTIVE_LAYOUT_EDJ);
+}
+
+PhDialerSearchController::PhDialerSearchController()
+ : m_View(nullptr),
+ m_PredictiveNumber(new PredictiveNumber()),
+ m_CurrentLayoutType(LayoutType::NONE),
+ m_Layout(nullptr),
+ m_ResultLayout(nullptr)
+{
+ int err = CONTACTS_ERROR_NONE;
+ err = contacts_db_add_changed_cb(_contacts_contact._uri, &PhDialerSearchController::onDbChanged, this);
+ WPWARN(CONTACTS_ERROR_NONE != err,"contacts_db_add_changed_cb() Failed(%d)", err);
+}
+
+PhDialerSearchController::~PhDialerSearchController()
+{
+ int err = CONTACTS_ERROR_NONE;
+ err = contacts_db_remove_changed_cb(_contacts_contact._uri, &PhDialerSearchController::onDbChanged, this);
+ WPWARN(CONTACTS_ERROR_NONE != err,"contacts_db_add_changed_cb() Failed(%d)", err);
+}
+
+void PhDialerSearchController::create(PhDialerView &view)
+{
+ m_View = &view;
+ PhDialerEntry *entry = m_View->getEntry();
+
+ entry->setOnChanged(std::bind(&PhDialerSearchController::onEntryChanged, this, std::placeholders::_1));
+}
+
+void PhDialerSearchController::setLayout(const std::string &number)
+{
+ if(number.empty()) {
+ m_Layout = nullptr;
+ m_CurrentLayoutType = LayoutType::NONE;
+ m_View->setPredictiveLayout(nullptr);
+ } else {
+ if(m_PredictiveNumber->empty()) {
+ setNoContactsLayout();
+ } else {
+ const SearchList &result = *m_PredictiveNumber->getSearchResult();
+ setLayoutWithContacts(*result.front());
+ setResultLayout(m_Layout, result.size());
+ }
+ }
+}
+
+void PhDialerSearchController::onEntryChanged(PhDialerEntry &entry)
+{
+ std::string number(entry.getNumber());
+ m_PredictiveNumber->search(number);
+
+ setLayout(number);
+}
+
+void PhDialerSearchController::setNoContactsLayout()
+{
+ if(m_CurrentLayoutType == LayoutType::NO_CONTACTS) {
+ return;
+ }
+ m_CurrentLayoutType = LayoutType::NO_CONTACTS;
+
+ m_Layout = elm_layout_add(m_View->getEvasObj());
+ elm_layout_file_set(m_Layout, layoutFilePath.c_str(), GROUP_PREDICTIVE_NO_RESULTS);
+ elm_object_part_text_set(m_Layout, PART_TEXT_ADD, PH_KPD_BUTTON_ADD_TO_CONTACTS_ABB2);
+ elm_object_domain_part_text_translatable_set(m_Layout, PART_TEXT_ADD, STRING_PACKAGE, true);
+
+ evas_object_event_callback_add(m_Layout, EVAS_CALLBACK_MOUSE_UP, &createAddToContactsPopup, this);
+
+ m_View->setPredictiveLayout(m_Layout);
+}
+
+void PhDialerSearchController::setLayoutWithContacts(const Ph::Dialer::SearchInfo &info)
+{
+ if(m_CurrentLayoutType != LayoutType::ONE_CONTACT
+ && m_CurrentLayoutType != LayoutType::FEW_CONTACTS) {
+
+ m_CurrentLayoutType = LayoutType::ONE_CONTACT;
+
+ m_Layout = elm_layout_add(m_View->getEvasObj());
+ elm_layout_file_set(m_Layout, layoutFilePath.c_str(), GROUP_PREDICTIVE);
+
+ evas_object_event_callback_add(m_Layout, EVAS_CALLBACK_MOUSE_UP,
+ [](void *data, Evas *e, Evas_Object *obj, void *event_info) {
+ PhDialerSearchController *self = (PhDialerSearchController*)data;
+ const SearchList *result = self->m_PredictiveNumber->getSearchResult();
+ if (result) {
+ SearchInfo &info = *result->front();
+ self->m_View->getEntry()->setNumber(info.getNumber(false));
+ }
+ },
+ this);
+
+ m_View->setPredictiveLayout(m_Layout);
+ }
+
+ if(info.getType() == IT_SPEED_DIAL) {
+ createSpeeddialLayout(m_Layout, info);
+ elm_object_signal_emit(m_Layout, "show,speeddial,icon", "");
+ } else {
+ elm_object_signal_emit(m_Layout, "hide,speeddial,icon", "");
+ }
+
+ fillPredictiveLayout(m_Layout, info);
+}
+
+void PhDialerSearchController::setResultLayout(Evas_Object *parent, size_t count)
+{
+ if(count > 1) {
+ if(m_CurrentLayoutType != LayoutType::FEW_CONTACTS) {
+ m_CurrentLayoutType = LayoutType::FEW_CONTACTS;
+
+ m_ResultLayout = elm_layout_add(parent);
+ elm_layout_file_set(m_ResultLayout, layoutFilePath.c_str(), GROUP_PREDICTIVE_RES_COUNT);
+
+ evas_object_event_callback_add(m_ResultLayout, EVAS_CALLBACK_MOUSE_UP, &showResulListPopup, this);
+ evas_object_propagate_events_set(m_ResultLayout, EINA_FALSE);
+ }
+
+ elm_object_part_text_set(m_ResultLayout, PART_TEXT_COUNT, std::to_string(count).c_str());
+ } else {
+ m_ResultLayout = nullptr;
+ m_CurrentLayoutType = LayoutType::ONE_CONTACT;
+ }
+ elm_object_part_content_set(parent, PART_SWALLOW_RESULTS, m_ResultLayout);
+}
+
+void PhDialerSearchController::createSpeeddialLayout(Evas_Object *parent, const Ph::Dialer::SearchInfo &info)
+{
+ Evas_Object *speeddialLayout = elm_layout_add(parent);
+ elm_layout_file_set(speeddialLayout, layoutFilePath.c_str(), GROUP_SPEEDDIAL_NUMBER);
+ elm_object_part_text_set(speeddialLayout, PART_TEXT_NUMBER, info.getSearchString().c_str());
+
+ elm_object_part_content_set(parent, PART_SWALLOW_SPEEDDIAL, speeddialLayout);
+}
+
+void PhDialerSearchController::fillPredictiveLayout(Evas_Object *layout, const Ph::Dialer::SearchInfo &info)
+{
+ elm_object_part_content_set(layout, PART_SWALLOW_THUMBNAIL,
+ Utils::createThumbnail(layout, info.getId()));
+
+ if(info.getName(false).empty()) {
+ elm_object_part_text_set(layout, PART_TEXT_1_LINE, info.getNumber(true).c_str());
+ elm_object_part_text_set(layout, PART_TEXT_NAME, "");
+ elm_object_part_text_set(layout, PART_TEXT_NUMBER, "");
+ } else {
+ elm_object_part_text_set(layout, PART_TEXT_1_LINE, "");
+ elm_object_part_text_set(layout, PART_TEXT_NAME, info.getName(true).c_str());
+ elm_object_part_text_set(layout, PART_TEXT_NUMBER, info.getNumber(true).c_str());
+ }
+}
+
+void PhDialerSearchController::showResulListPopup(void* data, Evas* e,
+ Evas_Object* obj, void* event_info)
+{
+ PhDialerSearchController *searchController = (PhDialerSearchController*)data;
+ searchController->m_View->attachPopup(
+ new PhDialerResultListPopup(*searchController->m_PredictiveNumber->getSearchResult(), *searchController->m_View->getEntry()));
+}
+
+void PhDialerSearchController::createAddToContactsPopup(void* data, Evas* e,
+ Evas_Object* obj, void* event_info)
+{
+ WPRET_M(!data, "data = NULL");
+ PhDialerSearchController *searchController = (PhDialerSearchController*)data;
+ searchController->m_View->attachPopup(new PhDialerAddToContactsPopup(searchController->m_View->getEntry()->getNumber()));
+}
+
+void PhDialerSearchController::onDbChanged(const char *view_uri, void *data)
+{
+ PhDialerSearchController* controller = (PhDialerSearchController*) data;
+ std::string number(controller->m_View->getEntry()->getNumber());
+ controller->m_PredictiveNumber->searchFromScratch(number);
+ controller->setLayout(number);
+}
diff --git a/lib-phone/ph-dialer/src/PhDialerSpeeddialPopup.cpp b/lib-phone/ph-dialer/src/PhDialerSpeeddialPopup.cpp
new file mode 100644
index 0000000..83fbd52
--- /dev/null
+++ b/lib-phone/ph-dialer/src/PhDialerSpeeddialPopup.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerSpeeddialPopup.h"
+#include "PhCommon.h"
+
+#include "ContactsDebug.h"
+#include "ContactsAppControl.h"
+#include "ContactsLocalization.h"
+
+#include <contacts.h>
+#include <Elementary.h>
+#include <notification.h>
+
+PhDialerSpeeddialPopup::PhDialerSpeeddialPopup(int speedNumber)
+ : m_SpeedNumber(speedNumber)
+{
+}
+
+Evas_Object *PhDialerSpeeddialPopup::onCreate(Evas_Object* parent, void* param)
+{
+ setTextTranslatable(TEXT_DOMAIN);
+ setTitle("IDS_KPD_HEADER_ASSIGN_AS_SPEED_DIAL_NUMBER_ABB");
+ setContent("IDS_KPD_POP_THERE_IS_NO_CONTACT_ASSIGNED_TO_THIS_SPEED_DIAL_NUMBER_TAP_OK_TO_ASSIGN_ONE_NOW");
+
+ using namespace std::placeholders;
+ addButton("IDS_LOGS_BUTTON_CANCEL_ABB3", nullptr);
+ addButton("IDS_PB_BUTTON_OK_ABB2", std::bind(&PhDialerSpeeddialPopup::onOkPressed, this, _1));
+ return WPopup::onCreate(parent, param);
+}
+
+void PhDialerSpeeddialPopup::onOkPressed(bool *destroyPopup)
+{
+ int err = launchContactPick(APP_CONTROL_DATA_SELECTION_MODE_SINGLE,
+ APP_CONTROL_DATA_TYPE_PHONE,
+ &PhDialerSpeeddialPopup::onPickResult, this);
+ WPRET_M(err != APP_CONTROL_ERROR_NONE, "launchContactPick() failed(0x%x)", err);
+ *destroyPopup = false;
+}
+
+void PhDialerSpeeddialPopup::onPickResult(app_control_h request, app_control_h reply,
+ app_control_result_e result, void *data)
+{
+ PhDialerSpeeddialPopup *popup = (PhDialerSpeeddialPopup*) data;
+
+ char **numberIds = 0;
+ int count = 0;
+ int err = app_control_get_extra_data_array(reply, APP_CONTROL_DATA_SELECTED, &numberIds, &count);
+ WPWARN(err != APP_CONTROL_ERROR_NONE, "app_control_get_extra_data() failed(0x%x)", err);
+ if (numberIds && numberIds[0]) {
+ int numberId = atoi(numberIds[0]);
+ if (numberId > 0) {
+ if (PhCommon::addSpeedDialNumber(popup->m_SpeedNumber, numberId)) {
+ notification_status_message_post(T_("IDS_KPD_TPOP_SPEED_DIAL_NUMBER_ASSIGNED"));
+ } else {
+ notification_status_message_post(T_("IDS_PB_POP_ALREADY_EXISTS_LC"));
+ }
+ }
+ }
+
+ for (int i = 0; i < count; ++i) {
+ free(numberIds[i]);
+ }
+ free(numberIds);
+
+ popup->destroy();
+}
diff --git a/lib-phone/ph-dialer/src/PhDialerView.cpp b/lib-phone/ph-dialer/src/PhDialerView.cpp
new file mode 100644
index 0000000..1a2df0f
--- /dev/null
+++ b/lib-phone/ph-dialer/src/PhDialerView.cpp
@@ -0,0 +1,392 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerView.h"
+#include "PhDialerEntry.h"
+#include "PhDialerKey.h"
+#include "PhDialerLayout.h"
+#include "PhDialerSpeeddialPopup.h"
+#include "PhSpeedDialView.h"
+#include "PhDialerSearchController.h"
+
+#include "ContactsAppControl.h"
+#include "ContactsDebug.h"
+#include "PhStrings.h"
+#include "WMenuPopup.h"
+
+#include <app_control.h>
+#include <contacts.h>
+#include <feedback.h>
+
+#define KEYPAD_ROWS 4
+#define KEYPAD_COLS 3
+
+#define UG_CALL_SETTING "setting-call-efl"
+#define DIALER_LAYOUT_EDJ "phone/ph-dialer-layout.edj"
+
+namespace
+{
+ const std::string layoutFilePath = ContactsCommon::getAppEdjePath(DIALER_LAYOUT_EDJ);
+}
+
+PhDialerView::PhDialerView()
+ : m_Entry(nullptr), m_Controller(nullptr)
+{
+ feedback_initialize();
+}
+
+PhDialerView::~PhDialerView()
+{
+ feedback_deinitialize();
+}
+
+void PhDialerView::setPredictiveLayout(Evas_Object *layout)
+{
+ elm_object_part_content_set(getEvasObj(), PART_SWALLOW_PREDICTIVE, layout);
+}
+
+PhDialerEntry* PhDialerView::getEntry() const
+{
+ return m_Entry;
+}
+
+Evas_Object *PhDialerView::onCreate(Evas_Object *parent, void *viewParam)
+{
+ elm_theme_extension_add(nullptr, ContactsCommon::getAppEdjePath("common/custom_button_styles.edj").c_str());
+
+ Evas_Object *layout = elm_layout_add(parent);
+ Eina_Bool res = elm_layout_file_set(layout, layoutFilePath.c_str(), GROUP_DIALER);
+ WPWARN(res != EINA_TRUE, "elm_layout_file_set() failed");
+
+ m_Entry = new PhDialerEntry();
+ m_Entry->create(layout, nullptr);
+ elm_object_part_content_set(layout, PART_SWALLOW_ENTRY, m_Entry->getEvasObj());
+ elm_object_part_content_set(layout, PART_SWALLOW_KEYPAD, createKeypad(layout));
+ elm_object_part_content_set(layout, PART_SWALLOW_CALL, createCallButton(layout));
+ elm_object_part_content_set(layout, PART_SWALLOW_BACKSPACE, createBackspaceButton(layout));
+
+ m_Controller = new PhDialerSearchController();
+ m_Controller->create(*this);
+
+ m_Entry->setNumber(m_InitialNumber);
+
+ return layout;
+}
+
+void PhDialerView::setNumber(std::string &number)
+{
+ m_InitialNumber = number;
+ if(m_Entry) {
+ m_Entry->setNumber(number);
+ }
+}
+
+void PhDialerView::onPush(Elm_Object_Item *naviItem)
+{
+ enableMoreButton(naviItem, &PhDialerView::onMenuPressed, this);
+}
+
+void PhDialerView::onTabSelect(Elm_Object_Item *naviItem)
+{
+ Evas_Object *conf = getWindow()->getConformantEvasObj();
+ elm_object_signal_emit(conf, "elm,state,virtualkeypad,disable", "");
+ elm_object_signal_emit(conf, "elm,state,clipboard,disable", "");
+
+ enableMoreButton(naviItem, &PhDialerView::onMenuPressed, this);
+}
+
+void PhDialerView::onTabUnselect(Elm_Object_Item *naviItem)
+{
+ Evas_Object *conf = getWindow()->getConformantEvasObj();
+ elm_object_signal_emit(conf, "elm,state,virtualkeypad,enable", "");
+ elm_object_signal_emit(conf, "elm,state,clipboard,enable", "");
+}
+
+bool PhDialerView::onTabPop()
+{
+ return true;
+}
+
+void PhDialerView::onTabScrollStart()
+{
+}
+
+void PhDialerView::onTabScrollStop()
+{
+}
+
+Evas_Object *PhDialerView::createKeypad(Evas_Object *parent)
+{
+ Evas_Object *table = elm_table_add(parent);
+ elm_table_padding_set(table, 2, 2);
+
+ int id = 0;
+ for(int i = 0; i < KEYPAD_ROWS; ++i) {
+ for(int j = 0; j < KEYPAD_COLS; ++j, ++id) {
+ using namespace std::placeholders;
+
+ PhDialerKey *key = new PhDialerKey((PhDialerKey::Id) id);
+ key->create(table, nullptr);
+ key->setOnPressed(std::bind(&PhDialerView::onKeyPressed, this, _1));
+ key->setOnLongpressed(std::bind(&PhDialerView::onKeyLongpressed, this, _1));
+
+ Evas_Object *button = key->getEvasObj();
+ evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(button, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ elm_table_pack(table, button, j, i, 1, 1);
+ evas_object_show(button);
+ }
+ }
+
+ return table;
+}
+
+Evas_Object *PhDialerView::createCallButton(Evas_Object *parent)
+{
+ Evas_Object *button = elm_button_add(parent);
+ elm_object_style_set(button, "custom_circle");
+ evas_object_smart_callback_add(button, "clicked",
+ &PhDialerView::onCallPressed, this);
+
+ Evas_Object *edje = elm_layout_edje_get(button);
+ edje_object_color_class_set(edje, "button_normal", BUTTON_CALL_NORMAL, 0, 0, 0, 0, 0, 0, 0, 0);
+ edje_object_color_class_set(edje, "button_pressed", BUTTON_CALL_PRESSED, 0, 0, 0, 0, 0, 0, 0, 0);
+
+ Evas_Object *image = elm_image_add(button);
+ Eina_Bool res = elm_image_file_set(image, layoutFilePath.c_str(), BUTTON_CALL);
+ WPWARN(res != EINA_TRUE, "elm_layout_file_set() failed");
+ elm_object_part_content_set(button, "elm.swallow.content", image);
+
+ return button;
+}
+
+Evas_Object *PhDialerView::createBackspaceButton(Evas_Object *parent)
+{
+ using namespace std::placeholders;
+ WButton *key = new WButton();
+ key->create(parent, nullptr);
+ key->setOnPressed(std::bind(&PhDialerView::onBackspacePressed, this, _1));
+ key->setOnLongpressed(std::bind(&PhDialerView::onBackspaceLongpressed, this, _1));
+
+ Evas_Object *button = key->getEvasObj();
+ elm_object_style_set(button, "transparent");
+ Evas_Object *image = elm_image_add(button);
+ Eina_Bool res = elm_image_file_set(image, layoutFilePath.c_str(), BUTTON_BACKSPACE);
+ WPWARN(res != EINA_TRUE, "elm_layout_file_set() failed");
+ elm_object_part_content_set(button, "elm.swallow.content", image);
+
+ return button;
+}
+
+void PhDialerView::onKeyPressed(WButton &button)
+{
+ PhDialerKey &key = static_cast<PhDialerKey&>(button);
+ m_Entry->insert(key.getValue());
+}
+
+bool PhDialerView::onKeyLongpressed(WButton &button)
+{
+ PhDialerKey &key = static_cast<PhDialerKey&>(button);
+ int id = key.getId();
+
+ if (m_Entry->getNumber().empty()) {
+ if (id >= PhDialerKey::ID_1 && id <= PhDialerKey::ID_9) {
+ launchSpeeddial(key.getValue() - '0');
+ return true;
+ }
+ }
+
+ if (id == PhDialerKey::ID_0) {
+ m_Entry->insert('+');
+ return true;
+ }
+
+ return false;
+}
+
+void PhDialerView::onBackspacePressed(WButton &button)
+{
+ feedback_play(FEEDBACK_PATTERN_KEY_BACK);
+ m_Entry->popBack();
+}
+
+bool PhDialerView::onBackspaceLongpressed(WButton &button)
+{
+ m_Entry->clear();
+ return true;
+}
+
+void PhDialerView::onCallPressed(void *data, Evas_Object *obj, void *event_info)
+{
+ PhDialerView *view = (PhDialerView*) data;
+
+ std::string number = view->m_Entry->getNumber();
+ if (!number.empty()) {
+ launchCall(number);
+ view->m_Entry->clear();
+ } else {
+ view->m_Entry->setNumber(getLastNumber());
+ }
+}
+
+void PhDialerView::onMenuPressed(void *data, Evas_Object *obj, void *event_info)
+{
+ PhDialerView *view = (PhDialerView*) data;
+
+ WMenuPopup *popup = new WMenuPopup();
+ popup->prepare(view->getWindow()->getEvasObj(),
+ view->getNaviframe()->getEvasObj());
+
+ if (!view->m_Entry->getNumber().empty()) {
+ popup->appendItem(PAT_(PH_KPD_BUTTON_SEND_MESSAGE),
+ std::bind(&PhDialerView::onSendMessage, view));
+ popup->appendItem(PAT_(PH_KPD_OPT_ADD_2_SECOND_PAUSE_ABB),
+ std::bind(&PhDialerView::onAddPause, view));
+ popup->appendItem(PAT_(PH_KPD_OPT_ADD_WAIT_ABB),
+ std::bind(&PhDialerView::onAddWait, view));
+ }
+
+ popup->appendItem(PAT_(PH_KPD_OPT_SPEED_DIAL_SETTINGS_ABB2),
+ std::bind(&PhDialerView::onSpeeddialSettings, view));
+ popup->appendItem(PAT_(PH_KPD_OPT_CALL_SETTINGS_ABB),
+ std::bind(&PhDialerView::onCallSettings, view));
+
+ view->attachPopup(popup);
+}
+
+void PhDialerView::onSendMessage()
+{
+ int err = launchMessageComposer("sms:", m_Entry->getNumber().c_str());
+ WPWARN(err != APP_CONTROL_ERROR_NONE, "launchMessageComposer() failed(0x%x)", err);
+}
+
+void PhDialerView::onAddWait()
+{
+ m_Entry->insert(';');
+}
+
+void PhDialerView::onAddPause()
+{
+ m_Entry->insert(',');
+}
+
+void PhDialerView::onSpeeddialSettings()
+{
+ getNaviframe()->push(new PhSpeedDialView(), NULL, NULL);
+}
+
+void PhDialerView::onCallSettings()
+{
+ app_control_h request;
+ app_control_create(&request);
+ app_control_set_app_id(request, UG_CALL_SETTING);
+ app_control_set_launch_mode(request, APP_CONTROL_LAUNCH_MODE_GROUP);
+ int err = app_control_send_launch_request(request, NULL, NULL);
+ WPWARN(err != APP_CONTROL_ERROR_NONE, "app_control_send_launch_request() failed(0x%x)", err);
+ app_control_destroy(request);
+}
+
+void PhDialerView::launchCall(const std::string &number)
+{
+ int err = ::launchCall(number.c_str());
+ WPWARN(err != APP_CONTROL_ERROR_NONE, "launchCall() failed(0x%x)", err);
+}
+
+void PhDialerView::launchSpeeddial(int digit)
+{
+ std::string number = getSpeeddialNumber(digit);
+ if (!number.empty()) {
+ launchCall(number);
+ } else {
+ attachPopup(new PhDialerSpeeddialPopup(digit));
+ }
+}
+
+std::string PhDialerView::getSpeeddialNumber(int digit)
+{
+ std::string number;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+ contacts_list_h list = NULL;
+
+ contacts_filter_create(_contacts_speeddial._uri, &filter);
+ contacts_filter_add_int(filter, _contacts_speeddial.speeddial_number, CONTACTS_MATCH_EQUAL, digit);
+
+ contacts_query_create(_contacts_speeddial._uri, &query);
+ contacts_query_set_filter(query, filter);
+
+ int err = contacts_db_get_records_with_query(query, 0, 1, &list);
+ WPWARN(err != CONTACTS_ERROR_NONE, "contacts_db_get_records_with_query() failed(0x%x)", err);
+ if (list) {
+ contacts_record_h record = NULL;
+ contacts_list_get_current_record_p(list, &record);
+ if (record) {
+ char *str = NULL;
+ contacts_record_get_str_p(record, _contacts_speeddial.number, &str);
+ if (str) {
+ number = str;
+ }
+ }
+
+ contacts_list_destroy(list, true);
+ }
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+
+ return number;
+}
+
+std::string PhDialerView::getLastNumber()
+{
+ std::string number;
+ contacts_list_h list = NULL;
+ contacts_query_h query = NULL;
+ contacts_filter_h filter = NULL;
+
+ contacts_filter_create(_contacts_person_phone_log._uri, &filter);
+ contacts_filter_add_int(filter, _contacts_person_phone_log.log_type,
+ CONTACTS_MATCH_GREATER_THAN_OR_EQUAL, CONTACTS_PLOG_TYPE_VOICE_INCOMMING);
+ contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND);
+ contacts_filter_add_int(filter, _contacts_person_phone_log.log_type,
+ CONTACTS_MATCH_LESS_THAN_OR_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_BLOCKED);
+
+ contacts_query_create(_contacts_person_phone_log._uri, &query);
+ contacts_query_set_filter(query, filter);
+ contacts_query_set_sort(query, _contacts_person_phone_log.log_time, false);
+
+ int err = contacts_db_get_records_with_query(query, 0, 1, &list);
+ WPWARN(err != CONTACTS_ERROR_NONE, "contacts_db_get_records_with_query() failed(0x%x)", err);
+ if (list) {
+ contacts_record_h record = NULL;
+ contacts_list_get_current_record_p(list, &record);
+ if (record) {
+ char *str = NULL;
+ contacts_record_get_str_p(record, _contacts_person_phone_log.address, &str);
+ if (str) {
+ number = str;
+ }
+ }
+
+ contacts_list_destroy(list, true);
+ }
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+
+ return number;
+}
diff --git a/lib-phone/ph-dialer/src/predictive-number/PhDialerPredictiveNumber.cpp b/lib-phone/ph-dialer/src/predictive-number/PhDialerPredictiveNumber.cpp
new file mode 100644
index 0000000..8158e22
--- /dev/null
+++ b/lib-phone/ph-dialer/src/predictive-number/PhDialerPredictiveNumber.cpp
@@ -0,0 +1,223 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerPredictiveNumber.h"
+#include "PhDialerPredictiveNumberUtils.h"
+#include "PhDialerSearchInfo.h"
+#include "PhDialerPredictiveNumberTypes.h"
+#include "ContactsUtils.h"
+#include <utility>
+#include <algorithm>
+
+using namespace Ph::Dialer;
+
+namespace
+{
+ typedef contacts_list_h (*ContactListGetter)(char digit);
+
+ ContactListGetter contactListGetters[] = {
+ Utils::getSpeedDial,
+ Utils::getLogList,
+ Utils::getContactListByName,
+ Utils::getContactListByNumber
+ };
+}
+
+PredictiveNumber::PredictiveNumber()
+ :m_LastFoundIndex(-1)
+{}
+
+void PredictiveNumber::search(const std::string &number)
+{
+ if(number.empty()) {
+ clear();
+ } else {
+ chooseSearch(number);
+ }
+
+ m_Number = number;
+}
+
+const SearchList * PredictiveNumber::getSearchResult() const
+{
+ if(!m_PredictiveNumberCache.empty()) {
+ return &m_PredictiveNumberCache.back();
+ }
+
+ return nullptr;
+}
+
+bool Ph::Dialer::PredictiveNumber::empty() const
+{
+ return m_PredictiveNumberCache.empty() || m_PredictiveNumberCache.back().empty();
+}
+
+void PredictiveNumber::distinctLogs(SearchList &searchList)
+{
+ auto logPred = [](PSearchInfo pSearchInfo) -> bool {
+ return pSearchInfo->getType() == IT_LOG;
+ };
+
+ auto logComp = [](PSearchInfo lhs, PSearchInfo rhs) -> bool {
+ return lhs->getSearchString() < rhs->getSearchString();
+ };
+
+ auto eqPred = [](PSearchInfo lhs, PSearchInfo rhs) -> bool {
+ return lhs->getSearchString() == rhs->getSearchString();
+ };
+
+ SearchList::iterator beg = std::find_if(searchList.begin(), searchList.end(), logPred);
+ SearchList::iterator end = std::find_if_not(beg, searchList.end(), logPred);
+
+ if(beg != end) {
+ std::sort(beg, end, logComp);
+ SearchList::iterator itForErase = std::unique(beg, end, eqPred);
+
+ searchList.erase(itForErase, end);
+ }
+}
+
+void PredictiveNumber::firstSearch(const std::string &number)
+{
+ clear();
+
+ SearchList searchList = searchInDB(number);
+
+ if(!searchList.empty()) {
+ distinctLogs(searchList);
+
+ m_PredictiveNumberCache.resize(number.size());
+ m_PredictiveNumberCache.front() = std::move(searchList);
+ m_LastFoundIndex = 0;
+
+ if(number.size() > 1) {
+ if(!searchInCache(m_PredictiveNumberCache.begin(), number)) {
+ clear();
+ }
+ }
+ }
+}
+
+SearchList Ph::Dialer::PredictiveNumber::searchInDB(const std::string &number)
+{
+ SearchList searchList;
+ contacts_record_h record = NULL;
+
+ for(int i = IT_SPEED_DIAL; i < IT_MAX; ++i) {
+ contacts_list_h list = contactListGetters[i](number.front());
+ CONTACTS_LIST_FOREACH(list, record) {
+ SearchInfo searchInfo((InfoType)i, record);
+ if(searchInfo.getType() != IT_NONE) {
+ size_t position = searchInfo.getSearchString().find(number);
+ if (position != std::string::npos) {
+ searchInfo.updateHighlightText(number, position);
+ }
+ searchList.push_back(std::make_shared<SearchInfo>(std::move(searchInfo)));
+ }
+ }
+ contacts_list_destroy(list, true);
+ }
+
+ return searchList;
+}
+
+void PredictiveNumber::chooseSearch(const std::string &number)
+{
+ if(m_Number.empty()) {
+ firstSearch(number);
+ }
+
+ if(!needSearch(number)) {
+ return;
+ }
+
+ m_PredictiveNumberCache.resize(number.size());
+ auto rIt = firstMismatch(number);
+ if(rIt == m_PredictiveNumberCache.rend()) {//Perform initial search
+ firstSearch(number);
+ } else {
+ searchInCache(rIt.base() - 1, number);
+ }
+}
+
+bool PredictiveNumber::searchInCache(Cache::iterator from, const std::string &number)
+{
+ SearchList searchRes;
+ for(PSearchInfo &sInfo : *from) {
+ if(sInfo) {
+ size_t position = sInfo->getSearchString().find(number);
+ if (position != std::string::npos) {
+ sInfo->updateHighlightText(number, position);
+ searchRes.push_back(sInfo);
+ }
+ }
+ }
+
+ if(!searchRes.empty()) {
+ m_LastFoundIndex = m_PredictiveNumberCache.size() - 1;
+ m_PredictiveNumberCache.back() = std::move(searchRes);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+Cache::reverse_iterator PredictiveNumber::firstMismatch(const std::string &number)
+{
+ size_t minSize = std::min(m_Number.size(), number.size());
+ auto itPair = std::mismatch(m_Number.begin(), m_Number.begin() + minSize, number.begin());
+
+ auto rIt = skipEmptyResults(itPair.first - m_Number.begin());
+ return rIt;
+}
+
+Cache::reverse_iterator PredictiveNumber::skipEmptyResults(size_t offset)
+{
+ auto rIt = std::reverse_iterator<Cache::iterator>(m_PredictiveNumberCache.begin() + offset);
+
+ while(rIt != m_PredictiveNumberCache.rend() && rIt->empty()) {
+ ++rIt;
+ }
+
+ return rIt;
+}
+
+void PredictiveNumber::clear()
+{
+ m_PredictiveNumberCache.clear();
+ m_LastFoundIndex = -1;
+}
+
+bool PredictiveNumber::needSearch(const std::string &number)
+{
+ if( number.size() >= m_Number.size()
+ &&(int)(m_PredictiveNumberCache.size() - 1) > m_LastFoundIndex) {
+ return false;
+ }
+ return true;
+}
+
+void PredictiveNumber::searchFromScratch(const std::string& number)
+{
+ if(number.empty()) {
+ clear();
+ } else {
+ firstSearch(number);
+ }
+
+ m_Number = number;
+}
diff --git a/lib-phone/ph-dialer/src/predictive-number/PhDialerPredictiveNumberUtils.cpp b/lib-phone/ph-dialer/src/predictive-number/PhDialerPredictiveNumberUtils.cpp
new file mode 100644
index 0000000..699b87d
--- /dev/null
+++ b/lib-phone/ph-dialer/src/predictive-number/PhDialerPredictiveNumberUtils.cpp
@@ -0,0 +1,219 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "ContactsThumbnail.h"
+#include "ContactsUtils.h"
+#include "PhDialerPredictiveNumberUtils.h"
+#include "PhDialerLayout.h"
+#include "ContactsDebug.h"
+
+#include <Elementary.h>
+
+using namespace Ph::Dialer;
+using namespace Ph::Dialer::Utils;
+
+namespace
+{
+ const char *mask[] = {
+ "+",
+ "",
+ "abc",
+ "def",
+ "ghi",
+ "jkl",
+ "mno",
+ "pqrs",
+ "tuv",
+ "wxyz"
+ };
+
+ char getDigit(char c)
+ {
+ static const char hash[] = "22233344455566677778889999";
+
+ if(c == '+') {
+ return '0';
+ }
+
+ size_t index = tolower(c) - 'a';
+
+ if(index >= sizeof(hash) - 1) {
+ return '\0';
+ }
+
+ return hash[index];
+ }
+
+ std::string getDigitMask(char digit)
+ {
+ if(digit > '9' || digit < '0') {
+ WERROR("getDigitMask expected digit(0-9) argument, but %c is provided", digit);
+ return "";
+ }
+
+ int index = digit - '0';
+ return mask[index];
+ }
+
+ contacts_filter_h createContactNameFilters(char digit)
+ {
+ std::string mask = getDigitMask(digit);
+ if (mask.empty()) {
+ return NULL;
+ }
+
+ contacts_filter_h filter = NULL;
+ contacts_filter_create(_contacts_contact_number._uri, &filter);
+ bool isFirst = true;
+ for(auto &x : mask) {
+ if(!isFirst) {
+ contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR);
+ }
+
+ char str[] = { x, '\0' };
+ contacts_filter_add_str(filter, _contacts_contact_number.display_name, CONTACTS_MATCH_CONTAINS, str);
+ isFirst = false;
+ }
+ return filter;
+ }
+
+ contacts_list_h runQuery(const char *tableUri, contacts_filter_h filter)
+ {
+ contacts_list_h list = NULL;
+ contacts_query_h query = NULL;
+
+ contacts_query_create(tableUri, &query);
+ contacts_query_set_filter(query, filter);
+
+ contacts_db_get_records_with_query(query, 0, 0, &list);
+
+ contacts_query_destroy(query);
+ contacts_filter_destroy(filter);
+
+ return list;
+ }
+
+ std::string getThumbnail(int id)
+ {
+ std::string path;
+ contacts_record_h record = NULL;
+ if(contacts_db_get_record(_contacts_contact._uri, id, &record) == CONTACTS_ERROR_NONE) {
+ char *imgPath = NULL;
+ contacts_record_get_str_p(record, _contacts_contact.image_thumbnail_path, &imgPath);
+ if(imgPath) {
+ path = imgPath;
+ }
+ contacts_record_destroy(record, true);
+ }
+ return path;
+ }
+}
+
+contacts_list_h Ph::Dialer::Utils::getSpeedDial(char number)
+{
+ contacts_filter_h filter = NULL;
+ contacts_filter_create(_contacts_speeddial._uri, &filter);
+ contacts_filter_add_int(filter, _contacts_speeddial.speeddial_number, CONTACTS_MATCH_EQUAL, number - '0');
+
+ contacts_list_h list = runQuery(_contacts_speeddial._uri, filter);
+
+ return list;
+}
+
+contacts_list_h Ph::Dialer::Utils::getLogList(char digit)
+{
+ char number [] = { digit, '\0' };
+ contacts_filter_h filter = NULL;
+ contacts_filter_create(_contacts_phone_log._uri, &filter);
+
+ contacts_filter_add_str(filter, _contacts_phone_log.address, CONTACTS_MATCH_CONTAINS, number);
+ contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND);
+ contacts_filter_add_int(filter, _contacts_phone_log.log_type,
+ CONTACTS_MATCH_GREATER_THAN_OR_EQUAL, CONTACTS_PLOG_TYPE_VOICE_INCOMMING);
+ contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND);
+ contacts_filter_add_int(filter, _contacts_phone_log.log_type,
+ CONTACTS_MATCH_LESS_THAN_OR_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_BLOCKED);
+
+ contacts_list_h list = runQuery(_contacts_phone_log._uri, filter);
+
+ contacts_list_h retList = NULL;
+ contacts_list_create(&retList);
+ contacts_record_h record = NULL;
+ CONTACTS_LIST_FOREACH(list, record) {
+ int personId = 0;
+ contacts_record_get_int(record, _contacts_phone_log.person_id, &personId);
+ if(personId == 0) {
+ contacts_list_add(retList, record);
+ } else {
+ contacts_record_destroy(record, true);
+ }
+ }
+ contacts_list_destroy(list, false);
+
+ return retList;
+}
+
+contacts_list_h Ph::Dialer::Utils::getContactListByName(char digit)
+{
+ contacts_query_h query = NULL;
+ contacts_list_h list = NULL;
+ contacts_query_create(_contacts_contact_number._uri, &query);
+ contacts_filter_h filter = createContactNameFilters(digit);
+ if(filter) {
+ contacts_query_set_filter(query, filter);
+ contacts_db_get_records_with_query(query, 0, 0, &list);
+ }
+
+ contacts_filter_destroy(filter);
+ contacts_query_destroy(query);
+ return list;
+}
+
+contacts_list_h Ph::Dialer::Utils::getContactListByNumber(char digit)
+{
+ char number [] = { digit, '\0' };
+ contacts_filter_h filter = NULL;
+ contacts_filter_create(_contacts_contact_number._uri, &filter);
+ contacts_filter_add_str(filter, _contacts_contact_number.number, CONTACTS_MATCH_CONTAINS, number);
+
+ contacts_list_h list = runQuery(_contacts_contact_number._uri, filter);
+
+ return list;
+}
+
+std::string Ph::Dialer::Utils::contactNameToMask(const std::string &name)
+{
+ std::string number;
+ number.reserve(name.size());
+
+ for(auto &x : name) {
+ char digit = getDigit(x);
+ if(digit == '\0') {
+ break;
+ }
+ number.push_back(digit);
+ }
+ return number;
+}
+
+Evas_Object *Ph::Dialer::Utils::createThumbnail(Evas_Object *parent, int contactId)
+{
+ std::string thumbnailPath = getThumbnail(contactId);
+ Evas_Object *thumbnailImage = createThumbnail(parent, THUMBNAIL_98, thumbnailPath.c_str(), true);
+
+ return thumbnailImage;
+}
diff --git a/lib-phone/ph-dialer/src/predictive-number/PhDialerSearchInfo.cpp b/lib-phone/ph-dialer/src/predictive-number/PhDialerSearchInfo.cpp
new file mode 100644
index 0000000..f048090
--- /dev/null
+++ b/lib-phone/ph-dialer/src/predictive-number/PhDialerSearchInfo.cpp
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2009-2015 Samsung Electronics Co., Ltd All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "PhDialerSearchInfo.h"
+#include "PhDialerPredictiveNumberUtils.h"
+#include "ContactsCommon.h"
+
+using namespace Ph::Dialer;
+using namespace Ph::Dialer::Utils;
+
+SearchInfo::SearchInfo(InfoType type, const contacts_record_h record)
+ : m_Type(type), m_Id(0), m_SpeedDialId(0)
+{
+ if(record) {
+ if(!fillWithRecord(type, record)) {
+ m_Type = IT_NONE;
+ }
+ }
+}
+
+std::string SearchInfo::getSearchString() const
+{
+ switch(m_Type) {
+ case IT_SPEED_DIAL:
+ return std::string(1, (m_SpeedDialId + '0'));
+ case IT_LOG:
+ case IT_NUMBER:
+ return m_Number;
+ case IT_NAME:
+ return m_MaskedName;
+ case IT_NONE:
+ case IT_MAX:
+ default:
+ return "";
+ }
+}
+
+InfoType SearchInfo::getType() const
+{
+ return m_Type;
+}
+
+int SearchInfo::getId() const
+{
+ return m_Id;
+}
+
+int Ph::Dialer::SearchInfo::getSpeedDialId() const
+{
+ return m_SpeedDialId;
+}
+
+const std::string &Ph::Dialer::SearchInfo::getName(bool isHighlighted) const
+{
+ bool returnHighlight = isHighlighted && (m_Type == IT_NAME) && !m_HighlightedText.empty();
+ return returnHighlight ? m_HighlightedText : m_Name;
+}
+
+const std::string &Ph::Dialer::SearchInfo::getNumber(bool isHighlighted) const
+{
+ bool returnHighlight = isHighlighted && ((m_Type == IT_LOG) || (m_Type == IT_NUMBER)) && !m_HighlightedText.empty();
+ return returnHighlight ? m_HighlightedText : m_Number;
+}
+
+const std::string &Ph::Dialer::SearchInfo::getHighlightedText() const
+{
+ return m_HighlightedText;
+}
+
+bool SearchInfo::updateHighlightText(const std::string searchStr, size_t position)
+{
+ switch(m_Type)
+ {
+ case IT_LOG:
+ case IT_NUMBER:
+ m_HighlightedText = ContactsCommon::highlightTextByPos(m_Number, position, searchStr.size());
+ return true;
+ case IT_NAME:
+ m_HighlightedText = ContactsCommon::highlightTextByPos(m_Name, position, searchStr.size());
+ return true;
+ case IT_NONE:
+ case IT_SPEED_DIAL:
+ case IT_MAX:
+ default:
+ return false;
+ }
+}
+
+bool Ph::Dialer::SearchInfo::fillWithRecord(InfoType type, const contacts_record_h record)
+{
+ switch(type)
+ {
+ case IT_SPEED_DIAL:
+ fillSpeedDial(record);
+ return true;
+ case IT_LOG:
+ fillLog(record);
+ return true;
+ case IT_NAME:
+ case IT_NUMBER:
+ fillContact(type, record);
+ return true;
+ case IT_NONE:
+ case IT_MAX:
+ default:
+ return false;
+ }
+}
+
+void SearchInfo::fillSpeedDial(const contacts_record_h record)
+{
+ char *tempStr = NULL;
+
+ contacts_record_get_int(record, _contacts_speeddial.person_id, &m_Id);
+ contacts_record_get_int(record, _contacts_speeddial.speeddial_number, &m_SpeedDialId);
+ contacts_record_get_str_p(record, _contacts_speeddial.number, &tempStr);
+ m_Number = tempStr;
+ contacts_record_get_str_p(record, _contacts_speeddial.display_name, &tempStr);
+ m_Name = tempStr;
+}
+
+void SearchInfo::fillLog(const contacts_record_h record)
+{
+ char *tempStr = NULL;
+
+ contacts_record_get_int(record, _contacts_phone_log.person_id, &m_Id);
+ contacts_record_get_str_p(record, _contacts_phone_log.address, &tempStr);
+ m_Number = tempStr;
+}
+
+void SearchInfo::fillContact(InfoType type, const contacts_record_h record)
+{
+ char *tempStr = NULL;
+
+ contacts_record_get_int(record, _contacts_contact_number.contact_id, &m_Id);
+ contacts_record_get_str_p(record, _contacts_contact_number.display_name, &tempStr);
+ m_Name = tempStr;
+ contacts_record_get_str_p(record, _contacts_contact_number.number, &tempStr);
+ m_Number = tempStr;
+ if(type == IT_NAME) {
+ m_MaskedName = Utils::contactNameToMask(m_Name);
+ }
+}