diff options
author | jk7744.park <jk7744.park@samsung.com> | 2015-10-24 15:42:16 +0900 |
---|---|---|
committer | jk7744.park <jk7744.park@samsung.com> | 2015-10-24 15:42:16 +0900 |
commit | 2aa01f1ea98ff42e4bfef6da401eb19383f2f4ce (patch) | |
tree | 7eb4f13beea5ba0aae81b66d48630f87848a6435 /lib-phone | |
parent | 331d162934ac346a137b6a3a17074d948a3c6c41 (diff) | |
download | phone-contacts-2aa01f1ea98ff42e4bfef6da401eb19383f2f4ce.tar.gz phone-contacts-2aa01f1ea98ff42e4bfef6da401eb19383f2f4ce.tar.bz2 phone-contacts-2aa01f1ea98ff42e4bfef6da401eb19383f2f4ce.zip |
tizen 2.4 releasetizen_2.4_mobile_releasesubmit/tizen_2.4/20151028.062645accepted/tizen/2.4/mobile/20151029.041342accepted/tizen_2.4_mobile
Diffstat (limited to 'lib-phone')
118 files changed, 13470 insertions, 0 deletions
diff --git a/lib-phone/CMakeLists.txt b/lib-phone/CMakeLists.txt new file mode 100755 index 0000000..d33384f --- /dev/null +++ b/lib-phone/CMakeLists.txt @@ -0,0 +1,6 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + +ADD_SUBDIRECTORY(ph-common) +ADD_SUBDIRECTORY(ph-dialer) +ADD_SUBDIRECTORY(ph-loglist) +ADD_SUBDIRECTORY(ph-speeddial) diff --git a/lib-phone/ph-common/.cproject b/lib-phone/ph-common/.cproject new file mode 100644 index 0000000..15a551c --- /dev/null +++ b/lib-phone/ph-common/.cproject @@ -0,0 +1,519 @@ +<?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.110410643"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.so.debug.110410643" 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-common" 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.110410643" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.so.debug"> + <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.so.debug.110410643." name="/" resourcePath=""> + <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.so.debug.1871207700" 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.1523697046" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> + <builder autoBuildTarget="all" buildPath="${workspace_loc:/ph-common}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.319291132" 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.242438497" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> + <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.588133801" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> + <option id="gnu.cpp.compiler.option.optimization.level.355409593" 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.545752178" 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.1555916959" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.compiler.option.446128825" 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.60667326" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.372393810" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-fvisibility=hidden"/> + </option> + <option id="gnu.cpp.compiler.option.include.paths.1362030673" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc/app-assist}""/> + <listOptionValue builtIn="false" value="../../../app-assist-efl/inc"/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/inc}""/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1334627285" 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.1729376624" 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.1157581696" 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.166734976"/> + <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1209813936" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> + </tool> + <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.333419547" 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.1390462842" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/> + <option id="sbi.gnu.c.compiler.option.debugging.level.core.1961349290" 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.1142121979" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.c.compiler.option.1172464776" 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.518631842" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </option> + <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.2073375329" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-fvisibility=hidden"/> + </option> + <option id="gnu.c.compiler.option.include.paths.75876670" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + </option> + <option id="sbi.gnu.c.compiler.option.frameworks.core.1230132729" 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.1405813005" 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.714569740"/> + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1680583043" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + </tool> + <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.161583984" 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.150861271" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker"> + <option defaultValue="true" id="sbi.gnu.cpp.linker.option.shared_flag.core.1936471852" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1961074596" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/> + <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/> + </option> + <option id="gnu.cpp.link.option.paths.1839067735" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/Debug}""/> + <listOptionValue builtIn="false" value="../../../app-assist-efl/Debug"/> + </option> + <option id="gnu.cpp.link.option.libs.130262527" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"> + <listOptionValue builtIn="false" srcPrefixMapping="" srcRootPath="" value="app-assist-efl"/> + <listOptionValue builtIn="false" srcPrefixMapping="" srcRootPath="" value="common"/> + </option> + <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.346061771" 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.1414608648" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base"> + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1651997926" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + </tool> + <tool id="org.tizen.nativecore.tool.sbi.po.compiler.945112215" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/> + <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.550161325" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.156796759" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1947663034" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/> + <tool id="org.tizen.nativecore.tool.ast.1769918872" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/> + <tool id="org.tizen.nativecore.tool.ast.cpp.732507952" 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> + <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.so.release.485995869"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.so.release.485995869" 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-common" 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.485995869" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.so.release"> + <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.so.release.485995869." name="/" resourcePath=""> + <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.so.release.16959222" 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.179360142" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> + <builder buildPath="${workspace_loc:/ph-common}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1651135625" 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.1264660674" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> + <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.320037124" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> + <option id="gnu.cpp.compiler.option.optimization.level.165082582" 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.813575973" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core"/> + <option defaultValue="true" id="sbi.gnu.cpp.compiler.option.misc.pic.core.642426593" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.compiler.option.137753700" 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.375243157" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.160267345" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-fvisibility=hidden"/> + </option> + <option id="gnu.cpp.compiler.option.include.paths.1453121176" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1937508833" 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.921623300"/> + <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.521869643" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> + </tool> + <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1360440380" 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.2047451182" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/> + <option id="sbi.gnu.c.compiler.option.debugging.level.core.685415700" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core"/> + <option defaultValue="true" id="sbi.gnu.c.compiler.option.misc.pic.core.2075053766" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.c.compiler.option.1061023312" 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.1504250693" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </option> + <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1015521082" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-fvisibility=hidden"/> + </option> + <option id="gnu.c.compiler.option.include.paths.1904082481" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + </option> + <option id="sbi.gnu.c.compiler.option.frameworks.core.1579962873" 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.1921191624"/> + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1712790233" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + </tool> + <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1186164243" 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.626301945" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker"> + <option defaultValue="true" id="sbi.gnu.cpp.linker.option.shared_flag.core.1845140570" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.462295479" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/> + <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/> + </option> + <option id="gnu.cpp.link.option.paths.1461135042" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/Release}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/app-assist-efl/Release}""/> + </option> + <option id="gnu.cpp.link.option.libs.2081253130" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"> + <listOptionValue builtIn="false" value="app-assist-efl"/> + <listOptionValue builtIn="false" value="common"/> + </option> + <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.504505289" 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.490685510" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base"> + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1833131107" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + </tool> + <tool id="org.tizen.nativecore.tool.sbi.po.compiler.41136201" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/> + <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1544846794" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.1327329465" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1587469156" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/> + <tool id="org.tizen.nativecore.tool.ast.685668383" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/> + <tool id="org.tizen.nativecore.tool.ast.cpp.1369876982" 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-common.org.tizen.nativecore.target.sbi.gcc45.so.945715298" 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.485995869"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.tizen.nativecommon.TizenGCCManagedMakePerProjectProfileCPP"/> + </scannerConfigBuildInfo> + <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.so.debug.110410643"> + <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-common"/> + </configuration> + <configuration configurationName="Debug"> + <resource resourceType="PROJECT" workspacePath="/ph-common"/> + </configuration> + </storageModule> +</cproject> diff --git a/lib-phone/ph-common/.project b/lib-phone/ph-common/.project new file mode 100644 index 0000000..2bb9311 --- /dev/null +++ b/lib-phone/ph-common/.project @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ph-common</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>1413282642078</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-common/.tproject b/lib-phone/ph-common/.tproject new file mode 100644 index 0000000..f1cc1fd --- /dev/null +++ b/lib-phone/ph-common/.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-common/CMakeLists.txt b/lib-phone/ph-common/CMakeLists.txt new file mode 100755 index 0000000..bda54e2 --- /dev/null +++ b/lib-phone/ph-common/CMakeLists.txt @@ -0,0 +1,18 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(ph-common CXX) + +INCLUDE_DIRECTORIES( + ${CMAKE_SOURCE_DIR}/app-assist-efl/inc + ${CMAKE_SOURCE_DIR}/lib-common/inc + ${CMAKE_CURRENT_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR}/inc +) + +FILE(GLOB SRCS "src/*.cpp") +ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${TIZEN_PKGS_LDFLAGS} + "app-assist-efl" + "contacts-common" +) + +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_APP_LIB_DIR}) diff --git a/lib-phone/ph-common/inc/PhCommon.h b/lib-phone/ph-common/inc/PhCommon.h new file mode 100755 index 0000000..dc27072 --- /dev/null +++ b/lib-phone/ph-common/inc/PhCommon.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_COMMON_H_ +#define _PH_COMMON_H_ + +#include "WDefine.h" +#include <Elementary.h> +#include <string> +#include <app.h> + +#define STD_LIST_FREE(target) \ + if(target)\ + {\ + for (auto iter = target->begin(); iter != target->end(); ++iter)\ + {\ + delete *iter;\ + }\ + delete target;\ + target = NULL; \ + } + +class WAPP_ASSIST_EXPORT PhCommon +{ +public: + PhCommon(); + virtual ~PhCommon(); + +public: + static Evas_Object* createImage(Evas_Object* parent, const char* edj, const char* imagePath, const char* colorCode); + static Evas_Object* createLayout(Evas_Object* parent, const char* edj, const char* layoutName); + static Evas_Object* createButton(Evas_Object* parent, const char* buttonStyle, const char* buttonText, Evas_Smart_Cb clickedCb, void* userData ); + + typedef enum{ + NORMAL_CALL = 0, + EMERGENCY_NUMBER, + EMERGENCY_CONTACTS, + }emergencyType; + + static void launchCallSetting(Evas_Object *win, Evas_Object *nf); + + /** + * @brief Add speed dial number + * @param[in] speedNumber Number on the dialer + * @param[in] numberId ID of number to assign to @a speedNumber + * @return true on success, false if number with this @a numberId already exists. + */ + static bool addSpeedDialNumber(int speedNumber, int numberId); + + static void terminateChildAppControl(void); + + static void adjustMatchedLenForName(const char* displayName, const char* keyword, int* index, int* len); + static int getSavedNumberStartIndex(const char* source, const char* keyword); + static void adjustMatchedLenForNum(const char* number, const char* keyword, int* index, int* len); + static std::string convert2MarkupString(const char* source); + +private: + static int __checkUtf8(char c); + static bool __isDash(char ch); + static void image_mask_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); +}; + +#endif /* _PH_COMMON_H_ */ + diff --git a/lib-phone/ph-common/inc/PhDbListener.h b/lib-phone/ph-common/inc/PhDbListener.h new file mode 100644 index 0000000..96595ae --- /dev/null +++ b/lib-phone/ph-common/inc/PhDbListener.h @@ -0,0 +1,28 @@ +/*
+ * 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_DB_LISTENER_H_
+#define _PH_DB_LISTENER_H_
+
+class PhDbListener
+{
+public:
+ virtual ~PhDbListener(){};
+ virtual void onDbChanged() = 0;
+};
+
+#endif //_PH_DB_LISTENER_H_
diff --git a/lib-phone/ph-common/inc/PhPath.h b/lib-phone/ph-common/inc/PhPath.h new file mode 100755 index 0000000..d5e772b --- /dev/null +++ b/lib-phone/ph-common/inc/PhPath.h @@ -0,0 +1,57 @@ +/* + * 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_PATH_H_ +#define __PH_PATH_H_ + +#define LOG_LIST_EDJ "phone/ph-loglist.edj" +#define SPEED_DIAL_EDJ "phone/ph-speeddial.edj" +#define DIALER_EDJ "phone/ph-dialer.edj" + +#if !defined(PHIMGDIR) +# define PHIMGDIR "/usr/ug/res/images/ug-phone/contacts/" +#endif + +//default Thumbnail +#define PH_LOG_ICON_DETAIL_THUMBNAIL_MASKING_IMAGE "logs_default_masking_134.png" +#define PH_LOG_ICON_DETAIL_THUMBNAIL_MASKING PHIMGDIR"" PH_LOG_ICON_DETAIL_THUMBNAIL_MASKING_IMAGE +#define PH_LOG_ICON_DETAIL_THUMBNAIL "contacts_default_134.png" + +#define PH_LOG_ICON_LIST_THUMBNAIL_MASKING_IMAGE "logs_id_default_bg_74.png" +#define PH_LOG_ICON_LIST_THUMBNAIL_MASKING PHIMGDIR"" PH_LOG_ICON_LIST_THUMBNAIL_MASKING_IMAGE +#define PH_LOG_ICON_LIST_THUMBNAIL "contacts_default_74.png" + +// Log info icon +#define PH_LOG_ICON_INFO_CONTAINER "logs_icon_info_bg.png" +#define PH_LOG_ICON_INFO "logs_icon_info.png" + +// call state icon +#define PH_LOG_ICON_CONTAINER "logs_icon_badge_container_02.png" +#define PH_LOG_ICON_INCOMING "logs_icon_in.png" +#define PH_LOG_ICON_OUTGOING "logs_icon_out.png" +#define PH_LOG_ICON_MISSED "logs_icon_missed.png" +#define PH_LOG_ICON_REJECTED "logs_icon_reject.png" +#define PH_LOG_ICON_AUTO_REJECTED "logs_icon_reject_auto.png" + +//log detail button image +#define PH_LOG_ICON_DETAIL_MESSAGE "logs_icon_call_message.PNG" +#define PH_LOG_ICON_DETAIL_VOICE_CALL "logs_icon_call.PNG" +#define PH_LOG_ICON_DETAIL_VIDEO_CALL "logs_icon_call_02.png" + +#define PH_LOG_ICON_DETAIL_BACK_ICON "logs_details_back_ic.png" + +#endif diff --git a/lib-phone/ph-common/inc/PhStrings.h b/lib-phone/ph-common/inc/PhStrings.h new file mode 100644 index 0000000..a3038b6 --- /dev/null +++ b/lib-phone/ph-common/inc/PhStrings.h @@ -0,0 +1,432 @@ +/* + * 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_STRINGS_H_ //auto-generated on 2014. 12. 05. (금) 17:45:57 KST +#define __PH_STRINGS_H_ + + +#define STRING_PACKAGE "contacts" +#define PST_(did) dgettext("sys_string", did) +#define PAT_(did) dgettext(STRING_PACKAGE, did) +#define PXT_(did) did + + +#define PH_PB_SK_CREATE_ABB "IDS_PB_SK_CREATE_ABB" +#define PH_MF_POP_INPUT_TEXT "IDS_MF_POP_INPUT_TEXT" +#define PH_PB_BODY_PHOTO "IDS_PB_BODY_PHOTO" +#define PH_PB_TAB_CONTACTS "IDS_PB_TAB_CONTACTS" +#define PH_PB_BODY_ADD_ACCOUNT "IDS_PB_BODY_ADD_ACCOUNT" +#define PH_PB_BODY_OTHER_EMAILS "IDS_PB_BODY_OTHER_EMAILS" +#define PH_PB_MBODY_SCANNING_DEVICES_ING "IDS_PB_MBODY_SCANNING_DEVICES_ING" +#define PH_PB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED "IDS_PB_POP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED" +#define PH_PB_BODY_AB_M_BLOOD "IDS_PB_BODY_AB_M_BLOOD" +#define PH_PB_BODY_IMAGE "IDS_PB_BODY_IMAGE" +#define PH_PB_POP_ADDING_ING "IDS_PB_POP_ADDING_ING" +#define PH_PB_POP_REMOVING "IDS_PB_POP_REMOVING" +#define PH_PB_BODY_NO_GROUPS "IDS_PB_BODY_NO_GROUPS" +#define PH_PB_HEADER_PHONE_M_CALL "IDS_PB_HEADER_PHONE_M_CALL" +#define PH_COM_BODY_PRIVATE_NUMBER "IDS_COM_BODY_PRIVATE_NUMBER" +#define PH_CALL_BODY_PAYPHONE "IDS_CALL_BODY_PAYPHONE" +#define PH_COM_POP_CONNECTION_PROBLEM_OR_INVALID_MMI_CODE "IDS_COM_POP_CONNECTION_PROBLEM_OR_INVALID_MMI_CODE" +#define PH_PB_BODY_BUTTON_FOR_EXPANDING_THE_LIST_T_TTS "IDS_PB_BODY_BUTTON_FOR_EXPANDING_THE_LIST_T_TTS" +#define PH_PB_BUTTON_TRY_AGAIN "IDS_PB_BUTTON_TRY_AGAIN" +#define PH_PB_HEADER_SELECT_SIM_CARD_TO_CALL "IDS_PB_HEADER_SELECT_SIM_CARD_TO_CALL" +#define PH_PB_BODY_GALLERY "IDS_PB_BODY_GALLERY" +#define PH_PB_HEADER_CONTACTS_M_APPLICATION "IDS_PB_HEADER_CONTACTS_M_APPLICATION" +#define PH_PB_OPT_ACCOUNT "IDS_PB_OPT_ACCOUNT" +#define PH_PB_HEADER_DELETE_ITEM "IDS_PB_HEADER_DELETE_ITEM" +#define PH_PB_POP_MOVE_COMPLETED "IDS_PB_POP_MOVE_COMPLETED" +#define PH_PB_BODY_MOVING_ING "IDS_PB_BODY_MOVING_ING" +#define PH_ST_POP_PUK2_VERIFIED "IDS_ST_POP_PUK2_VERIFIED" +#define PH_ST_POP_PUK1_VERIFIED "IDS_ST_POP_PUK1_VERIFIED" +#define PH_ST_POP_PIN_UNBLOCKED "IDS_ST_POP_PIN_UNBLOCKED" +#define PH_ST_POP_PIN_CHANGED "IDS_ST_POP_PIN_CHANGED" +#define PH_ST_POP_PIN2_UNBLOCKED "IDS_ST_POP_PIN2_UNBLOCKED" +#define PH_ST_POP_PIN2_CHANGED "IDS_ST_POP_PIN2_CHANGED" +#define PH_ST_POP_PIN2_BLOCKED "IDS_ST_POP_PIN2_BLOCKED" +#define PH_ST_POP_PIN1_CHANGED "IDS_ST_POP_PIN1_CHANGED" +#define PH_ST_POP_PIN1_BLOCKED "IDS_ST_POP_PIN1_BLOCKED" +#define PH_ST_POP_INCORRECT_PUK2_PD_ATTEMPTS_LEFT "IDS_ST_POP_INCORRECT_PUK2_PD_ATTEMPTS_LEFT" +#define PH_ST_POP_INCORRECT_PUK2_CODE "IDS_ST_POP_INCORRECT_PUK2_CODE" +#define PH_ST_POP_INCORRECT_PUK1_PD_ATTEMPTS_LEFT "IDS_ST_POP_INCORRECT_PUK1_PD_ATTEMPTS_LEFT" +#define PH_ST_POP_INCORRECT_PUK1_CODE "IDS_ST_POP_INCORRECT_PUK1_CODE" +#define PH_ST_POP_INCORRECT_PIN2 "IDS_ST_POP_INCORRECT_PIN2" +#define PH_ST_POP_INCORRECT_PIN1 "IDS_ST_POP_INCORRECT_PIN1" +#define PH_ST_BODY_NEW_PIN2_AND_CONFIRM_PIN2_DO_NOT_MATCH "IDS_ST_BODY_NEW_PIN2_AND_CONFIRM_PIN2_DO_NOT_MATCH" +#define PH_LCKSCN_HEADER_INCORRECT_PIN_ABB "IDS_LCKSCN_HEADER_INCORRECT_PIN_ABB" +#define PH_PB_HEADER_UNABLE_TO_ADD "IDS_PB_HEADER_UNABLE_TO_ADD" +#define PH_PB_HEADER_UNABLE_TO_ADD_ABB "IDS_PB_HEADER_UNABLE_TO_ADD_ABB" +#define PH_PB_BODY_AUTO_RECOMMENDATIONS_CAN_EXTRACT_THE_HIGHLIGHTS_FROM_SOUND_FILES "IDS_PB_BODY_AUTO_RECOMMENDATIONS_CAN_EXTRACT_THE_HIGHLIGHTS_FROM_SOUND_FILES" +#define PH_IDLE_BODY_SIM_BLOCKED "IDS_IDLE_BODY_SIM_BLOCKED" +#define PH_ST_POP_PIN_BLOCKED "IDS_ST_POP_PIN_BLOCKED" +#define PH_KPD_ITAB3_KEYPAD "IDS_KPD_ITAB3_KEYPAD" +#define PH_KPD_OPT_ADD_2_SECOND_PAUSE_ABB "IDS_KPD_OPT_ADD_2_SECOND_PAUSE_ABB" +#define PH_KPD_OPT_ADD_WAIT_ABB "IDS_KPD_OPT_ADD_WAIT_ABB" +#define PH_KPD_OPT_SPEED_DIAL_SETTINGS_ABB2 "IDS_KPD_OPT_SPEED_DIAL_SETTINGS_ABB2" +#define PH_KPD_OPT_CALL_SETTINGS_ABB "IDS_KPD_OPT_CALL_SETTINGS_ABB" +#define PH_KPD_HEADER_ASSIGN_AS_SPEED_DIAL_NUMBER_ABB "IDS_KPD_HEADER_ASSIGN_AS_SPEED_DIAL_NUMBER_ABB" +#define PH_KPD_BUTTON_CANCEL_ABB "IDS_KPD_BUTTON_CANCEL_ABB" +#define PH_KPD_TPOP_SPEED_DIAL_NUMBER_ASSIGNED "IDS_KPD_TPOP_SPEED_DIAL_NUMBER_ASSIGNED" +#define PH_KPD_BUTTON_ADD_TO_CONTACTS_ABB2 "IDS_KPD_BUTTON_ADD_TO_CONTACTS_ABB2" +#define PH_KPD_OPT_CREATE_CONTACT_ABB2 "IDS_KPD_OPT_CREATE_CONTACT_ABB2" +#define PH_KPD_OPT_VOICEMAIL_ABB "IDS_KPD_OPT_VOICEMAIL_ABB" +#define PH_KPD_TPOP_SPEED_DIAL_NUMBER_PD_REMOVED "IDS_KPD_TPOP_SPEED_DIAL_NUMBER_PD_REMOVED" +#define PH_KPD_HEADER_EMERGENCY_CALL_ABB2 "IDS_KPD_HEADER_EMERGENCY_CALL_ABB2" +#define PH_KPD_OPT_REMOVE "IDS_KPD_OPT_REMOVE" +#define PH_KPD_HEADER_UNABLE_TO_CONNECT_TO_NETWORK_ABB "IDS_KPD_HEADER_UNABLE_TO_CONNECT_TO_NETWORK_ABB" +#define PH_PB_BODY_UPDATING_CONTACT_LIST_ING "IDS_PB_BODY_UPDATING_CONTACT_LIST_ING" +#define PH_PB_HEADER_MAINLIST "IDS_PB_HEADER_MAINLIST" +#define PH_MUSIC_POP_INVALID_CHARACTER "IDS_MUSIC_POP_INVALID_CHARACTER" +#define PH_PB_OPT_UPDATE_SERVICE_PROVIDER_INFO "IDS_PB_OPT_UPDATE_SERVICE_PROVIDER_INFO" +#define PH_PB_BODY_THE_SERVICE_PROVIDER_INFORMATION_OF_THE_SELECTED_CONTACTS_WILL_BE_UPDATED_MSG "IDS_PB_BODY_THE_SERVICE_PROVIDER_INFORMATION_OF_THE_SELECTED_CONTACTS_WILL_BE_UPDATED_MSG" +#define PH_PB_HEADER_SERVICE_PROVIDER "IDS_PB_HEADER_SERVICE_PROVIDER" +#define PH_PB_POP_SOME_OR_ALL_CONTACTS_MAY_NOT_HAVE_BEEN_UPDATED "IDS_PB_POP_SOME_OR_ALL_CONTACTS_MAY_NOT_HAVE_BEEN_UPDATED" +#define PH_PB_POP_UPDATING_SERVICE_PROVIDER_INFO_ING "IDS_PB_POP_UPDATING_SERVICE_PROVIDER_INFO_ING" +#define PH_PB_POP_1_PHONE_NUMBER_HAS_BEEN_UPDATED "IDS_PB_POP_1_PHONE_NUMBER_HAS_BEEN_UPDATED" +#define PH_PB_POP_PD_PHONE_NUMBERS_HAVE_BEEN_UPDATED "IDS_PB_POP_PD_PHONE_NUMBERS_HAVE_BEEN_UPDATED" +#define PH_PB_BODY_CHAMADA_CERTA_APPLICATION_IDENTIFIES_THE_SERVICE_PROVIDER_OF_YOUR_CONTACTS_AND_CHOOSES_A_SIM_CARD_OF_THE_SAME_SERVICE_PROVIDER_TO_MAKE_A_CALL_MSG_LAX "IDS_PB_BODY_CHAMADA_CERTA_APPLICATION_IDENTIFIES_THE_SERVICE_PROVIDER_OF_YOUR_CONTACTS_AND_CHOOSES_A_SIM_CARD_OF_THE_SAME_SERVICE_PROVIDER_TO_MAKE_A_CALL_MSG_LAX" +#define PH_PB_POP_THE_CHAMADA_CERTA_FEATURE_CAN_BE_USED_TO_IDENTIFY_YOUR_CONTACTS_SERVICE_PROVIDERS_AND_DISPLAY_THEM_IN_YOUR_CONTACT_LIST_MSG "IDS_PB_POP_THE_CHAMADA_CERTA_FEATURE_CAN_BE_USED_TO_IDENTIFY_YOUR_CONTACTS_SERVICE_PROVIDERS_AND_DISPLAY_THEM_IN_YOUR_CONTACT_LIST_MSG" +#define PH_PB_BODY_DISCARD_CHANGES "IDS_PB_BODY_DISCARD_CHANGES" +#define PH_PB_POP_ALREADY_EXISTS_LC "IDS_PB_POP_ALREADY_EXISTS_LC" +#define PH_PB_BODY_SELECTED_MADJ "IDS_PB_BODY_SELECTED_MADJ" +#define PH_PB_HEADER_SELECT "IDS_PB_HEADER_SELECT" +#define PH_ST_BODY_SET_DATE "IDS_ST_BODY_SET_DATE" +#define PH_PB_NPBODY_SEARCH "IDS_PB_NPBODY_SEARCH" +#define PH_PB_HEADER_FAVOURITES "IDS_PB_HEADER_FAVOURITES" +#define PH_PB_HEADER_ME "IDS_PB_HEADER_ME" +#define PH_PB_OPT_CREATE "IDS_PB_OPT_CREATE" +#define PH_PB_OPT_SHARE "IDS_PB_OPT_SHARE" +#define PH_PB_OPT_MANAGE_FAVOURITES_ABB "IDS_PB_OPT_MANAGE_FAVOURITES_ABB" +#define PH_PB_OPT_SETTINGS "IDS_PB_OPT_SETTINGS" +#define PH_LOGS_SBODY_UNSAVED_M_STATUS "IDS_LOGS_SBODY_UNSAVED_M_STATUS" +#define PH_LOGS_SBODY_SAVED_M_STATUS "IDS_LOGS_SBODY_SAVED_M_STATUS" +#define PH_LOGS_MBODY_UNKNOWN "IDS_LOGS_MBODY_UNKNOWN" +#define PH_LOGS_MBODY_UNKNOWN_NUMBER_ABB "IDS_LOGS_MBODY_UNKNOWN_NUMBER_ABB" +#define PH_LOGS_NPBODY_MISSED_CALLS_ABB "IDS_LOGS_NPBODY_MISSED_CALLS_ABB" +#define PH_LOGS_BODY_VOICE_CALLS_ABB "IDS_LOGS_BODY_VOICE_CALLS_ABB" +#define PH_LOGS_BODY_VIDEO_CALLS_ABB "IDS_LOGS_BODY_VIDEO_CALLS_ABB" +#define PH_LOGS_HEADER_DELETE "IDS_LOGS_HEADER_DELETE" +#define PH_CLOG_OPT_VIEW_BY "IDS_CLOG_OPT_VIEW_BY" +#define PH_LOGS_HEADER_DELETE_LOG_ABB "IDS_LOGS_HEADER_DELETE_LOG_ABB" +#define PH_LOGS_HEADER_DELETE_LOG_ITEMS_ABB "IDS_LOGS_HEADER_DELETE_LOG_ITEMS_ABB" +#define PH_LOGS_HEADER_DELETE_PD_LOGS_ABB "IDS_LOGS_HEADER_DELETE_PD_LOGS_ABB" +#define PH_LOGS_POP_1_LOG_ITEM_WILL_BE_DELETED "IDS_LOGS_POP_1_LOG_ITEM_WILL_BE_DELETED" +#define PH_LOGS_POP_PD_LOG_ITEMS_WILL_BE_DELETED "IDS_LOGS_POP_PD_LOG_ITEMS_WILL_BE_DELETED" +#define PH_LOGS_POP_ALL_LOG_ITEMS_WILL_BE_DELETED "IDS_LOGS_POP_ALL_LOG_ITEMS_WILL_BE_DELETED" +#define PH_LOGS_BUTTON_CANCEL_ABB3 "IDS_LOGS_BUTTON_CANCEL_ABB3" +#define PH_LOGS_BUTTON_DELETE_ABB4 "IDS_LOGS_BUTTON_DELETE_ABB4" +#define PH_LOGS_HEADER_PD_SELECTED_ABB3 "IDS_LOGS_HEADER_PD_SELECTED_ABB3" +#define PH_LOGS_MBODY_SELECT_ALL "IDS_LOGS_MBODY_SELECT_ALL" +#define PH_LOGS_OPT_SEND_NUMBER "IDS_LOGS_OPT_SEND_NUMBER" +#define PH_LOGS_NPBODY_DO_NOT_SHOW_AGAIN_ABB "IDS_LOGS_NPBODY_DO_NOT_SHOW_AGAIN_ABB" +#define PH_LOGS_BODY_SIM_CARD "IDS_LOGS_BODY_SIM_CARD" +#define PH_PB_BODY_AFTER_YOU_CREATE_CONTACTS_THEY_WILL_BE_SHOWN_HERE "IDS_PB_BODY_AFTER_YOU_CREATE_CONTACTS_THEY_WILL_BE_SHOWN_HERE" +#define PH_PB_BODY_CONTACTS_THAT_HAVE_BEEN_IDENTIFIED_AS_BEING_DUPLICATES_WILL_BE_SUGGESTED_AUTOMATICALLY "IDS_PB_BODY_CONTACTS_THAT_HAVE_BEEN_IDENTIFIED_AS_BEING_DUPLICATES_WILL_BE_SUGGESTED_AUTOMATICALLY" +#define PH_LOGS_BODY_AFTER_YOU_MAKE_OR_RECEIVE_CALLS_LOG_ITEMS_WILL_BE_SHOWN_HERE "IDS_LOGS_BODY_AFTER_YOU_MAKE_OR_RECEIVE_CALLS_LOG_ITEMS_WILL_BE_SHOWN_HERE" +#define PH_PB_ITAB3_CONTACTS "IDS_PB_ITAB3_CONTACTS" +#define PH_LOGS_ITAB3_LOGS "IDS_LOGS_ITAB3_LOGS" +#define PH_PB_NPBODY_NO_CONTACTS "IDS_PB_NPBODY_NO_CONTACTS" +#define PH_PB_MBODY_SET_PROFILE "IDS_PB_MBODY_SET_PROFILE" +#define PH_PB_HEADER_MANAGE_FAVOURITES_ABB "IDS_PB_HEADER_MANAGE_FAVOURITES_ABB" +#define PH_PB_OPT_REORDER "IDS_PB_OPT_REORDER" +#define PH_PB_POP_THE_MAXIMUM_NUMBER_OF_CONTACTS_THAT_CAN_BE_SHARED_AT_ONE_TIME_HP1SD_HAS_BEEN_EXCEEDED_ONLY_THE_FIRST_P2SD_WILL_BE_SHARED "IDS_PB_POP_THE_MAXIMUM_NUMBER_OF_CONTACTS_THAT_CAN_BE_SHARED_AT_ONE_TIME_HP1SD_HAS_BEEN_EXCEEDED_ONLY_THE_FIRST_P2SD_WILL_BE_SHARED" +#define PH_PB_BUTTON_OK_ABB2 "IDS_PB_BUTTON_OK_ABB2" +#define PH_PB_POP_1_CONTACT_WILL_BE_DELETED "IDS_PB_POP_1_CONTACT_WILL_BE_DELETED" +#define PH_PB_POP_PD_CONTACTS_WILL_BE_DELETED "IDS_PB_POP_PD_CONTACTS_WILL_BE_DELETED" +#define PH_PB_POP_ALL_CONTACTS_WILL_BE_DELETED "IDS_PB_POP_ALL_CONTACTS_WILL_BE_DELETED" +#define PH_PB_BUTTON_CANCEL "IDS_PB_BUTTON_CANCEL" +#define PH_PB_BUTTON_DELETE_ABB4 "IDS_PB_BUTTON_DELETE_ABB4" +#define PH_PB_HEADER_REORDER "IDS_PB_HEADER_REORDER" +#define PH_PB_HEADER_MERGE_CONTACTS_ABB "IDS_PB_HEADER_MERGE_CONTACTS_ABB" +#define PH_PB_TPOP_SOME_OF_YOUR_CONTACTS_APPEAR_TO_BE_DUPLICATES "IDS_PB_TPOP_SOME_OF_YOUR_CONTACTS_APPEAR_TO_BE_DUPLICATES" +#define PH_PB_TPOP_CONTACTS_LINKED "IDS_PB_TPOP_CONTACTS_LINKED" +#define PH_PB_HEADER_CREATE "IDS_PB_HEADER_CREATE" +#define PH_PB_BODY_NAME "IDS_PB_BODY_NAME" +#define PH_PB_BODY_TITLE_M_NAMEPREFIX "IDS_PB_BODY_TITLE_M_NAMEPREFIX" +#define PH_PB_BODY_FIRST_NAME_ABB "IDS_PB_BODY_FIRST_NAME_ABB" +#define PH_PB_BODY_MIDDLE_NAME_ABB "IDS_PB_BODY_MIDDLE_NAME_ABB" +#define PH_PB_BODY_LAST_NAME_ABB "IDS_PB_BODY_LAST_NAME_ABB" +#define PH_PB_BODY_NAME_SUFFIX_ABB "IDS_PB_BODY_NAME_SUFFIX_ABB" +#define PH_PB_BODY_PHONETIC_NAME_ABB "IDS_PB_BODY_PHONETIC_NAME_ABB" +#define PH_PB_BODY_NICKNAME_ABB "IDS_PB_BODY_NICKNAME_ABB" +#define PH_PB_OPT_ORGANISATION_ABB "IDS_PB_OPT_ORGANISATION_ABB" +#define PH_PB_BODY_COMPANY_ABB "IDS_PB_BODY_COMPANY_ABB" +#define PH_PB_BODY_JOB_TITLE_ABB "IDS_PB_BODY_JOB_TITLE_ABB" +#define PH_PB_BUTTON_PHONE "IDS_PB_BUTTON_PHONE" +#define PH_PB_BODY_PHONE_NUMBER_ABB "IDS_PB_BODY_PHONE_NUMBER_ABB" +#define PH_PB_OPT_MOBILE "IDS_PB_OPT_MOBILE" +#define PH_PB_OPT_WORK "IDS_PB_OPT_WORK" +#define PH_PB_OPT_HOME "IDS_PB_OPT_HOME" +#define PH_PB_OPT_MAIN "IDS_PB_OPT_MAIN" +#define PH_PB_OPT_FAX_HWORK_ABB "IDS_PB_OPT_FAX_HWORK_ABB" +#define PH_PB_OPT_FAX_HHOME_ABB "IDS_PB_OPT_FAX_HHOME_ABB" +#define PH_PB_OPT_PAGER "IDS_PB_OPT_PAGER" +#define PH_PB_OPT_OTHER "IDS_PB_OPT_OTHER" +#define PH_PB_OPT_CUSTOM "IDS_PB_OPT_CUSTOM" +#define PH_PB_BUTTON_EMAIL_ABB3 "IDS_PB_BUTTON_EMAIL_ABB3" +#define PH_PB_BODY_EMAIL "IDS_PB_BODY_EMAIL" +#define PH_PB_BUTTON_NOTES "IDS_PB_BUTTON_NOTES" +#define PH_PB_BODY_NOTES "IDS_PB_BODY_NOTES" +#define PH_PB_BUTTON_MORE "IDS_PB_BUTTON_MORE" +#define PH_PB_OPT_SAVE_CONTACT_TO "IDS_PB_OPT_SAVE_CONTACT_TO" +#define PH_PB_BODY_ADDRESS_ABB2 "IDS_PB_BODY_ADDRESS_ABB2" +#define PH_PB_BODY_DATE "IDS_PB_BODY_DATE" +#define PH_PB_OPT_BIRTHDAY "IDS_PB_OPT_BIRTHDAY" +#define PH_PB_OPT_ANNIVERSARY_ABB "IDS_PB_OPT_ANNIVERSARY_ABB" +#define PH_PB_OPT_RELATIONSHIP_ABB2 "IDS_PB_OPT_RELATIONSHIP_ABB2" +#define PH_PB_OPT_ASSISTANT_M_CONTACTS "IDS_PB_OPT_ASSISTANT_M_CONTACTS" +#define PH_PB_OPT_BROTHER "IDS_PB_OPT_BROTHER" +#define PH_PB_OPT_CHILD "IDS_PB_OPT_CHILD" +#define PH_PB_OPT_DOMESTIC_PARTNER_ABB2 "IDS_PB_OPT_DOMESTIC_PARTNER_ABB2" +#define PH_PB_OPT_FATHER "IDS_PB_OPT_FATHER" +#define PH_PB_OPT_FRIEND "IDS_PB_OPT_FRIEND" +#define PH_PB_OPT_MANAGER "IDS_PB_OPT_MANAGER" +#define PH_PB_OPT_MOTHER "IDS_PB_OPT_MOTHER" +#define PH_PB_OPT_PARENT "IDS_PB_OPT_PARENT" +#define PH_PB_OPT_PARTNER "IDS_PB_OPT_PARTNER" +#define PH_PB_OPT_REFERRED_BY_ABB "IDS_PB_OPT_REFERRED_BY_ABB" +#define PH_PB_OPT_RELATIVE "IDS_PB_OPT_RELATIVE" +#define PH_PB_OPT_SISTER "IDS_PB_OPT_SISTER" +#define PH_PB_OPT_SPOUSE "IDS_PB_OPT_SPOUSE" +#define PH_PB_BODY_WEBSITE_ABB "IDS_PB_BODY_WEBSITE_ABB" +#define PH_PB_BODY_IM "IDS_PB_BODY_IM" +#define PH_PB_OPT_AIM "IDS_PB_OPT_AIM" +#define PH_PB_OPT_YAHOO_E "IDS_PB_OPT_YAHOO_E" +#define PH_PB_OPT_SKYPE "IDS_PB_OPT_SKYPE" +#define PH_PB_OPT_QQ "IDS_PB_OPT_QQ" +#define PH_PB_OPT_HANGOUTS "IDS_PB_OPT_HANGOUTS" +#define PH_PB_OPT_ICQ "IDS_PB_OPT_ICQ" +#define PH_PB_OPT_JABBER "IDS_PB_OPT_JABBER" +#define PH_PB_HEADER_SAVE_CONTACTS_TO_ABB "IDS_PB_HEADER_SAVE_CONTACTS_TO_ABB" +#define PH_PB_POP_NEW_CONTACTS_WILL_BE_SAVED_IN_CONTACTS_ON_YOUR_DEVICE "IDS_PB_POP_NEW_CONTACTS_WILL_BE_SAVED_IN_CONTACTS_ON_YOUR_DEVICE" +#define PH_PB_BUTTON_ADD_ACCOUNT_ABB2 "IDS_PB_BUTTON_ADD_ACCOUNT_ABB2" +#define PH_PB_BUTTON_SAVE "IDS_PB_BUTTON_SAVE" +#define PH_PB_OPT_DEVICE "IDS_PB_OPT_DEVICE" +#define PH_PB_OPT_SIM_CARD "IDS_PB_OPT_SIM_CARD" +#define PH_PB_HEADER_SET_CONTACT_PICTURE_ABB "IDS_PB_HEADER_SET_CONTACT_PICTURE_ABB" +#define PH_PB_OPT_FROM_GALLERY_ABB2 "IDS_PB_OPT_FROM_GALLERY_ABB2" +#define PH_PB_OPT_TAKE_PICTURE_ABB "IDS_PB_OPT_TAKE_PICTURE_ABB" +#define PH_PB_HEADER_CHANGE_SAVE_LOCATION_ABB "IDS_PB_HEADER_CHANGE_SAVE_LOCATION_ABB" +#define PH_PB_POP_SOME_CONTACT_INFORMATION_MAY_BE_LOST "IDS_PB_POP_SOME_CONTACT_INFORMATION_MAY_BE_LOST" +#define PH_PB_BUTTON_CHANGE_ABB "IDS_PB_BUTTON_CHANGE_ABB" +#define PH_PB_HEADER_LINKED_CONTACTS_ABB "IDS_PB_HEADER_LINKED_CONTACTS_ABB" +#define PH_PB_HEADER_ENTER_CUSTOM_LABEL_ABB "IDS_PB_HEADER_ENTER_CUSTOM_LABEL_ABB" +#define PH_PB_BUTTON_CREATE_ABB2 "IDS_PB_BUTTON_CREATE_ABB2" +#define PH_PB_HEADER_SUGGESTED_CONTACTS_ABB "IDS_PB_HEADER_SUGGESTED_CONTACTS_ABB" +#define PH_PB_OPT_DO_NOT_SHOW_AGAIN_ABB2 "IDS_PB_OPT_DO_NOT_SHOW_AGAIN_ABB2" +#define PH_PB_HEADER_PRIMARY_CONTACTS_HPD_ABB "IDS_PB_HEADER_PRIMARY_CONTACTS_HPD_ABB" +#define PH_PB_HEADER_EMERGENCY_SERVICES_ABB "IDS_PB_HEADER_EMERGENCY_SERVICES_ABB" +#define PH_PB_HEADER_PERSONAL_CONTACTS_ABB "IDS_PB_HEADER_PERSONAL_CONTACTS_ABB" +#define PH_PB_HEADER_REMOVE "IDS_PB_HEADER_REMOVE" +#define PH_PB_OPT_ADD "IDS_PB_OPT_ADD" +#define PH_PB_OPT_REMOVE "IDS_PB_OPT_REMOVE" +#define PH_PB_NPBODY_NO_RESULTS_FOUND_ABB "IDS_PB_NPBODY_NO_RESULTS_FOUND_ABB" +#define PH_PB_HEADER_SETTINGS "IDS_PB_HEADER_SETTINGS" +#define PH_PB_HEADER_CONTACTS_TO_DISPLAY_ABB "IDS_PB_HEADER_CONTACTS_TO_DISPLAY_ABB" +#define PH_PB_TMBODY_CONTACTS_TO_DISPLAY "IDS_PB_TMBODY_CONTACTS_TO_DISPLAY" +#define PH_PB_SBODY_ALL_CONTACTS "IDS_PB_SBODY_ALL_CONTACTS" +#define PH_PB_MBODY_DISPLAY_CONTACTS_WITH_NUMBERS_ABB "IDS_PB_MBODY_DISPLAY_CONTACTS_WITH_NUMBERS_ABB" +#define PH_PB_MBODY_SORT_BY "IDS_PB_MBODY_SORT_BY" +#define PH_PB_OPT_FIRST_NAME "IDS_PB_OPT_FIRST_NAME" +#define PH_PB_OPT_LAST_NAME "IDS_PB_OPT_LAST_NAME" +#define PH_PB_OPT_FIRST_NAME_FIRST_ABB "IDS_PB_OPT_FIRST_NAME_FIRST_ABB" +#define PH_PB_OPT_LAST_NAME_FIRST_ABB "IDS_PB_OPT_LAST_NAME_FIRST_ABB" +#define PH_PB_TMBODY_LINK_CONTACTS "IDS_PB_TMBODY_LINK_CONTACTS" +#define PH_PB_TMBODY_MERGE_CONTACTS "IDS_PB_TMBODY_MERGE_CONTACTS" +#define PH_PB_MBODY_IMPORT "IDS_PB_MBODY_IMPORT" +#define PH_PB_MBODY_EXPORT "IDS_PB_MBODY_EXPORT" +#define PH_PB_BODY_ACCOUNTS "IDS_PB_BODY_ACCOUNTS" +#define PH_PB_TMBODY_SERVICE_NUMBERS "IDS_PB_TMBODY_SERVICE_NUMBERS" +#define PH_PB_MBODY_SEND_CONTACT_INFORMATION_ABB "IDS_PB_MBODY_SEND_CONTACT_INFORMATION_ABB" +#define PH_PB_OPT_SD_CARD "IDS_PB_OPT_SD_CARD" +#define PH_PB_HEADER_IMPORT "IDS_PB_HEADER_IMPORT" +#define PH_PB_SBODY_IMPORTING_CONTACTS_ING_ABB "IDS_PB_SBODY_IMPORTING_CONTACTS_ING_ABB" +#define PH_PB_SBODY_CONTACTS_IMPORTED_M_STATUS_ABB "IDS_PB_SBODY_CONTACTS_IMPORTED_M_STATUS_ABB" +#define PH_PB_SBODY_IMPORTING_CANCELLED_M_STATUS_ABB "IDS_PB_SBODY_IMPORTING_CANCELLED_M_STATUS_ABB" +#define PH_PB_MBODY_1_CONTACT_ABB "IDS_PB_MBODY_1_CONTACT_ABB" +#define PH_PB_MBODY_PD_CONTACTS_ABB "IDS_PB_MBODY_PD_CONTACTS_ABB" +#define PH_PB_HEADER_CANCEL_IMPORTING_ABB "IDS_PB_HEADER_CANCEL_IMPORTING_ABB" +#define PH_PB_POP_TAP_OK_TO_STOP_IMPORTING_CONTACTS_FROM_SIM_CARD "IDS_PB_POP_TAP_OK_TO_STOP_IMPORTING_CONTACTS_FROM_SIM_CARD" +#define PH_PB_HEADER_EXPORT "IDS_PB_HEADER_EXPORT" +#define PH_PB_SBODY_EXPORTING_CONTACTS_ING_ABB "IDS_PB_SBODY_EXPORTING_CONTACTS_ING_ABB" +#define PH_PB_SBODY_CONTACTS_EXPORTED_M_STATUS_ABB "IDS_PB_SBODY_CONTACTS_EXPORTED_M_STATUS_ABB" +#define PH_PB_SBODY_EXPORTING_CANCELLED_M_STATUS_ABB "IDS_PB_SBODY_EXPORTING_CANCELLED_M_STATUS_ABB" +#define PH_PB_HEADER_CANCEL_EXPORTING_ABB "IDS_PB_HEADER_CANCEL_EXPORTING_ABB" +#define PH_PB_POP_TAP_OK_TO_STOP_EXPORTING_CONTACTS_TO_PS "IDS_PB_POP_TAP_OK_TO_STOP_EXPORTING_CONTACTS_TO_PS" +#define PH_PB_HEADER_SEND_CONTACT_INFORMATION_ABB "IDS_PB_HEADER_SEND_CONTACT_INFORMATION_ABB" +#define PH_PB_MBODY_SEND_TOGETHER_ABB "IDS_PB_MBODY_SEND_TOGETHER_ABB" +#define PH_PB_MBODY_SEND_INDIVIDUALLY_ABB "IDS_PB_MBODY_SEND_INDIVIDUALLY_ABB" +#define PH_PB_BODY_SELECT_HOW_TO_SEND_CONTACT_INFORMATION "IDS_PB_BODY_SELECT_HOW_TO_SEND_CONTACT_INFORMATION" +#define PH_PB_BODY_SENDING_A_NUMBER_OF_CONTACTS_TOGETHER_REDUCES_TRANSMISSION_TIME_HOWEVER_IF_THE_OTHER_DEVICE_DOES_NOT_SUPPORT_THIS_ONLY_ONE_CONTACT_WILL_BE_SENT "IDS_PB_BODY_SENDING_A_NUMBER_OF_CONTACTS_TOGETHER_REDUCES_TRANSMISSION_TIME_HOWEVER_IF_THE_OTHER_DEVICE_DOES_NOT_SUPPORT_THIS_ONLY_ONE_CONTACT_WILL_BE_SENT" +#define PH_PB_BODY_SENDING_NAME_CARDS_INDIVIDUALLY_MAY_TAKE_LONGER_BECAUSE_THE_RECEIVING_DEVICE_MUST_ACCEPT_THEM_ONE_AT_A_TIME "IDS_PB_BODY_SENDING_NAME_CARDS_INDIVIDUALLY_MAY_TAKE_LONGER_BECAUSE_THE_RECEIVING_DEVICE_MUST_ACCEPT_THEM_ONE_AT_A_TIME" +#define PH_PB_HEADER_PD_SELECTED_ABB3 "IDS_PB_HEADER_PD_SELECTED_ABB3" +#define PH_PB_MBODY_SELECT_ALL "IDS_PB_MBODY_SELECT_ALL" +#define PH_PB_BODY_CONTACTS "IDS_PB_BODY_CONTACTS" +#define PH_PB_NPBODY_TAP_TO_ADD_SHORTCUT "IDS_PB_NPBODY_TAP_TO_ADD_SHORTCUT" +#define PH_PB_OPT_VOICE_CALL "IDS_PB_OPT_VOICE_CALL" +#define PH_PB_OPT_MESSAGE "IDS_PB_OPT_MESSAGE" +#define PH_PB_OPT_VIDEO_CALL "IDS_PB_OPT_VIDEO_CALL" +#define PH_PB_HEADER_SELECT_SIM_CARD_FOR_CALL_ABB "IDS_PB_HEADER_SELECT_SIM_CARD_FOR_CALL_ABB" +#define PH_LOGS_BODY_ALL_CALLS "IDS_LOGS_BODY_ALL_CALLS" +#define PH_LOGS_HEADER_TODAY "IDS_LOGS_HEADER_TODAY" +#define PH_LOGS_HEADER_YESTERDAY "IDS_LOGS_HEADER_YESTERDAY" +#define PH_LOGS_OPT_DELETE "IDS_LOGS_OPT_DELETE" +#define PH_LOGS_OPT_CALL_DURATIONS_ABB "IDS_LOGS_OPT_CALL_DURATIONS_ABB" +#define PH_LOGS_BODY_AFTER_YOU_MAKE_OR_RECEIVE_CALLS_THEY_WILL_BE_LOGGED_HERE "IDS_LOGS_BODY_AFTER_YOU_MAKE_OR_RECEIVE_CALLS_THEY_WILL_BE_LOGGED_HERE" +#define PH_PB_HEADER_USB_STORAGE_NOT_AVAILABLE "IDS_PB_HEADER_USB_STORAGE_NOT_AVAILABLE" +#define PH_PB_BODY_EXPORT_TO_SIM2_CARD "IDS_PB_BODY_EXPORT_TO_SIM2_CARD" +#define PH_PB_BODY_EXPORT_TO_SIM_CARD "IDS_PB_BODY_EXPORT_TO_SIM_CARD" +#define PH_PB_BODY_IMPORT_FROM_SIM2_CARD "IDS_PB_BODY_IMPORT_FROM_SIM2_CARD" +#define PH_PB_BODY_IMPORT_FROM_SIM_CARD "IDS_PB_BODY_IMPORT_FROM_SIM_CARD" +#define PH_PB_NPBODY_NO_SERVICE_NUMBERS "IDS_PB_NPBODY_NO_SERVICE_NUMBERS" +#define PH_CHATON_ACBUTTON_EDIT_ABB "MIDS_CHATON_ACBUTTON_EDIT_ABB" +#define PH_PB_BODY_FAX "IDS_PB_BODY_FAX" +#define PH_PB_OPT_HOME_ABB "IDS_PB_OPT_HOME_ABB" +#define PH_ST_BODY_AFTER_YOU_CREATE_PRIMARY_CONTACTS_THEY_WILL_BE_SHOWN_HERE "IDS_ST_BODY_AFTER_YOU_CREATE_PRIMARY_CONTACTS_THEY_WILL_BE_SHOWN_HERE" +#define PH_ST_HEADER_PRIMARY_CONTACTS_ABB "IDS_ST_HEADER_PRIMARY_CONTACTS_ABB" +#define PH_ST_NPBODY_NO_PRIMARY_CONTACTS "IDS_ST_NPBODY_NO_PRIMARY_CONTACTS" +#define PH_ST_OPT_ADD_EXISTING_CONTACT_ABB "IDS_ST_OPT_ADD_EXISTING_CONTACT_ABB" +#define PH_ST_HEADER_ADD_PRIMARY_CONTACTS_ABB2 "IDS_ST_HEADER_ADD_PRIMARY_CONTACTS_ABB2" +#define PH_ST_HEADER_CREATE_PRIMARY_CONTACT_ABB "IDS_ST_HEADER_CREATE_PRIMARY_CONTACT_ABB" +#define PH_CST_POP_PASSWORDS_DO_NOT_MATCH "IDS_CST_POP_PASSWORDS_DO_NOT_MATCH" +#define PH_KPD_POP_YOUR_PIN_MUST_BE_BETWEEN_P1SD_AND_P2SD_DIGITS_LONG_TRY_AGAIN "IDS_KPD_POP_YOUR_PIN_MUST_BE_BETWEEN_P1SD_AND_P2SD_DIGITS_LONG_TRY_AGAIN" +#define PH_COM_OPT_SIM_CARD_BUSY_TRY_LATER_VODA "IDS_COM_OPT_SIM_CARD_BUSY_TRY_LATER_VODA" +#define PH_COM_BODY_NETWORK_OR_SIM_CARD_ERROR "IDS_COM_BODY_NETWORK_OR_SIM_CARD_ERROR" +#define PH_COM_BODY_SIM_RUIM_CARD_LOCKED "IDS_COM_BODY_SIM_RUIM_CARD_LOCKED" +#define PH_PB_BODY_SIM_CARD_INITIALISING_ING "IDS_PB_BODY_SIM_CARD_INITIALISING_ING" +#define PH_COM_BODY_NO_SIM_CARD_FOUND_PLEASE_INSERT_A_SIM_CARD_INTO_THE_PHONE "IDS_COM_BODY_NO_SIM_CARD_FOUND_PLEASE_INSERT_A_SIM_CARD_INTO_THE_PHONE" +#define PH_ST_BODY_NEW_PIN_AND_CONFIRM_PIN_DO_NOT_MATCH "IDS_ST_BODY_NEW_PIN_AND_CONFIRM_PIN_DO_NOT_MATCH" +#define PH_STU_POP_PIN_BLOCKED_ENTER_PUK_CODE "IDS_STU_POP_PIN_BLOCKED_ENTER_PUK_CODE" +#define PH_CLOG_BODY_PIN2_BLOCKED_CONTACT_PROVIDER_HSIM_PUK2_REQUIRED "IDS_CLOG_BODY_PIN2_BLOCKED_CONTACT_PROVIDER_HSIM_PUK2_REQUIRED" +#define PH_KPD_POP_PIN_HAS_BEEN_DISABLED_ENABLE_PIN_BEFORE_CHANGING "IDS_KPD_POP_PIN_HAS_BEEN_DISABLED_ENABLE_PIN_BEFORE_CHANGING" +#define PH_KPD_POP_YOUR_PIN2_MUST_BE_P1SD_TO_P2SD_DIGITS_TRY_AGAIN "IDS_KPD_POP_YOUR_PIN2_MUST_BE_P1SD_TO_P2SD_DIGITS_TRY_AGAIN" +#define PH_HS_BUTTON_PHONE_M_CALL "IDS_HS_BUTTON_PHONE_M_CALL" +#define PH_KPD_TPOP_ENTER_NUMBER "IDS_KPD_TPOP_ENTER_NUMBER" +#define PH_KPD_BUTTON_SET_NUMBER_ABB "IDS_KPD_BUTTON_SET_NUMBER_ABB" +#define PH_KPD_POP_THERE_IS_NO_CONTACT_ASSIGNED_TO_THIS_SPEED_DIAL_NUMBER_TAP_OK_TO_ASSIGN_ONE_NOW "IDS_KPD_POP_THERE_IS_NO_CONTACT_ASSIGNED_TO_THIS_SPEED_DIAL_NUMBER_TAP_OK_TO_ASSIGN_ONE_NOW" +#define PH_KPD_TPOP_VIBRATION_FEEDBACK_ENABLED "IDS_KPD_TPOP_VIBRATION_FEEDBACK_ENABLED" +#define PH_KPD_TPOP_VIBRATION_FEEDBACK_DISABLED "IDS_KPD_TPOP_VIBRATION_FEEDBACK_DISABLED" +#define PH_KPD_HEADER_SEARCH_RESULTS_HPD_ABB "IDS_KPD_HEADER_SEARCH_RESULTS_HPD_ABB" +#define PH_KPD_OPT_UPDATE_CONTACT_ABB "IDS_KPD_OPT_UPDATE_CONTACT_ABB" +#define PH_KPD_TPOP_UNABLE_TO_CALL_NUMBER_PD_NOT_EMERGENCY_NUMBER "IDS_KPD_TPOP_UNABLE_TO_CALL_NUMBER_PD_NOT_EMERGENCY_NUMBER" +#define PH_KPD_HEADER_SELECT_SIM_CARD_FOR_CALL_ABB "IDS_KPD_HEADER_SELECT_SIM_CARD_FOR_CALL_ABB" +#define PH_CALL_TPOP_INSERT_SIM_CARD "IDS_CALL_TPOP_INSERT_SIM_CARD" +#define PH_CALL_HEADER_USE_PS_SIM_CARD_ABB "IDS_CALL_HEADER_USE_PS_SIM_CARD_ABB" +#define PH_CALL_POP_THE_SERVICE_PROVIDER_OF_THE_CONTACT_YOU_ARE_CALLING_IS_P1SS_TAP_OK_TO_MAKE_THIS_CALL_USING_YOUR_P2SS_SIM_CARD "IDS_CALL_POP_THE_SERVICE_PROVIDER_OF_THE_CONTACT_YOU_ARE_CALLING_IS_P1SS_TAP_OK_TO_MAKE_THIS_CALL_USING_YOUR_P2SS_SIM_CARD" +#define PH_CALL_BUTTON_CURRENT_SIM_ABB "IDS_CALL_BUTTON_CURRENT_SIM_ABB" +#define PH_LOGS_OPT_MISSED_CALLS "IDS_LOGS_OPT_MISSED_CALLS" +#define PH_LOGS_BUTTON_CREATE_CONTACT_ABB "IDS_LOGS_BUTTON_CREATE_CONTACT_ABB" +#define PH_LOGS_BUTTON_UPDATE_CONTACT_ABB2 "IDS_LOGS_BUTTON_UPDATE_CONTACT_ABB2" +#define PH_LOGS_OPT_VIEW_CONTACT_DETAILS_ABB "IDS_LOGS_OPT_VIEW_CONTACT_DETAILS_ABB" +#define PH_PB_HEADER_MOST_FREQUENT_CONTACTS_ABB2 "IDS_PB_HEADER_MOST_FREQUENT_CONTACTS_ABB2" +#define PH_PB_MBODY_EVENT "IDS_PB_MBODY_EVENT" +#define PH_PB_HEADER_EDIT "IDS_PB_HEADER_EDIT" +#define PH_PB_OPT_EDIT "IDS_PB_OPT_EDIT" +#define PH_PB_POP_THIS_CONTACT_WILL_BE_DELETED "IDS_PB_POP_THIS_CONTACT_WILL_BE_DELETED" +#define PH_PB_POP_WHEN_SYNC_IS_ENABLED_THIS_CONTACT_AND_ALL_ITS_LINKED_CONTACTS_IN_OTHER_SYNCED_ACCOUNTS_WILL_BE_DELETED "IDS_PB_POP_WHEN_SYNC_IS_ENABLED_THIS_CONTACT_AND_ALL_ITS_LINKED_CONTACTS_IN_OTHER_SYNCED_ACCOUNTS_WILL_BE_DELETED" +#define PH_PB_POP_WHEN_SYNC_IS_ENABLED_THIS_CONTACT_WILL_BE_DELETED_FROM_ANY_SYNCED_ACCOUNTS_IT_IS_SAVED_IN "IDS_PB_POP_WHEN_SYNC_IS_ENABLED_THIS_CONTACT_WILL_BE_DELETED_FROM_ANY_SYNCED_ACCOUNTS_IT_IS_SAVED_IN" +#define PH_PB_POP_THIS_CONTACT_AND_ALL_ITS_LINKED_CONTACTS_WILL_BE_DELETED "IDS_PB_POP_THIS_CONTACT_AND_ALL_ITS_LINKED_CONTACTS_WILL_BE_DELETED" +#define PH_PB_HEADER_EMERGENCY_CONTACTS_ABB2 "IDS_PB_HEADER_EMERGENCY_CONTACTS_ABB2" +#define PH_PB_BUTTON_DONE_ABB3 "IDS_PB_BUTTON_DONE_ABB3" +#define PH_PB_MBODY_ONLY_CONTACTS_WITH_PHONES "IDS_PB_MBODY_ONLY_CONTACTS_WITH_PHONES" +#define PH_PB_TMBODY_NAME_FORMAT "IDS_PB_TMBODY_NAME_FORMAT" +#define PH_PB_HEADER_NAME_FORMAT_ABB "IDS_PB_HEADER_NAME_FORMAT_ABB" +#define PH_PB_POP_P1SD_CONTACTS_HAVE_BEEN_EXPORTED_TO_DEVICE_CONTACTS_IMPORTED_P2SSVCF "IDS_PB_POP_P1SD_CONTACTS_HAVE_BEEN_EXPORTED_TO_DEVICE_CONTACTS_IMPORTED_P2SSVCF" +#define PH_PB_HEADER_EXPORT_CONTACTS_ABB "IDS_PB_HEADER_EXPORT_CONTACTS_ABB" +#define PH_PB_HEADER_CONTACTS_EXPORTED_ABB "IDS_PB_HEADER_CONTACTS_EXPORTED_ABB" +#define PH_PB_POP_TAP_EXPORT_TO_SELECT_WHICH_CONTACTS_TO_EXPORT_SOME_CONTACT_INFORMATION_MAY_BE_LOST "IDS_PB_POP_TAP_EXPORT_TO_SELECT_WHICH_CONTACTS_TO_EXPORT_SOME_CONTACT_INFORMATION_MAY_BE_LOST" +#define PH_PB_HEADER_EXPORT_CONTACTS_TO_SIM_CARD_ABB "IDS_PB_HEADER_EXPORT_CONTACTS_TO_SIM_CARD_ABB" +#define PH_PB_BUTTON_EXPORT "IDS_PB_BUTTON_EXPORT" +#define PH_PB_HEADER_SELECT_CONTACT_ABB2 "IDS_PB_HEADER_SELECT_CONTACT_ABB2" +#define PH_PB_HEADER_IMPORT_CONTACTS_ABB2 "IDS_PB_HEADER_IMPORT_CONTACTS_ABB2" +#define PH_PB_HEADER_DISCARD_CHANGES_ABB "IDS_PB_HEADER_DISCARD_CHANGES_ABB" +#define PH_PB_POP_ALL_CHANGES_WILL_BE_DISCARDED "IDS_PB_POP_ALL_CHANGES_WILL_BE_DISCARDED" +#define PH_PB_BUTTON_DISCARD_ABB "IDS_PB_BUTTON_DISCARD_ABB" +#define PH_PB_OPT_UNLINK_CONTACTS "IDS_PB_OPT_UNLINK_CONTACTS" +#define PH_PB_OPT_UNLINK_CONTACT_ABB "IDS_PB_OPT_UNLINK_CONTACT_ABB" +#define PH_PB_BODY_SERVICE_NUMBER "IDS_PB_BODY_SERVICE_NUMBER" +#define PH_PB_POP_DISCARD_CHANGES_Q "IDS_PB_POP_DISCARD_CHANGES_Q" +#define PH_PB_BODY_WINDOWS_LIVE_UC "IDS_PB_BODY_WINDOWS_LIVE_UC" +#define PH_PB_BODY_SKYPE "IDS_PB_BODY_SKYPE" +#define PH_PB_HEADER_DISPLAY_NAMES_BY "IDS_PB_HEADER_DISPLAY_NAMES_BY" +#define PH_PB_POP_THE_MAXIMUM_NUMBER_OF_ITEMS_THAT_CAN_BE_SELECTED_HPD_HAS_BEEN_EXCEEDED "IDS_PB_POP_THE_MAXIMUM_NUMBER_OF_ITEMS_THAT_CAN_BE_SELECTED_HPD_HAS_BEEN_EXCEEDED" +#define PH_WMGR_HEADER_UNABLE_TO_SELECT_MORE_ITEMS_ABB "IDS_WMGR_HEADER_UNABLE_TO_SELECT_MORE_ITEMS_ABB" +#define PH_PB_SK_SET "IDS_PB_SK_SET" +#define PH_PB_HEADER_DISPLAY "IDS_PB_HEADER_DISPLAY" +#define PH_PB_TPOP_1_NUMBER_REMOVED_FROM_AUTO_REJECT_LIST "IDS_PB_TPOP_1_NUMBER_REMOVED_FROM_AUTO_REJECT_LIST" +#define PH_PB_MBODY_SET_MY_PROFILE "IDS_PB_MBODY_SET_MY_PROFILE" +#define PH_PB_BODY_EXPORT_TO_SD_CARD "IDS_PB_BODY_EXPORT_TO_SD_CARD" +#define PH_PB_POP_P1SD_CONTACTS_HAVE_BEEN_EXPORTED_TO_P2SS "IDS_PB_POP_P1SD_CONTACTS_HAVE_BEEN_EXPORTED_TO_P2SS" +#define PH_PB_POP_CONTACTS_WILL_STOP_BEING_IMPORTED_FROM_PS "IDS_PB_POP_CONTACTS_WILL_STOP_BEING_IMPORTED_FROM_PS" +#define PH_PB_OPT_SELECT_FROM_CONTACTS_ABB "IDS_PB_OPT_SELECT_FROM_CONTACTS_ABB" +#define PH_CLOG_BODY_NO_LOGS "IDS_CLOG_BODY_NO_LOGS" +#define PH_CLOG_BODY_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN "IDS_CLOG_BODY_AFTER_YOU_MAKE_RECEIVE_A_CALL_OR_SEND_RECEIVE_A_MESSAGE_LOGS_WILL_BE_SHOWN" +#define PH_PB_BODY_NAME_PREFIX "IDS_PB_BODY_NAME_PREFIX" +#define PH_PB_OPT_TAKE_A_PHOTO "IDS_PB_OPT_TAKE_A_PHOTO" +#define PH_PB_SK_ADD_FIELDS "IDS_PB_SK_ADD_FIELDS" +#define PH_PB_HEADER_CONTACT_IMAGE "IDS_PB_HEADER_CONTACT_IMAGE" +#define PH_PB_HEADER_SELECT_SIM_FOR_CALL "IDS_PB_HEADER_SELECT_SIM_FOR_CALL" +#define PH_PB_BODY_ADD_TO_FAVOURITES "IDS_PB_BODY_ADD_TO_FAVOURITES" +#define PH_PB_BODY_REMOVE_FROM_FAVOURITES "IDS_PB_BODY_REMOVE_FROM_FAVOURITES" +#define PH_LOGS_SBODY_MISSEDM_CALL_STATUS "IDS_LOGS_SBODY_MISSEDM_CALL_STATUS" +#define PH_LOGS_SBODY_CANCELLED_M_STATUS "IDS_LOGS_SBODY_CANCELLED_M_STATUS" +#define PH_LOGS_SBODY_FAILED_M_STATUS "IDS_LOGS_SBODY_FAILED_M_STATUS" +#define PH_CALL_BODY_INCOMING_CALL "IDS_CALL_BODY_INCOMING_CALL" +#define PH_ST_BODY_OUTGOING_CALL "IDS_ST_BODY_OUTGOING_CALL" +#define PH_PB_NPBODY_NO_EMERGENCY_CONTACTS "IDS_PB_NPBODY_NO_EMERGENCY_CONTACTS" +#define PH_PB_OPT_FDN_CONTACT "IDS_PB_OPT_FDN_CONTACT" +#define PH_PB_BODY_UNABLE_TO_SAVE_DUE_TO_SIM_ERROR "IDS_PB_BODY_UNABLE_TO_SAVE_DUE_TO_SIM_ERROR" +#define PH_PB_HEADER_SHARE_VIA "IDS_PB_HEADER_SHARE_VIA" +#define PH_PB_BODY_IF_YOUR_SERVICE_PROVIDER_HAS_PRELOADED_SERVICE_NUMBERS_ON_YOUR_SIM_CARD_THEY_WILL_BE_SHOWN_HERE "IDS_PB_BODY_IF_YOUR_SERVICE_PROVIDER_HAS_PRELOADED_SERVICE_NUMBERS_ON_YOUR_SIM_CARD_THEY_WILL_BE_SHOWN_HERE" +#define PH_PB_BODY_NO_SEARCH_RESULT "IDS_PB_BODY_NO_SEARCH_RESULT" +#define PH_PB_POP_1_CONTACT_REMOVED "IDS_PB_POP_1_CONTACT_REMOVED" +#define PH_PB_HEADER_PD_SELECTED_ABB "IDS_PB_HEADER_PD_SELECTED_ABB" +#define PH_PB_POP_FAILED "IDS_PB_POP_FAILED" +#define PH_PB_HEADER_PRIMARY_CONTACTS_HP1SD_P2SD_ABB "IDS_PB_HEADER_PRIMARY_CONTACTS_HP1SD_P2SD_ABB" +#define PH_PB_BODY_AFTER_YOU_ADD_CONTACTS_THEY_WILL_BE_SHOWN_HERE "IDS_PB_BODY_AFTER_YOU_ADD_CONTACTS_THEY_WILL_BE_SHOWN_HERE" +#define PH_PB_POP_FDN_MODE_ACTIVATED "IDS_PB_POP_FDN_MODE_ACTIVATED" +#define PH_TPLATFORM_ACBUTTON_SEND_ABB "IDS_TPLATFORM_ACBUTTON_SEND_ABB" +#define PH_TPLATFORM_ACBUTTON_DONE_ABB "IDS_TPLATFORM_ACBUTTON_DONE_ABB" +#define PH_TPLATFORM_ACBUTTON_CANCEL_ABB "IDS_TPLATFORM_ACBUTTON_CANCEL_ABB" +#define PH_TPLATFORM_ACBUTTON_DELETE_ABB "IDS_TPLATFORM_ACBUTTON_DELETE_ABB" +#define PH_PB_BODY_IMPORTING_ING "IDS_PB_BODY_IMPORTING_ING" +#define PH_PB_TPOP_PD_CONTACTS_IMPORTED "IDS_PB_TPOP_PD_CONTACTS_IMPORTED" +#define PH_PB_OPT_ADD_FIELD "IDS_PB_OPT_ADD_FIELD" +#define PH_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED "IDS_PB_POP_ALL_LINKED_CONTACTS_WILL_BE_DELETED" +#define PH_PB_BODY_THIS_CONTACT_WILL_BE_DELETED "IDS_PB_BODY_THIS_CONTACT_WILL_BE_DELETED" +#define PH_PB_POP_DELETING_CONTACTS_CANCELLED_SOME_CONTACTS_MAY_ALREADY_HAVE_BEEN_DELETED "IDS_PB_POP_DELETING_CONTACTS_CANCELLED_SOME_CONTACTS_MAY_ALREADY_HAVE_BEEN_DELETED" +#define PH_PB_POP_DELETING_CONTACTS_ING "IDS_PB_POP_DELETING_CONTACTS_ING" +#define PH_PB_TPOP_1_CONTACT_IMPORTED "IDS_PB_TPOP_1_CONTACT_IMPORTED" +#define PH_PB_OPT_SHARE_VIA "IDS_PB_OPT_SHARE_VIA" +#define PH_PB_BODY_PHONETIC_FIRST_NAME_ABB "IDS_PB_BODY_PHONETIC_FIRST_NAME_ABB" +#define PH_PB_BODY_PHONETIC_MIDDLE_NAME_ABB "IDS_PB_BODY_PHONETIC_MIDDLE_NAME_ABB" +#define PH_PB_BODY_PHONETIC_LAST_NAME_ABB "IDS_PB_BODY_PHONETIC_LAST_NAME_ABB" +#define PH_PB_BODY_DEFAULT_GROUP_FAMILY "IDS_PB_BODY_DEFAULT_GROUP_FAMILY" +#define PH_PB_BODY_CO_WORKERS "IDS_PB_BODY_CO_WORKERS" +#define PH_PB_BODY_DEFAULT_GROUP_FRIENDS "IDS_PB_BODY_DEFAULT_GROUP_FRIENDS" +#define PH_PB_BODY_MY_CONTACTS "IDS_PB_BODY_MY_CONTACTS" +#define PH_PB_POP_SIM_MEMROY_FULL "IDS_PB_POP_SIM_MEMROY_FULL" +#define PH_PB_POP_UNABLE_TO_ADD_CONTACT_MAXIMUM_NUMBER_OF_LINKABLE_CONTACTS_HPD_REACHED "IDS_PB_POP_UNABLE_TO_ADD_CONTACT_MAXIMUM_NUMBER_OF_LINKABLE_CONTACTS_HPD_REACHED" +#define PH_PB_POP_UNABLE_TO_ADD_CONTACTS_MAXIMUM_NUMBER_OF_LINKABLE_CONTACTS_HPD_REACHED "IDS_PB_POP_UNABLE_TO_ADD_CONTACTS_MAXIMUM_NUMBER_OF_LINKABLE_CONTACTS_HPD_REACHED" +#define PH_PB_BODY_TELEPHONE "IDS_PB_BODY_TELEPHONE" +#define PH_PB_POP_NOT_ENOUGH_MEMORY "IDS_PB_POP_NOT_ENOUGH_MEMORY" +#define PH_PB_POP_WHEN_SYNC_IS_ENABLED_THIS_CONTACT_AND_ALL_ITS_LINKED_CONTACTS_IN_OTHER_SYNCED_ACCOUNTS_WILL_BE_DELETED_OR_HIDDEN_IF_THE_INFORMATION_MSG "IDS_PB_POP_WHEN_SYNC_IS_ENABLED_THIS_CONTACT_AND_ALL_ITS_LINKED_CONTACTS_IN_OTHER_SYNCED_ACCOUNTS_WILL_BE_DELETED_OR_HIDDEN_IF_THE_INFORMATION_MSG" +#define PH_PB_POP_YOU_CANNOT_DELETE_CONTACTS_FROM_READ_ONLY_ACCOUNTS_BUT_YOU_CAN_HIDE_THEM_IN_CONTACTS "IDS_PB_POP_YOU_CANNOT_DELETE_CONTACTS_FROM_READ_ONLY_ACCOUNTS_BUT_YOU_CAN_HIDE_THEM_IN_CONTACTS" +#define PH_KPD_BUTTON_SEND_MESSAGE "IDS_KPD_BUTTON_SEND_MESSAGE" + + +#endif// __PH_STRINGS_H_ diff --git a/lib-phone/ph-common/src/PhCommon.cpp b/lib-phone/ph-common/src/PhCommon.cpp new file mode 100755 index 0000000..795f583 --- /dev/null +++ b/lib-phone/ph-common/src/PhCommon.cpp @@ -0,0 +1,273 @@ +/* + * 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 <dlfcn.h> +#include <app.h> +#include <contacts.h> + +#include "ContactsDebug.h" +#include "ContactsAppControlLauncher.h" + +#include "PhPath.h" +#include "PhCommon.h" +#include "ContactsCommon.h" + +#define UG_CALL_SETTING "setting-call-efl" + +#define PH_TEXT_MAX_LEN (1024) + +PhCommon::PhCommon() +{ +} + +PhCommon::~PhCommon() +{ +} + +Evas_Object* PhCommon::createImage(Evas_Object* parent, const char* edj, const char* imagePath, const char* colorCode) +{ + Evas_Object *icon = elm_image_add(parent); + WPRET_VM( NULL == icon, NULL, "elm_image_add() is failed"); + + if(edj && *edj) + elm_image_file_set(icon, ContactsCommon::getAppEdjePath(edj).c_str(), imagePath); + else + elm_image_file_set(icon, imagePath, NULL); + + evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + return icon; +} + +Evas_Object* PhCommon::createLayout(Evas_Object* parent, const char* edj, const char* layoutName) +{ + Evas_Object *layout = elm_layout_add(parent); + WPRET_VM(NULL == layout, NULL, "elm_layout_add() return NULL"); + + if(edj && *edj) + elm_layout_file_set(layout, ContactsCommon::getAppEdjePath(edj).c_str(), layoutName); + else + { + if(layoutName && *layoutName) + elm_layout_theme_set(layout, "layout", layoutName, "default"); + else + elm_layout_theme_set( layout, "layout", "application", "default"); + } + + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_show(layout); + + return layout; +} + +void PhCommon::image_mask_delete_cb(void *data, Evas *e, Evas_Object *obj, void *event_info) +{ + WPRET_M(!obj, "obj is NULL"); + void *mask = evas_object_image_data_get(obj, EINA_TRUE); + if(mask) { + free(mask); + mask = NULL; + } +} + + +Evas_Object* PhCommon::createButton(Evas_Object* parent, const char* buttonStyle, const char* buttonText, Evas_Smart_Cb clickedCb, void* userData ) +{ + Evas_Object *button = elm_button_add(parent); + WPRET_VM( NULL == button, NULL, "elm_button_add() is failed"); + if(buttonStyle) + elm_object_style_set(button, buttonStyle); + if(buttonText) + elm_object_text_set(button, buttonText); + + evas_object_size_hint_weight_set(button, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_smart_callback_add(button, "clicked", clickedCb, userData); + evas_object_show(button); + + return button; +} + +void PhCommon::launchCallSetting(Evas_Object *win, Evas_Object *nf) +{ + WHIT(); + app_control_h service; + app_control_create(&service); + app_control_set_app_id(service, UG_CALL_SETTING); + app_control_set_launch_mode(service, APP_CONTROL_LAUNCH_MODE_GROUP); + ContactsAppControlLauncher::getInstance().sendLaunchRequest(service, NULL, NULL, nf); +} + +bool PhCommon::addSpeedDialNumber(int speedNumber, int numberId) +{ + contacts_filter_h filter = nullptr; + contacts_filter_create(_contacts_speeddial._uri, &filter); + contacts_filter_add_int(filter, _contacts_speeddial.number_id, CONTACTS_MATCH_EQUAL, numberId); + + contacts_query_h query = nullptr; + contacts_query_create(_contacts_speeddial._uri, &query); + contacts_query_set_filter(query, filter); + + contacts_list_h list = nullptr; + int err = contacts_db_get_records_with_query(query, 0, 1, &list); + contacts_query_destroy(query); + contacts_filter_destroy(filter); + WPRET_VM(err != CONTACTS_ERROR_NONE, false, "contacts_db_get_records_with_query() failed(%d)", err); + + int count = 0; + contacts_list_get_count(list, &count); + contacts_list_destroy(list, true); + if (count > 0) { + return false; + } + + contacts_record_h record = nullptr; + contacts_record_create(_contacts_speeddial._uri, &record); + contacts_record_set_int(record, _contacts_speeddial.speeddial_number, speedNumber); + contacts_record_set_int(record, _contacts_speeddial.number_id, numberId); + err = contacts_db_insert_record(record, nullptr); + contacts_record_destroy(record, true); + WPRET_VM(err != CONTACTS_ERROR_NONE, false, "contacts_db_insert_record() failed(%d)", err); + + return true; +} + +void PhCommon::terminateChildAppControl(void) +{ + ContactsAppControlLauncher::getInstance().terminate(); +} + +void PhCommon::adjustMatchedLenForName(const char* displayName, const char* keyword, int* index, int* len) +{ + WPRET_M(displayName == NULL, "displayName is NULL"); + WPRET_M(keyword == NULL, "keyword is NULL"); + int i = 0; + int strLen = strlen(keyword); + int charBytes = 0;; + + while(i < (int)strlen(displayName) && *index > i) + { + charBytes = __checkUtf8(displayName[i]); + *index += (charBytes-1); + i += charBytes; + } + + i = *index; + while(i < (int)strlen(displayName) && strLen > 0) + { + charBytes = __checkUtf8(displayName[i]); + *len += (charBytes-1); + i += charBytes; + strLen--; + } +} + +int PhCommon::__checkUtf8(char c) +{ + if (c < 128) + return 1; + else if ((c & (char)0xe0) == (char)0xc0) + return 2; + else if ((c & (char)0xf0) == (char)0xe0) + return 3; + else if ((c & (char)0xf8) == (char)0xf0) + return 4; + else if ((c & (char)0xfc) == (char)0xf8) + return 5; + else if ((c & (char)0xfe) == (char)0xfc) + return 6; + else + return -1; +} + +int PhCommon::getSavedNumberStartIndex(const char* source, const char* keyword) +{ + int pos = -1; + std::string tmp = ContactsCommon::removeNumberDashes(source); + if (tmp.c_str()) { + if(strstr(tmp.c_str(), keyword)) { + pos = (strstr(tmp.c_str(), keyword) - tmp.c_str()); + } + } + return pos; +} + +void PhCommon::adjustMatchedLenForNum(const char* number, const char* keyword, int* index, int* len) +{ + WPRET_M(number == NULL, "number is NULL"); + WPRET_M(keyword == NULL, "keyword is NULL"); + int i = 0; + int strLen = strlen(keyword); + int charBytes = 0;; + + while (i < (int)strlen(number) && *index > i) + { + charBytes = __checkUtf8(number[i]); + + if(__isDash(number[i])) { + *index += charBytes; + i++; + } + else { + *index += (charBytes-1); + i += charBytes; + } + } + + while (__isDash(number[*index])) { + *index += 1; + } + + i = *index; + while (i < (int)strlen(number) && strLen > 0) + { + charBytes = __checkUtf8(number[i]); + + if(__isDash(number[i])) { + *len += charBytes; + i++; + } + else { + *len += (charBytes-1); + i += charBytes; + strLen--; + } + } +} + +bool PhCommon::__isDash(char ch) +{ + if (ch == '-' || ch == '(' || ch == ')' || ch == ' ') { + return true; + } + return false; +} + +std::string PhCommon::convert2MarkupString(const char* source) +{ + WPRET_VM(source == NULL, "", "source is NULL"); + std::string markupStr; + char *temp = elm_entry_utf8_to_markup(source); + + if(temp) + { + markupStr = temp; + free(temp); + return markupStr; + } + else + return ""; +} 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=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </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="${SBI_SYSROOT}""/> + <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=""${workspace_loc:/${ProjName}/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc/app-assist}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/carriermatch/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/ph-common/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/dbus}""/> + <listOptionValue builtIn="false" value="../../../app-assist-efl/inc"/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/inc}""/> + </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=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </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="${SBI_SYSROOT}""/> + <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=""${workspace_loc:/${ProjName}/inc}""/> + </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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/> + <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=""${workspace_loc:/${ProjName}/lib}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/Debug}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/ph-common/Debug}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/carriermatch/Debug}""/> + <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=""${workspace_loc:/app-assist-efl/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/carriermatch/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/ph-common/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/dbus}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/inc}""/> + </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=""${workspace_loc:/${ProjName}/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/app-assist-efl/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/inc}""/> + </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=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </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="${SBI_SYSROOT}""/> + <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=""${workspace_loc:/${ProjName}/inc}""/> + </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=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </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="${SBI_SYSROOT}""/> + <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=""${workspace_loc:/${ProjName}/inc}""/> + </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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/> + <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=""${workspace_loc:/${ProjName}/lib}""/> + </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 Binary files differnew file mode 100644 index 0000000..9715b8b --- /dev/null +++ b/lib-phone/ph-dialer/res/images/contacts_caller_id_default_02.png 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 Binary files differnew file mode 100644 index 0000000..6c51cac --- /dev/null +++ b/lib-phone/ph-dialer/res/images/contacts_caller_id_default_bg_02.png 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 Binary files differnew file mode 100644 index 0000000..37787dd --- /dev/null +++ b/lib-phone/ph-dialer/res/images/contacts_caller_id_default_masking_02.png diff --git a/lib-phone/ph-dialer/res/images/default_contact.png b/lib-phone/ph-dialer/res/images/default_contact.png Binary files differnew file mode 100755 index 0000000..c63d7f0 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/default_contact.png diff --git a/lib-phone/ph-dialer/res/images/keypad_english_01.png b/lib-phone/ph-dialer/res/images/keypad_english_01.png Binary files differnew file mode 100644 index 0000000..309dd86 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_english_01.png diff --git a/lib-phone/ph-dialer/res/images/keypad_english_02.png b/lib-phone/ph-dialer/res/images/keypad_english_02.png Binary files differnew file mode 100644 index 0000000..2fa7a0b --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_english_02.png diff --git a/lib-phone/ph-dialer/res/images/keypad_english_03.png b/lib-phone/ph-dialer/res/images/keypad_english_03.png Binary files differnew file mode 100644 index 0000000..98f7ad1 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_english_03.png diff --git a/lib-phone/ph-dialer/res/images/keypad_english_04.png b/lib-phone/ph-dialer/res/images/keypad_english_04.png Binary files differnew file mode 100644 index 0000000..6b6a172 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_english_04.png diff --git a/lib-phone/ph-dialer/res/images/keypad_english_05.png b/lib-phone/ph-dialer/res/images/keypad_english_05.png Binary files differnew file mode 100644 index 0000000..288854f --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_english_05.png diff --git a/lib-phone/ph-dialer/res/images/keypad_english_06.png b/lib-phone/ph-dialer/res/images/keypad_english_06.png Binary files differnew file mode 100644 index 0000000..f346c46 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_english_06.png diff --git a/lib-phone/ph-dialer/res/images/keypad_english_07.png b/lib-phone/ph-dialer/res/images/keypad_english_07.png Binary files differnew file mode 100644 index 0000000..e70e9a8 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_english_07.png diff --git a/lib-phone/ph-dialer/res/images/keypad_english_08.png b/lib-phone/ph-dialer/res/images/keypad_english_08.png Binary files differnew file mode 100644 index 0000000..f4de8af --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_english_08.png diff --git a/lib-phone/ph-dialer/res/images/keypad_english_10.png b/lib-phone/ph-dialer/res/images/keypad_english_10.png Binary files differnew file mode 100644 index 0000000..2072f56 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_english_10.png diff --git a/lib-phone/ph-dialer/res/images/keypad_ic_back.png b/lib-phone/ph-dialer/res/images/keypad_ic_back.png Binary files differnew file mode 100644 index 0000000..2f08d97 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_ic_back.png diff --git a/lib-phone/ph-dialer/res/images/keypad_ic_call.png b/lib-phone/ph-dialer/res/images/keypad_ic_call.png Binary files differnew file mode 100644 index 0000000..526483c --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_ic_call.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_00.png b/lib-phone/ph-dialer/res/images/keypad_number_00.png Binary files differnew file mode 100644 index 0000000..255c897 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_00.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_01.png b/lib-phone/ph-dialer/res/images/keypad_number_01.png Binary files differnew file mode 100644 index 0000000..409bfb8 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_01.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_02.png b/lib-phone/ph-dialer/res/images/keypad_number_02.png Binary files differnew file mode 100644 index 0000000..b12b92f --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_02.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_03.png b/lib-phone/ph-dialer/res/images/keypad_number_03.png Binary files differnew file mode 100644 index 0000000..058876c --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_03.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_04.png b/lib-phone/ph-dialer/res/images/keypad_number_04.png Binary files differnew file mode 100644 index 0000000..3906f18 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_04.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_05.png b/lib-phone/ph-dialer/res/images/keypad_number_05.png Binary files differnew file mode 100644 index 0000000..a104591 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_05.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_06.png b/lib-phone/ph-dialer/res/images/keypad_number_06.png Binary files differnew file mode 100644 index 0000000..4c0893b --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_06.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_07.png b/lib-phone/ph-dialer/res/images/keypad_number_07.png Binary files differnew file mode 100644 index 0000000..e9eb6a0 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_07.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_08.png b/lib-phone/ph-dialer/res/images/keypad_number_08.png Binary files differnew file mode 100644 index 0000000..f6bd01b --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_08.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_09.png b/lib-phone/ph-dialer/res/images/keypad_number_09.png Binary files differnew file mode 100644 index 0000000..ede6db2 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_09.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_asterisk.png b/lib-phone/ph-dialer/res/images/keypad_number_asterisk.png Binary files differnew file mode 100644 index 0000000..923ea88 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_asterisk.png diff --git a/lib-phone/ph-dialer/res/images/keypad_number_sharp.png b/lib-phone/ph-dialer/res/images/keypad_number_sharp.png Binary files differnew file mode 100644 index 0000000..e0118d4 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_number_sharp.png diff --git a/lib-phone/ph-dialer/res/images/keypad_predictive_arrow.png b/lib-phone/ph-dialer/res/images/keypad_predictive_arrow.png Binary files differnew file mode 100644 index 0000000..7617f4e --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_predictive_arrow.png 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 Binary files differnew file mode 100644 index 0000000..39c6a86 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_speed_dial_add.png 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 Binary files differnew file mode 100644 index 0000000..7297b95 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_speed_dial_ic.png 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 Binary files differnew file mode 100644 index 0000000..584f366 --- /dev/null +++ b/lib-phone/ph-dialer/res/images/keypad_speed_dial_ic_bg.#.png diff --git a/lib-phone/ph-dialer/res/images/predictive_results_mask.png b/lib-phone/ph-dialer/res/images/predictive_results_mask.png Binary files differnew file mode 100644 index 0000000..b247e5d --- /dev/null +++ b/lib-phone/ph-dialer/res/images/predictive_results_mask.png 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); + } +} diff --git a/lib-phone/ph-loglist/.cproject b/lib-phone/ph-loglist/.cproject new file mode 100644 index 0000000..8f8d239 --- /dev/null +++ b/lib-phone/ph-loglist/.cproject @@ -0,0 +1,569 @@ +<?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.2086950417"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.so.debug.2086950417" 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-loglist" 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.2086950417" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.so.debug"> + <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.so.debug.2086950417." name="/" resourcePath=""> + <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.so.debug.1268564374" 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.357656315" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> + <builder autoBuildTarget="all" buildPath="${workspace_loc:/ph-loglist}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.374765326" 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.210949800" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> + <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> + <option id="gnu.cpp.compiler.option.optimization.level.526577659" 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.1852203539" 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.1537092892" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.compiler.option.780850730" 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.1392951409" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1486723187" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-fvisibility=hidden"/> + </option> + <option id="gnu.cpp.compiler.option.include.paths.691335267" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc/app-assist}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/dbus}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/icu}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/carriermatch/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/ph-common/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/app-assist-efl/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/inc}""/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks.core.571115734" 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.1425542116" 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.1087282265" 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.1058541102"/> + <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1568618654" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> + </tool> + <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244" 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.1571538028" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/> + <option id="sbi.gnu.c.compiler.option.debugging.level.core.1351273991" 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.1032488492" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.c.compiler.option.15180974" 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.1750798455" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </option> + <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.2049631956" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-fvisibility=hidden"/> + </option> + <option id="gnu.c.compiler.option.include.paths.1869181376" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + </option> + <option id="sbi.gnu.c.compiler.option.frameworks.core.2012388161" 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.2004094523" 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.1775860804"/> + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1595990485" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + </tool> + <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.859964084" 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.1066378633" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker"> + <option defaultValue="true" id="sbi.gnu.cpp.linker.option.shared_flag.core.230901020" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1057067056" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/> + <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/> + </option> + <option id="gnu.cpp.link.option.paths.910559997" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/Debug}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/ph-common/Debug}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/app-assist-efl/Debug}""/> + </option> + <option id="gnu.cpp.link.option.libs.1246540549" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs"> + <listOptionValue builtIn="false" value="app-assist-efl"/> + <listOptionValue builtIn="false" value="common"/> + <listOptionValue builtIn="false" value="ph-common"/> + </option> + <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1999672878" 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.52283727" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base"> + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.133753733" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + </tool> + <tool id="org.tizen.nativecore.tool.sbi.po.compiler.2034841340" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/> + <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.64064899" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.1449153983" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.840760033" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/> + <tool id="org.tizen.nativecore.tool.ast.1112553035" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/> + <tool id="org.tizen.nativecore.tool.ast.cpp.1256022557" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/> + </toolChain> + </folderInfo> + <fileInfo id="org.tizen.nativecore.config.sbi.gcc45.so.debug.2086950417.2091195160" name="PhLogDbus.c" rcbsApplicability="disable" resourcePath="dbus/PhLogDbus.c" toolsToInvoke="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661"> + <tool id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244"> + <option id="gnu.c.compiler.option.include.paths.781192619" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> + <listOptionValue builtIn="false" value=""${workspace_loc:/app-assist-efl/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/inc}""/> + </option> + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1537400239" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.1683811059"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.1933179288"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.1625711111"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.268811411"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.2099423160"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.1154310846"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.1750264319"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.776728515"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.878672231"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.2145790635"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.1245035685"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.1630547299"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.2109885153"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1862095244.1918651661.2128240331"/> + </tool> + <tool customBuildStep="true" id="org.eclipse.cdt.managedbuilder.ui.rcbs.2131434453" name="Resource Custom Build Step"> + <inputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.inputtype.2066301971" name="Resource Custom Build Step Input Type"> + <additionalInput kind="additionalinputdependency" paths=""/> + </inputType> + <outputType id="org.eclipse.cdt.managedbuilder.ui.rcbs.outputtype.1861482786" name="Resource Custom Build Step Output Type"/> + </tool> + </fileInfo> + <fileInfo id="org.tizen.nativecore.config.sbi.gcc45.so.debug.2086950417.1406579334" name="PhLogMainListView.cpp" rcbsApplicability="disable" resourcePath="src/PhLogMainListView.cpp" toolsToInvoke="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366.1189446109"> + <tool id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366.1189446109" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366"> + <option id="gnu.cpp.compiler.option.preprocessor.def.2021569939" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols"> + <listOptionValue builtIn="false" value="_DEBUG"/> + <listOptionValue builtIn="false" value="_SDK_BUILD"/> + </option> + <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1981265741" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366.1189446109.1876033264"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366.1189446109.753535715"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366.1189446109.1880266644"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366.1189446109.1302435615"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366.1189446109.1942195483"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366.1189446109.1206305339"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366.1189446109.338825111"/> + <inputType id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.415199366.1189446109.2007274907"/> + </tool> + </fileInfo> + <sourceEntries> + <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="dbus"/> + <entry flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name="icu"/> + <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.1907562476"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.so.release.1907562476" 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-loglist" 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.1907562476" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.so.release"> + <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.so.release.1907562476." name="/" resourcePath=""> + <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.so.release.1479264651" 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.1072303678" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> + <builder buildPath="${workspace_loc:/ph-loglist}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1199889709" 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.1845460411" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> + <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.128717458" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> + <option id="gnu.cpp.compiler.option.optimization.level.1003461665" 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.844519924" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core"/> + <option defaultValue="true" id="sbi.gnu.cpp.compiler.option.misc.pic.core.114265932" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.compiler.option.1503875434" 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.2094071815" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1089338488" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-fvisibility=hidden"/> + </option> + <option id="gnu.cpp.compiler.option.include.paths.2070783741" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks.core.1567105913" 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.431474728"/> + <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.621750961" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> + </tool> + <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.64352589" 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.1466556173" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/> + <option id="sbi.gnu.c.compiler.option.debugging.level.core.2017322390" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core"/> + <option defaultValue="true" id="sbi.gnu.c.compiler.option.misc.pic.core.1800024028" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.c.compiler.option.2106195166" 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.2022723296" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </option> + <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1857647731" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-fvisibility=hidden"/> + </option> + <option id="gnu.c.compiler.option.include.paths.1129221857" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + </option> + <option id="sbi.gnu.c.compiler.option.frameworks.core.1725210508" 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.1270711219"/> + <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.652487094" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + </tool> + <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.240750179" 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.1941015730" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker"> + <option defaultValue="true" id="sbi.gnu.cpp.linker.option.shared_flag.core.1222299802" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.471048839" 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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/> + <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/> + </option> + <option id="gnu.cpp.link.option.paths.438916348" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths"> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/> + </option> + <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1458984705" 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.199837942" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base"> + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.645048697" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + </tool> + <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1182209747" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/> + <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.971618823" name="EDC Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.edc.compiler"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.1812689761" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.818440247" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/> + <tool id="org.tizen.nativecore.tool.ast.402643839" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/> + <tool id="org.tizen.nativecore.tool.ast.cpp.20766984" 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-loglist.org.tizen.nativecore.target.sbi.gcc45.so.247786340" 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.debug.2086950417"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.tizen.nativecommon.TizenGCCManagedMakePerProjectProfileCPP"/> + </scannerConfigBuildInfo> + <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.so.release.1907562476"> + <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-loglist"/> + </configuration> + <configuration configurationName="Debug"> + <resource resourceType="PROJECT" workspacePath="/ph-loglist"/> + </configuration> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/> +</cproject> diff --git a/lib-phone/ph-loglist/.project b/lib-phone/ph-loglist/.project new file mode 100644 index 0000000..497753e --- /dev/null +++ b/lib-phone/ph-loglist/.project @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ph-loglist</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>1413871690242</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-loglist/.tproject b/lib-phone/ph-loglist/.tproject new file mode 100644 index 0000000..f1cc1fd --- /dev/null +++ b/lib-phone/ph-loglist/.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-loglist/CMakeLists.txt b/lib-phone/ph-loglist/CMakeLists.txt new file mode 100755 index 0000000..5ce0881 --- /dev/null +++ b/lib-phone/ph-loglist/CMakeLists.txt @@ -0,0 +1,26 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(ph-loglist CXX) + +INCLUDE_DIRECTORIES( + ${CMAKE_SOURCE_DIR}/app-assist-efl/inc + ${CMAKE_SOURCE_DIR}/lib-common/inc + ${CMAKE_SOURCE_DIR}/lib-phone/ph-common/inc + ${CMAKE_CURRENT_SOURCE_DIR}/src + ${CMAKE_CURRENT_SOURCE_DIR}/inc + ${CMAKE_CURRENT_SOURCE_DIR}/icu +) + +FILE(GLOB SRCS + "src/*.cpp" + "icu/*.cpp" +) + +ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${TIZEN_PKGS_LDFLAGS} + "app-assist-efl" + "contacts-common" + "ph-common" +) + +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_APP_LIB_DIR}) + diff --git a/lib-phone/ph-loglist/icu/PhLogIcu.cpp b/lib-phone/ph-loglist/icu/PhLogIcu.cpp new file mode 100755 index 0000000..3e6b7a2 --- /dev/null +++ b/lib-phone/ph-loglist/icu/PhLogIcu.cpp @@ -0,0 +1,319 @@ +/* + * 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 <utils_i18n.h> +#include <system_settings.h> + +#include "ContactsDebug.h" +#include "PhLogIcu.h" +#include <string> + +#define LOGS_COMMON_MAX_UCHAR_PATTERN_LEN 64 +#define LOGS_COMMON_MAX_CHAR_PATTERN_LEN 128 +#define PH_TEXT_SHORT_LEN 256 + +//// for ICU /// +static char *systemLocale = NULL; +static char *systemTimezone = NULL; +static std::string groupFormatType("dd/MM/y"); +static PhLogIcu::PhTimeFormat timeFormatType = PhLogIcu::PH_TIME_FORMAT_12H; + +PhLogIcu::PhLogIcu() +{ + // TODO Auto-generated constructor stub + +} + +PhLogIcu::~PhLogIcu() +{ + // TODO Auto-generated destructor stub +} + +char *PhLogIcu::__getString(const char *pattern, time_t timeData) +{ + WENTER(); + + i18n_udate_format_h formatter = NULL; + i18n_uchar formatted[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {0,}; + char result[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {0,}; + int formattedLength; + i18n_udate date; + + i18n_uchar bestPattern[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {0,}; + i18n_ustring_copy_ua_n(bestPattern, pattern, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN); + + i18n_uchar utf16_timezone[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {0,}; + + if(NULL == systemTimezone) + { + WWARNING("systemTimezone = NULL"); + } + i18n_ustring_copy_ua_n(utf16_timezone, systemTimezone, SAFE_STRLEN(systemTimezone)); + i18n_udate_create(I18N_UDATE_PATTERN , I18N_UDATE_PATTERN , systemLocale, utf16_timezone, -1, bestPattern, -1, &formatter); + date = (i18n_udate)timeData * 1000; + + i18n_udate_format_date(formatter, date, formatted, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN, NULL, &formattedLength); + i18n_ustring_copy_au_n(result, formatted, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN); + + i18n_udate_destroy(formatter); + + return strdup(result); + +} + +char *PhLogIcu::__getDateByBestPattern(const char* skeleton) +{ + WPRET_VM(systemLocale == NULL, NULL, "systemLocale is NULL"); + WPRET_VM(skeleton == NULL, NULL, "skeleton is NULL"); + + static char lastTimezoneId[PH_TEXT_SHORT_LEN+1] = {0}; + static char lastLocale[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {0}; + static char lastSkeleton[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {0}; + static char lastBestPatternString[LOGS_COMMON_MAX_CHAR_PATTERN_LEN + 1] = {0}; + + // Use previous cache (for performance) + if(strcmp(systemLocale, lastLocale) == 0 && strcmp(skeleton, lastSkeleton) == 0 && (strlen(lastBestPatternString) > 0) + && (systemTimezone && strncmp(systemTimezone, lastTimezoneId, PH_TEXT_SHORT_LEN-1) == 0)) + { + return strdup(lastBestPatternString); + } + + WWARNING("ICU cache updated!"); + if(systemTimezone) + { + strncpy(lastTimezoneId, systemTimezone, PH_TEXT_SHORT_LEN-1); + } + + i18n_udatepg_h pattern_generator = NULL; + + if(!pattern_generator) { + i18n_udatepg_create(systemLocale, &pattern_generator); + } + if(!pattern_generator) { + WDEBUG("udatpg_open fail"); + return NULL; + } + + i18n_uchar bestPattern[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {0,}; + char bestPatternString[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {0,}; + int bestPatternLength, len; + i18n_uchar uch_custom_format[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {0}; + + int skeletonLength = strlen(skeleton); + + if (skeletonLength <= LOGS_COMMON_MAX_UCHAR_PATTERN_LEN) + i18n_ustring_copy_ua_n(uch_custom_format, skeleton, skeletonLength); + + else + i18n_ustring_copy_ua_n(uch_custom_format, skeleton, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN); + + len = i18n_ustring_get_length(uch_custom_format); + + i18n_udatepg_get_best_pattern(pattern_generator, uch_custom_format, len, bestPattern, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN, &bestPatternLength); + i18n_ustring_copy_au_n(bestPatternString, bestPattern, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN); + i18n_udatepg_destroy(pattern_generator); + + strncpy(lastLocale, systemLocale, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN-1); + strncpy(lastSkeleton, skeleton, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN-1); + strncpy(lastBestPatternString, bestPatternString, LOGS_COMMON_MAX_CHAR_PATTERN_LEN); + + return strdup(bestPatternString); +} + +void PhLogIcu::setTimeFormat() +{ + bool timeformat = false; + + system_settings_get_value_bool(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, &timeformat); + + if (timeformat == true) + timeFormatType = PH_TIME_FORMAT_24H; + else + timeFormatType = PH_TIME_FORMAT_12H; +} + +int PhLogIcu::generatePatternForLocal(const char *locale, const char *patternFormat, char *genPattern, int genPatternSize) +{ + WENTER(); + int status = 0; + i18n_udatepg_h udatepg = NULL; + i18n_uchar format[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {'\0'}; + i18n_uchar bestPattern[LOGS_COMMON_MAX_UCHAR_PATTERN_LEN] = {'\0'}; + int patternLen = 0; + + status = i18n_udatepg_create(locale, &udatepg); + if (!udatepg || status != 0) { + WDEBUG("i18n_udatepg_create() failed: %d", status); + return -1; + } + + i18n_ustring_copy_ua_n(format, patternFormat, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN); + + status = i18n_udatepg_get_best_pattern(udatepg, format, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN, + bestPattern, LOGS_COMMON_MAX_UCHAR_PATTERN_LEN, &patternLen); + if (status != I18N_ERROR_NONE) { + WDEBUG("i18n_udatepg_get_best_pattern() failed: %d", status); + i18n_udatepg_destroy(udatepg); + return -1; + } + + i18n_ustring_copy_au_n(genPattern, bestPattern, genPatternSize); + i18n_udatepg_destroy(udatepg); + + return 0; +} + +void PhLogIcu::setDateFormat() +{ + WENTER(); + char *country = NULL; + char result[LOGS_COMMON_MAX_CHAR_PATTERN_LEN] = { '\0' }; + int res = 0; + + res = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, &country); + if (res != SYSTEM_SETTINGS_ERROR_NONE ) + { + return; + } + + res = generatePatternForLocal(country, "yy-MM-dd", result, LOGS_COMMON_MAX_CHAR_PATTERN_LEN); + free(country); + if (res != 0) + { + WDEBUG("failed to generate pattern for local"); + return ; + } + groupFormatType = result; +} + +void PhLogIcu::setLocale() +{ + WENTER(); + int status = I18N_ERROR_NONE ; + + status = i18n_ulocale_set_default(getenv("LC_TIME")); + WDEBUG("status : [%d]", status); + if (systemLocale) + { + free(systemLocale); + systemLocale = NULL; + } + const char* locale; + i18n_ulocale_get_default(&locale); + systemLocale = SAFE_STRDUP(locale); + WDEBUG("%s",systemLocale); + strtok((char *)systemLocale, ".UTF8"); +} + +char *PhLogIcu::getTimeString(int time) +{ + time_t timeData = time; + char *timeFormat = NULL; + char *resultString = NULL; + + if (timeFormatType == PH_TIME_FORMAT_12H) + timeFormat = __getDateByBestPattern("hma"); + else + timeFormat = __getDateByBestPattern("Hm"); + + resultString = __getString(timeFormat, timeData); + + if (timeFormat) free(timeFormat); + + return resultString; +} + +char *PhLogIcu::getGroupIndexDateString(int time) +{ + time_t timeData = time; + return __getString(groupFormatType.c_str(), timeData); +} + +char *PhLogIcu::getCallDurationString(int time) +{ + int sec, min, hour, day; + struct tm tmp={0}; + char buf_t[1024]={0}; + + sec = time; + day = sec/(60*60*24); + sec %= (60*60*24); + hour = sec/(60*60); + sec %= (60*60); + min = sec/(60); + sec %= (60); + tmp.tm_mday = day; + tmp.tm_hour = hour; + tmp.tm_min = min; + tmp.tm_sec = sec; + strftime(buf_t, sizeof(buf_t), "%H:%M:%S", &tmp); + + return strdup(buf_t); +} + +void PhLogIcu::setDefaultTimezoneId() +{ + WENTER(); + int error = I18N_ERROR_NONE; + i18n_uchar utimezone_id[PH_TEXT_SHORT_LEN] = {0}; + char timezone_buffer[PH_TEXT_SHORT_LEN] = {0}; + char timezone_id[PH_TEXT_SHORT_LEN] = {0}; + char* buffer; + int res = 0; + int timezone_str_size; + + res = system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE, &buffer); + WPRET_M(SYSTEM_SETTINGS_ERROR_NONE != res, "SYSTEM_SETTINGS_KEY_LOCALE_TIMEZONE is NULL"); + strncpy(timezone_id, buffer, sizeof(timezone_id)-1); + timezone_str_size = readlink("/opt/etc/localtime", timezone_buffer, sizeof(timezone_buffer)-1); + free(buffer); + + if (timezone_str_size > 0) { + char *ptr, *sp, *zone = NULL, *city = NULL; + ptr = strtok_r(timezone_buffer, "/", &sp); + + while((ptr = strtok_r(NULL, "/", &sp))) { + zone = city; + city = ptr; + } + + if(zone != NULL && city != NULL) { + if(strcmp("zoneinfo", zone) == 0) { + snprintf(timezone_id, sizeof(timezone_id), "%s", city); + } + else { + snprintf(timezone_id, sizeof(timezone_id), "%s/%s", zone, city); + } + } + WDEBUG("timezone_id:%s", timezone_id); + if (systemTimezone) + free(systemTimezone); + systemTimezone = strdup(timezone_id); + } + else { + WDEBUG("%s", "readlink fail"); + } + + if (*timezone_id) { + i18n_ustring_copy_ua_n(utimezone_id, timezone_id, PH_TEXT_SHORT_LEN); + error = i18n_ucalendar_set_default_timezone(utimezone_id); + WDEBUG("error:%d, utimezone_id:%s, timezone_id:%s", error, utimezone_id, timezone_id); + } + else { + WPRET_M(NULL == timezone_id, "get timezone_id is failed(%d)", error); + } +} diff --git a/lib-phone/ph-loglist/icu/PhLogIcu.h b/lib-phone/ph-loglist/icu/PhLogIcu.h new file mode 100755 index 0000000..9f9e947 --- /dev/null +++ b/lib-phone/ph-loglist/icu/PhLogIcu.h @@ -0,0 +1,58 @@ +/* + * 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_LOG_ICU_H_ +#define _PH_LOG_ICU_H_ + +class PhLogIcu +{ +public: + PhLogIcu(); + virtual ~PhLogIcu(); + +public: + typedef enum { + PH_TIME_FORMAT_12H = 0, + PH_TIME_FORMAT_24H, + PH_TIME_FORMAT_UNKNOWN + } PhTimeFormat; + + typedef enum { + PH_DATE_FORMAT_DD_MM_YYYY = 0, + PH_DATE_FORMAT_MM_DD_YYYY, + PH_DATE_FORMAT_YYYY_DD_MM, + PH_DATE_FORMAT_YYYY_MM_DD, + PH_DATE_FORMAT_UNKNOWN + } PhGroupIndexDateFormat; + + static void setTimeFormat(); + static int generatePatternForLocal(const char *locale, const char *patternFormat, char *genPattern, int genPatternSize); + static void setDateFormat(); + static void setLocale(); + static void setDefaultTimezoneId(); + + static char *getTimeString(int time); + static char *getGroupIndexDateString(int time); + static char *getCallDurationString(int time); + +private: + static char *__getString(const char *pattern, time_t timeData); + static char *__getDateByBestPattern(const char* skeleton); +}; + +#endif /* _PH_LOG_ICU_H_ */ + diff --git a/lib-phone/ph-loglist/inc/PhLogDbMgr.h b/lib-phone/ph-loglist/inc/PhLogDbMgr.h new file mode 100755 index 0000000..02ae6af --- /dev/null +++ b/lib-phone/ph-loglist/inc/PhLogDbMgr.h @@ -0,0 +1,99 @@ +/*
+ * 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_LOG_DB_MGR_H_
+#define _PH_LOG_DB_MGR_H_
+
+#include <list>
+#include <string>
+
+#include <contacts.h>
+////#include <contacts_product.h>
+
+#include "PhDbListener.h"
+
+class PhLogDbMgr
+{
+public:
+ static PhLogDbMgr* getInstance();
+
+public:
+ typedef enum {
+ LIST_TYPE_ALL_CALL_MESSAGE,
+ LIST_TYPE_MISSED_CALL,
+ LIST_TYPE_EMAIL,
+ LIST_TYPE_ALL_CALL,//more_popup
+ LIST_TYPE_DIALED_CALL,
+ LIST_TYPE_RECEIVED_CALL,
+ LIST_TYPE_REJECTED_CALL,
+ LIST_TYPE_ALL_MESSAGE,
+ LIST_TYPE_ALL_CALL_MESSAGE_EMAIL,
+ LIST_TYPE_SENT_MESSAGE,
+ LIST_TYPE_RECEIVED_MESSAGE,
+ LIST_TYPE_DETAIL_VIEW,
+ LIST_TYPE_VOICE_CALLS,
+ LIST_TYPE_VIDEO_CALLS,
+ LIST_TYPE_ALL_CALL_SIM_INDEX_1,
+ LIST_TYPE_ALL_CALL_SIM_INDEX_2
+ }ListType; //log type
+
+ typedef struct RecordInfo
+ {
+ RecordInfo();
+ ~RecordInfo();
+
+ char *displayName;
+ char *imgPath;
+ char *number;
+ char *callDesc;
+ char *displayLogTime;
+
+ int logId;
+ int personId;
+ int numberType;
+ int logTime;
+ int logType;
+ int callDuration;
+
+ std::list<PhLogDbMgr::RecordInfo*> *groupedList;
+ }RecordInfo;
+
+ std::list<PhLogDbMgr::RecordInfo*>* loadLogList(ListType listType, bool isUnknownIncluded, int limit = 0);
+ std::list<PhLogDbMgr::RecordInfo*>* loadDetailList(const char* searchNumber, const char* searchDesc);
+
+ bool deleteLogList(std::list<RecordInfo*> *logList, int totalCount);
+ void dumpLogList(const std::list<RecordInfo*>* list);
+ void updateMissedLogDbAsSeen(int index, int type);
+
+ void attach(PhDbListener* listener);
+ void detach(PhDbListener* listener);
+ static void onNotify(const char* view_uri, void* data);
+
+private:
+ PhLogDbMgr(const char* name);
+ virtual ~PhLogDbMgr();
+
+ unsigned int __getLogListDataFromDb(contacts_list_h* ctsList, ListType type, int limit);
+ unsigned int __getDetailListDataFromDb(contacts_list_h* ctsList, const char* number);
+
+ ListType __requestedListType;
+ bool __requestedIsUnknownIncluded;
+ std::list<PhDbListener*> __listenerList;
+};
+
+#endif //_PH_LOG_DB_MGR_H_
+
diff --git a/lib-phone/ph-loglist/inc/PhLogGenlistHelper.h b/lib-phone/ph-loglist/inc/PhLogGenlistHelper.h new file mode 100755 index 0000000..6f97eb1 --- /dev/null +++ b/lib-phone/ph-loglist/inc/PhLogGenlistHelper.h @@ -0,0 +1,109 @@ +/*
+ * 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_LOG_GENLIST_HELPER_H_
+#define _PH_LOG_GENLIST_HELPER_H_
+
+#include "Elementary.h"
+#include "WControl.h"
+#include <functional>
+#include <vector>
+
+class PhLogGenlistHelper : public WControl
+{
+public:
+ PhLogGenlistHelper(Evas_Object* parent);
+
+public:
+ typedef struct {
+ Elm_Object_Item* it;
+ const void* data;
+ const void* p;
+ void* contents;
+ Ecore_Timer *thumbnailUpdateTimer;
+ } ItemData;
+
+ typedef struct {
+ Elm_Object_Item* it;
+ const void* data;
+ const void* p;
+ Eina_Bool isChecked;
+ Evas_Object *checkButton;
+ } CheckedItemData;
+
+ typedef enum{
+ SWIPE_TO_RIGHT,
+ SWIPE_TO_LEFT
+ }SwipeDirection;
+public:
+ Evas_Object* getEvasObj(){return __genlist;}
+ Elm_Object_Item* appendItem(
+ const Elm_Genlist_Item_Class *itc, + const void *data, + Elm_Object_Item *parent, + Elm_Genlist_Item_Type type, + Evas_Smart_Cb func, + const void *func_data);
+
+
+ Elm_Object_Item* appendCheckItem(
+ const Elm_Genlist_Item_Class *itc,
+ const void *data,
+ Elm_Object_Item *parent,
+ Elm_Genlist_Item_Type type,
+ Evas_Smart_Cb func,
+ const void *func_data,
+ Eina_Bool isChecked = EINA_FALSE);
+
+ void appendFinish();
+
+ void updateItems(void);
+
+ void setSwipeHandler(const std::function<void(SwipeDirection, void*)>& func) {__swipeHandler = func;}
+
+private:
+ virtual Evas_Object* onCreate( Evas_Object* parent, void* param );
+ virtual void onDestroy();
+
+ static void __swipeStartCb(void *data, Elm_Object_Item *it, const char *em, const char *src);
+ static void __swipeInvokeCb(void *data, Elm_Object_Item *it, const char *em, const char *src);
+ static void __swipeCancleCb(void *data, Elm_Object_Item *it, const char *em, const char *src);
+ static void __genlistRealizedCb(void *data, Evas_Object *obj, void *event_info);
+ static void __genlistUnrealizedCb(void *data, Evas_Object *obj, void *event_info);
+ static void __languageChangedCb(void *data, Evas_Object *obj, void *event_info);
+ static void __longPressedCb(void *data, Evas_Object *obj, void *event_info);
+ static Eina_Bool __scrollTimerCb(void *data);
+ static void __scrollCb(void *data, Evas_Object *obj, void *event_info);
+ static void __mouseUpCb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
+
+ Evas_Object* __createGenlist(void);
+private:
+ PhLogGenlistHelper();
+ virtual ~PhLogGenlistHelper();
+
+private:
+ Evas_Object* __genlist;
+ Evas_Object* __parent;
+ std::function<void(SwipeDirection, void*)> __swipeHandler;
+ Ecore_Timer* __scrollTimer;
+ bool __isClearRequested;
+
+ int __smartAppendIndex;
+};
+
+#endif //_PH_LOG_GENLIST_HELPER_H_
+
diff --git a/lib-phone/ph-loglist/inc/PhLogListView.h b/lib-phone/ph-loglist/inc/PhLogListView.h new file mode 100755 index 0000000..b6f5565 --- /dev/null +++ b/lib-phone/ph-loglist/inc/PhLogListView.h @@ -0,0 +1,64 @@ +/* + * 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_LOG_LIST_VIEW_H_ +#define _PH_LOG_LIST_VIEW_H_ +#include <system_settings.h> + +#include "WView.h" + +#include "IContactsTabPageView.h" + +#include "PhDbListener.h" + +#include "PhLogGenlistHelper.h" + +#define LOGLIST_SUB_TEXT_SIZE 22 + + +class PhLogListView : public PhDbListener, public IContactsTabPageView +{ +public: + PhLogListView(); + +public: + PhLogGenlistHelper* getGlHelper(void); + virtual void updateList(void) {}; + +protected: + virtual void setGenlistLayout(); + virtual void setNoContentLayout(void); + + virtual void onTabSelect(Elm_Object_Item *naviItem); + virtual void onTabUnselect(Elm_Object_Item *naviItem); + virtual bool onTabPop(){return true;} + virtual void onTabScrollStart() {return;} + virtual void onTabScrollStop() {return;} + static void formatTimeDateChangedCb(system_settings_key_e key, void *data); + virtual void onCreated(void); + virtual void onDestroy(void); + +protected: + virtual ~PhLogListView(); + +private: + PhLogGenlistHelper* __glHelper; +}; + +#endif //_PH_LOG_LIST_VIEW_H_ + + diff --git a/lib-phone/ph-loglist/inc/PhLogMainListCheckView.h b/lib-phone/ph-loglist/inc/PhLogMainListCheckView.h new file mode 100755 index 0000000..fbe59bc --- /dev/null +++ b/lib-phone/ph-loglist/inc/PhLogMainListCheckView.h @@ -0,0 +1,96 @@ +/* + * 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 PHLOGMAINLISTCHECKVIEW_H_ +#define PHLOGMAINLISTCHECKVIEW_H_ + +#include "PhLogDbMgr.h" +#include "PhLogListView.h" +#include "ContactsCommon.h" + +class WAPP_ASSIST_EXPORT PhLogMainListCheckView : public PhLogListView +{ +public: + PhLogMainListCheckView(ContactsData *contactsData); + PhLogMainListCheckView(PhLogDbMgr::ListType currentListType, int listPosition); + +protected: + virtual void onPushed(Elm_Object_Item* naviItem); + virtual void onSetAsPageContent(Elm_Object_Item* parentNaviItem); + virtual Evas_Object* onCreate( Evas_Object* parent, void* viewParam); + virtual void onCreated(); + +private: + typedef enum{ + LAUNCH_MODE_NORMAL = 0, + LAUNCH_MODE_MESSAGE_COMPOSER, + LAUNCH_MODE_EMAIL_COMPOSER + }__LaunchMode; + + virtual void onDbChanged(); + + virtual void updateList(void); + + void __enableTitleBtn(); + + void __setGenlistItcs(); + + void __setList(void); + + void __initializeTitleInfo(); + void __updateTitleInfo(); + + static void __checkAllItems(PhLogGenlistHelper* glHelper); + static void __uncheckAllItems(PhLogGenlistHelper* glHelper); + static void __checkItem(PhLogGenlistHelper::CheckedItemData * itemData); + static void __uncheckItem(PhLogGenlistHelper::CheckedItemData * itemData); + static void __checkAllClickedCb(void *data, Evas_Object *obj, void *event_info); + + static void __selectItemCb(void *data, Evas_Object *obj, void *event_info); + + PhLogMainListCheckView::__LaunchMode __decideLaunchMode(ContactsData* contactsData); + void __replyToUgRequest(); + + //from IContactsTabPageView + virtual void onTabSelect(Elm_Object_Item *naviItem); + virtual void onTabUnselect(Elm_Object_Item *naviItem); + virtual bool onTabPop(); + +private: + PhLogMainListCheckView(); + virtual ~PhLogMainListCheckView(); + +private: + Elm_Genlist_Item_Class *__itcGroupIndex; + Elm_Genlist_Item_Class *__itcDeleteList; + Elm_Genlist_Item_Class *__itcSelectAll; + std::list<PhLogDbMgr::RecordInfo*>* __logList; + Evas_Object *__checkAllButton; + Evas_Object *__deleteButton; + std::list<PhLogDbMgr::RecordInfo*> *__checkedList; + ContactsData* __contactsData; + __LaunchMode __launchMode; + PhLogDbMgr::ListType __currentListType; + PhLogDbMgr::RecordInfo* __newRecord; + bool __enableTitleButton; + bool __enableCheckAllButton; + int __checkedCount; + int __totalCount; + int __listInitialPosition; +}; + +#endif /* PHLOGMAINLISTCHECKVIEW_H_ */ diff --git a/lib-phone/ph-loglist/inc/PhLogMainListView.h b/lib-phone/ph-loglist/inc/PhLogMainListView.h new file mode 100755 index 0000000..1cd9955 --- /dev/null +++ b/lib-phone/ph-loglist/inc/PhLogMainListView.h @@ -0,0 +1,99 @@ +/* + * 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_LOG_MAIN_LIST_VIEW_H_ +#define _PH_LOG_MAIN_LIST_VIEW_H_ + +#include <map> +#include <system_settings.h> + +#include "ContactsCommon.h" + +#include "PhLogListView.h" +#include "PhLogDbMgr.h" +#include "WUiTimer.h" + +class WAPP_ASSIST_EXPORT PhLogMainListView : public PhLogListView +{ +public: + PhLogMainListView(ContactsData *contactsData); + +protected: + virtual Evas_Object* onCreate( Evas_Object* parent, void* viewParam); + virtual void onCreated(void); + virtual void onDestroy(void); + virtual void onSetAsPageContent(Elm_Object_Item* parentNaviItem); + +private: + typedef enum{ + LAUNCH_MODE_NORMAL = 0, + LAUNCH_MODE_SINGLE_SELECT_UG, + LAUNCH_MODE_EMAIL_ADD_PRIORITY_SENDER_UG, + LAUNCH_MODE_DURING_CALL_TABUG + } __LaunchMode; + + __LaunchMode __decideLaunchMode(ContactsData* contactsData); + void __createViewBy(); + void __resetMissedCallCount(); + void __setMoreBtn(Elm_Object_Item *naviItem); + void __setList(void); + void __setGenlistItcs(); + int __getListPosition(); + void __initIcuPattern(); + + Evas_Object* __getCachedContents(std::string keyString); + Evas_Object* __createListContents(std::string contentsType); + + static void __onViewByCallsCb(void *data, Evas_Object *obj, void *event_info); + static void __selectDetailButtonCb(void *data, Evas_Object *obj, void *event_info); + static void __selectItemCb(void *data, Evas_Object *obj, void *event_info); + static void __genlistUnswallowCb(void *data, Evas_Object* obj, void *event_info); + static void __windowFocusInCb(void *data, Evas_Object *obj, void *event_info); + + //from PhLogListView + virtual void updateList(void); + + //from PhDbListener + virtual void onDbChanged(); + + //from IContactsTabPageView + virtual void onTabSelect(Elm_Object_Item *naviItem); + virtual void onTabUnselect(Elm_Object_Item *naviItem); + virtual bool onTabPop(); +private: + PhLogMainListView(); + virtual ~PhLogMainListView(); + +private: + Elm_Genlist_Item_Class *__itcGroupIndex; + Elm_Genlist_Item_Class *__itcMainList; + std::list<PhLogDbMgr::RecordInfo*>* __logList; + + bool __enableViewByButton; + Evas_Object* __viewByButton; + PhLogDbMgr::ListType __currentListType; + std::map<Evas_Object*,std::string> __logCacheList; + + __LaunchMode __launchMode; + ContactsData* __contactsData; + WUiTimer* __dbUpdateTimer; + bool __isActive; + bool __isScrollStopped; + bool __isUpdateImmediate; +}; + +#endif /* _PH_LOG_MAIN_LIST_VIEW_H_ */ diff --git a/lib-phone/ph-loglist/src/PhLogDbMgr.cpp b/lib-phone/ph-loglist/src/PhLogDbMgr.cpp new file mode 100755 index 0000000..35b62b6 --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDbMgr.cpp @@ -0,0 +1,663 @@ +/*
+ * 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 "PhCommon.h"
+#include "PhLogDbMgr.h"
+#include "ContactsDebug.h"
+#include "PhLogUtil.h"
+#include "PhLogIcu.h"
+
+#include <vector> +
+PhLogDbMgr::RecordInfo::RecordInfo()
+{
+ displayName = NULL;
+ imgPath = NULL;
+ number = NULL;
+ callDesc = NULL;
+
+ logId = 0;
+ personId = 0;
+ numberType = 0;
+ logTime = 0;
+ logType = 0;
+ callDuration = 0;
+
+ groupedList = NULL;
+};
+PhLogDbMgr::RecordInfo::~RecordInfo()
+{
+ SAFE_FREE(displayName);
+ SAFE_FREE(imgPath);
+ SAFE_FREE(number);
+ SAFE_FREE(callDesc);
+
+ delete groupedList;
+};
+
+PhLogDbMgr* PhLogDbMgr::getInstance()
+{
+ static PhLogDbMgr __instance("LogDbMgr");
+ return &__instance;
+}
+
+PhLogDbMgr::PhLogDbMgr(const char* name)
+{
+ WENTER();
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_db_add_changed_cb(_contacts_person._uri, onNotify, this);
+ if (CONTACTS_ERROR_NONE != err) WWARNING("contacts_db_remove_changed_cb() Failed(%d)", err);
+ err = contacts_db_add_changed_cb(_contacts_phone_log._uri, onNotify, this);
+ if (CONTACTS_ERROR_NONE != err) WWARNING("contacts_db_remove_changed_cb() Failed(%d)", err);
+}
+
+PhLogDbMgr::~PhLogDbMgr()
+{
+ WENTER();
+ int err = CONTACTS_ERROR_NONE;
+
+ err = contacts_db_remove_changed_cb(_contacts_person._uri, onNotify, this);
+ if (CONTACTS_ERROR_NONE != err) WWARNING("contacts_db_remove_changed_cb() Failed(%d)", err);
+// err = contacts_db_remove_changed_cb_with_info(_contacts_phone_log._uri, onNotify, this);
+ err = contacts_db_remove_changed_cb(_contacts_phone_log._uri, onNotify, this);
+ if (CONTACTS_ERROR_NONE != err) WWARNING("contacts_db_remove_changed_cb() Failed(%d)", err);
+}
+
+unsigned int PhLogDbMgr::__getDetailListDataFromDb(contacts_list_h* ctsList, const char* number)
+{
+ WENTER();
+ int err = CONTACTS_ERROR_NONE;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+ int recordCnt = 0;
+
+ do{
+ if (CONTACTS_ERROR_NONE != (err = contacts_query_create(_contacts_person_phone_log._uri, &query))) break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_create( _contacts_person_phone_log._uri, &filter))) break;
+
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_GREATER_THAN_OR_EQUAL, CONTACTS_PLOG_TYPE_VOICE_INCOMMING)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_LESS_THAN_OR_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_BLOCKED)))break;
+
+ if (SAFE_STRLEN(number)>0)
+ {
+ WHIT();
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_str(filter, _contacts_person_phone_log.address, CONTACTS_MATCH_EXACTLY, number)))break;
+ }
+
+ if (CONTACTS_ERROR_NONE != (err = contacts_query_set_filter(query, filter)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_query_set_sort(query, _contacts_person_phone_log.log_time, false)))break;
+
+ if(ctsList != NULL)
+ {
+ if (CONTACTS_ERROR_NONE != (err = contacts_db_get_records_with_query(query, 0, 0, ctsList)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_list_get_count(*ctsList, &recordCnt)))break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE != (err = contacts_db_get_count_with_query(query, (int *)(&recordCnt))))break;;
+ WDEBUG("get count! (%d records)", recordCnt);
+ }
+ }while(0);
+
+ if (query)
+ contacts_query_destroy(query);
+ if (filter)
+ contacts_filter_destroy(filter);
+
+ WDEBUG("get db records (ctsList: 0x%x, count:%d, error:%d)", ctsList, recordCnt, err);
+ return recordCnt;
+
+}
+
+unsigned int PhLogDbMgr::__getLogListDataFromDb(contacts_list_h* ctsList, ListType type, int limit)
+{
+ WENTER();
+ int err = CONTACTS_ERROR_NONE;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+ int recordCnt = 0;
+
+ int logTypeMin = CONTACTS_PLOG_TYPE_NONE;
+ int logTypeMax = CONTACTS_PLOG_TYPE_NONE;
+ err = contacts_query_create(_contacts_person_phone_log._uri, &query);
+ WPRET_VM(CONTACTS_ERROR_NONE != err, 0, "contacts_query_create() Failed(%d)", err);
+
+ err = contacts_filter_create( _contacts_person_phone_log._uri, &filter);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_filter_create() Failed(%d)", err);
+ err = contacts_query_destroy(query);
+ if(CONTACTS_ERROR_NONE != err)
+ WWARNING("contacts_query_destroy() Failed(%d)", err);
+ return 0;
+ }
+
+ switch (type)
+ {
+ case LIST_TYPE_MISSED_CALL:
+ logTypeMin = CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN;
+ logTypeMax = CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN;
+ break;
+ case LIST_TYPE_EMAIL:
+ logTypeMin = CONTACTS_PLOG_TYPE_EMAIL_RECEIVED;
+ logTypeMax = CONTACTS_PLOG_TYPE_EMAIL_SENT;
+ break;
+ case LIST_TYPE_ALL_CALL:
+ case LIST_TYPE_ALL_CALL_SIM_INDEX_1:
+ case LIST_TYPE_ALL_CALL_SIM_INDEX_2:
+ logTypeMin = CONTACTS_PLOG_TYPE_VOICE_INCOMMING;
+ logTypeMax = CONTACTS_PLOG_TYPE_VIDEO_BLOCKED;
+ break;
+ case LIST_TYPE_DIALED_CALL:
+ logTypeMin = CONTACTS_PLOG_TYPE_VOICE_OUTGOING;
+ logTypeMax = CONTACTS_PLOG_TYPE_VIDEO_OUTGOING;
+ break;
+ case LIST_TYPE_RECEIVED_CALL:
+ logTypeMin = CONTACTS_PLOG_TYPE_VOICE_INCOMMING;
+ logTypeMax = CONTACTS_PLOG_TYPE_VIDEO_INCOMMING;
+ break;
+ case LIST_TYPE_REJECTED_CALL:
+ logTypeMin = CONTACTS_PLOG_TYPE_VOICE_REJECT;
+ logTypeMax = CONTACTS_PLOG_TYPE_VIDEO_BLOCKED;
+ break;
+ case LIST_TYPE_ALL_MESSAGE:
+ logTypeMin = CONTACTS_PLOG_TYPE_MMS_INCOMMING;
+ logTypeMax = CONTACTS_PLOG_TYPE_MMS_BLOCKED;
+ break;
+ case LIST_TYPE_SENT_MESSAGE:
+ logTypeMin = CONTACTS_PLOG_TYPE_MMS_OUTGOING;
+ logTypeMax = CONTACTS_PLOG_TYPE_SMS_OUTGOING;
+ break;
+ case LIST_TYPE_RECEIVED_MESSAGE:
+ logTypeMin = CONTACTS_PLOG_TYPE_MMS_INCOMMING;
+ logTypeMax = CONTACTS_PLOG_TYPE_SMS_INCOMMING;
+ break;
+ case LIST_TYPE_VOICE_CALLS:
+ break;
+ case LIST_TYPE_VIDEO_CALLS:
+ break;
+ case LIST_TYPE_ALL_CALL_MESSAGE:
+ default:
+ logTypeMin = CONTACTS_PLOG_TYPE_VOICE_INCOMMING;
+ logTypeMax = CONTACTS_PLOG_TYPE_MMS_BLOCKED;
+ break;
+ }
+
+ if(type == LIST_TYPE_DIALED_CALL
+ || type == LIST_TYPE_RECEIVED_CALL
+ || type == LIST_TYPE_SENT_MESSAGE
+ || type == LIST_TYPE_RECEIVED_MESSAGE)
+ {
+ do {
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, logTypeMin)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, logTypeMax)))break;
+// if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+// if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_RCS)))break;
+ }while(0);
+ }
+ else if(type == LIST_TYPE_VOICE_CALLS)
+ {
+ do {
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VOICE_INCOMMING)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VOICE_OUTGOING)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VOICE_INCOMMING_SEEN)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VOICE_REJECT)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VOICE_BLOCKED)))break;
+ }while(0);
+ }
+ else if(type == LIST_TYPE_VIDEO_CALLS)
+ {
+ do {
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_INCOMMING)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_OUTGOING)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_REJECT)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_BLOCKED)))break;
+ }while(0);
+ }
+ else if(type == LIST_TYPE_ALL_CALL_SIM_INDEX_1 )
+ {
+ do{
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_GREATER_THAN_OR_EQUAL, logTypeMin)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_LESS_THAN_OR_EQUAL, logTypeMax)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.sim_slot_no, CONTACTS_MATCH_EQUAL, 0)))break;
+ }while(0);
+ }
+ else if(type == LIST_TYPE_ALL_CALL_SIM_INDEX_2 )
+ {
+ do{
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_GREATER_THAN_OR_EQUAL, logTypeMin)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_LESS_THAN_OR_EQUAL, logTypeMax)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.sim_slot_no, CONTACTS_MATCH_EQUAL, 1)))break;
+ }while(0);
+ }
+ else
+ {
+ do{
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_GREATER_THAN_OR_EQUAL, logTypeMin)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_AND)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_LESS_THAN_OR_EQUAL, logTypeMax)))break;
+ }while(0);
+ }
+
+ if (CONTACTS_ERROR_NONE == err)
+ {
+ WHIT();
+ do{
+ if (CONTACTS_ERROR_NONE != (err = contacts_query_set_filter(query, filter)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_query_set_sort(query, _contacts_person_phone_log.log_time, false)))break;
+
+ // if output param NULL, just count the records
+ if(ctsList != NULL)
+ {
+ if (CONTACTS_ERROR_NONE != (err = contacts_db_get_records_with_query(query, 0, limit, ctsList)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_list_get_count(*ctsList, &recordCnt)))break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE != (err = contacts_db_get_count_with_query(query, (int *)(&recordCnt))))break;;
+ WDEBUG("get count! (%d records)", recordCnt);
+ }
+ }while(0);
+ }
+
+ if (query)
+ contacts_query_destroy(query);
+ if (filter)
+ contacts_filter_destroy(filter);
+
+ WDEBUG("get db records (ctsList: 0x%x, type:%d, count:%d, error:%d)", ctsList, type, recordCnt, err);
+ return recordCnt;
+
+}
+
+bool PhLogDbMgr::deleteLogList(std::list<RecordInfo*> *logList, int totalCount)
+{
+ WHIT();
+
+ WPRET_VM( NULL == logList, false, "Invalid parameter(data) is NULL");
+
+ int err = CONTACTS_ERROR_NONE;
+ std::vector<int> logIdArray;
+ logIdArray.reserve(totalCount);
+
+ for (auto &selectedRecordInfo : *logList) {
+ logIdArray.push_back(selectedRecordInfo->logId);
+
+ if (selectedRecordInfo->groupedList) {
+ for (auto &groupedRecordInfo : *selectedRecordInfo->groupedList) {
+ logIdArray.push_back(groupedRecordInfo->logId);
+ }
+ }
+ }
+
+ err = contacts_db_delete_records(_contacts_phone_log._uri, logIdArray.data(), logIdArray.size());
+ WPWARN(CONTACTS_ERROR_NONE != err, "contacts_db_delete_records() Failed(%d)", err);
+
+ return true;
+}
+
+std::list<PhLogDbMgr::RecordInfo*>* PhLogDbMgr::loadDetailList(const char* searchNumber, const char* searchDesc)
+{
+ WENTER();
+ WDEBUG("searchNumber[%s], searchDesc[%s]", searchNumber, searchDesc);
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h ctsList = NULL;
+ contacts_record_h record = NULL;
+// bool isMessageType = PhLogUtil::isMsgType( searchRecord->logType);
+ __getDetailListDataFromDb(&ctsList, searchNumber);
+ WPRET_VM(ctsList == NULL, NULL, "__getLogListDataFromDb Failed.");
+
+ std::list<RecordInfo*>* list = new std::list<RecordInfo*>;
+ do{
+ err = contacts_list_get_current_record_p(ctsList, &record);
+ if(CONTACTS_ERROR_NONE != err){
+ WERROR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+
+ char *tmpNumber = NULL;
+ err = contacts_record_get_str_p(record, _contacts_person_phone_log.address, &tmpNumber);
+ if(CONTACTS_ERROR_NONE != err){
+ WERROR("contacts_record_get_str_p() Failed(%d)", err);
+ break;
+ }
+
+ char * tempDesc = NULL;
+ err = contacts_record_get_str_p(record, _contacts_person_phone_log.extra_data2, &tempDesc);
+ if(CONTACTS_ERROR_NONE != err){
+ WERROR("contacts_record_get_int() Failed(%d)", err);
+ break;
+ }
+
+ if( !( SAFE_STRLEN(searchNumber) > 0 ) )
+ {
+ if ( tmpNumber || !PhLogUtil::isGroupedByDesc(searchDesc, (const char*)tempDesc)) {
+ err = contacts_list_next(ctsList);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+// free(tmpNumber);
+// free(tempDesc);
+ continue;
+ }
+ }
+
+ RecordInfo *recordInfo = new RecordInfo;
+ recordInfo->number = SAFE_STRDUP(tmpNumber);
+ recordInfo->callDesc = SAFE_STRDUP(tempDesc);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.log_id, &recordInfo->logId);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.person_id, &recordInfo->personId);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.log_time, &recordInfo->logTime);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.log_type, &recordInfo->logType);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.extra_data1, &recordInfo->callDuration);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.address_type, &recordInfo->numberType);
+ err = contacts_record_get_str(record, _contacts_person_phone_log.display_name, &recordInfo->displayName);
+ err = contacts_record_get_str(record, _contacts_person_phone_log.image_thumbnail_path, &recordInfo->imgPath);
+
+ if(PhLogUtil::isVoiceCallType(recordInfo->logType) || PhLogUtil::isVideoCallType(recordInfo->logType))
+ recordInfo->logTime -= recordInfo->callDuration;
+
+ list->push_back(recordInfo);
+
+ err = contacts_list_next(ctsList);
+// free(tmpNumber);
+// free(tempDesc);
+ if(CONTACTS_ERROR_NONE != err)
+ {
+ WERROR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }while (1);
+
+ contacts_list_destroy(ctsList, true);
+
+ return list;
+}
+
+std::list<PhLogDbMgr::RecordInfo*>* PhLogDbMgr::loadLogList(ListType listType, bool isUnknownIncluded, int limit /* = 0 */ )
+{
+ WENTER();
+
+ int err = CONTACTS_ERROR_NONE;
+ contacts_list_h ctsList;
+ contacts_record_h record = NULL;
+ std::list<RecordInfo*>* list = new std::list<RecordInfo*>;
+
+ __requestedListType = listType;
+ __requestedIsUnknownIncluded = isUnknownIncluded;
+
+ __getLogListDataFromDb(&ctsList, __requestedListType, limit);
+
+ if (ctsList == NULL) {
+ WERROR("__getLogListDataFromDb Failed.");
+ delete list;
+ return NULL;
+ }
+ do{
+ err = contacts_list_get_current_record_p(ctsList, &record);
+ if(CONTACTS_ERROR_NONE != err){
+ WERROR("contacts_list_get_current_record_p() Failed(%d)", err);
+ break;
+ }
+
+ char *number = NULL;
+ err = contacts_record_get_str_p(record, _contacts_person_phone_log.address, &number);
+ if(CONTACTS_ERROR_NONE != err){
+ WERROR("contacts_record_get_str_p() Failed(%d)", err);
+ break;
+ }
+
+ if (__requestedIsUnknownIncluded == false && (!number || !*number)) {
+ err = contacts_list_next(ctsList);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ continue;
+ }
+
+ RecordInfo *recordInfo = new RecordInfo;
+ err = contacts_record_get_int(record, _contacts_person_phone_log.log_id, &recordInfo->logId);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.person_id, &recordInfo->personId);
+ recordInfo->number = SAFE_STRDUP(number);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.log_time, &recordInfo->logTime);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.log_type, &recordInfo->logType);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.extra_data1, &recordInfo->callDuration);
+ err = contacts_record_get_int(record, _contacts_person_phone_log.address_type, &recordInfo->numberType);
+ err = contacts_record_get_str(record, _contacts_person_phone_log.display_name, &recordInfo->displayName);
+ err = contacts_record_get_str(record, _contacts_person_phone_log.image_thumbnail_path, &recordInfo->imgPath);
+ err = contacts_record_get_str(record, _contacts_person_phone_log.extra_data2, &recordInfo->callDesc);
+
+ if(PhLogUtil::isVoiceCallType(recordInfo->logType) || PhLogUtil::isVideoCallType(recordInfo->logType))
+ recordInfo->logTime -= recordInfo->callDuration;
+ recordInfo->displayLogTime = PhLogIcu::getTimeString(recordInfo->logTime);
+
+ list->push_back(recordInfo);
+
+ err = contacts_list_next(ctsList);
+ if(CONTACTS_ERROR_NONE != err)
+ {
+ WERROR("contacts_list_next() Failed(%d)", err);
+ break;
+ }
+ }while (1);
+
+ contacts_list_destroy(ctsList, true);
+
+ WLEAVE();
+ return list;
+}
+
+void PhLogDbMgr::dumpLogList(const std::list<RecordInfo*>* list)
+{
+ WENTER();
+
+ int idx = 0;
+ for (auto it=list->begin(); it != list->end(); it++)
+ {
+ RecordInfo *recordInfo = (RecordInfo*)(*it);
+ WDEBUG("[%d]---------",idx++);
+ WDEBUG("logId %d",recordInfo->logId);
+ WDEBUG("personId %d",recordInfo->personId);
+ WDEBUG("number %s",recordInfo->number);
+ WDEBUG("logTime %ld",recordInfo->logTime);
+ WDEBUG("logType %d",recordInfo->logType);
+ WDEBUG("callDuration %d",recordInfo->callDuration);
+ WDEBUG("displayName %s",recordInfo->displayName);
+ WDEBUG("imgPath %s",recordInfo->imgPath);
+ WDEBUG("callDesc %s",recordInfo->callDesc);
+// WDEBUG("-------------");
+ }
+
+ WLEAVE();
+}
+
+void PhLogDbMgr::updateMissedLogDbAsSeen(int index, int type)
+{
+ WENTER();
+ int logType = 0;
+ int err = CONTACTS_ERROR_NONE;
+ contacts_record_h logRecord = NULL;
+
+ WPRET_M(CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN != type &&
+ CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN != type &&
+ CONTACTS_PLOG_TYPE_NONE != type,
+ "The type is invalid. It must be CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN"
+ " or CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN or none");
+
+ WDEBUG("update phonelogs table records(index: %d, log_type:%d)",index, type);
+ if (0 == index) {
+ contacts_list_h ctsList = NULL;
+ contacts_filter_h filter = NULL;
+ contacts_query_h query = NULL;
+ int recordCnt = 0;
+
+ err = contacts_query_create(_contacts_phone_log._uri, &query);
+ WPRET_M(CONTACTS_ERROR_NONE != err, "contacts_query_create() Failed(%d)", err);
+ err = contacts_filter_create(_contacts_phone_log._uri, &filter);
+ if (CONTACTS_ERROR_NONE != err) {
+ WERROR("contacts_filter_create() Failed(%d)", err);
+ contacts_query_destroy(query);
+ return;
+ }
+
+ do {
+ if (CONTACTS_PLOG_TYPE_NONE == type)
+ {
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_operator(filter, CONTACTS_FILTER_OPERATOR_OR)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_query_set_filter(query, filter)))break;
+ }
+ else
+ {
+ if (CONTACTS_ERROR_NONE != (err = contacts_filter_add_int(filter, _contacts_person_phone_log.log_type, CONTACTS_MATCH_EQUAL, type)))break;
+ if (CONTACTS_ERROR_NONE != (err = contacts_query_set_filter(query, filter)))break;
+ }
+
+ if (CONTACTS_ERROR_NONE != (err = contacts_db_get_records_with_query(query, 0, 0, &ctsList)))
+ {
+ err = contacts_list_destroy(ctsList, true);
+ if(CONTACTS_ERROR_NONE != err)
+ WWARNING("contacts_list_destroy() result : error(%d)", err);
+ break;
+ }
+ if (CONTACTS_ERROR_NONE != (err = contacts_list_get_count(ctsList, &recordCnt)))break;
+
+ if (0 < recordCnt)
+ {
+ while(CONTACTS_ERROR_NONE == contacts_list_get_current_record_p(ctsList, &logRecord)) {
+ err = contacts_record_get_int(logRecord, _contacts_phone_log.log_type, &logType);
+ WPWARN(CONTACTS_ERROR_NONE != err, "contacts_record_get_int() Failed(%d)", err);
+ err = contacts_record_set_int( logRecord, _contacts_phone_log.log_type, logType+1);
+ WPWARN(CONTACTS_ERROR_NONE != err, "contacts_record_set_int() Failed(%d)", err);
+ contacts_list_next(ctsList);
+ }
+
+ WDEBUG("mard_as_read(%d)", recordCnt);
+ ecore_thread_run([](void *data, Ecore_Thread *thread)
+ {
+ WDEBUG("BEGIN(thread) - mark_as_read");
+ contacts_list_h ctsList = (contacts_list_h)data;
+
+ contacts_db_update_records(ctsList);
+ contacts_list_destroy(ctsList, true);
+
+ WDEBUG("LEAVE(thread) - mark_as_read");
+ }, NULL, NULL, ctsList);
+ }
+ else
+ {
+ contacts_list_destroy(ctsList, true);
+ break;
+ }
+ }while(0);
+
+ if (query)
+ contacts_query_destroy(query);
+ if (filter)
+ contacts_filter_destroy(filter);
+ }
+ else {
+ if (CONTACTS_ERROR_NONE != (err = contacts_db_get_record( _contacts_phone_log._uri, index, &logRecord)))
+ {
+ err = contacts_record_get_int( logRecord, _contacts_phone_log.log_type, &logType );
+ if (CONTACTS_ERROR_NONE != err) {
+ WDEBUG("contacts_record_get_int() Failed(%d)", err);
+ }
+ err = contacts_record_set_int( logRecord, _contacts_phone_log.log_type, logType+1);
+ if (CONTACTS_ERROR_NONE != err) {
+ WDEBUG("contacts_record_set_int() Failed(%d)", err);
+ }
+ err = contacts_db_update_record(logRecord);
+ if (CONTACTS_ERROR_NONE != err) {
+ WDEBUG("contacts_db_update_record() Failed(%d)", err);
+ }
+ contacts_record_destroy(logRecord, true);
+ }
+ }
+ WDEBUG("contacts_service err : %d", err);
+ return;
+}
+
+void PhLogDbMgr::attach(PhDbListener* listener)
+{
+ WASSERT_EX(listener, "no listener");
+ WDEBUG("attach Listener: %p", listener);
+ std::list<PhDbListener*>::iterator it;
+ for (it=__listenerList.begin(); it!=__listenerList.end(); it++)
+ {
+ if (*it == listener)
+ {
+ __listenerList.erase(it);
+ break;
+ }
+ }
+ __listenerList.push_back(listener);
+}
+
+void PhLogDbMgr::detach(PhDbListener* listener)
+{
+ WASSERT_EX(listener, "no listener");
+ WDEBUG("detach Listener: %p", listener);
+ std::list<PhDbListener*>::iterator it;
+
+ for (it=__listenerList.begin(); it!=__listenerList.end(); it++)
+ {
+ if (*it == listener)
+ {
+ __listenerList.erase(it);
+ break;
+ }
+ }
+}
+
+void PhLogDbMgr::onNotify(const char* view_uri, void* data)
+{
+ WENTER();
+ WPRET_M(NULL == data , "Invalid Param : data");
+ PhLogDbMgr* p = (PhLogDbMgr*) data;
+
+ std::list<PhDbListener*> copyList(p->__listenerList);
+ std::list<PhDbListener*>::iterator it;
+ for (it=copyList.begin(); it!=copyList.end(); it++)
+ (*it)->onDbChanged();
+}
+
+
diff --git a/lib-phone/ph-loglist/src/PhLogDefines.h b/lib-phone/ph-loglist/src/PhLogDefines.h new file mode 100755 index 0000000..dc4aeae --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDefines.h @@ -0,0 +1,104 @@ +/*
+ * 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_LOG_DEFINES_H
+#define _PH_LOG_DEFINES_H
+
+#define PH_TEXT_SHORT_LEN 256
+
+#define _EDJ(obj) (Evas_Object *)elm_layout_edje_get(obj)
+
+
+enum PHUI_UG_LIST_TYPES{
+ PH_UG_REQUEST_SELECT = 11,/**< . */
+ PH_UG_REQUEST_SELECT_NUMBER = 12,/**< . */
+ PH_UG_REQUEST_SELECT_EMAIL = 13,/**< . */
+ PH_UG_REQUEST_SELECT_NUMBER_OR_EMAIL = 17,/**< . */
+
+ PH_UG_REQUEST_SET_WITH_NUM = 21,/**< . */
+ PH_UG_REQUEST_SET_WITH_EMAIL = 22,/**< . */
+ PH_UG_REQUEST_SET_WITH_WEB = 23,/**< . */
+ PH_UG_REQUEST_SET_WITH_IMG = 24,/**< . */
+ PH_UG_REQUEST_SET_WITH_RINGTONE = 25,/**< . */
+
+ PH_UG_REQUEST_CHECK = 31,/**< . */
+ PH_UG_REQUEST_CHECK_FOR_NUMBER = 32,/**< . */
+ PH_UG_REQUEST_CHECK_FOR_EMAIL = 33,/**< . */
+ PH_UG_REQUEST_CHECK_FOR_NUMBER_OR_EMAIL = 34,/**< . */
+
+ PH_UG_REQUEST_LAUNCH_VOICECALL = 51,/**< . */
+
+ PH_UG_REQUEST_LAUNCH_HELP_MAKECALLS = 52,/**< . */
+ PH_UG_REQUEST_LAUNCH_HELP_SAVECONTACTS = 53,/**< . */
+};
+
+enum PH_UG_LOG_TYPES{
+ PH_UG_REQUEST_LOG_CHECK = 11,
+ PH_UG_REQUEST_LOG_SELECT = 12,
+ PH_UG_REQUEST_LOG_DETAIL = 13,
+};
+
+/**
+ * The key of request bundle for type.
+ * \n Value : convert id to string by using \%d.
+ */
+#define PH_UG_BUNDLE_TYPE "type"
+
+/**
+ * The key of result bundle for phonelog index
+ * \n The contact index on #PH_UG_REQUEST_LOG_SELECT
+ * \n Value : convert id to integer by using atoi()
+ */
+#define PH_UG_BUNDLE_RESULT_PLOG_ID "plog_id"
+
+/**
+ * The key of result bundle for a list of phonelog index
+ * \n The phonelog index on #PH_UG_REQUEST_LOG_CHECK
+ * \n Value : convert string to a integer array by using g_base64_decode()
+ * @par example
+ * @code
+ void phonelog_result_cb(struct ui_gadget *ug, bundle *result, void *data)
+ {
+ if(NULL == ug || NULL == data)
+ return;
+
+ if(result) {
+ const char *val;
+ int *list, len, i;
+
+ val = bundle_get_val(result, PH_UG_BUNDLE_RESULT_PLOG_ID_LIST);
+ list = (int *)g_base64_decode(val, &len);
+
+ for(i=0;i<len/sizeof(int);i++)
+ // handle operation for each list[i]
+
+ g_free(list);
+ }
+ }
+ *
+ * @endcode
+ */
+#define PH_UG_BUNDLE_RESULT_PLOG_ID_LIST "get_select_list" // TODO : change to "plog_id_list"
+
+/**
+ * @}
+ */
+
+#define LOG_LIST_CALL_TYPE_SIZE 45
+#define LOG_LIST_INFO_BTN_SIZE 50
+
+#endif //_PH_LOG_DEFINES_H
diff --git a/lib-phone/ph-loglist/src/PhLogDetailButtonInfoControl.cpp b/lib-phone/ph-loglist/src/PhLogDetailButtonInfoControl.cpp new file mode 100755 index 0000000..353a0a6 --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDetailButtonInfoControl.cpp @@ -0,0 +1,128 @@ +/* + * 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 <dlfcn.h> +#include "WUiTimer.h" + +#include "ContactsAppControl.h" +#include "ContactsDebug.h" + +#include "PhPath.h" +#include "PhCommon.h" + +#include "PhLogUtil.h" +#include "PhLogDetailButtonInfoControl.h" + +PhLogDetailButtonInfoControl::PhLogDetailButtonInfoControl(Evas_Object* window, Evas_Object* naviframe): +__messageIcon(NULL), +__voiceIcon(NULL), +__videoIcon(NULL), +__dlHandle(NULL), +__msgHandler(NULL) +{ +} + +PhLogDetailButtonInfoControl::~PhLogDetailButtonInfoControl() +{ + WHIT(); +} + +Evas_Object* PhLogDetailButtonInfoControl::onCreate( Evas_Object* parent, void* viewParam) +{ + WHIT(); + + Evas_Object *baseLayout = PhCommon::createLayout(parent, LOG_LIST_EDJ, "log/detail/info/button"); + WPRET_VM(NULL == baseLayout, NULL, "PhCommon::createLayout() return NULL"); + + //message button + Evas_Object *messageButton = PhCommon::createButton(baseLayout, "transparent", NULL, [](void *data, Evas_Object *obj, void *event_info){ + PhLogDetailButtonInfoControl *p = (PhLogDetailButtonInfoControl*)data; + if (p->__msgHandler) + p->__msgHandler(p->__number); + }, this); + WPRET_VM(NULL == messageButton, NULL, "PhCommon::createButton() return NULL"); + elm_layout_content_set(baseLayout,"elm.swallow.message", messageButton); + + __messageIcon = PhCommon::createLayout(messageButton, LOG_LIST_EDJ, PH_LOG_ICON_DETAIL_MESSAGE); + WPRET_VM(NULL == __messageIcon, NULL, "PhCommon::createImage() return NULL"); + elm_object_content_set(messageButton, __messageIcon); + + //voice call button + Evas_Object *voiceButton = PhCommon::createButton(baseLayout, "transparent", NULL, [](void *data, Evas_Object *obj, void *event_info) { + PhLogDetailButtonInfoControl *p = (PhLogDetailButtonInfoControl*)data; + int err = launchCall(p->__number.c_str()); + WPWARN(err != APP_CONTROL_ERROR_NONE, "launchCall() failed(%d)", err); + }, this); + WPRET_VM(NULL == voiceButton, NULL, "PhCommon::createButton() return NULL"); + elm_layout_content_set(baseLayout, "elm.swallow.voice", voiceButton); + + __voiceIcon = PhCommon::createLayout(voiceButton, LOG_LIST_EDJ, PH_LOG_ICON_DETAIL_VOICE_CALL); + WPRET_VM(NULL == __voiceIcon, NULL, "PhCommon::createImage() return NULL"); + elm_object_content_set(voiceButton, __voiceIcon); + +#if 1 + WINFO("dlopen - request"); + WUiTimer::addTimer(1.5, [](void* data)->Eina_Bool { + PhLogDetailButtonInfoControl* p = (PhLogDetailButtonInfoControl*)data; + WINFO("dlopen - try"); + if((p->__dlHandle = dlopen("/usr/apps/org.tizen.message-lite/lib/ug/libmsg-composer-efl.so", RTLD_NOW)) == NULL) + { + WWARNING("%s : dlopen Fail {%s}\n", "/usr/apps/org.tizen.message-lite/lib/ug/libmsg-composer-efl.so", dlerror()); + } + else + { + WDEBUG("dlopen!"); + dlerror(); // error clear + } + return ECORE_CALLBACK_CANCEL; + }, this, getWeakPtr()); +#else + WINFO("dlopen - try"); + if((__dlHandle = dlopen("/usr/apps/org.tizen.message-lite/lib/ug/libmsg-composer-efl.so", RTLD_NOW)) == NULL) + { + WWARNING("%s : dlopen Fail {%s}\n", "/usr/apps/org.tizen.message-lite/lib/ug/libmsg-composer-efl.so", dlerror()); + } + else + { + WDEBUG("dlopen!"); + dlerror(); // error clear + } +#endif + return baseLayout; +} +void PhLogDetailButtonInfoControl::onDestroy() +{ + WHIT(); + if(__dlHandle) + { + WDEBUG("dlclose!"); + dlclose(__dlHandle); + __dlHandle = NULL; + } +} + +void PhLogDetailButtonInfoControl::update(const std::string& number) +{ + WHIT(); + + __number = number; +} + +void PhLogDetailButtonInfoControl::setOnMsgHandler( const std::function<void (const std::string& number)>& handlerFunc ) +{ + __msgHandler = handlerFunc; +} diff --git a/lib-phone/ph-loglist/src/PhLogDetailButtonInfoControl.h b/lib-phone/ph-loglist/src/PhLogDetailButtonInfoControl.h new file mode 100755 index 0000000..4247020 --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDetailButtonInfoControl.h @@ -0,0 +1,52 @@ +/* + * 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_LOG_DETAIL_LOG_INFO_CONTROL_H_ +#define _PH_LOG_DETAIL_LOG_INFO_CONTROL_H_ + +#include <string> + +#include <Elementary.h> +#include "WControl.h" + +class PhLogDetailButtonInfoControl: public WControl +{ +public: + PhLogDetailButtonInfoControl(Evas_Object* window, Evas_Object* naviframe); + + void update(const std::string& number); + void setOnMsgHandler( const std::function<void (const std::string& number)>& handlerFunc ); + +protected: + virtual Evas_Object* onCreate( Evas_Object* parent, void* param ); + virtual void onDestroy(); + +private: + virtual ~PhLogDetailButtonInfoControl(); + +private: + Evas_Object *__messageIcon; + Evas_Object *__voiceIcon; + Evas_Object *__videoIcon; + + std::string __number; + void *__dlHandle; + std::function<void (const std::string& number)> __msgHandler; +}; + +#endif /* _PH_LOG_DETAIL_LOG_INFO_CONTROL_H_ */ + diff --git a/lib-phone/ph-loglist/src/PhLogDetailCheckView.cpp b/lib-phone/ph-loglist/src/PhLogDetailCheckView.cpp new file mode 100755 index 0000000..e133cad --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDetailCheckView.cpp @@ -0,0 +1,541 @@ +/* + * 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 "WPopup.h" + +#include "ContactsDebug.h" + +#include "PhPath.h" +#include "PhCommon.h" +#include "PhStrings.h" + +#include "PhLogIcu.h" +#include "PhLogUtil.h" +#include "PhLogDbMgr.h" +#include "PhLogDefines.h" + +#include "PhLogDetailCheckView.h" +#include "SystemSettingsMgr.h" +#include <system_settings.h> +#include "ContactsCommon.h" + +PhLogDetailCheckView::PhLogDetailCheckView(std::string number, std::string callDesc): +__itcGroupIndex(NULL), +__itcDeleteList(NULL), +__itcSelectAll(NULL), +__logList(NULL), +__checkAllButton(NULL), +__deleteButton(NULL) +{ + WHIT(); + + __checkedCount = 0; + __totalCount = 0; + + __enableTitleButton = true; + __enableCheckAllButton = true; + __checkedList = new std::list<PhLogDbMgr::RecordInfo*>; + + WDEBUG("Start to search Number : %s , callDesc : %s",__number.c_str(),__callDesc.c_str()); + + __number = number; + __callDesc = callDesc; +} + + +PhLogDetailCheckView::~PhLogDetailCheckView() +{ + WHIT(); + + STD_LIST_FREE(__logList) + + if(__checkedList) delete __checkedList; + + elm_genlist_item_class_free(__itcGroupIndex); + elm_genlist_item_class_free(__itcDeleteList); + elm_genlist_item_class_free(__itcSelectAll); +} + +void PhLogDetailCheckView::onPushed(Elm_Object_Item* naviItem) +{ + WHIT(); + WPRET_M( NULL == naviItem, "Invalid param : naviItem"); + + if(__enableTitleButton) + __enableTitleBtn(naviItem); + + __updateTitleInfo(); +} + +void PhLogDetailCheckView::onSetAsPageContent(Elm_Object_Item* parentNaviItem) +{ + WHIT(); + WPRET_M( NULL == parentNaviItem, "Invalid param : naviItem"); + + if(__enableTitleButton) + __enableTitleBtn(parentNaviItem); +} + +void PhLogDetailCheckView::__initializeTitleInfo() +{ + WHIT(); + __checkedCount = 0; + __totalCount = 0; + + char buf[PH_TEXT_SHORT_LEN] = {0,}; + snprintf(buf, sizeof(buf), PAT_(PH_LOGS_HEADER_PD_SELECTED_ABB3), __checkedCount); + elm_object_item_part_text_set(getNaviItem(), "elm.text.title", buf ); + + if (__enableTitleButton && __deleteButton) + elm_object_disabled_set(__deleteButton, EINA_FALSE); + + if (NULL == __checkedList) + __checkedList = new std::list<PhLogDbMgr::RecordInfo*>; + else + __checkedList->clear(); +} + +void PhLogDetailCheckView::__updateTitleInfo() +{ + WHIT(); + char buf[PH_TEXT_SHORT_LEN] = {0,}; + snprintf(buf, sizeof(buf), PAT_(PH_LOGS_HEADER_PD_SELECTED_ABB3), __checkedCount); + elm_object_item_part_text_set(getNaviItem(), "elm.text.title", buf ); + + if (__deleteButton) + { + if(__checkedCount == 0) + elm_object_disabled_set(__deleteButton, EINA_TRUE); + else if (__checkedCount >0) + elm_object_disabled_set(__deleteButton, EINA_FALSE); + else + WERROR("invalid __checkedCount : %d", __checkedCount); + } + + if (__checkAllButton) + { + Elm_Object_Item *item = elm_genlist_first_item_get(getGlHelper()->getEvasObj()); + PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData*)elm_object_item_data_get(item); + WPRET_M(!itemData, "itemData is NULL"); + if ( (unsigned int)__totalCount == __logList->size() && !__logList->empty()) { + itemData->isChecked = EINA_TRUE; + elm_check_state_set(__checkAllButton, EINA_TRUE); + } + else { + itemData->isChecked = EINA_FALSE; + elm_check_state_set(__checkAllButton, EINA_FALSE); + } + } +} + +void PhLogDetailCheckView::__enableTitleBtn(Elm_Object_Item* naviItem) +{ + WHIT(); + Evas_Object * cancelButton = PhCommon::createButton(getNaviframe()->getEvasObj(), "naviframe/title_left", PAT_(PH_TPLATFORM_ACBUTTON_CANCEL_ABB), [](void *data, Evas_Object *obj, void *event_info)->void { + WPRET_M( NULL == data, "Invalid Param : data"); + PhLogDetailCheckView* p = (PhLogDetailCheckView *) data; + + WDEBUG("Close Delete View"); + p->popOut(); + }, this); + WPRET_M( NULL == cancelButton, "PhCommon::createButton() is failed" ); + elm_object_item_part_content_set(naviItem, "title_left_btn", cancelButton); + + __deleteButton = PhCommon::createButton(getNaviframe()->getEvasObj(), "naviframe/title_right", PAT_(PH_TPLATFORM_ACBUTTON_DELETE_ABB), [](void *data, Evas_Object *obj, void *event_info)->void { + WPRET_M( NULL == data, "Invalid Param : data"); + PhLogDetailCheckView* p = (PhLogDetailCheckView *) data; + PhLogDbMgr::getInstance()->deleteLogList(p->__checkedList, p->__totalCount); + if(elm_check_state_get(p->__checkAllButton) == EINA_TRUE) + { + WDEBUG("Need to delete detail + detail check view.."); + Eina_List *itemList = elm_naviframe_items_get(p->getNaviframe()->getEvasObj()); + Elm_Object_Item *it = (Elm_Object_Item*)eina_list_data_get(eina_list_prev(eina_list_last(itemList))); + if(it) elm_object_item_del(it); + eina_list_free(itemList); + } + WDEBUG("Close Delete View & Delete logs"); + p->popOut(); + }, this); + WPRET_M( NULL == __deleteButton, "PhCommon::createButton() is failed" ); + elm_object_item_part_content_set(naviItem, "title_right_btn", __deleteButton); +} + +void PhLogDetailCheckView::updateList(void) +{ + WHIT(); + std::list<PhLogDbMgr::RecordInfo*> *__oldLogList = __logList; + + __logList = PhLogDbMgr::getInstance()->loadDetailList( __number.c_str(), __callDesc.c_str()); + + if(!__logList || __logList->empty()) + setNoContentLayout(); + else + { + setGenlistLayout(); + __setList(); + } + STD_LIST_FREE(__oldLogList) +// WDEBUG("exit :__logList : %p", __logList); +} + + +void PhLogDetailCheckView::__setList(void) +{ + WHIT(); + WPRET_M( NULL == __logList, "__logList is NULL"); + + __initializeTitleInfo(); + + if (__enableCheckAllButton) { + getGlHelper()->appendCheckItem(__itcSelectAll, this, NULL, ELM_GENLIST_ITEM_NONE, PhLogDetailCheckView::__checkAllClickedCb, this); + } + + PhLogDbMgr::RecordInfo *prevRecordInfo = NULL; + for (auto it=__logList->begin(); it != __logList->end(); it++) + { + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)(*it); + + if( !prevRecordInfo || !PhLogUtil::isGroupedbyDate(prevRecordInfo->logTime,recordInfo->logTime) ) { + Elm_Object_Item *item = getGlHelper()->appendCheckItem(__itcGroupIndex, recordInfo, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE); + } + + getGlHelper()->appendCheckItem(__itcDeleteList, recordInfo, NULL, ELM_GENLIST_ITEM_NONE, PhLogDetailCheckView::__selectItemCb, this); + prevRecordInfo = recordInfo; + } + getGlHelper()->appendFinish(); + + __updateTitleInfo(); + + return; +} + +Evas_Object* PhLogDetailCheckView::onCreate( Evas_Object* parent, void* viewParam) +{ + WHIT(); + + Evas_Object* layout = PhCommon::createLayout(parent, LOG_LIST_EDJ, "log/list/check/main"); + evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); + __setGenlistItcs(); + + return layout; +} + +void PhLogDetailCheckView::onCreated() +{ + WHIT(); + PhLogListView::onCreated(); + updateList(); +} + +void PhLogDetailCheckView::onDbChanged() +{ + /* + WENTER(); + std::list<PhLogDbMgr::RecordInfo*> *__oldLogList = __logList; + + __logList = PhLogDbMgr::getInstance()->loadLogList(PhLogDbMgr::LIST_TYPE_ALL_CALL_MESSAGE, true); + + updateList(); + + STD_LIST_FREE(__oldLogList) + + __oldLogList = NULL; + */ +} + +void PhLogDetailCheckView::__setGenlistItcs() +{ + WHIT(); + __itcGroupIndex = elm_genlist_item_class_new(); + WPRET_M(!__itcGroupIndex, "elm_genlist_item_class_new() failed"); + __itcGroupIndex->item_style = "group_index"; + __itcGroupIndex->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* { +// WDEBUG("part :%s", part); + if (!strcmp(part, "elm.text")) { + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + + time_t itemTime = recordInfo->logTime; + time_t nowTime = time(NULL); + + struct tm itemDate; + struct tm nowDate; + + localtime_r(&itemTime, &itemDate); + localtime_r(&nowTime, &nowDate); + + if( itemDate.tm_year == nowDate.tm_year && + itemDate.tm_mon == nowDate.tm_mon && + itemDate.tm_mday == nowDate.tm_mday ) + return elm_entry_utf8_to_markup(PAT_(PH_LOGS_HEADER_TODAY)); + else if( itemDate.tm_year == nowDate.tm_year && + itemDate.tm_mon == nowDate.tm_mon && + ((itemDate.tm_mday)+1) == nowDate.tm_mday ) + return elm_entry_utf8_to_markup(PAT_(PH_LOGS_HEADER_YESTERDAY)); + else + return PhLogIcu::getGroupIndexDateString(recordInfo->logTime); + } + else + return NULL; + }; + __itcGroupIndex->func.content_get = NULL; + __itcGroupIndex->func.del = [](void* data, Evas_Object* obj){ + PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data; + delete itemData; + }; + + __itcDeleteList = elm_genlist_item_class_new(); + WPRET_M(!__itcDeleteList, "elm_genlist_item_class_new() failed"); + __itcDeleteList->item_style = "type1"; + __itcDeleteList->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* { + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + + if (!strcmp(part, "elm.text")) { + return PhLogIcu::getTimeString(recordInfo->logTime); + } + else if (!strcmp(part, "elm.text.sub")) { + if(PhLogUtil::isMissedCallType(recordInfo->logType)) + return strdup(PAT_(PH_LOGS_SBODY_MISSEDM_CALL_STATUS)); + else if((PhLogUtil::isOutgoingCallType(recordInfo->logType) || PhLogUtil::isIncomingCallType(recordInfo->logType)) + && (recordInfo->callDuration == 0)) + return strdup(PAT_(PH_LOGS_SBODY_CANCELLED_M_STATUS)); + else if(PhLogUtil::isRejectCallType(recordInfo->logType)) + return strdup(PAT_(PH_LOGS_SBODY_CANCELLED_M_STATUS)); + else + return PhLogIcu::getCallDurationString(recordInfo->callDuration); + } + else + return NULL; + }; + __itcDeleteList->func.content_get = [](void* data, Evas_Object* obj, const char* part)->Evas_Object* { + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + + if (!strcmp(part, "elm.swallow.icon")) { + Evas_Object *icon = PhLogUtil::getLogTypeIcon(obj, recordInfo->logType); + WPRET_VM( NULL == icon, NULL, "PhLogUtil::getLogTypeIcon() is failed"); + elm_image_aspect_fixed_set(icon, EINA_TRUE); + evas_object_size_hint_min_set(icon, ContactsCommon::getScaledWidth(ICON_LOG_DETAIL_WIDTH), ContactsCommon::getScaledHeight(ICON_LOG_DETAIL_HEIGHT)); + + return icon; + } + else if (0 == strcmp(part, "elm.swallow.end")) { + itemData->checkButton = elm_check_add(obj); + WPRET_VM(NULL == itemData->checkButton, NULL, "elm_check_add() return NULL"); + elm_check_state_set(itemData->checkButton, itemData->isChecked); + evas_object_repeat_events_set(itemData->checkButton, EINA_TRUE); + evas_object_propagate_events_set(itemData->checkButton, EINA_FALSE); + evas_object_freeze_events_set (itemData->checkButton, EINA_TRUE); + return itemData->checkButton; + } + else { + return NULL; + } + + }; + __itcDeleteList->func.state_get = NULL; + __itcDeleteList->func.del = [](void* data, Evas_Object* obj){ + PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data; + delete itemData; + }; + + __itcSelectAll = elm_genlist_item_class_new(); + WPRET_M(!__itcSelectAll, "elm_genlist_item_class_new() failed"); + __itcSelectAll->item_style = "type1"; + __itcSelectAll->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* { + if (!strcmp(part, "elm.text")) { + return strdup(PAT_(PH_LOGS_MBODY_SELECT_ALL)); + } + else + return NULL; + }; + __itcSelectAll->func.content_get = [](void* data, Evas_Object* obj, const char* part)->Evas_Object*{ + PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data; + PhLogDetailCheckView *view = (PhLogDetailCheckView*)itemData->data; + if (0 == strcmp(part, "elm.swallow.end")) { + Evas_Object* check = elm_check_add(obj); + elm_check_state_set(check, itemData->isChecked); + evas_object_repeat_events_set(check, EINA_TRUE); + evas_object_propagate_events_set(check, EINA_FALSE); + evas_object_freeze_events_set (check, EINA_TRUE); + view->__checkAllButton = check; + return check; + } + else { + return NULL; + } + }; + __itcSelectAll->func.del = [](void* data, Evas_Object* obj) { + PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data; + delete itemData; + }; + +} + +void PhLogDetailCheckView::__checkAllClickedCb(void *data, Evas_Object *obj, void *event_info) +{ + WHIT(); + WPRET_M( NULL == event_info,"event_info is NULL"); + WPRET_M( NULL == data,"data is NULL"); + + Elm_Object_Item* item = (Elm_Object_Item*)event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); + + PhLogDetailCheckView* p = (PhLogDetailCheckView *) data; + + Eina_Bool checkAllBtnState = elm_check_state_get(p->__checkAllButton); + + elm_check_state_set(p->__checkAllButton, !checkAllBtnState); + + if ( !checkAllBtnState) + __checkAllItems(p->getGlHelper()); + else + __uncheckAllItems(p->getGlHelper()); +} + +void PhLogDetailCheckView::__checkAllItems(PhLogGenlistHelper* glHelper) +{ + WHIT(); + WPRET_M( NULL == glHelper , "glHelper is NULL"); + + Evas_Object *genlist = glHelper->getEvasObj(); + WPRET_M( NULL == genlist , "genlist is NULL"); + + Elm_Object_Item *item = elm_genlist_first_item_get(genlist); + while(item) + { + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData *)elm_object_item_data_get(item); + + PhLogDetailCheckView* p = (PhLogDetailCheckView *)itemData->p; + if (p) { + if (p->__itcSelectAll == (Elm_Genlist_Item_Class*)elm_genlist_item_item_class_get(item)) { + item = elm_genlist_item_next_get(item); + continue; + } + } + + if (!itemData->isChecked) + __checkItem(itemData); + + item = elm_genlist_item_next_get(item); + } +} + +void PhLogDetailCheckView::__uncheckAllItems(PhLogGenlistHelper* glHelper) +{ + WHIT(); + WPRET_M( NULL == glHelper , "glHelper is NULL"); + + Evas_Object *genlist = glHelper->getEvasObj(); + WPRET_M( NULL == genlist , "genlist is NULL"); + + Elm_Object_Item *item = elm_genlist_first_item_get(genlist); + while(item) + { + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData *)elm_object_item_data_get(item); + + PhLogDetailCheckView* p = (PhLogDetailCheckView *)itemData->p; + if (p) { + if (p->__itcSelectAll == (Elm_Genlist_Item_Class*)elm_genlist_item_item_class_get(item)) { + item = elm_genlist_item_next_get(item); + continue; + } + } + + if (itemData->isChecked) + __uncheckItem(itemData); + + item = elm_genlist_item_next_get(item); + } +} + +void PhLogDetailCheckView::__checkItem(PhLogGenlistHelper::CheckedItemData * itemData) +{ + WHIT(); + WPRET_M( NULL == itemData , "Invalid Param : itemData"); + + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + WPRET_M( NULL == recordInfo , "recordInfo is NULL"); + + PhLogDetailCheckView *p = (PhLogDetailCheckView *)itemData->p; + WPRET_M( NULL == p , "p is NULL"); + +// WDEBUG("number : %s", recordInfo->number); + p->__checkedList->push_back(recordInfo); + p->__checkedCount++; + if(recordInfo->groupedList) + p->__totalCount += (recordInfo->groupedList->size()+1); + else + p->__totalCount++; + + //check button state set + itemData->isChecked = EINA_TRUE; + if(itemData->checkButton) + elm_check_state_set(itemData->checkButton, itemData->isChecked); + + elm_check_state_set(itemData->checkButton, itemData->isChecked); + WHIT(); + + p->__updateTitleInfo(); +} + +void PhLogDetailCheckView::__uncheckItem(PhLogGenlistHelper::CheckedItemData * itemData) +{ + WHIT(); + WPRET_M( NULL == itemData , "Invalid Param : itemData"); + + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + WPRET_M( NULL == recordInfo , "recordInfo is NULL"); + + PhLogDetailCheckView *p = (PhLogDetailCheckView *)itemData->p; + WPRET_M( NULL == p , "p is NULL"); + + p->__checkedList->remove(recordInfo); + p->__checkedCount--; + + if(recordInfo->groupedList) + p->__totalCount -= (recordInfo->groupedList->size()+1); + else + p->__totalCount--; + + //check button state set + itemData->isChecked = EINA_FALSE; + if(itemData->checkButton) + elm_check_state_set(itemData->checkButton, itemData->isChecked); + + p->__updateTitleInfo(); +} + + +void PhLogDetailCheckView::__selectItemCb(void *data, Evas_Object *obj, void *event_info) +{ + WHIT(); + WPRET_M( NULL == event_info,"event_info is NULL"); + WPRET_M( NULL == data,"data is NULL"); + + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); + + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData *)elm_object_item_data_get(item); + + if(itemData->isChecked) + __uncheckItem(itemData); + else + __checkItem(itemData); +} diff --git a/lib-phone/ph-loglist/src/PhLogDetailCheckView.h b/lib-phone/ph-loglist/src/PhLogDetailCheckView.h new file mode 100644 index 0000000..9b8a972 --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDetailCheckView.h @@ -0,0 +1,75 @@ +/* + * 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_LOG_DETAIL_CHECK_VIEW_H_ +#define _PH_LOG_DETAIL_CHECK_VIEW_H_ + +#include "ContactsCommon.h" + +#include "PhLogListView.h" + +class WAPP_ASSIST_EXPORT PhLogDetailCheckView : public PhLogListView +{ +public: + PhLogDetailCheckView(std::string number, std::string callDesc); + +protected: + virtual void onPushed(Elm_Object_Item* naviItem); + virtual void onSetAsPageContent(Elm_Object_Item* parentNaviItem); + virtual Evas_Object* onCreate( Evas_Object* parent, void* viewParam); + virtual void onCreated(void); +private: + virtual void onDbChanged(); + + virtual void updateList(void); + + void __enableTitleBtn(Elm_Object_Item* naviItem); + + void __setGenlistItcs(); + + void __setList(void); + + void __initializeTitleInfo(); + void __updateTitleInfo(); + + static void __checkAllItems(PhLogGenlistHelper* glHelper); + static void __uncheckAllItems(PhLogGenlistHelper* glHelper); + static void __checkItem(PhLogGenlistHelper::CheckedItemData * itemData); + static void __uncheckItem(PhLogGenlistHelper::CheckedItemData * itemData); + static void __checkAllClickedCb(void *data, Evas_Object *obj, void *event_info); + static void __selectItemCb(void *data, Evas_Object *obj, void *event_info); + +private: + virtual ~PhLogDetailCheckView(); + +private: + Elm_Genlist_Item_Class *__itcGroupIndex; + Elm_Genlist_Item_Class *__itcDeleteList; + Elm_Genlist_Item_Class *__itcSelectAll; + std::list<PhLogDbMgr::RecordInfo*>* __logList; + Evas_Object *__checkAllButton; + Evas_Object *__deleteButton; + int __checkedCount; + int __totalCount; + bool __enableTitleButton; + bool __enableCheckAllButton; + std::list<PhLogDbMgr::RecordInfo*> *__checkedList; + std::string __number; + std::string __callDesc; +}; + +#endif /* _PH_LOG_DETAIL_CHECK_VIEW_H_ */ diff --git a/lib-phone/ph-loglist/src/PhLogDetailContactInfoControl.cpp b/lib-phone/ph-loglist/src/PhLogDetailContactInfoControl.cpp new file mode 100755 index 0000000..0530fce --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDetailContactInfoControl.cpp @@ -0,0 +1,111 @@ +/* + * 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 "ContactsDebug.h" +#include "ContactsThumbnail.h" +#include "WUiTimer.h" + +#include "PhPath.h" +#include "PhCommon.h" +#include "PhStrings.h" + +#include "PhLogUtil.h" +#include "PhLogDetailContactInfoControl.h" +#include "ContactsCommon.h" + +#define DETAILS_BOX_PADDING 16 + +PhLogDetailContactInfoControl::PhLogDetailContactInfoControl(const PhLogDbMgr::RecordInfo *recordInfo) + : __baseLayout(NULL) +{ + __personId = recordInfo->personId; + + if (recordInfo->displayName) __name = recordInfo->displayName; + if (recordInfo->number) __number = recordInfo->number; + if (recordInfo->imgPath) __imgPath = recordInfo->imgPath; + if (recordInfo->callDesc) __callDesc = recordInfo->callDesc; + WDEBUG("name : %s ,number : %s, imgPath : %s, callDesc: %s",recordInfo->displayName, recordInfo->number, recordInfo->imgPath, recordInfo->callDesc ); +} + +Evas_Object* PhLogDetailContactInfoControl::onCreate( Evas_Object* parent, void* viewParam) +{ + WHIT(); + elm_theme_extension_add(nullptr, ContactsCommon::getAppEdjePath("common/custom_button_styles.edj").c_str()); + + if (__personId > 0 || __number.empty()) { + __baseLayout = PhCommon::createLayout(parent, LOG_LIST_EDJ, "log/detail/info/contact/contact_info/saved"); + __setDisplayName(); + } else { + __baseLayout = PhCommon::createLayout(parent, LOG_LIST_EDJ, "log/detail/info/contact/contact_info/unsaved"); + __setButton(); + } + + __setThumbnail(); + + return __baseLayout; +} + +void PhLogDetailContactInfoControl::__setThumbnail() +{ + Evas_Object *thumbnail = createThumbnail(__baseLayout, THUMBNAIL_240, __imgPath.c_str()); + evas_object_event_callback_add(thumbnail, EVAS_CALLBACK_MOUSE_UP, + (Evas_Object_Event_Cb) &PhLogDetailContactInfoControl::onThumbnailPressed, this); + elm_layout_content_set(__baseLayout, "image.thumbnail", thumbnail); +} + +void PhLogDetailContactInfoControl::__setDisplayName() +{ + WHIT(); + elm_object_domain_translatable_part_text_set(__baseLayout, "text.name", STRING_PACKAGE, PhCommon::convert2MarkupString(PhLogUtil::getDisplayText(__personId, __name.c_str(), __number.c_str(), __callDesc.c_str())).c_str()); +} + +void PhLogDetailContactInfoControl::__setButton() +{ + Evas_Object *box = elm_box_add(__baseLayout); + elm_box_padding_set(box, ContactsCommon::getScaledWidth(DETAILS_BOX_PADDING), 0); + elm_box_horizontal_set(box, EINA_TRUE); + elm_layout_content_set(__baseLayout, "box.buttons", box); + Evas_Object * createContactBtn = PhCommon::createButton(box, "custom_default", NULL, [](void *data, Evas_Object *obj, void *event_info){ + WPRET_M( NULL == data, "Invalid Param : data"); + PhLogDetailContactInfoControl * p = (PhLogDetailContactInfoControl *)data; + launchContactCreate(p->__number.c_str()); + }, this); + + WPRET_M( NULL == createContactBtn, "PhCommon::createButton() is failed!"); + evas_object_size_hint_align_set(createContactBtn, EVAS_HINT_FILL, 0.5); + elm_object_domain_translatable_text_set(createContactBtn, "phone", PAT_(PH_LOGS_BUTTON_CREATE_CONTACT_ABB)); + elm_box_pack_end(box, createContactBtn); + + Evas_Object * updateContactBtn = PhCommon::createButton(box, "custom_default", NULL, [](void *data, Evas_Object *obj, void *event_info){ + WPRET_M( NULL == data, "Invalid Param : data"); + PhLogDetailContactInfoControl * p = (PhLogDetailContactInfoControl *)data; + launchContactEdit(0, p->__number.c_str()); + }, this); + WPRET_M( NULL == updateContactBtn, "PhCommon::createButton() is failed!"); + evas_object_size_hint_align_set(updateContactBtn, EVAS_HINT_FILL, 0.5); + elm_object_domain_translatable_text_set(updateContactBtn, "phone", PAT_(PH_LOGS_BUTTON_UPDATE_CONTACT_ABB2)); + elm_box_pack_end(box, updateContactBtn); +} + +void PhLogDetailContactInfoControl::onThumbnailPressed(void *data) +{ + PhLogDetailContactInfoControl *control = (PhLogDetailContactInfoControl*) data; + if (control->__personId > 0) { + launchContactDetails(control->__personId); + } +} diff --git a/lib-phone/ph-loglist/src/PhLogDetailContactInfoControl.h b/lib-phone/ph-loglist/src/PhLogDetailContactInfoControl.h new file mode 100755 index 0000000..c419ade --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDetailContactInfoControl.h @@ -0,0 +1,59 @@ +/* + * 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_LOG_DETAIL_CONTACT_INFO_CONTROL_H_ +#define _PH_LOG_DETAIL_CONTACT_INFO_CONTROL_H_ + +#include <string> + +#include <Elementary.h> + +#include "WControl.h" + +#include "PhLogDbMgr.h" +#include "PhLogGenlistHelper.h" + +class PhLogDetailContactInfoControl : public WControl +{ +public: + PhLogDetailContactInfoControl(const PhLogDbMgr::RecordInfo *recordInfo); + + void update(); + +protected: + virtual Evas_Object* onCreate( Evas_Object* parent, void* param ); + +private: + void __setThumbnail(); + void __setDisplayName(); + void __setButton(); + + static void onThumbnailPressed(void *data); + +private: + Evas_Object *__baseLayout; + + std::string __number; + std::string __name; + std::string __imgPath; + std::string __callDesc; + + int __personId; +}; + +#endif /* _PH_LOG_DETAIL_CONTACT_INFO_CONTROL_H_ */ + diff --git a/lib-phone/ph-loglist/src/PhLogDetailView.cpp b/lib-phone/ph-loglist/src/PhLogDetailView.cpp new file mode 100755 index 0000000..a58689e --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDetailView.cpp @@ -0,0 +1,364 @@ +/* + * 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 <app.h> +#include <notification.h> +#include <system_settings.h> +#include <app_preference.h> + +#include "WPopup.h" +#include "WMenuPopup.h" +#include "WUiTimer.h" + +#include "ContactsAppControl.h" +#include "ContactsDebug.h" + +#include "PhCommon.h" +#include "PhPath.h" +#include "PhStrings.h" + +#include "PhLogUtil.h" +#include "PhLogIcu.h" +#include "PhLogDefines.h" + +#include "PhLogDetailCheckView.h" +#include "PhLogDetailView.h" +#include "SystemSettingsMgr.h" +#include "ContactsCommon.h" +#include "ContactsNumberItemIcons.h" + +PhLogDetailView::PhLogDetailView(const PhLogDbMgr::RecordInfo *recordInfo): +__mainLayout(NULL), +__itcLogInfo(NULL), +__itcGroupIndex(NULL), +__itcHistoryList(NULL), +__detailList(NULL), +__contactInfo(NULL), +__recordInfo(recordInfo) +{ + WDEBUG("detailView for Number[%s], callDesc[%s]", recordInfo->number, recordInfo->callDesc); + + if(recordInfo->number) + __number = recordInfo->number; + + if(recordInfo->callDesc) + __callDesc = recordInfo->callDesc; +} + +PhLogDetailView::~PhLogDetailView() +{ + WHIT(); + + if (__contactInfo) { + edje_object_signal_callback_del(_EDJ(__contactInfo->getEvasObj()), "mouse,clicked,*", "touch.back.btn", __detailBackBtnCb); + } + + STD_LIST_FREE(__detailList) + + elm_genlist_item_class_free(__itcLogInfo); + + elm_genlist_item_class_free(__itcGroupIndex); + elm_genlist_item_class_free(__itcHistoryList); +} + +void PhLogDetailView::onPushed(Elm_Object_Item* naviItem) +{ + WHIT(); + WPRET_M( !naviItem, "Invalid param : naviItem"); + + elm_naviframe_item_title_enabled_set(naviItem, EINA_FALSE, EINA_FALSE); + WUiTimer::addAnimator([naviItem](void* data)->Eina_Bool { + PhLogDetailView* p = (PhLogDetailView*)data; + p->__setMoreBtn(naviItem); + return ECORE_CALLBACK_CANCEL; + }, this, getWeakPtr()); +} + +void PhLogDetailView::__detailBackBtnCb(void *data, Evas_Object *obj, const char *emission, const char *source) { + PhLogDetailView* view = (PhLogDetailView*)data; + view->popOut(); +} + +Evas_Object* PhLogDetailView::onCreate( Evas_Object* parent, void* viewParam) +{ + WHIT(); + __mainLayout = PhCommon::createLayout( parent, LOG_LIST_EDJ, "log/detail/info/contact/main_layout" ); + + WPRET_VM( NULL == __mainLayout, NULL, "PhCommon::createLayout() is failed"); + __setGenlistItcs(); + + return __mainLayout; +} + +void PhLogDetailView::onCreated() +{ + WHIT(); + PhLogListView::onCreated(); + updateList(); +} + +void PhLogDetailView::onDestroy() +{ + PhLogListView::onDestroy(); +} + +void PhLogDetailView::onDbChanged() +{ + WENTER(); + updateList(); +} + +void PhLogDetailView::updateList() +{ + Evas_Object *genlist = getGlHelper()->getEvasObj(); + + elm_object_part_content_set(__mainLayout, "elm.swallow.content", genlist); + + + std::list<PhLogDbMgr::RecordInfo*> *__oldList = __detailList; + __detailList = PhLogDbMgr::getInstance()->loadDetailList( __number.c_str(), __callDesc.c_str()); + + if(!__detailList || __detailList->empty()) + setNoContentLayout(); + else + { + setGenlistLayout(); + __setContactInfo(); + __setList(); + } + + STD_LIST_FREE(__oldList) +} + +void PhLogDetailView::__setMoreBtn(Elm_Object_Item *naviItem) +{ + WHIT(); + WPRET_M(!naviItem, "Invalid Param : naviItem"); + + enableMoreButton(naviItem, [](void *data, Evas_Object *obj, void *event_info){ + WPRET_M( NULL == data, "Invalid Parm : data"); + PhLogDetailView* p = static_cast<PhLogDetailView*>(data); + WPRET_M( NULL == p->__detailList || p->__detailList->empty() , "__detaiilList is Empty"); + + WMenuPopup* popup = new WMenuPopup(); + popup->prepare( p->getWindow()->getEvasObj(), p->getNaviframe()->getEvasObj() ); + + popup->appendItem(PAT_(PH_LOGS_HEADER_DELETE), [p](){ + WNaviframe* frame = (WNaviframe*)p->getNaviframe(); + frame->push(new PhLogDetailCheckView(p->__number, p->__callDesc)); + }); + + p->attachPopup(popup); + }, this); +} + +void PhLogDetailView::__setContactInfo() +{ + __contactInfo = new PhLogDetailContactInfoControl(__detailList->front()); + __contactInfo->create(__mainLayout, NULL); + + edje_object_signal_callback_add(_EDJ(__contactInfo->getEvasObj()), "mouse,clicked,*", "touch.back.btn", __detailBackBtnCb, this); + elm_object_part_content_set(__mainLayout, "contact_info", __contactInfo->getEvasObj() ); +} + +void PhLogDetailView::__setList() +{ + WHIT(); + WPRET_M( !__detailList || __detailList->empty(), "__detailList is not set"); + + Elm_Object_Item* item = NULL; + PhLogDbMgr::RecordInfo *recordInfo = NULL; + PhLogDbMgr::RecordInfo *prevRecordInfo = NULL; + for (auto it=__detailList->begin(); it != __detailList->end(); it++) + { + recordInfo = (PhLogDbMgr::RecordInfo*)(*it); + if( it == __detailList->begin() ) + { + if(recordInfo->number && strlen(recordInfo->number) > 0) + { + item = getGlHelper()->appendItem(__itcLogInfo, recordInfo, NULL, ELM_GENLIST_ITEM_NONE, NULL, this); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE); + } + } + + if( !prevRecordInfo || !PhLogUtil::isGroupedbyDate(prevRecordInfo->logTime,recordInfo->logTime) ) { + item = getGlHelper()->appendItem(__itcGroupIndex, recordInfo, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE); + } + + item = getGlHelper()->appendItem(__itcHistoryList, recordInfo, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL); + + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE); + + prevRecordInfo = recordInfo; + } + + getGlHelper()->appendFinish(); +} + +void PhLogDetailView::__setGenlistItcs() +{ + __itcLogInfo = elm_genlist_item_class_new(); + WPRET_M(!__itcLogInfo, "elm_genlist_item_class_new() failed"); + __itcLogInfo->item_style = "type1"; + __itcLogInfo->func.content_get = [](void* data, Evas_Object* obj, const char* part)->Evas_Object*{ + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + PhLogDetailView *p = (PhLogDetailView*)itemData->p; + + if (!strcmp(part, "elm.swallow.icon")) { + Evas_Object *layout = PhCommon::createLayout(obj, LOG_LIST_EDJ, "list/detail/log_number.type"); + WPRET_VM( NULL == layout, NULL, "PhCommon::createLayout() is failed"); + + char *text = NULL; + if ( recordInfo->personId > 0 ) + text = elm_entry_utf8_to_markup(PhLogUtil::getTextOfNumberType(recordInfo->numberType)); + else if ( p->__number.empty() && PhLogUtil::isUnknownNumber(recordInfo->callDesc) ) + text = NULL; + else if ( !p->__number.empty() && PhLogUtil::isEmergencyNumber(recordInfo->callDesc) ) + text = elm_entry_utf8_to_markup(PAT_(PH_KPD_HEADER_EMERGENCY_CALL_ABB2)); + else + text = elm_entry_utf8_to_markup(PAT_(PH_LOGS_SBODY_UNSAVED_M_STATUS)); + elm_object_domain_translatable_part_text_set(layout, "elm.text.part", PACKAGE, text); + free(text); + text = NULL; + + Evas_Object *entry = elm_entry_add(layout); + WPRET_VM( NULL == entry, NULL, "entry is NULL"); + elm_entry_scrollable_set(entry, EINA_TRUE); + elm_entry_single_line_set(entry, EINA_TRUE); + elm_entry_editable_set(entry, EINA_FALSE); + + if (p->__number.empty() && PhLogUtil::isUnknownNumber(recordInfo->callDesc)) + text = elm_entry_utf8_to_markup(PAT_(PH_LOGS_MBODY_UNKNOWN_NUMBER_ABB)); + else + text = elm_entry_utf8_to_markup(recordInfo->number); + elm_entry_entry_set(entry, text); + free(text); + + elm_layout_content_set(layout, "elm.swallow.2", entry); + + return layout; + } else if (!strcmp(part, "elm.swallow.end")) { + return createNumberItemIconsLayout(obj, p->__number.c_str()); + } else + return NULL; + }; + __itcLogInfo->func.del = [](void* data, Evas_Object* obj){ + PhLogGenlistHelper::ItemData* itemData = (PhLogGenlistHelper::ItemData *)data; + delete itemData; + }; + + __itcGroupIndex = elm_genlist_item_class_new(); + WPRET_M(!__itcGroupIndex, "elm_genlist_item_class_new() failed"); + __itcGroupIndex->item_style = "group_index"; + __itcGroupIndex->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* { +// WDEBUG("part :%s", part); + if (!strcmp(part, "elm.text")) { + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + + time_t itemTime = recordInfo->logTime; + time_t nowTime = time(NULL); + + struct tm itemDate; + struct tm nowDate; + + localtime_r(&itemTime, &itemDate); + localtime_r(&nowTime, &nowDate); + + if( itemDate.tm_year == nowDate.tm_year && + itemDate.tm_mon == nowDate.tm_mon && + itemDate.tm_mday == nowDate.tm_mday ) + return elm_entry_utf8_to_markup(PAT_(PH_LOGS_HEADER_TODAY)); + else if( itemDate.tm_year == nowDate.tm_year && + itemDate.tm_mon == nowDate.tm_mon && + ((itemDate.tm_mday)+1) == nowDate.tm_mday ) + return elm_entry_utf8_to_markup(PAT_(PH_LOGS_HEADER_YESTERDAY)); + else + return PhLogIcu::getGroupIndexDateString(recordInfo->logTime); + } + else + return NULL; + }; + __itcGroupIndex->func.content_get = NULL; + __itcGroupIndex->func.del = [](void* data, Evas_Object* obj){ + PhLogGenlistHelper::ItemData* itemData = (PhLogGenlistHelper::ItemData *)data; + delete itemData; + }; + + __itcHistoryList = elm_genlist_item_class_new(); + WPRET_M(!__itcHistoryList, "elm_genlist_item_class_new() failed"); + __itcHistoryList->item_style = "type1"; + __itcHistoryList->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* { + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + + if (!strcmp(part, "elm.text")) { + return PhLogIcu::getTimeString(recordInfo->logTime); + } else if (!strcmp(part, "elm.text.sub")) { + if(PhLogUtil::isMissedCallType(recordInfo->logType)) { + return strdup(PAT_(PH_LOGS_SBODY_MISSEDM_CALL_STATUS)); + } else if(PhLogUtil::isOutgoingCallType(recordInfo->logType) || PhLogUtil::isIncomingCallType(recordInfo->logType)) { + if (recordInfo->callDuration > 0) { + char *duration = PhLogIcu::getCallDurationString(recordInfo->callDuration); + const char *type = PhLogUtil::isIncomingCallType(recordInfo->logType) + ? PAT_(PH_CALL_BODY_INCOMING_CALL) : PAT_(PH_ST_BODY_OUTGOING_CALL); + + if (duration) { + char buf[PH_TEXT_SHORT_LEN]; + snprintf(buf, sizeof(buf), "%s, %s",type, duration); + free(duration); + return strdup(buf); + } else { + return strdup(type); + } + } else { + return strdup(PAT_(PH_LOGS_SBODY_CANCELLED_M_STATUS)); + } + } else if(PhLogUtil::isRejectCallType(recordInfo->logType)) { + return strdup(PAT_(PH_LOGS_SBODY_CANCELLED_M_STATUS)); + } else { + return PhLogIcu::getCallDurationString(recordInfo->callDuration); + } + } + else + return NULL; + }; + __itcHistoryList->func.content_get = [](void* data, Evas_Object* obj, const char* part)->Evas_Object* { + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + + if (!strcmp(part, "elm.swallow.icon")) { + Evas_Object *icon = PhLogUtil::getLogTypeIcon(obj, recordInfo->logType); + WPRET_VM( NULL == icon, NULL, "PhLogUtil::getLogTypeIcon() is failed"); + elm_image_aspect_fixed_set(icon, EINA_TRUE); + + evas_object_size_hint_min_set(icon, ContactsCommon::getScaledWidth(ICON_LOG_DETAIL_WIDTH), ContactsCommon::getScaledHeight(ICON_LOG_DETAIL_HEIGHT)); + return icon; + } + else { + return NULL; + } + + }; + __itcHistoryList->func.state_get = NULL; + __itcHistoryList->func.del = [](void* data, Evas_Object* obj){ + PhLogGenlistHelper::ItemData* itemData = (PhLogGenlistHelper::ItemData *)data; + delete itemData; + }; +} diff --git a/lib-phone/ph-loglist/src/PhLogDetailView.h b/lib-phone/ph-loglist/src/PhLogDetailView.h new file mode 100644 index 0000000..d47bcb9 --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDetailView.h @@ -0,0 +1,71 @@ +/* + * 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 PHLOGDETAILVIEW_H_ +#define PHLOGDETAILVIEW_H_ + +#include "PhLogDbMgr.h" +#include "PhLogListView.h" +#include "PhLogDetailContactInfoControl.h" +#include "PhLogDetailButtonInfoControl.h" + +class PhLogDetailView : public PhLogListView +{ +public: + PhLogDetailView(const PhLogDbMgr::RecordInfo *recordInfo); + +protected: + virtual Evas_Object* onCreate( Evas_Object* parent, void* viewParam); + virtual void onCreated(); + virtual void onDestroy(); + virtual void onPushed(Elm_Object_Item* naviItem); + +private: + PhLogDetailView(); + + void __setMoreBtn(Elm_Object_Item *naviItem); + void __setContactInfo(); + void __setGenlistItcs(); + void __setList(); + + //from PhLogListView + virtual void updateList(void); + + virtual void onDbChanged(); + static void __detailBackBtnCb(void *data, Evas_Object *obj, const char *emission, const char *source); + +private: + virtual ~PhLogDetailView(); + +private: + std::string __number; + std::string __callDesc; + + Evas_Object* __mainLayout; + + Elm_Genlist_Item_Class *__itcLogInfo; + Elm_Genlist_Item_Class *__itcGroupIndex; + Elm_Genlist_Item_Class *__itcHistoryList; + + std::list<PhLogDbMgr::RecordInfo*> *__detailList; + + PhLogDetailContactInfoControl *__contactInfo; + + const PhLogDbMgr::RecordInfo *__recordInfo; +}; + +#endif /* PHLOGDETAILVIEW_H_ */ diff --git a/lib-phone/ph-loglist/src/PhLogDropDownCtxPopup.cpp b/lib-phone/ph-loglist/src/PhLogDropDownCtxPopup.cpp new file mode 100644 index 0000000..14d1ed7 --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDropDownCtxPopup.cpp @@ -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. + * + */ + +////#include <efl_assist.h> + +#include "ContactsDebug.h" +#include "PhLogDropDownCtxPopup.h" + + +PhLogDropDownCtxPopup::PhLogDropDownCtxPopup() +{ + +} + +Evas_Object* PhLogDropDownCtxPopup::onCreate(Evas_Object* parent, void* viewParam) +{ + WHIT(); + + __parentButton = parent; + Evas_Object *popup = elm_ctxpopup_add(elm_object_top_widget_get(__parentButton)); + elm_object_style_set(popup, "dropdown/list"); + //ea_object_event_callback_add(popup, EA_CALLBACK_BACK, ea_ctxpopup_back_cb, NULL); + evas_object_smart_callback_add(popup,"dismissed", [](void *data, Evas_Object *obj, void *event_info){ + evas_object_del(obj); + }, NULL); + + elm_ctxpopup_direction_priority_set(popup, ELM_CTXPOPUP_DIRECTION_DOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN, ELM_CTXPOPUP_DIRECTION_UNKNOWN); + + return popup; +} + +void PhLogDropDownCtxPopup::onDestroy() +{ + WHIT(); +} + +PhLogDropDownCtxPopup::~PhLogDropDownCtxPopup() +{ + +} +Elm_Object_Item* PhLogDropDownCtxPopup::appendItem( const char *label, const std::function< void()>& selectCb ) +{ + __vSelectItemCb.push_back(selectCb); + Elm_Object_Item *item = elm_ctxpopup_item_append(getEvasObj(), label, NULL, __popupSelectCb, (void*)(__vSelectItemCb.size() - 1)); + WPRET_VM( NULL == item, NULL, "elm_ctxpopup_item_append"); + + return item; +} + +void PhLogDropDownCtxPopup::showPopup() +{ + Evas_Coord x, y, w, h; + evas_object_geometry_get(__parentButton, &x, &y, &w, &h); + evas_object_move(getEvasObj(), x + (w / 2), y + h + 1); + + evas_object_show(getEvasObj()); +} + +void PhLogDropDownCtxPopup::__popupSelectCb( void* data, Evas_Object* obj, void* event_info ) +{ + WENTER(); + PhLogDropDownCtxPopup* self = (PhLogDropDownCtxPopup*)WControl_getInstanceFromEvasObj(obj); + if (self) { + const unsigned int itemIndex = (unsigned int)data; + self->__vSelectItemCb[itemIndex](); + } + + evas_object_del(obj); +} + diff --git a/lib-phone/ph-loglist/src/PhLogDropDownCtxPopup.h b/lib-phone/ph-loglist/src/PhLogDropDownCtxPopup.h new file mode 100644 index 0000000..1cf487f --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogDropDownCtxPopup.h @@ -0,0 +1,51 @@ +/* + * 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_LOG_DROP_DOWN_CTX_POPUP_H_ +#define _PH_LOG_DROP_DOWN_CTX_POPUP_H_ + +#include <functional> +#include <vector> + +#include <Evas.h> +#include <Elementary.h> + +#include "WControl.h" +//#include "WNaviframe.h" + +class PhLogDropDownCtxPopup : public WControl +{ +public: + PhLogDropDownCtxPopup(); + + Elm_Object_Item* appendItem( const char *label, const std::function< void()>& selectCb ); + void showPopup(); + +protected: + virtual ~PhLogDropDownCtxPopup(); + virtual Evas_Object* onCreate( Evas_Object* parent, void* viewParam); + virtual void onDestroy(); + + static void __popupSelectCb( void* data, Evas_Object* obj, void* event_info ); + +private: + Evas_Object* __parentButton; + + std::vector<std::function< void()>> __vSelectItemCb; +}; + +#endif //_PH_LOG_DROP_DOWN_CTX_POPUP_H_ diff --git a/lib-phone/ph-loglist/src/PhLogGenlistHelper.cpp b/lib-phone/ph-loglist/src/PhLogGenlistHelper.cpp new file mode 100755 index 0000000..878449b --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogGenlistHelper.cpp @@ -0,0 +1,352 @@ +/*
+ * 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 "PhLogGenlistHelper.h"
+#include "ContactsDebug.h"
+
+#define PH_LOG_SCROLL_TIMER 0.1
+#define PH_LOG_REALIZED_ITEM_COUNT_PER_PAGE 10
+
+PhLogGenlistHelper::PhLogGenlistHelper(Evas_Object* parent):
+__genlist(NULL),
+__parent(parent),
+__swipeHandler(NULL),
+__scrollTimer(NULL),
+__isClearRequested(false),
+__smartAppendIndex(0)
+
+{
+ WHIT();
+}
+
+PhLogGenlistHelper::~PhLogGenlistHelper()
+{
+ WHIT();
+
+}
+
+Evas_Object* PhLogGenlistHelper::onCreate( Evas_Object* parent, void* param )
+{
+ WHIT();
+ return __createGenlist();
+}
+
+void PhLogGenlistHelper::onDestroy()
+{
+ WHIT();
+ if (__scrollTimer)
+ ecore_timer_del(__scrollTimer);
+}
+
+void PhLogGenlistHelper::__swipeStartCb(void *data, Elm_Object_Item *it, const char *em, const char *src)
+{
+ WHIT();
+ WPRET_M(!data, "data is null");
+ PhLogGenlistHelper* p = (PhLogGenlistHelper*)data;
+
+ if (p->__scrollTimer) {
+ elm_object_item_signal_emit(it, "elm,swipe,revert", "");
+ return;
+ }
+ Evas_Object *obj = elm_object_item_widget_get(it);
+ elm_object_scroll_freeze_push(obj);
+ elm_object_scroll_hold_push(p->__genlist);
+}
+
+void PhLogGenlistHelper::__swipeInvokeCb(void *data, Elm_Object_Item *it, const char *em, const char *src)
+{
+ WHIT();
+ WPRET_M(!data, "data is null");
+ PhLogGenlistHelper* p = (PhLogGenlistHelper*)data;
+
+ Evas_Object *obj = elm_object_item_widget_get(it);
+ elm_object_scroll_freeze_pop(obj);
+ elm_object_scroll_hold_pop(p->__genlist);
+
+ if(strcmp(em, "elm,swipe,stop,right") == 0) {
+ p->__swipeHandler(SWIPE_TO_RIGHT, NULL);
+ } else if(strcmp(em, "elm,swipe,stop,left") == 0) {
+ p->__swipeHandler(SWIPE_TO_LEFT, NULL);
+ }
+}
+
+void PhLogGenlistHelper::__swipeCancleCb(void *data, Elm_Object_Item *it, const char *em, const char *src)
+{
+ WHIT();
+ WPRET_M(!data, "data is null");
+ PhLogGenlistHelper* p = (PhLogGenlistHelper*)data;
+ Evas_Object *obj = elm_object_item_widget_get(it);
+ elm_object_scroll_freeze_pop(obj);
+ elm_object_scroll_hold_pop(p->__genlist);
+}
+
+void PhLogGenlistHelper::__genlistRealizedCb(void *data, Evas_Object *obj, void *event_info)
+{
+ WPRET_M(NULL == event_info, "parameter(event_info) is NULL");
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ Elm_Object_Item *tmp_item = NULL;
+
+ WPRET_M(!data, "data is null");
+ PhLogGenlistHelper* p = (PhLogGenlistHelper*)data;
+
+ tmp_item = elm_genlist_item_next_get(item);// hide bottom line of last itme in loglist group
+ if( tmp_item == NULL || ( ELM_GENLIST_ITEM_GROUP == elm_genlist_item_type_get(tmp_item)) )
+ elm_object_item_signal_emit(item, "elm,state,bottomline,hide", "");
+ else
+ elm_object_item_signal_emit(item, "elm,state,bottomline,show", "");
+
+ if(p->__swipeHandler)
+ {
+ elm_object_item_signal_callback_del(item, "elm,swipe,start", "", __swipeStartCb);
+ elm_object_item_signal_callback_del(item, "elm,swipe,stop,left", "", __swipeInvokeCb);
+ elm_object_item_signal_callback_del(item, "elm,swipe,stop,right", "", __swipeInvokeCb);
+ elm_object_item_signal_callback_del(item, "elm,swipe,stop", "", __swipeCancleCb);
+
+ elm_object_item_signal_callback_add(item, "elm,swipe,start", "", __swipeStartCb, data);
+ elm_object_item_signal_callback_add(item, "elm,swipe,stop,left", "", __swipeInvokeCb, data);
+ elm_object_item_signal_callback_add(item, "elm,swipe,stop,right", "", __swipeInvokeCb, data);
+ elm_object_item_signal_callback_add(item, "elm,swipe,stop", "", __swipeCancleCb, data);
+ }
+}
+
+void PhLogGenlistHelper::__genlistUnrealizedCb(void *data, Evas_Object *obj, void *event_info)
+{
+ Elm_Object_Item *item = (Elm_Object_Item *)event_info;
+ WPRET_M(NULL == item, "parameter(item) is NULL");
+ + elm_object_item_signal_callback_del(item, "elm,swipe,start", "", __swipeStartCb);
+ elm_object_item_signal_callback_del(item, "elm,swipe,stop,left", "", __swipeInvokeCb);
+ elm_object_item_signal_callback_del(item, "elm,swipe,stop,right", "", __swipeInvokeCb);
+ elm_object_item_signal_callback_del(item, "elm,swipe,stop", "", __swipeCancleCb);
+}
+
+void PhLogGenlistHelper::__languageChangedCb(void *data, Evas_Object *obj, void *event_info)
+{
+ WHIT();
+ WPRET_M(!data, "data is null");
+ PhLogGenlistHelper* p = (PhLogGenlistHelper*)data;
+
+// phct_common_detail_log_init_time_format();
+// phct_common_detail_log_generate_date_format(log_d->formatter);
+
+ elm_genlist_realized_items_update(p->__genlist);
+
+// if(log_d->view_type == LOG_VIEW_TYPE_UG_NUMBER_CHECK)
+// ph_log_check_update_selection_info(log_d);
+
+}
+
+void PhLogGenlistHelper::__longPressedCb(void *data, Evas_Object *obj, void *event_info)
+{
+
+}
+
+Eina_Bool PhLogGenlistHelper::__scrollTimerCb(void *data)
+{
+ WPRET_VM(!data, EINA_FALSE, "data is null");
+ PhLogGenlistHelper* p = (PhLogGenlistHelper*)data;
+
+ if (p->__scrollTimer)
+ ecore_timer_del(p->__scrollTimer);
+ p->__scrollTimer = NULL;
+ return EINA_FALSE;
+}
+
+void PhLogGenlistHelper::__scrollCb(void *data, Evas_Object *obj, void *event_info)
+{
+ WPRET_M(!data, "data is null");
+ PhLogGenlistHelper* p = (PhLogGenlistHelper*)data;
+
+ if (p->__scrollTimer)
+ ecore_timer_del(p->__scrollTimer);
+ p->__scrollTimer = ecore_timer_add(PH_LOG_SCROLL_TIMER, __scrollTimerCb, data);
+}
+
+void PhLogGenlistHelper::__mouseUpCb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
+{
+ WPRET_M(!data, "data is null");
+ PhLogGenlistHelper* p = (PhLogGenlistHelper*)data;
+
+ elm_object_scroll_hold_pop(p->__genlist);
+ elm_object_scroll_freeze_pop(p->__genlist);
+}
+
+Evas_Object* PhLogGenlistHelper::__createGenlist(void)
+{
+ WHIT();
+ WASSERT_EX(__parent != NULL, "__parent is null.");
+
+ __genlist = elm_genlist_add(__parent);
+ WASSERT_EX(__genlist != NULL, "genlist is not created.");
+
+ evas_object_size_hint_weight_set(__genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_size_hint_align_set(__genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+ elm_genlist_mode_set(__genlist, ELM_LIST_COMPRESS);
+ elm_genlist_homogeneous_set(__genlist, EINA_TRUE);
+
+ evas_object_smart_callback_add(__genlist, "realized", __genlistRealizedCb, this);
+ evas_object_smart_callback_add(__genlist, "unrealized", __genlistUnrealizedCb, this);
+ evas_object_smart_callback_add(__genlist, "language,changed", __languageChangedCb, this);
+ evas_object_smart_callback_add(__genlist, "longpressed", __longPressedCb, this);
+ evas_object_smart_callback_add(__genlist, "scroll", __scrollCb, this);
+ evas_object_event_callback_add(__genlist, EVAS_CALLBACK_MOUSE_UP, __mouseUpCb, this);
+
+ return __genlist;
+}
+
+void PhLogGenlistHelper::appendFinish()
+{
+ WHIT();
+ WPRET_M( NULL == __genlist, " __genlist is NULL");
+ WPRET_M( 0 > __smartAppendIndex, "__smartAppendIndex is Invalid");
+
+ Elm_Object_Item * item = NULL;
+ while( NULL != (item = elm_genlist_nth_item_get(__genlist, __smartAppendIndex)) ){
+ elm_object_item_del(item);
+ }
+ elm_genlist_item_bring_in(elm_genlist_first_item_get(__genlist),ELM_GENLIST_ITEM_SCROLLTO_TOP);
+
+ __smartAppendIndex = 0;
+
+ return;
+}
+
+Elm_Object_Item* PhLogGenlistHelper::appendItem(
+ const Elm_Genlist_Item_Class *itc, + const void *data, + Elm_Object_Item *parent, + Elm_Genlist_Item_Type type, + Evas_Smart_Cb func, + const void *funcData)
+{
+ WASSERT_EX(__genlist != NULL, "genlist is not created.");
+
+ ItemData* itemData = new ItemData;
+ itemData->p = funcData;
+ itemData->data = data;
+ itemData->contents = NULL;
+ itemData->thumbnailUpdateTimer = NULL;
+
+ Elm_Genlist_Item_Class *curItemClass;
+ Elm_Object_Item *curItem = elm_genlist_nth_item_get(__genlist, __smartAppendIndex);
+// WDEBUG("HERE : curItem : %p",curItem);
+ if(NULL == curItem)
+ {
+// WDEBUG("insert");
+ itemData->it = elm_genlist_item_append(__genlist, itc, itemData, parent, type, func, funcData);
+ }
+ else
+ {
+ curItemClass = (Elm_Genlist_Item_Class *)elm_genlist_item_item_class_get((const Elm_Object_Item *)curItem);
+ if(itc == curItemClass)
+ {
+// WDEBUG("update");
+ ItemData* curItemData = (ItemData*)elm_object_item_data_get(curItem);
+ if (curItemData) {
+ itemData->contents = curItemData->contents;
+ delete curItemData;
+ }
+ elm_object_item_data_set(curItem, itemData);
+ elm_genlist_item_update(curItem);
+ itemData->it = curItem;
+ }
+ else
+ {
+// WDEBUG("replace");
+ itemData->it = elm_genlist_item_insert_after(__genlist, itc, itemData, parent, curItem, type, func, funcData);
+ elm_object_item_del(curItem);
+ }
+ }
+
+ if (!itemData->it) {
+ WERROR("elm_genlist_nth_item_get() is failed");
+ free(itemData);
+ return NULL;
+ }
+
+ __smartAppendIndex++;
+
+// WDEBUG("HERE : itemData: %p, genlist count : %d, append count : %d", itemData, elm_genlist_items_count (__genlist), __smartAppendIndex);
+ return itemData->it;
+}
+
+Elm_Object_Item* PhLogGenlistHelper::appendCheckItem(
+ const Elm_Genlist_Item_Class *itc,
+ const void *data,
+ Elm_Object_Item *parent,
+ Elm_Genlist_Item_Type type,
+ Evas_Smart_Cb func,
+ const void *funcData,
+ Eina_Bool isChecked)
+{
+ WASSERT_EX(__genlist != NULL, "genlist is not created.");
+
+ CheckedItemData* itemData = new CheckedItemData;
+ itemData->p = funcData;
+ itemData->data = data;
+ itemData->isChecked = isChecked;
+ itemData->checkButton = NULL;
+
+ Elm_Genlist_Item_Class *curItemClass;
+ Elm_Object_Item *curItem = elm_genlist_nth_item_get(__genlist, __smartAppendIndex);
+// WDEBUG("HERE : curItem : %p",curItem);
+ if(NULL == curItem)
+ itemData->it = elm_genlist_item_append(__genlist, itc, itemData, parent, type, func, funcData);
+ else
+ {
+ curItemClass = (Elm_Genlist_Item_Class *)elm_genlist_item_item_class_get((const Elm_Object_Item *)curItem);
+ if(itc == curItemClass)
+ {
+ CheckedItemData* curItemData = (CheckedItemData*)elm_object_item_data_get(curItem);
+ WDEBUG("update from : %p, to : %p", curItemData, itemData);
+ if (curItemData) {
+ delete curItemData;
+ }
+ elm_object_item_data_set(curItem, (void *)itemData);
+ elm_genlist_item_item_class_update(curItem,itc);
+ elm_genlist_item_update(curItem);
+ itemData->it = curItem;
+ }
+ else
+ {
+ WDEBUG("replace");
+ itemData->it = elm_genlist_item_insert_after(__genlist, itc, itemData, parent, curItem, type, func, funcData);
+ elm_object_item_del(curItem);
+ }
+ }
+
+ if (!itemData->it) {
+ WERROR("elm_genlist_nth_item_get() is failed");
+ free(itemData);
+ return NULL;
+ }
+
+ __smartAppendIndex++;
+// WDEBUG("HERE : itemData: %p, genlist count : %d, append count : %d", itemData, elm_genlist_items_count (__genlist), __smartAppendIndex);
+ return itemData->it;
+}
+
+void PhLogGenlistHelper::updateItems(void)
+{
+ WENTER();
+
+ elm_genlist_realized_items_update(__genlist);
+
+ WLEAVE();
+ return;
+}
diff --git a/lib-phone/ph-loglist/src/PhLogListView.cpp b/lib-phone/ph-loglist/src/PhLogListView.cpp new file mode 100755 index 0000000..eed5036 --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogListView.cpp @@ -0,0 +1,155 @@ +/* + * 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 <string> + +#include "ContactsDebug.h" + +#include "PhLogIcu.h" +#include "PhLogGenlistHelper.h" + +#include "PhLogListView.h" +#include "PhStrings.h" +#include "PhCommon.h" +#include "SystemSettingsMgr.h" +#include "PhLogDbMgr.h" + +#define PH_TEXT_MAX_LEN (1024) + +PhLogListView::PhLogListView(): +__glHelper(NULL) +{ + WHIT(); + + PhLogIcu::setLocale(); + PhLogIcu::setTimeFormat(); + PhLogIcu::setDateFormat(); + PhLogIcu::setDefaultTimezoneId(); +} + +PhLogListView::~PhLogListView() +{ + WHIT(); +} + +PhLogGenlistHelper* PhLogListView::getGlHelper() +{ + if (!__glHelper) + { + WASSERT_EX(getEvasObj() != NULL, "getGlHelper failed. (parent layout is null)."); + __glHelper = new PhLogGenlistHelper(getEvasObj()); + __glHelper->create(getEvasObj(), NULL); + __glHelper->setName("__genlistHelper"); + WDEBUG("Created PhLogGenlistHelper"); + } + return __glHelper; +} + +void PhLogListView::setGenlistLayout() +{ + WPRET_M( !getGlHelper(), "getGlHelper() is failed"); + + Evas_Object * obj = elm_object_part_content_get(getEvasObj(), "elm.swallow.content"); + if( __glHelper->getEvasObj() != obj) + { + obj = elm_object_part_content_unset(getEvasObj(), "elm.swallow.content"); + if(obj) + evas_object_del(obj); + elm_object_part_content_set(getEvasObj(), "elm.swallow.content", __glHelper->getEvasObj()); + } +} + +void PhLogListView::setNoContentLayout() +{ + WENTER(); + + Evas_Object * obj = elm_object_part_content_unset(getEvasObj(), "elm.swallow.content"); + if (obj) + { + evas_object_del(obj); + __glHelper = NULL; + } + + Evas_Object *noContentsLayout = elm_layout_add(getEvasObj()); + elm_layout_theme_set(noContentsLayout, "layout", "nocontents", "default"); + evas_object_size_hint_weight_set(noContentsLayout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(noContentsLayout, EVAS_HINT_FILL, EVAS_HINT_FILL); + + elm_object_domain_translatable_part_text_set(noContentsLayout, "elm.text", STRING_PACKAGE, PXT_(PH_CLOG_BODY_NO_LOGS)); + elm_object_domain_translatable_part_text_set(noContentsLayout, "elm.help.text", STRING_PACKAGE, PXT_(PH_LOGS_BODY_AFTER_YOU_MAKE_OR_RECEIVE_CALLS_THEY_WILL_BE_LOGGED_HERE)); + elm_layout_signal_emit(noContentsLayout, "text,disabled", ""); + elm_layout_signal_emit(noContentsLayout, "align.center", "elm"); + + elm_object_part_content_set(getEvasObj(), "elm.swallow.content", noContentsLayout); + +} + +void PhLogListView::onTabSelect(Elm_Object_Item *naviItem) +{ + WHIT(); + elm_object_focus_set(getEvasObj(), EINA_TRUE); +} + +void PhLogListView::onTabUnselect(Elm_Object_Item *naviItem) +{ + WHIT(); + destroyPopup(); +} + +void PhLogListView::formatTimeDateChangedCb(system_settings_key_e key, void *data) +{ + WENTER(); + WPRET_M(NULL == data, "data is NULL"); + PhLogListView* p = (PhLogListView*)data; + + PhLogIcu::setLocale(); + PhLogIcu::setTimeFormat(); + PhLogIcu::setDateFormat(); + PhLogIcu::setDefaultTimezoneId(); + p->updateList(); +} + +void PhLogListView::onCreated() +{ + WHIT(); + int ret = SystemSettingsMgr::getInstance().registerChangedCallback(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, formatTimeDateChangedCb, this); + WPWARN(-1 == ret, "system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR) Failed"); + + ret = SystemSettingsMgr::getInstance().registerChangedCallback(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, formatTimeDateChangedCb, this); + WPWARN(-1 == ret, "system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY) Failed"); + + ret = SystemSettingsMgr::getInstance().registerChangedCallback(SYSTEM_SETTINGS_KEY_TIME_CHANGED, formatTimeDateChangedCb, this); + WPWARN(-1 == ret, "system_settings_set_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED) Failed"); + + PhLogDbMgr::getInstance()->attach(this); +} + +void PhLogListView::onDestroy() +{ + WHIT(); + + int ret = SystemSettingsMgr::getInstance().unregisterChangedCallback(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR, formatTimeDateChangedCb); + WPWARN(-1 == ret, "system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_TIMEFORMAT_24HOUR) Failed"); + + ret = SystemSettingsMgr::getInstance().unregisterChangedCallback(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY, formatTimeDateChangedCb); + WPWARN(-1 == ret, "system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_LOCALE_COUNTRY) Failed"); + + ret = SystemSettingsMgr::getInstance().unregisterChangedCallback(SYSTEM_SETTINGS_KEY_TIME_CHANGED, formatTimeDateChangedCb); + WPWARN(-1 == ret, "system_settings_unset_changed_cb(SYSTEM_SETTINGS_KEY_TIME_CHANGED) Failed"); + + PhLogDbMgr::getInstance()->detach(this); +} diff --git a/lib-phone/ph-loglist/src/PhLogMainListCheckView.cpp b/lib-phone/ph-loglist/src/PhLogMainListCheckView.cpp new file mode 100755 index 0000000..8444a56 --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogMainListCheckView.cpp @@ -0,0 +1,745 @@ +/* + * 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 <system_settings.h> +#include <unordered_set> + +#include "WPopup.h" + +#include "ContactsDebug.h" +#include "ContactsThumbnail.h" + +#include "PhPath.h" +#include "PhCommon.h" +#include "PhStrings.h" + +#include "PhLogDefines.h" +#include "PhLogIcu.h" +#include "PhLogUtil.h" + +#include "PhLogMainListCheckView.h" +#include "SystemSettingsMgr.h" + +PhLogMainListCheckView::PhLogMainListCheckView(ContactsData *contactsData): +__logList(NULL), +__checkAllButton(NULL), +__deleteButton(NULL), +__checkedList(NULL), +__currentListType(PhLogDbMgr::LIST_TYPE_ALL_CALL_MESSAGE), +__listInitialPosition(0) +{ + // TODO Auto-generated constructor stub + WHIT(); + __contactsData = contactsData; + __launchMode = __decideLaunchMode(contactsData); + + switch(__launchMode) + { + case LAUNCH_MODE_EMAIL_COMPOSER: + case LAUNCH_MODE_MESSAGE_COMPOSER: + __enableTitleButton = true; + __enableCheckAllButton = false; + break; + case LAUNCH_MODE_NORMAL: + default: + __enableTitleButton = true; + __enableCheckAllButton = true; + break; + } + + __checkedCount = 0; + __totalCount = 0; +} + +PhLogMainListCheckView::PhLogMainListCheckView(PhLogDbMgr::ListType currentListType, int listPosition): +__itcGroupIndex(NULL), +__itcDeleteList(NULL), +__itcSelectAll(NULL), +__logList(NULL), +__checkAllButton(NULL), +__deleteButton(NULL), +__checkedList(NULL), +__contactsData(NULL), +__launchMode(LAUNCH_MODE_NORMAL), +__listInitialPosition(listPosition) +{ + WHIT(); + __currentListType = currentListType; + + __enableTitleButton = true; + __enableCheckAllButton = true; + + __checkedCount = 0; + __totalCount = 0; +} + + +PhLogMainListCheckView::~PhLogMainListCheckView() +{ + WHIT(); + + STD_LIST_FREE(__logList) + + delete __checkedList; + + elm_genlist_item_class_free(__itcGroupIndex); + elm_genlist_item_class_free(__itcDeleteList); + elm_genlist_item_class_free(__itcSelectAll); +} + +void PhLogMainListCheckView::onPushed(Elm_Object_Item* naviItem) +{ + WHIT(); + WPRET_M( NULL == naviItem, "Invalid param : naviItem"); + + __enableTitleBtn(); + __updateTitleInfo(); + + Elm_Object_Item *topItem = elm_genlist_nth_item_get(getGlHelper()->getEvasObj(), __listInitialPosition); + //WDEBUG("postion %d", __listInitialPosition); + if(__listInitialPosition != 1 && topItem) + elm_genlist_item_show(topItem, ELM_GENLIST_ITEM_SCROLLTO_TOP); +} + +void PhLogMainListCheckView::onSetAsPageContent(Elm_Object_Item* parentNaviItem) +{ + WHIT(); +} + +void PhLogMainListCheckView::__initializeTitleInfo() +{ + WHIT(); + + if(!__newRecord) + { + __checkedCount = 0; + __totalCount = 0; + } + + + char buf[PH_TEXT_SHORT_LEN] = {0,}; + snprintf(buf, sizeof(buf), PAT_(PH_LOGS_HEADER_PD_SELECTED_ABB3), __checkedCount); + elm_object_item_part_text_set(getNaviItem(), "elm.text.title", buf ); + + if (__enableTitleButton && __deleteButton) + elm_object_disabled_set(__deleteButton, EINA_FALSE); + + if (NULL == __checkedList) + __checkedList = new std::list<PhLogDbMgr::RecordInfo*>; + else + { + __checkedList->clear(); + } +} + + +void PhLogMainListCheckView::__updateTitleInfo() +{ + WHIT(); + char buf[PH_TEXT_SHORT_LEN] = {0,}; + snprintf(buf, sizeof(buf), PAT_(PH_LOGS_HEADER_PD_SELECTED_ABB3), __checkedCount); + elm_object_item_part_text_set(getNaviItem(), "elm.text.title", buf ); + + if (__deleteButton) + { + if(__checkedCount == 0) + elm_object_disabled_set(__deleteButton, EINA_TRUE); + else if (__checkedCount >0) + elm_object_disabled_set(__deleteButton, EINA_FALSE); + else + WERROR("invalid __checkedCount : %d", __checkedCount); + } + + if (__checkAllButton) + { + Elm_Object_Item *item = elm_genlist_first_item_get(getGlHelper()->getEvasObj()); + PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData*)elm_object_item_data_get(item); + WPRET_M(!itemData, "itemData is NULL"); + + if ( (unsigned int)__totalCount == __logList->size() && !__logList->empty()) { + itemData->isChecked = EINA_TRUE; + elm_check_state_set(__checkAllButton, EINA_TRUE); + } + else { + itemData->isChecked = EINA_FALSE; + elm_check_state_set(__checkAllButton, EINA_FALSE); + } + } +} + +void PhLogMainListCheckView::__enableTitleBtn() +{ + WHIT(); + WPRET_M( !__enableTitleButton , "__enableTitleButton is disabled"); + + Evas_Object * cancelButton = elm_object_item_part_content_unset(getNaviItem(), "title_cancel"); + if(cancelButton) + evas_object_del(cancelButton); + cancelButton = PhCommon::createButton(getNaviframe()->getEvasObj(), "naviframe/title_left", PAT_(PH_TPLATFORM_ACBUTTON_CANCEL_ABB), [](void *data, Evas_Object *obj, void *event_info)->void { + WPRET_M( NULL == data, "Invalid Param : data"); + PhLogMainListCheckView* p = (PhLogMainListCheckView *) data; + + WDEBUG("Close Delete View"); + p->popOut(); + }, this); + WPRET_M( NULL == cancelButton, "PhCommon::createButton() is failed" ); + elm_object_item_part_content_set(getNaviItem(), "title_left_btn", cancelButton); + + __deleteButton = elm_object_item_part_content_unset(getNaviItem(), "title_right_btn"); + if(__deleteButton) + evas_object_del(__deleteButton); + + __deleteButton = PhCommon::createButton(getNaviframe()->getEvasObj(), "naviframe/title_right", PAT_(PH_TPLATFORM_ACBUTTON_DELETE_ABB), [](void *data, Evas_Object *obj, void *event_info)->void { + WPRET_M( NULL == data, "Invalid Param : data"); + PhLogMainListCheckView* p = (PhLogMainListCheckView *) data; + + elm_object_disabled_set(obj, EINA_TRUE); + + switch(p->__launchMode) + { + case LAUNCH_MODE_EMAIL_COMPOSER: + case LAUNCH_MODE_MESSAGE_COMPOSER: + p->__replyToUgRequest(); + break; + case LAUNCH_MODE_NORMAL: + default: + { + PhLogDbMgr::getInstance()->deleteLogList(p->__checkedList, p->__totalCount); + p->popOut(); + break; + } + } + + }, this); + WPRET_M( NULL == __deleteButton, "PhCommon::createButton() is failed" ); + elm_object_item_part_content_set(getNaviItem(), "title_right_btn", __deleteButton); +} + +void PhLogMainListCheckView::__replyToUgRequest() +{ + WHIT(); + WPRET_M( !__checkedList || __checkedList->empty(), "__checkedList is Invalid"); + + int *resultArray = new int[__checkedList->size()]; + WPRET_M( NULL ==resultArray, " new int[] is failed"); + int index = 0; + for (auto it=__checkedList->begin(); it != __checkedList->end(); it++) + { + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)(*it); + + if(!recordInfo->number) continue; + resultArray[index] = recordInfo->logId; + index++; + WDEBUG("UG resuult address : %s ", recordInfo->number); + } + + app_control_h service; + app_control_create(&service); + + gchar *encoded_str = g_base64_encode((guchar *)resultArray, (index+1)*sizeof(int)); + app_control_add_extra_data(service, PH_UG_BUNDLE_RESULT_PLOG_ID_LIST, encoded_str); + g_free(encoded_str); + delete [] resultArray; + + app_control_reply_to_launch_request(service, __contactsData->appControl, APP_CONTROL_RESULT_SUCCEEDED); + app_control_destroy(service); + + popOut(); +} + +void PhLogMainListCheckView::updateList(void) +{ + WHIT(); + std::list<PhLogDbMgr::RecordInfo*> *__oldLogList = __logList; + + switch(__launchMode) + { + case LAUNCH_MODE_MESSAGE_COMPOSER: + __logList = PhLogDbMgr::getInstance()->loadLogList(PhLogDbMgr::LIST_TYPE_ALL_CALL, false); + break; + case LAUNCH_MODE_EMAIL_COMPOSER: + __logList = PhLogDbMgr::getInstance()->loadLogList(PhLogDbMgr::LIST_TYPE_EMAIL, false); + break; + case LAUNCH_MODE_NORMAL: + default: + __logList = PhLogDbMgr::getInstance()->loadLogList(__currentListType, true); + break; + } + + if(!__logList || __logList->empty()) + setNoContentLayout(); + else + { + __newRecord = NULL; + if(__oldLogList) + { + std::unordered_set<int> logIds; + for(auto oldRec: *__oldLogList) + { + logIds.insert(oldRec->logId); + } + for(auto newRec: *__logList) + { + if( !logIds.count(newRec->logId) ) + { + __newRecord = newRec; + } + } + } + + setGenlistLayout(); + __setList(); + } + + STD_LIST_FREE(__oldLogList) +// WDEBUG("exit :__logList : %p", __logList); + +} + +void PhLogMainListCheckView::__setList() +{ + WHIT(); + WPRET_M( NULL == __logList, "__logList is NULL"); + + std::unordered_set<int> checkedHashSet; + if(__newRecord && __checkedList) + { + for(auto i: *__checkedList) + { + checkedHashSet.insert(i->logId); + if( PhLogUtil::isGrouped(__newRecord, i)) + { + --__checkedCount; + __totalCount -= i->groupedList ? (i->groupedList->size() + 1) : 1; + } + } + } + + __initializeTitleInfo(); + + if (__enableCheckAllButton) { + getGlHelper()->appendCheckItem(__itcSelectAll, this, NULL, ELM_GENLIST_ITEM_NONE, PhLogMainListCheckView::__checkAllClickedCb, this); + } + + + PhLogDbMgr::RecordInfo *prevRecordInfo = NULL; + for (auto it=__logList->begin(); it != __logList->end(); it++) + { + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)(*it); + + if( PhLogUtil::isGrouped(prevRecordInfo,recordInfo)) + { + if( NULL == prevRecordInfo->groupedList ) + prevRecordInfo->groupedList = new std::list<PhLogDbMgr::RecordInfo*>; + + prevRecordInfo->groupedList->push_back(recordInfo); + } + else + { + if( !prevRecordInfo || !PhLogUtil::isGroupedbyDate(prevRecordInfo->logTime,recordInfo->logTime) ) { + Elm_Object_Item *item = getGlHelper()->appendCheckItem(__itcGroupIndex, recordInfo, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE); + } + Eina_Bool isChecked = EINA_FALSE; + + if(checkedHashSet.count(recordInfo->logId)) + { + __checkedList->push_back(recordInfo); + isChecked = EINA_TRUE; + } + getGlHelper()->appendCheckItem(__itcDeleteList, recordInfo, NULL, ELM_GENLIST_ITEM_NONE, PhLogMainListCheckView::__selectItemCb, this, isChecked); + prevRecordInfo = recordInfo; + } + } + + getGlHelper()->appendFinish(); + + __updateTitleInfo(); + + return; +} + +Evas_Object* PhLogMainListCheckView::onCreate( Evas_Object* parent, void* viewParam) +{ + WHIT(); + + Evas_Object* layout = PhCommon::createLayout(parent, LOG_LIST_EDJ, "log/list/check/main"); + evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL); + evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL); + evas_object_show(layout); + + __setGenlistItcs(); + return layout; +} + +void PhLogMainListCheckView::onCreated() +{ + WHIT(); + PhLogListView::onCreated(); + updateList(); +} + +void PhLogMainListCheckView::onDbChanged() +{ + updateList(); +} + +void PhLogMainListCheckView::__setGenlistItcs() +{ + WHIT(); + + __itcGroupIndex = elm_genlist_item_class_new(); + WPRET_M(!__itcGroupIndex, "elm_genlist_item_class_new() failed"); + __itcGroupIndex->item_style = "group_index"; + __itcGroupIndex->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* { +// WDEBUG("part :%s", part); + if (!strcmp(part, "elm.text")) { + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + + time_t itemTime = recordInfo->logTime; + time_t nowTime = time(NULL); + + struct tm itemDate; + struct tm nowDate; + + localtime_r(&itemTime, &itemDate); + localtime_r(&nowTime, &nowDate); + + if( itemDate.tm_year == nowDate.tm_year && + itemDate.tm_mon == nowDate.tm_mon && + itemDate.tm_mday == nowDate.tm_mday ) + return elm_entry_utf8_to_markup(PAT_(PH_LOGS_HEADER_TODAY)); + else if( itemDate.tm_year == nowDate.tm_year && + itemDate.tm_mon == nowDate.tm_mon && + ((itemDate.tm_mday)+1) == nowDate.tm_mday ) + return elm_entry_utf8_to_markup(PAT_(PH_LOGS_HEADER_YESTERDAY)); + else + return PhLogIcu::getGroupIndexDateString(recordInfo->logTime); + } + else + return NULL; + }; + __itcGroupIndex->func.content_get = NULL; + __itcGroupIndex->func.del = [](void* data, Evas_Object* obj){ + PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data; + delete itemData; + }; + + __itcDeleteList = elm_genlist_item_class_new(); + WPRET_M(!__itcDeleteList, "elm_genlist_item_class_new() failed"); + __itcDeleteList->item_style = "type1"; + __itcDeleteList->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* { + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; +// WDEBUG("part :%s", part); + if (0 == strcmp(part, "elm.text")) + return elm_entry_utf8_to_markup(PhLogUtil::getDisplayText(recordInfo->personId, recordInfo->displayName, recordInfo->number,recordInfo->callDesc)); + else if ((strcmp(part, "elm.text.sub") == 0)) + { + if(recordInfo->personId) + return elm_entry_utf8_to_markup(recordInfo->number); + else + return elm_entry_utf8_to_markup(PAT_(PH_LOGS_SBODY_UNSAVED_M_STATUS)); + } + else if ((strcmp(part, "elm.text.sub.end") == 0)) + { + char buf[PH_TEXT_SHORT_LEN] = {0,}; + char *logTime = PhLogIcu::getTimeString(recordInfo->logTime); + snprintf(buf, sizeof(buf), "<font_size=%d>%s</font_size>", LOGLIST_SUB_TEXT_SIZE, logTime); + free(logTime); + return strdup(buf); + } + else if ((strcmp(part, "elm.text.end") == 0)) + { + char buf[PH_TEXT_SHORT_LEN] = {0,}; + if(recordInfo->groupedList == NULL) + return NULL; + else + { + snprintf(buf, sizeof(buf), "(%d)", recordInfo->groupedList->size()+1); + return elm_entry_utf8_to_markup(buf); + } + + } + else + return NULL; + }; + __itcDeleteList->func.content_get = [](void* data, Evas_Object* obj, const char* part)->Evas_Object*{ + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; +// WDEBUG("part :%s", part); + if (0 == strcmp(part, "elm.swallow.icon")) + { + Evas_Object *thumbnail = createThumbnail(obj, THUMBNAIL_98, recordInfo->imgPath, true); + WPRET_VM( NULL == thumbnail, NULL, "elm_image_add() is failed"); + + Evas_Object *icon = PhLogUtil::getLogTypeIcon(obj, recordInfo->logType); + WPRET_VM( NULL == icon, NULL, "PhLogUtil::GetLogTypeIcon() is failed"); + evas_object_size_hint_min_set(icon, ContactsCommon::getScaledWidth(LOG_LIST_CALL_TYPE_SIZE), ContactsCommon::getScaledHeight(LOG_LIST_CALL_TYPE_SIZE)); + + Evas_Object *layout = PhCommon::createLayout(obj, LOG_LIST_EDJ, "list/B/log/thumbnail"); + WPRET_VM( NULL == layout, NULL, "PhLogUtil::createLayout() is failed"); + + elm_layout_content_set(layout, "elm.swallow.content", thumbnail); + elm_layout_content_set(layout, "elm.swallow.call.type", icon); + + return layout; + } + else if (0 == strcmp(part, "elm.swallow.end")) + { + itemData->checkButton = elm_check_add(obj); + WPRET_VM(NULL == itemData->checkButton, NULL, "elm_check_add() return NULL"); + elm_check_state_set(itemData->checkButton, itemData->isChecked); + evas_object_repeat_events_set(itemData->checkButton, EINA_TRUE); + evas_object_propagate_events_set(itemData->checkButton, EINA_FALSE); + evas_object_freeze_events_set (itemData->checkButton, EINA_TRUE); + + return itemData->checkButton; + } else { + return NULL; + } + }; + __itcDeleteList->func.del = [](void* data, Evas_Object* obj){ + PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data; + delete itemData; + }; + + __itcSelectAll = elm_genlist_item_class_new(); + WPRET_M(!__itcSelectAll, "elm_genlist_item_class_new() failed"); + __itcSelectAll->item_style = "type1"; + __itcSelectAll->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* { + if (!strcmp(part, "elm.text")) { + return strdup(PAT_(PH_LOGS_MBODY_SELECT_ALL)); + } + else + return NULL; + }; + __itcSelectAll->func.content_get = [](void* data, Evas_Object* obj, const char* part)->Evas_Object*{ + PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data; + PhLogMainListCheckView *view = (PhLogMainListCheckView*)itemData->data; + if (0 == strcmp(part, "elm.swallow.end")) + { + Evas_Object* check = elm_check_add(obj); + elm_check_state_set(check, itemData->isChecked); + evas_object_repeat_events_set(check, EINA_TRUE); + evas_object_propagate_events_set(check, EINA_FALSE); + evas_object_freeze_events_set (check, EINA_TRUE); + view->__checkAllButton = check; + return check; + } + else + return NULL; + }; + __itcSelectAll->func.del = [](void* data, Evas_Object* obj){ + PhLogGenlistHelper::CheckedItemData* itemData = (PhLogGenlistHelper::CheckedItemData *)data; + delete itemData; + }; +} + +void PhLogMainListCheckView::__checkAllClickedCb(void *data, Evas_Object *obj, void *event_info) +{ + WHIT(); + WPRET_M( NULL == event_info,"event_info is NULL"); + WPRET_M( NULL == data,"data is NULL"); + + Elm_Object_Item* item = (Elm_Object_Item*)event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); + + PhLogMainListCheckView * p = (PhLogMainListCheckView *)data; + Eina_Bool checkAllBtnState = elm_check_state_get(p->__checkAllButton); + + elm_check_state_set(p->__checkAllButton, !checkAllBtnState); + + if ( !checkAllBtnState) + __checkAllItems(p->getGlHelper()); + else + __uncheckAllItems(p->getGlHelper()); +} + +void PhLogMainListCheckView::__checkAllItems(PhLogGenlistHelper* glHelper) +{ + WHIT(); + WPRET_M( NULL == glHelper , "glHelper is NULL"); + + Evas_Object *genlist = glHelper->getEvasObj(); + WPRET_M( NULL == genlist , "genlist is NULL"); + + Elm_Object_Item *item = elm_genlist_first_item_get(genlist); + while(item) + { + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData *)elm_object_item_data_get(item); + + PhLogMainListCheckView* p = (PhLogMainListCheckView *)itemData->p; + if (p) { + if (p->__itcSelectAll == (Elm_Genlist_Item_Class*)elm_genlist_item_item_class_get(item)) { + item = elm_genlist_item_next_get(item); + continue; + } + } + + if (!itemData->isChecked) + __checkItem(itemData); + + item = elm_genlist_item_next_get(item); + } +} + +void PhLogMainListCheckView::__uncheckAllItems(PhLogGenlistHelper* glHelper) +{ + WHIT(); + WPRET_M( NULL == glHelper , "glHelper is NULL"); + + Evas_Object *genlist = glHelper->getEvasObj(); + WPRET_M( NULL == genlist , "genlist is NULL"); + + Elm_Object_Item *item = elm_genlist_first_item_get(genlist); + while(item) + { + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData *)elm_object_item_data_get(item); + + PhLogMainListCheckView* p = (PhLogMainListCheckView *)itemData->p; + if (p) { + if (p->__itcSelectAll == (Elm_Genlist_Item_Class*)elm_genlist_item_item_class_get(item)) { + item = elm_genlist_item_next_get(item); + continue; + } + } + + if (itemData->isChecked) + __uncheckItem(itemData); + + item = elm_genlist_item_next_get(item); + } +} + +void PhLogMainListCheckView::__checkItem(PhLogGenlistHelper::CheckedItemData * itemData) +{ + WHIT(); + WPRET_M( NULL == itemData , "Invalid Param : itemData"); + + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + WPRET_M( NULL == recordInfo , "recordInfo is NULL"); + + PhLogMainListCheckView *p = (PhLogMainListCheckView *)itemData->p; + WPRET_M( NULL == p , "p is NULL : is Group index"); + +// WDEBUG("number : %s", recordInfo->number); + p->__checkedList->push_back(recordInfo); + p->__checkedCount++; + if(recordInfo->groupedList) + p->__totalCount += (recordInfo->groupedList->size()+1); + else + p->__totalCount++; + + //check button state set + itemData->isChecked = EINA_TRUE; + if(itemData->checkButton) + elm_check_state_set(itemData->checkButton, itemData->isChecked); + + p->__updateTitleInfo(); +} + +void PhLogMainListCheckView::__uncheckItem(PhLogGenlistHelper::CheckedItemData * itemData) +{ + WHIT(); + WPRET_M( NULL == itemData , "Invalid Param : itemData"); + + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + WPRET_M( NULL == recordInfo , "recordInfo is NULL"); + + PhLogMainListCheckView *p = (PhLogMainListCheckView *)itemData->p; + WPRET_M( NULL == p , "p is NULL"); + + p->__checkedList->remove(recordInfo); + p->__checkedCount--; + + if(recordInfo->groupedList) + p->__totalCount -= (recordInfo->groupedList->size()+1); + else + p->__totalCount--; + + //check button state set + itemData->isChecked = EINA_FALSE; + if(itemData->checkButton) + elm_check_state_set(itemData->checkButton, itemData->isChecked); + + p->__updateTitleInfo(); +} + + +void PhLogMainListCheckView::__selectItemCb(void *data, Evas_Object *obj, void *event_info) +{ + WHIT(); + WPRET_M( NULL == event_info,"event_info is NULL"); + WPRET_M( NULL == data,"data is NULL"); + + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); + + PhLogGenlistHelper::CheckedItemData *itemData = (PhLogGenlistHelper::CheckedItemData *)elm_object_item_data_get(item); + + if(itemData->isChecked) + __uncheckItem(itemData); + else + __checkItem(itemData); +} + +PhLogMainListCheckView::__LaunchMode PhLogMainListCheckView::__decideLaunchMode(ContactsData* contactsData) +{ + WHIT(); + WPRET_VM(contactsData == NULL, LAUNCH_MODE_NORMAL, "no contactsData. set to normal mode."); + + std::string type; + std::string appId; + + appId = ContactsCommon::getAppControlData(contactsData->appControl, CONTACTS_APPCONTROL_KEY_APPID); + type = ContactsCommon::getAppControlData(contactsData->appControl, "type"); + WDEBUG("appid: %s, launchMode: %s", appId.c_str(), type.c_str()); + + if(type.compare("34") == 0) + return LAUNCH_MODE_MESSAGE_COMPOSER; + else if(type.compare("33") == 0) + return LAUNCH_MODE_EMAIL_COMPOSER; + else + return LAUNCH_MODE_NORMAL; +} + +void PhLogMainListCheckView::onTabSelect(Elm_Object_Item *naviItem) +{ + WHIT(); + elm_object_focus_set(getEvasObj(), EINA_TRUE); + + __enableTitleBtn(); + + __updateTitleInfo(); + +} + +void PhLogMainListCheckView::onTabUnselect(Elm_Object_Item *naviItem) +{ + WHIT(); + destroyPopup(); + __uncheckAllItems(getGlHelper()); +} + +bool PhLogMainListCheckView::onTabPop() +{ + WHIT(); + return TRUE; +} + diff --git a/lib-phone/ph-loglist/src/PhLogMainListView.cpp b/lib-phone/ph-loglist/src/PhLogMainListView.cpp new file mode 100755 index 0000000..e5903e2 --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogMainListView.cpp @@ -0,0 +1,834 @@ +/* + * 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 <ui_extension.h> +#include <notification.h> + +#ifndef _SDK_BUILD + #include <notification_internal.h> +#endif + +#include <sstream> +#include <system_settings.h> +#include "badge.h" + +#include "WMenuPopup.h" + +#include "ContactsAppControl.h" +#include "ContactsDebug.h" +#include "ContactsThumbnail.h" +#include "WPopup.h" +#include "PhPath.h" +#include "PhStrings.h" +#include "PhCommon.h" + +#include "PhLogIcu.h" +#include "PhLogUtil.h" +#include "PhLogDbMgr.h" + +#include "PhLogDropDownCtxPopup.h" +#include "PhLogDetailView.h" +#include "PhLogMainListCheckView.h" +#include "PhLogMainListView.h" +#include "PhLogDefines.h" +#include "SystemSettingsMgr.h" + +PhLogMainListView::PhLogMainListView(ContactsData *contactsData): +__logList(NULL), +__viewByButton(NULL), +__dbUpdateTimer(NULL), +__isActive(false), +__isScrollStopped(true), +__isUpdateImmediate(true) +{ + WHIT(); + __contactsData = contactsData; + __launchMode = __decideLaunchMode(contactsData); + WDEBUG("__launchMode : %d", __launchMode); + switch(__launchMode) + { + case LAUNCH_MODE_EMAIL_ADD_PRIORITY_SENDER_UG: + __currentListType = PhLogDbMgr::LIST_TYPE_EMAIL; + __enableViewByButton = false; + break; + case LAUNCH_MODE_NORMAL: + case LAUNCH_MODE_SINGLE_SELECT_UG: + case LAUNCH_MODE_DURING_CALL_TABUG: + default: + __currentListType = PhLogDbMgr::LIST_TYPE_ALL_CALL; + __enableViewByButton = true; + break; + } + + WDEBUG("contactsData : %p, __launchMode : %d, __currentListType : %d", contactsData, __launchMode, __currentListType); + + elm_theme_extension_add(NULL, ContactsCommon::getAppEdjePath(LOG_LIST_EDJ).c_str()); + __initIcuPattern(); +} + +PhLogMainListView::~PhLogMainListView() +{ + STD_LIST_FREE(__logList) + + elm_genlist_item_class_free(__itcGroupIndex); + elm_genlist_item_class_free(__itcMainList); +} + +void PhLogMainListView::updateList() +{ + #define LOGS_FIRST_PAGE_PRELOAD_COUNT 8 + WDEBUG("enter :__logList : %p", __logList); + + std::list<PhLogDbMgr::RecordInfo*> *__oldLogList = __logList; + int limit = (__logList)? 0 : LOGS_FIRST_PAGE_PRELOAD_COUNT; + __logList = PhLogDbMgr::getInstance()->loadLogList(__currentListType, true, limit); + + if(!__logList || __logList->empty()) + { + Evas_Object * obj = elm_object_part_content_get(getEvasObj(), "elm.swallow.content"); + if (obj && getGlHelper()->getEvasObj() == obj) + { + elm_object_part_content_unset(getEvasObj(), "elm.swallow.content"); + elm_genlist_clear(obj); + evas_object_hide(obj); + } + setNoContentLayout(); + } + else + { + setGenlistLayout(); + __setList(); + } + + if(__oldLogList == NULL) + { + WUiTimer::addIdler([](void* data)->Eina_Bool { + PhLogMainListView* p = (PhLogMainListView*)data; + WINFO("First Full db loading.."); + p->updateList(); + return ECORE_CALLBACK_CANCEL; + }, this, getWeakPtr()); + } + + STD_LIST_FREE(__oldLogList) +// WDEBUG("exit :__logList : %p", __logList); +} + +void PhLogMainListView::__genlistUnswallowCb(void *data, Evas_Object* obj, void *event_info) +{ + //WHIT(); + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + PhLogMainListView *p = (PhLogMainListView *)data; + WPRET_M(NULL == item, "parameter(item) is NULL"); + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)elm_object_item_data_get(item); + std::vector<Evas_Object *>* cList = (std::vector<Evas_Object *>*)itemData->contents; + WPRET_M(NULL == cList, "parameter(cList) is NULL"); + + if(0 == p->__logCacheList.size()) return; // genlist already destroyed case + + for (unsigned i=0; i<cList->size(); i++) + { + Evas_Object* content = cList->at(i); + std::map<Evas_Object*,std::string>::iterator it = p->__logCacheList.find(content); + if(it != p->__logCacheList.end()) + { + if((it->second).back() != '*') + WWARNING("invalid delete try!!!!!"); + else + (it->second).erase((it->second).end() -1); + evas_object_hide(content); + } + else + evas_object_del(content); + } + cList->clear(); +} + +Evas_Object* PhLogMainListView::__createListContents(std::string contentsType) +{ + Evas_Object *genlist = getGlHelper()->getEvasObj(); + Evas_Object *icon = NULL; + Evas_Object *layout = NULL; + WPRET_VM( NULL == genlist, NULL, "genlist is NULL"); + + if(contentsType.find("list/B/log/thumbnail/") != std::string::npos) + { + for(int j=CONTACTS_PLOG_TYPE_VOICE_INCOMMING ; j<CONTACTS_PLOG_TYPE_VIDEO_BLOCKED ;j++) + { + std::stringstream keyString; + keyString << "list/B/log/thumbnail/" << PhLogUtil::getLogTypeImageName(j); + + if(keyString.str() != contentsType) + continue; + + + Evas_Object *thumbnail = createThumbnail(genlist, THUMBNAIL_98, NULL, true); + WPRET_VM( NULL == thumbnail,NULL, "elm_image_add() is failed"); + icon = PhLogUtil::getLogTypeIcon(genlist, j); + WPRET_VM( NULL == icon, NULL,"PhLogUtil::GetLogTypeIcon() is failed"); + evas_object_size_hint_min_set(icon, ContactsCommon::getScaledWidth(LOG_LIST_CALL_TYPE_SIZE), ContactsCommon::getScaledHeight(LOG_LIST_CALL_TYPE_SIZE)); + layout = PhCommon::createLayout(genlist, LOG_LIST_EDJ, "list/B/log/thumbnail"); + WPRET_VM( NULL == layout,NULL, "PhLogUtil::createLayout() is failed"); + elm_layout_content_set(layout, "elm.swallow.content", thumbnail); + elm_layout_content_set(layout, "elm.swallow.call.type", icon); + //WDEBUG("%s : %x", keyString.str().c_str(), layout); + break; + } + } + else if(contentsType == "list/C/log/log_info") + { + // create info button + layout = PhCommon::createImage(genlist, LOG_LIST_EDJ, "list/C/log/log_info", NULL); + evas_object_size_hint_min_set(layout, ContactsCommon::getScaledWidth(LOG_LIST_INFO_BTN_SIZE), ContactsCommon::getScaledHeight(LOG_LIST_INFO_BTN_SIZE)); + WPRET_VM( NULL == layout,NULL, "PhCommon::createLayout() is failed"); + evas_object_repeat_events_set(layout, EINA_FALSE); + evas_object_propagate_events_set(layout, EINA_FALSE); + } + else + WWARNING("Type error %s", contentsType.c_str()); + + evas_object_hide(layout); + return layout; +} + +Evas_Object* PhLogMainListView::__getCachedContents(std::string keyString) +{ + std::map<Evas_Object*,std::string>::iterator iTer; + for (iTer = __logCacheList.begin(); iTer != __logCacheList.end(); iTer ++) + { + if (iTer->second == keyString) + { + Evas_Object* contents = iTer->first; + (iTer->second).push_back('*'); + return contents; + } + } + Evas_Object* newContents = __createListContents(keyString); + __logCacheList[newContents] = keyString+"*"; + WDEBUG("Cache Added : %s (total count : %d)", keyString.c_str(), __logCacheList.size()); + return newContents; +} + +void PhLogMainListView::__setList(void) +{ + WHIT(); + WPRET_M( NULL == __logList, "__logList is NULL"); + elm_genlist_clear(getGlHelper()->getEvasObj()); + static bool initGenlistCallback = false; + + if(initGenlistCallback == false) + { + Evas_Object *genlist = getGlHelper()->getEvasObj(); + evas_object_smart_callback_add(genlist, "content,unswallowed", __genlistUnswallowCb, this); + + evas_object_smart_callback_add(genlist, "scroll,anim,start", [](void *data, Evas_Object *obj, void *event_info){ + //WDEBUG("scroll,anim,start"); + bool* __isScrollStopped = (bool*)data; + *__isScrollStopped = false; + }, &__isScrollStopped); + evas_object_smart_callback_add(genlist, "scroll,anim,stop", [](void *data, Evas_Object *obj, void *event_info){ + //WDEBUG("scroll,anim,stop"); + PhLogMainListView* p = (PhLogMainListView*)data; + p->__isScrollStopped = true; + Eina_List *l = NULL; + void *itm = NULL; + Eina_List* realized_list = elm_genlist_realized_items_get(obj); + EINA_LIST_FOREACH(realized_list, l, itm) { + //WDEBUG("elm_genlist_realized_items_get %x", itm); + Elm_Object_Item *it = (Elm_Object_Item*)itm; + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)elm_object_item_data_get(it); + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + if(itemData->thumbnailUpdateTimer) + { + ecore_timer_del(itemData->thumbnailUpdateTimer); + itemData->thumbnailUpdateTimer = NULL; + } + + if(!recordInfo->imgPath || strlen(recordInfo->imgPath) == 0) + continue; + + itemData->thumbnailUpdateTimer = ecore_timer_add(0.3, [](void* data)->Eina_Bool { + //WDEBUG("realize timer"); + Elm_Object_Item *item = (Elm_Object_Item *)data; + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)elm_object_item_data_get(item); + itemData->thumbnailUpdateTimer = NULL; + elm_genlist_item_update(item); + return ECORE_CALLBACK_CANCEL; + }, it); + } + }, this); + evas_object_smart_callback_add(genlist, "unrealized", [](void *data, Evas_Object *obj, void *event_info){ + //WDEBUG("unrealized"); + Elm_Object_Item *item = (Elm_Object_Item *)event_info; + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)elm_object_item_data_get(item); + + if(itemData->thumbnailUpdateTimer) + ecore_timer_del(itemData->thumbnailUpdateTimer); + itemData->thumbnailUpdateTimer = NULL; + }, NULL); + initGenlistCallback = true; + } + + PhLogDbMgr::RecordInfo *prevRecordInfo = NULL; + for (auto it=__logList->begin(); it != __logList->end(); it++) + { + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)(*it); + + if( PhLogUtil::isGrouped(prevRecordInfo,recordInfo)) + { + if( NULL == prevRecordInfo->groupedList ) + prevRecordInfo->groupedList = new std::list<PhLogDbMgr::RecordInfo*>; + + prevRecordInfo->groupedList->push_back(recordInfo); + } + else + { + if( !prevRecordInfo || !PhLogUtil::isGroupedbyDate(prevRecordInfo->logTime, recordInfo->logTime) ) { + Elm_Object_Item *item = getGlHelper()->appendItem(__itcGroupIndex, recordInfo, NULL, ELM_GENLIST_ITEM_GROUP, NULL, NULL); + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE); + } + + Elm_Object_Item* item = getGlHelper()->appendItem( + __itcMainList, + recordInfo, + NULL, + ELM_GENLIST_ITEM_NONE, + PhLogMainListView::__selectItemCb, + this); + + if (!recordInfo->number) { + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_NONE); + } + else { + elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DEFAULT); + } + + prevRecordInfo = recordInfo; + } + } + + getGlHelper()->appendFinish(); + + return; +} + +void PhLogMainListView::__initIcuPattern() +{ + WUiTimer::addTimer(1.5,[](void* data)->Eina_Bool { + WDEBUG("__initIcuPattern"); + + return ECORE_CALLBACK_CANCEL; + }, NULL, getWeakPtr()); +} + +Evas_Object* PhLogMainListView::onCreate( Evas_Object* parent, void* viewParam) +{ + WHIT(); + Evas_Object* layout = PhCommon::createLayout(parent, LOG_LIST_EDJ, "log/list/check/main"); + WPRET_VM( NULL == layout, NULL, "PhCommon::createLayout() is failed"); + + __setGenlistItcs(); + + if(__launchMode) + setTitle(V_("IDS_CLOG_HEADER_SELECT_LOGS")); + return layout; +} + +void PhLogMainListView::onCreated(void) +{ + WHIT(); + PhLogListView::onCreated(); + updateList(); +} + +void PhLogMainListView::onDestroy() +{ + WHIT(); + + if (getWindow()) { + evas_object_smart_callback_del_full(getWindow()->getEvasObj(), "focus,in", __windowFocusInCb, this); + } + + if(getGlHelper()->getEvasObj()) + evas_object_smart_callback_del(getGlHelper()->getEvasObj(), "content,unswallowed", __genlistUnswallowCb); + + for (std::map<Evas_Object* ,std::string>::iterator iTer = __logCacheList.begin(); iTer != __logCacheList.end(); iTer ++) + evas_object_del(iTer->first); + __logCacheList.clear(); + PhLogListView::onDestroy(); + +} + +void PhLogMainListView::onSetAsPageContent(Elm_Object_Item* parentNaviItem) +{ + WHIT(); + + if (getWindow()) { + evas_object_smart_callback_add(getWindow()->getEvasObj(), "focus,in", __windowFocusInCb, this); + } +} + +void PhLogMainListView::onDbChanged() +{ + WENTER(); + if(__dbUpdateTimer) + { + __dbUpdateTimer->destroy(); + __dbUpdateTimer = NULL; + } + if(__isUpdateImmediate == true) + { + updateList(); + __isUpdateImmediate = false; + WUiTimer::addTimer(3.0, [](void* data)->Eina_Bool { + PhLogMainListView* p = (PhLogMainListView*)data; + WINFO("dbchange-fist timer"); + p->__isUpdateImmediate = true; + return ECORE_CALLBACK_CANCEL; + }, this, getWeakPtr()); + } + else + { + __dbUpdateTimer = WUiTimer::addTimer(1.0, [](void* data)->Eina_Bool { + PhLogMainListView* p = (PhLogMainListView*)data; + WINFO("dbchange update timer"); + p->updateList(); + p->__dbUpdateTimer = NULL; + return ECORE_CALLBACK_CANCEL; + }, this, getWeakPtr()); + } +} + +void PhLogMainListView::onTabSelect(Elm_Object_Item *naviItem) +{ + WDEBUG("onTabSelect"); + + __isActive = true; + PhCommon::terminateChildAppControl(); + destroyPopup(); + elm_object_focus_set(getEvasObj(), EINA_TRUE); + __setMoreBtn(naviItem); + __resetMissedCallCount(); +} + +void PhLogMainListView::onTabUnselect(Elm_Object_Item *naviItem) +{ + WHIT(); + __isActive = false; + + // NOTE: jaehwa + // Moved terminating app control to CtTabView + // destroy app control only if tab changed + // PhCommon::terminateChildAppControl(); + + destroyPopup(); +} + +bool PhLogMainListView::onTabPop() +{ + WHIT(); + destroyPopup(); + return TRUE; +} + +int PhLogMainListView::__getListPosition() +{ + WHIT(); + Evas_Coord_Rectangle rect = {0}; + evas_object_geometry_get(getGlHelper()->getEvasObj(), &rect.x, &rect.y, &rect.w, &rect.h); + + int posret; + Elm_Object_Item* it = elm_genlist_at_xy_item_get(getGlHelper()->getEvasObj(), rect.x, rect.y + 30, &posret); + return (it)? elm_genlist_item_index_get(it) : 0; +} + +void PhLogMainListView::__resetMissedCallCount() +{ + WHIT(); + unsigned count = 0; + if(badge_get_count(PHONE_PKG, &count) == BADGE_ERROR_NONE && count > 0) { + badge_set_count(PHONE_PKG, 0); + } + + notification_delete_all(NOTIFICATION_TYPE_NOTI); + PhLogDbMgr::getInstance()->updateMissedLogDbAsSeen(0, CONTACTS_PLOG_TYPE_NONE); +} + +void PhLogMainListView::__selectDetailButtonCb(void *data, Evas_Object *obj, void *event_info) +{ + WPRET_M( NULL == data, "Invalid Param : data"); + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + PhLogMainListView* p = (PhLogMainListView *)itemData->p; + + WNaviframe* frame = (WNaviframe*)p->getNaviframe(); + frame->push(new PhLogDetailView(recordInfo)); + ////CONTACTS_LOGGING_LOG(LOGGING_LOG_DETAIL_LOG); +} + +void PhLogMainListView::__setGenlistItcs() +{ + WHIT(); + __itcGroupIndex = elm_genlist_item_class_new(); + WPRET_M(!__itcGroupIndex, "elm_genlist_item_class_new() failed"); + __itcGroupIndex->item_style = "group_index"; + __itcGroupIndex->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* { + if (!strcmp(part, "elm.text")) { + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + + time_t itemTime = recordInfo->logTime; + time_t nowTime = time(NULL); + + struct tm itemDate; + struct tm nowDate; + + localtime_r(&itemTime, &itemDate); + localtime_r(&nowTime, &nowDate); + + if( itemDate.tm_year == nowDate.tm_year && + itemDate.tm_mon == nowDate.tm_mon && + itemDate.tm_mday == nowDate.tm_mday ) + return elm_entry_utf8_to_markup(PAT_(PH_LOGS_HEADER_TODAY)); + else if( itemDate.tm_year == nowDate.tm_year && + itemDate.tm_mon == nowDate.tm_mon && + ((itemDate.tm_mday)+1) == nowDate.tm_mday ) + return elm_entry_utf8_to_markup(PAT_(PH_LOGS_HEADER_YESTERDAY)); + else + return PhLogIcu::getGroupIndexDateString(recordInfo->logTime); + } + else + return NULL; + }; + __itcGroupIndex->func.content_get = NULL; + __itcGroupIndex->func.del = [](void* data, Evas_Object* obj){ + PhLogGenlistHelper::ItemData* itemData = (PhLogGenlistHelper::ItemData *)data; + delete itemData; + }; + + __itcMainList = elm_genlist_item_class_new(); + WPRET_M(!__itcMainList, "elm_genlist_item_class_new() failed"); + __itcMainList->item_style = "type1"; + __itcMainList->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* { + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + if (0 == strcmp(part, "elm.text")) + return elm_entry_utf8_to_markup(PhLogUtil::getDisplayText(recordInfo->personId, recordInfo->displayName, recordInfo->number,recordInfo->callDesc)); + else if ((strcmp(part, "elm.text.sub") == 0)) + { + if(recordInfo->personId) + return elm_entry_utf8_to_markup(recordInfo->number); + else + return elm_entry_utf8_to_markup(PAT_(PH_LOGS_SBODY_UNSAVED_M_STATUS)); + } + else if ((strcmp(part, "elm.text.sub.end") == 0)) + { + char buf[PH_TEXT_SHORT_LEN] = {0,}; + snprintf(buf, sizeof(buf), "<font_size=%d>%s</font_size>", LOGLIST_SUB_TEXT_SIZE, recordInfo->displayLogTime); + return strdup(buf); + } + else if ((strcmp(part, "elm.text.end") == 0)) + { + char buf[PH_TEXT_SHORT_LEN] = {0,}; + if(recordInfo->groupedList == NULL) + return NULL; + else + { + snprintf(buf, sizeof(buf), "(%d)", recordInfo->groupedList->size()+1); + return elm_entry_utf8_to_markup(buf); + } + } + else + return NULL; + }; + __itcMainList->func.content_get = [](void* data, Evas_Object* obj, const char* part)->Evas_Object* { + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData*)data; + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + PhLogMainListView* p = (PhLogMainListView *)itemData->p; + std::vector<Evas_Object*>* cList = (std::vector<Evas_Object*>*)itemData->contents; + if(cList == NULL) + itemData->contents = cList = new std::vector<Evas_Object*>; + + if (0 == strcmp(part, "elm.swallow.icon")) + { + //WDEBUG("itemData %x", itemData); + //WDEBUG("elm.icon.1"); + char* imagePath = NULL; + if((recordInfo->imgPath && (strlen(recordInfo->imgPath) != 0)) && p->__isScrollStopped == true) + imagePath = recordInfo->imgPath; + + if(!imagePath || strlen(imagePath) == 0) + { + std::stringstream keyString; + Evas_Object* contents; + keyString << "list/B/log/thumbnail/" << PhLogUtil::getLogTypeImageName(recordInfo->logType); + if((contents = p->__getCachedContents(keyString.str())) != NULL) + { + cList->push_back(contents); + return contents; + } + } + + Evas_Object *thumbnail = createThumbnail(obj, THUMBNAIL_98, recordInfo->imgPath, true); + Evas_Object *icon = PhLogUtil::getLogTypeIcon(obj, recordInfo->logType); + WPRET_VM( NULL == icon, NULL, "PhLogUtil::GetLogTypeIcon() is failed"); + evas_object_size_hint_min_set(icon, ContactsCommon::getScaledWidth(LOG_LIST_CALL_TYPE_SIZE), ContactsCommon::getScaledHeight(LOG_LIST_CALL_TYPE_SIZE)); + + Evas_Object *layout = PhCommon::createLayout(obj, LOG_LIST_EDJ, "list/B/log/thumbnail"); + WPRET_VM( NULL == layout, NULL, "PhLogUtil::createLayout() is failed"); + + elm_layout_content_set(layout, "elm.swallow.content", thumbnail); + elm_layout_content_set(layout, "elm.swallow.call.type", icon); + + cList->push_back(layout); + return layout; + } + else if (0 == strcmp(part, "elm.swallow.end")) + { + //WDEBUG("elm.icon.2"); + if (p->__launchMode != LAUNCH_MODE_NORMAL) + return NULL; + + Evas_Object* contents = p->__getCachedContents("list/C/log/log_info"); + WPRET_VM( NULL == contents, NULL, "__getCachedContents() is failed"); + evas_object_smart_callback_del(contents, "clicked", __selectDetailButtonCb); + evas_object_smart_callback_add(contents, "clicked", __selectDetailButtonCb, itemData); + cList->push_back(contents); + + return contents; + } else { + return NULL; + } + + }; + __itcMainList->func.state_get = NULL; + __itcMainList->func.del = [](void* data, Evas_Object* obj){ + PhLogGenlistHelper::ItemData* itemData = (PhLogGenlistHelper::ItemData *)data; + if(itemData->contents) + delete (std::vector<Evas_Object*>*)itemData->contents; + //WDEBUG("delcallback item %x", itemData); + delete itemData; + }; + //uxt_genlist_set_content_reuse_enabled(__itcMainList, EINA_TRUE); + +} + +void PhLogMainListView::__selectItemCb(void *data, Evas_Object *obj, void *event_info) +{ + WHIT(); + WPRET_M( NULL == event_info,"event_info is NULL"); + WPRET_M( NULL == data,"data is NULL"); + + Elm_Object_Item *item = (Elm_Object_Item *) event_info; + elm_genlist_item_selected_set(item, EINA_FALSE); + + PhLogGenlistHelper::ItemData *itemData = (PhLogGenlistHelper::ItemData *)elm_object_item_data_get(item); + PhLogDbMgr::RecordInfo *recordInfo = (PhLogDbMgr::RecordInfo*)itemData->data; + WDEBUG("address prt itemData : %p recordInfo : %p",itemData, recordInfo ); + PhLogMainListView *p = (PhLogMainListView *)itemData->p; + + if (p->__launchMode == LAUNCH_MODE_SINGLE_SELECT_UG || + p->__launchMode == LAUNCH_MODE_EMAIL_ADD_PRIORITY_SENDER_UG) + { + app_control_h service; + app_control_create(&service); + std::string value = std::to_string(recordInfo->logId); + app_control_add_extra_data(service, PH_UG_BUNDLE_RESULT_PLOG_ID, value.c_str()); + WDEBUG("appControl Reply - logId:%s", value.c_str()); + app_control_reply_to_launch_request(service, p->__contactsData->appControl, APP_CONTROL_RESULT_SUCCEEDED); + app_control_destroy(service); + p->popOut(); + } + else + { + int err = launchCall(recordInfo->number); + WPWARN(err != APP_CONTROL_ERROR_NONE, "launchCall() failed(0x%x)", err); + } +} + +void PhLogMainListView::__setMoreBtn(Elm_Object_Item *naviItem) +{ + WHIT(); + WPRET_M(!naviItem, "Invalid Param : naviItem"); + switch(__launchMode) + { + case LAUNCH_MODE_DURING_CALL_TABUG: + case LAUNCH_MODE_SINGLE_SELECT_UG: + case LAUNCH_MODE_EMAIL_ADD_PRIORITY_SENDER_UG: + break; + case LAUNCH_MODE_NORMAL: + default: + enableMoreButton(naviItem, [](void *data, Evas_Object *obj, void *event_info){ + PhLogMainListView* p = static_cast<PhLogMainListView*>(data); + + Evas_Object* win = NULL; + if (p->getWindow()) + win = p->getWindow()->getEvasObj(); + + WPRET_M(NULL == win, "win is NULL"); + + WMenuPopup* popup = new WMenuPopup(); + popup->prepare( win, p->getNaviframe()->getEvasObj() ); + + if( p->__logList && !p->__logList->empty()) + { + popup->appendItem(PAT_(PH_CLOG_OPT_VIEW_BY), [p](){ + p->__createViewBy(); + }); + + popup->appendItem(PAT_(PH_LOGS_HEADER_DELETE), [p](){ + WNaviframe* frame = (WNaviframe*)p->getNaviframe(); + frame->push(new PhLogMainListCheckView(p->__currentListType, p->__getListPosition())); + }); + } else if (p->__currentListType == PhLogDbMgr::ListType::LIST_TYPE_MISSED_CALL) { + popup->appendItem(PAT_(PH_CLOG_OPT_VIEW_BY), [p](){ + p->__createViewBy(); + }); + } + + popup->appendItem(PAT_(PH_KPD_OPT_CALL_SETTINGS_ABB), [p](){ + PhCommon::launchCallSetting(p->getWindow()->getEvasObj(), p->getNaviframe()->getEvasObj()); + ////CONTACTS_LOGGING_LOG(LOGGING_LOG_CALL_SETTINGS); + }); + p->attachPopup(popup); + }, this); + break; + } +} + +void PhLogMainListView::__createViewBy() +{ + WENTER(); + Elm_Genlist_Item_Class* itc = elm_genlist_item_class_new(); + WPRET_M(!itc, "elm_genlist_item_class_new() failed"); + itc->item_style = "type1"; + itc->func.text_get = [](void* data, Evas_Object* obj, const char* part)->char* + { + if(!strcmp(part, "elm.text")) { + if (PhLogDbMgr::LIST_TYPE_ALL_CALL == (int)data) + return SAFE_STRDUP(PAT_(PH_LOGS_BODY_ALL_CALLS)); + else if (PhLogDbMgr::LIST_TYPE_MISSED_CALL == (int)data) + return SAFE_STRDUP(PAT_(PH_LOGS_NPBODY_MISSED_CALLS_ABB)); + } + return NULL; + }; + + itc->func.content_get = [](void* data, Evas_Object* obj, const char* part)->Evas_Object* + { + PhLogMainListView* p = static_cast<PhLogMainListView*>(evas_object_data_get(obj, "LogMainList")); + WPRET_VM(!p, NULL, "LogMainList is NULL"); + + if(!strcmp(part, "elm.swallow.end")) { + + Evas_Object* radio = elm_radio_add(obj); + Evas_Object *radioGroup = (Evas_Object*)evas_object_data_get(obj, "radioGroup"); + elm_object_style_set(radio, "list"); + elm_radio_group_add(radio, radioGroup); + elm_radio_state_value_set(radio, (int)data); + evas_object_propagate_events_set(radio, EINA_TRUE); + + if(p->__currentListType == (int)data) { + elm_radio_value_set(radio, (int)data); + } + return radio; + } + return NULL; + }; + + WPopup* popup = new WPopup(); + popup->setTitle(PAT_(PH_CLOG_OPT_VIEW_BY)); + popup->setContent([itc, this](Evas_Object* parent)->Evas_Object* + { + Evas_Object* genlist = elm_genlist_add(parent); + evas_object_data_set(genlist, "LogMainList", this); + elm_object_style_set( genlist, "popup"); + 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 ); + + Evas_Object* radioGroup = elm_radio_add(genlist); + elm_object_style_set(radioGroup, "list"); + elm_radio_state_value_set(radioGroup, -1); + elm_radio_value_set(radioGroup, -1); + evas_object_data_set(genlist, "radioGroup", radioGroup); + + elm_genlist_item_append(genlist, itc, (void *)PhLogDbMgr::ListType::LIST_TYPE_ALL_CALL, NULL, + ELM_GENLIST_ITEM_NONE,this->__onViewByCallsCb, this); + elm_genlist_item_append(genlist, itc, (void *)PhLogDbMgr::ListType::LIST_TYPE_MISSED_CALL, + NULL, ELM_GENLIST_ITEM_NONE,this->__onViewByCallsCb, this); + elm_object_content_set(parent, genlist); + evas_object_show(genlist); + return genlist; + }); + + this->attachPopup(popup); + elm_genlist_item_class_free(itc); +} + +void PhLogMainListView::__onViewByCallsCb(void *data, Evas_Object *obj, void *event_info) +{ + WENTER(); + PhLogMainListView* p = static_cast<PhLogMainListView*>(data); + Evas_Object *radioGroup = (Evas_Object*)evas_object_data_get(obj, "radioGroup"); + PhLogDbMgr::ListType index = (PhLogDbMgr::ListType)((int)elm_object_item_data_get((Elm_Object_Item *) event_info)); + p->__currentListType = index; + elm_radio_value_set(radioGroup, p->__currentListType); + p->updateList(); + p->destroyPopup(); +} + +PhLogMainListView::__LaunchMode PhLogMainListView::__decideLaunchMode(ContactsData* contactsData) +{ + WHIT(); + WPRET_VM(contactsData == NULL, LAUNCH_MODE_NORMAL, "no contactsData. set to normal mode."); + + std::string type; + std::string appId; + + appId = ContactsCommon::getAppControlData(contactsData->appControl, CONTACTS_APPCONTROL_KEY_APPID); + if (appId.compare("phone-tabui-efl") == 0) + { + type = ContactsCommon::getAppControlData(contactsData->appControl, "type"); + + if(type.compare("51") == 0) + return LAUNCH_MODE_DURING_CALL_TABUG; + } + else if (appId.compare("phonelog-efl") == 0) + { + type = ContactsCommon::getAppControlData(contactsData->appControl, "type"); + + if(type.compare("12") == 0) + return LAUNCH_MODE_SINGLE_SELECT_UG; + else if(type.compare("13") == 0) + return LAUNCH_MODE_EMAIL_ADD_PRIORITY_SENDER_UG; + } + else + return LAUNCH_MODE_NORMAL; + +// WDEBUG("launchMode: %d", __launchMode); + return LAUNCH_MODE_NORMAL; +} + +void PhLogMainListView::__windowFocusInCb(void *data, Evas_Object *obj, void *event_info) +{ + WHIT(); + WPRET_M(NULL == data, "data is NULL"); + PhLogMainListView* p = (PhLogMainListView*)data; + WPRET_M(!p->__isActive, "PhLogMainListView is not active"); + + p->__resetMissedCallCount(); +} diff --git a/lib-phone/ph-loglist/src/PhLogUtil.cpp b/lib-phone/ph-loglist/src/PhLogUtil.cpp new file mode 100755 index 0000000..2c5b3f7 --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogUtil.cpp @@ -0,0 +1,607 @@ +/* + * 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 <contacts.h> + +#include "ContactsDebug.h" + +#include "PhCommon.h" +#include "PhPath.h" +#include "PhStrings.h" + +#include "PhLogUtil.h" + +enum{ + CALL_VC_SERVICE_TYPE_NONE, + CALL_VC_SERVICE_TYPE_EMERGENCY=01, + CALL_VC_SERVICE_TYPE_VOICE_MAIL, + CALL_VC_SERVICE_TYPE_UNAVAILABLE, + CALL_VC_SERVICE_TYPE_REJECT_BY_USER, + CALL_VC_SERVICE_TYPE_OTHER_SERVICE, + CALL_VC_SERVICE_TYPE_PAYPHONE, + CALL_VC_SERVICE_TYPE_DCM_REMOTE_OPERATE, + CALL_VC_SERVICE_TYPE_DCM_CALL_FORWARD, + CALL_VC_SERVICE_TYPE_DCM_CALLER_ID, + CALL_VC_SERVICE_TYPE_DCM_ROAMING_GUIDE, + CALL_VC_SERVICE_TYPE_DCM_ROAMING_CALL_NOTI, + CALL_VC_SERVICE_TYPE_MAX +}; + +PhLogUtil::PhLogUtil() +{ + // TODO Auto-generated constructor stub + +} + +PhLogUtil::~PhLogUtil() +{ + // TODO Auto-generated destructor stub +} + +bool PhLogUtil::isEmergencyNumber(const char *callDesc) +{ + if (!callDesc) return false; + + int desc = atoi(callDesc+1); + WDEBUG("callDesc[0]:%c, desc : %d",callDesc[0], desc); + + switch(desc) + { + case CALL_VC_SERVICE_TYPE_EMERGENCY: + return true; + case CALL_VC_SERVICE_TYPE_UNAVAILABLE: + case CALL_VC_SERVICE_TYPE_REJECT_BY_USER: + case CALL_VC_SERVICE_TYPE_OTHER_SERVICE: + case CALL_VC_SERVICE_TYPE_PAYPHONE: + case CALL_VC_SERVICE_TYPE_VOICE_MAIL: + default: + return false; + } + + return false; +} + +bool PhLogUtil::isUnknownNumber(const char *callDesc) +{ + if (!callDesc) return true; + + int desc = atoi(callDesc+1); + WDEBUG("callDesc[0]:%c, desc : %d",callDesc[0], desc); + + switch(desc) + { + case CALL_VC_SERVICE_TYPE_EMERGENCY: + case CALL_VC_SERVICE_TYPE_UNAVAILABLE: + case CALL_VC_SERVICE_TYPE_REJECT_BY_USER: + case CALL_VC_SERVICE_TYPE_OTHER_SERVICE: + case CALL_VC_SERVICE_TYPE_PAYPHONE: + return false; + case CALL_VC_SERVICE_TYPE_VOICE_MAIL: + default: + return true; + } + + return false; +} + +const char* PhLogUtil::getDisplayText(int personId, const char* displayName, const char* number, const char *descInfo) +{ + if(number) + { + if( personId > 0 ) + return displayName; + + if (!descInfo) + return number; + + int desc = atoi(descInfo+1); + WDEBUG("descInfo[0]:%c, desc : %d",descInfo[0], desc); + + switch(desc) + { + case CALL_VC_SERVICE_TYPE_EMERGENCY: + return PAT_(PH_KPD_HEADER_EMERGENCY_CALL_ABB2); + case CALL_VC_SERVICE_TYPE_VOICE_MAIL: + return PAT_(PH_KPD_OPT_VOICEMAIL_ABB); + case CALL_VC_SERVICE_TYPE_UNAVAILABLE: + return PAT_(PH_LOGS_MBODY_UNKNOWN); + case CALL_VC_SERVICE_TYPE_REJECT_BY_USER: + return PAT_(PH_COM_BODY_PRIVATE_NUMBER); + case CALL_VC_SERVICE_TYPE_OTHER_SERVICE: + return PAT_(PH_LOGS_MBODY_UNKNOWN); + case CALL_VC_SERVICE_TYPE_PAYPHONE: + return PAT_(PH_CALL_BODY_PAYPHONE); + default: + return number; + } + + return number; + } + else + { + if (!descInfo) + return PAT_(PH_COM_BODY_PRIVATE_NUMBER); + + int desc = atoi(descInfo+1); + WDEBUG("descInfo[0]:%c, desc : %d",descInfo[0], desc); + + switch(desc) + { + case CALL_VC_SERVICE_TYPE_EMERGENCY: + return PAT_(PH_KPD_HEADER_EMERGENCY_CALL_ABB2); + case CALL_VC_SERVICE_TYPE_VOICE_MAIL: + return PAT_(PH_KPD_OPT_VOICEMAIL_ABB); + case CALL_VC_SERVICE_TYPE_UNAVAILABLE: + return PAT_(PH_LOGS_MBODY_UNKNOWN); + case CALL_VC_SERVICE_TYPE_REJECT_BY_USER: + return PAT_(PH_COM_BODY_PRIVATE_NUMBER); + case CALL_VC_SERVICE_TYPE_OTHER_SERVICE: + return PAT_(PH_LOGS_MBODY_UNKNOWN); + case CALL_VC_SERVICE_TYPE_PAYPHONE: + return PAT_(PH_CALL_BODY_PAYPHONE); + default: + return PAT_(PH_LOGS_MBODY_UNKNOWN); + } + + return NULL; + } +} + +const char *PhLogUtil::getTextOfNumberType(int numberType) +{ + WDEBUG("numberType : %d", numberType); + + if (numberType & CONTACTS_NUMBER_TYPE_CUSTOM) { + return PAT_(PH_PB_OPT_CUSTOM); + } + else if (numberType & CONTACTS_NUMBER_TYPE_CELL) { + if (numberType & CONTACTS_NUMBER_TYPE_HOME) + return PAT_(PH_PB_OPT_HOME_ABB); + else if (numberType & CONTACTS_NUMBER_TYPE_WORK) + return PAT_(PH_PB_OPT_WORK); + else + return PAT_(PH_PB_OPT_MOBILE); + } + else if (numberType & CONTACTS_NUMBER_TYPE_VOICE) { + if (numberType & CONTACTS_NUMBER_TYPE_HOME) + return PAT_(PH_PB_OPT_HOME_ABB); + else if (numberType & CONTACTS_NUMBER_TYPE_WORK) + return PAT_(PH_PB_OPT_WORK); + else + return PAT_("IDS_PB_BODY_TELEPHONE"); + } + else if (numberType & CONTACTS_NUMBER_TYPE_FAX) { + if (numberType & CONTACTS_NUMBER_TYPE_HOME) + return PAT_(PH_PB_OPT_FAX_HHOME_ABB); + else if (numberType & CONTACTS_NUMBER_TYPE_WORK) + return PAT_(PH_PB_OPT_FAX_HWORK_ABB); + else + return PAT_("IDS_PB_BODY_FAX"); + } + else if (numberType & CONTACTS_NUMBER_TYPE_PAGER) + return PAT_(PH_PB_OPT_PAGER); + else if (numberType & CONTACTS_NUMBER_TYPE_ASSISTANT) + return PAT_("IDS_PB_OPT_ASSISTANT_M_CONTACTS"); + else { + if (numberType == CONTACTS_NUMBER_TYPE_HOME) + return PAT_(PH_PB_OPT_HOME_ABB); + else if (numberType == CONTACTS_NUMBER_TYPE_WORK) + return PAT_(PH_PB_OPT_WORK); + else + return PAT_(PH_PB_OPT_OTHER); + } +} + +Evas_Object* PhLogUtil::getLogTypeIcon(Evas_Object *parent, int log_type) +{ + if ( PhLogUtil::isOutgoingCallType(log_type) || PhLogUtil::isOutgoingMsgType(log_type)) + return PhCommon::createImage(parent, LOG_LIST_EDJ, PH_LOG_ICON_OUTGOING, NULL); + else if (PhLogUtil::isIncomingCallType(log_type) || PhLogUtil::isIncomingMsgType(log_type)) + return PhCommon::createImage(parent, LOG_LIST_EDJ, PH_LOG_ICON_INCOMING, NULL); + else if ( PhLogUtil::isMissedCallType(log_type)) + return PhCommon::createImage(parent, LOG_LIST_EDJ, PH_LOG_ICON_MISSED, NULL); + else if (PhLogUtil::isRejectCallType(log_type)) + return PhCommon::createImage(parent, LOG_LIST_EDJ, PH_LOG_ICON_REJECTED, NULL); + else if (PhLogUtil::isBlockedType(log_type)) + return PhCommon::createImage(parent, LOG_LIST_EDJ, PH_LOG_ICON_AUTO_REJECTED, NULL); + else + { + WDEBUG("error invalid type %d", log_type); + return NULL; + } +} + +std::string PhLogUtil::getLogTypeImageName(int log_type) +{ + if ( PhLogUtil::isOutgoingCallType(log_type) || PhLogUtil::isOutgoingMsgType(log_type)) + return PH_LOG_ICON_OUTGOING; + else if (PhLogUtil::isIncomingCallType(log_type) || PhLogUtil::isIncomingMsgType(log_type)) + return PH_LOG_ICON_INCOMING; + else if ( PhLogUtil::isMissedCallType(log_type)) + return PH_LOG_ICON_MISSED; + else if (PhLogUtil::isRejectCallType(log_type)) + return PH_LOG_ICON_REJECTED; + else if (PhLogUtil::isBlockedType(log_type)) + return PH_LOG_ICON_AUTO_REJECTED; + else + { + WDEBUG("error invalid type %d", log_type); + return ""; + } +} + +bool PhLogUtil::isOutgoingCallType(int type) +{ + if (type == CONTACTS_PLOG_TYPE_VOICE_OUTGOING + || type == CONTACTS_PLOG_TYPE_VIDEO_OUTGOING) + return TRUE; + else + return FALSE; +} + +bool PhLogUtil::isMsgType(int type) +{ + if (isOutgoingMsgType(type) || isIncomingMsgType(type)) + return true; + else + return false; +} + +bool PhLogUtil::isOutgoingMsgType(int type) +{ + if (type == CONTACTS_PLOG_TYPE_MMS_OUTGOING + || type == CONTACTS_PLOG_TYPE_SMS_OUTGOING + || type == CONTACTS_PLOG_TYPE_EMAIL_SENT) + return TRUE; + else + return FALSE; + +} + +bool PhLogUtil::isIncomingCallType(int type) +{ + if (type == CONTACTS_PLOG_TYPE_VOICE_INCOMMING + || type == CONTACTS_PLOG_TYPE_VIDEO_INCOMMING) + return TRUE; + else + return FALSE; +} + +bool PhLogUtil::isIncomingMsgType(int type) +{ + if (type == CONTACTS_PLOG_TYPE_MMS_INCOMMING + || type == CONTACTS_PLOG_TYPE_SMS_INCOMMING + || type == CONTACTS_PLOG_TYPE_EMAIL_RECEIVED) + return TRUE; + else + return FALSE; +} + +bool PhLogUtil::isMissedCallType(int type) +{ + switch (type) { + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN: + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_SEEN: + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN: + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN: + return TRUE; + default: + return FALSE; + } +} + +bool PhLogUtil::isRejectCallType(int type) +{ + if (type == CONTACTS_PLOG_TYPE_VOICE_REJECT + || type == CONTACTS_PLOG_TYPE_VIDEO_REJECT) + return TRUE; + else + return FALSE; +} + +bool PhLogUtil::isBlockedType(int type) +{ + switch (type) { + case CONTACTS_PLOG_TYPE_VOICE_BLOCKED: + case CONTACTS_PLOG_TYPE_VIDEO_BLOCKED: + case CONTACTS_PLOG_TYPE_SMS_BLOCKED: + case CONTACTS_PLOG_TYPE_MMS_BLOCKED: + return TRUE; + default: + return FALSE; + } +} + +bool PhLogUtil::isGroupedByDesc(const char *prevDesc, const char *curDesc) +{ +// WDEBUG("%s:%s", prevDesc, curDesc); + if (!prevDesc) + { + if(!curDesc) + return true; + else + { +// WDEBUG("curDesc[%s]",curDesc); + int curDescNum = atoi(curDesc+1); + + switch(curDescNum) + { + case CALL_VC_SERVICE_TYPE_REJECT_BY_USER: + return true; + case CALL_VC_SERVICE_TYPE_EMERGENCY: + case CALL_VC_SERVICE_TYPE_VOICE_MAIL: + case CALL_VC_SERVICE_TYPE_UNAVAILABLE: + case CALL_VC_SERVICE_TYPE_OTHER_SERVICE: + case CALL_VC_SERVICE_TYPE_PAYPHONE: + default: + return false; + } + } + } + else + { + if(!curDesc) + { +// WDEBUG("prevDesc[%s]",prevDesc); + int prevDescNum = atoi(prevDesc+1); + + switch(prevDescNum) + { + case CALL_VC_SERVICE_TYPE_REJECT_BY_USER: + return true; + case CALL_VC_SERVICE_TYPE_EMERGENCY: + case CALL_VC_SERVICE_TYPE_VOICE_MAIL: + case CALL_VC_SERVICE_TYPE_UNAVAILABLE: + case CALL_VC_SERVICE_TYPE_OTHER_SERVICE: + case CALL_VC_SERVICE_TYPE_PAYPHONE: + default: + return false; + } + } + + int prevDescNum = atoi(prevDesc+1); + int curDescNum = atoi(curDesc+1); +// WDEBUG("descInfo[0]:%c, desc : %d",prevDesc[0], prevDescNum); +// WDEBUG("descInfo[0]:%c, desc : %d",curDesc[0], curDescNum); + + switch(prevDescNum) + { + case CALL_VC_SERVICE_TYPE_EMERGENCY: + switch(curDescNum) + { + case CALL_VC_SERVICE_TYPE_EMERGENCY: + return true; + default: + return false; + } + break; + case CALL_VC_SERVICE_TYPE_VOICE_MAIL: + switch(curDescNum) + { + case CALL_VC_SERVICE_TYPE_VOICE_MAIL: + return true; + default: + return false; + } + break; + case CALL_VC_SERVICE_TYPE_REJECT_BY_USER: + switch(curDescNum) + { + case CALL_VC_SERVICE_TYPE_REJECT_BY_USER: + return true; + default: + return false; + } + break; + case CALL_VC_SERVICE_TYPE_PAYPHONE: + switch(curDescNum) + { + case CALL_VC_SERVICE_TYPE_PAYPHONE: + return true; + default: + return false; + } + break; + case CALL_VC_SERVICE_TYPE_UNAVAILABLE: + case CALL_VC_SERVICE_TYPE_OTHER_SERVICE: + default: + switch(curDescNum) + { + case CALL_VC_SERVICE_TYPE_EMERGENCY: + case CALL_VC_SERVICE_TYPE_VOICE_MAIL: + case CALL_VC_SERVICE_TYPE_REJECT_BY_USER: + case CALL_VC_SERVICE_TYPE_PAYPHONE: + return false; + case CALL_VC_SERVICE_TYPE_UNAVAILABLE: + case CALL_VC_SERVICE_TYPE_OTHER_SERVICE: + default: + return true; + } + break; + } + } +} + +bool PhLogUtil::isGroupedbyDate(const int time1, const int time2) +{ + time_t date1 = time1; + time_t date2 = time2; + + struct tm* ptr; + + ptr = localtime(&date1); + WPRET_VM(!ptr, false, "localtime returned NULL" ); + struct tm prev = *ptr; + + ptr = localtime(&date2); + WPRET_VM(!ptr, false, "localtime returned NULL" ); + struct tm cur = *ptr; + + return prev.tm_year == cur.tm_year && + prev.tm_mon == cur.tm_mon && + prev.tm_mday == cur.tm_mday; + +} + +bool PhLogUtil::isGroupedbyType(int pre_type, int type) +{ + switch (pre_type) { + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING: + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING: + case CONTACTS_PLOG_TYPE_VOICE_OUTGOING: + case CONTACTS_PLOG_TYPE_VIDEO_OUTGOING: + { + switch (type) { + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING: + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING: + case CONTACTS_PLOG_TYPE_VOICE_OUTGOING: + case CONTACTS_PLOG_TYPE_VIDEO_OUTGOING: + return true; + default : + return false; + } + break; + } + case CONTACTS_PLOG_TYPE_MMS_INCOMMING: + case CONTACTS_PLOG_TYPE_SMS_INCOMMING: + case CONTACTS_PLOG_TYPE_MMS_OUTGOING: + case CONTACTS_PLOG_TYPE_SMS_OUTGOING: + { + switch (type) { + case CONTACTS_PLOG_TYPE_MMS_INCOMMING: + case CONTACTS_PLOG_TYPE_SMS_INCOMMING: + case CONTACTS_PLOG_TYPE_MMS_OUTGOING: + case CONTACTS_PLOG_TYPE_SMS_OUTGOING: + return true; + default : + return false; + } + break; + } + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN: + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_SEEN: + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN: + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN: + { + switch (type) { + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN: + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_SEEN: + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN: + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN: + return true; + default : + return false; + } + break; + } + case CONTACTS_PLOG_TYPE_VOICE_REJECT: + case CONTACTS_PLOG_TYPE_VIDEO_REJECT: + { + switch (type) { + case CONTACTS_PLOG_TYPE_VOICE_REJECT: + case CONTACTS_PLOG_TYPE_VIDEO_REJECT: + return true; + default : + return false; + } + break; + } + case CONTACTS_PLOG_TYPE_VOICE_BLOCKED: + case CONTACTS_PLOG_TYPE_VIDEO_BLOCKED: + { + switch (type) { + case CONTACTS_PLOG_TYPE_VOICE_BLOCKED: + case CONTACTS_PLOG_TYPE_VIDEO_BLOCKED: + return true; + default : + return false; + } + break; + } + case CONTACTS_PLOG_TYPE_SMS_BLOCKED: + { + switch (type) { + case CONTACTS_PLOG_TYPE_SMS_BLOCKED: + return true; + default : + return false; + } + break; + } + default: + return false; + } +} + +bool PhLogUtil::isGroupedbyNumber(const char * preNumber, const char *curNumber) +{ + if (!preNumber && curNumber) + return false; + + if (preNumber && !curNumber) + return false; + + if ( preNumber && curNumber && ( strcmp( preNumber, curNumber) ) ) + return false; + + return true; +} + +bool PhLogUtil::isGrouped(const PhLogDbMgr::RecordInfo *prevRecordInfo, const PhLogDbMgr::RecordInfo *curRecordInfo) +{ + WPRET_VM( NULL == prevRecordInfo, false, "Invalid parameter: prevRecordInfo is NULL" ); + WPRET_VM( NULL == curRecordInfo, false, "Invalid parameter: curRecordInfo is NULL" ); + + if ( !isGroupedbyType( prevRecordInfo->logType, curRecordInfo->logType )) + return false; + if ( !isGroupedbyNumber(prevRecordInfo->number, curRecordInfo->number)) + return false; + if( !isGroupedbyDate( prevRecordInfo->logTime, curRecordInfo->logTime )) + return false; + + return true; +} + +bool PhLogUtil::isVideoCallType(int type) +{ + switch (type) { + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING: + case CONTACTS_PLOG_TYPE_VIDEO_OUTGOING: + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_UNSEEN: + case CONTACTS_PLOG_TYPE_VIDEO_INCOMMING_SEEN: + case CONTACTS_PLOG_TYPE_VIDEO_REJECT: + case CONTACTS_PLOG_TYPE_VIDEO_BLOCKED: + return TRUE; + default: + return FALSE; + } +} + +bool PhLogUtil::isVoiceCallType(int type) +{ + switch (type) { + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING: + case CONTACTS_PLOG_TYPE_VOICE_OUTGOING: + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_UNSEEN: + case CONTACTS_PLOG_TYPE_VOICE_INCOMMING_SEEN: + case CONTACTS_PLOG_TYPE_VOICE_REJECT: + case CONTACTS_PLOG_TYPE_VOICE_BLOCKED: + return TRUE; + default: + return FALSE; + } +} diff --git a/lib-phone/ph-loglist/src/PhLogUtil.h b/lib-phone/ph-loglist/src/PhLogUtil.h new file mode 100755 index 0000000..b20cdba --- /dev/null +++ b/lib-phone/ph-loglist/src/PhLogUtil.h @@ -0,0 +1,61 @@ +/* + * 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_LOG_UTIL_H_ +#define _PH_LOG_UTIL_H_ + +#include <string> +#include "PhLogDbMgr.h" + +#define V_(str) dgettext("contacts", str) + +class PhLogUtil +{ +public: + PhLogUtil(); + virtual ~PhLogUtil(); + + static Evas_Object* getLogTypeIcon(Evas_Object *parent, int log_type); + static std::string getLogTypeImageName(int log_type); + + static const char *getTextOfNumberType(int number_type); + static const char* getDisplayText(int personId, const char* displayName, const char* number, const char *descInfo); + + static bool isGrouped(const PhLogDbMgr::RecordInfo *prevRecordInfo, const PhLogDbMgr::RecordInfo *curRecordInfo); + static bool isGroupedbyDate(const int time1, const int time2); + static bool isGroupedByDesc(const char *prevDesc, const char *curDesc); + + static bool isUnknownNumber(const char *callDesc); + static bool isEmergencyNumber(const char *callDesc); + + static bool isMsgType(int type); + static bool isVideoCallType(int type); + static bool isVoiceCallType(int type); + static bool isMissedCallType(int type); + static bool isRejectCallType(int type); + static bool isOutgoingCallType(int type); + static bool isIncomingCallType(int type); +private: + static bool isOutgoingMsgType(int type); + static bool isIncomingMsgType(int type); + static bool isBlockedType(int type); + + static bool isGroupedbyType(int pre_type, int type); + static bool isGroupedbyNumber(const char * preNumber, const char *curNumber); +}; + +#endif /* _PH_LOG_UTIL_H_ */ diff --git a/lib-phone/ph-speeddial/.cproject b/lib-phone/ph-speeddial/.cproject new file mode 100644 index 0000000..a1d7915 --- /dev/null +++ b/lib-phone/ph-speeddial/.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-speeddial" 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-speeddial}/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=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </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="${SBI_SYSROOT}""/> + <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=""${workspace_loc:/${ProjName}/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc/app-assist}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/carriermatch/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/ph-common/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/dbus}""/> + <listOptionValue builtIn="false" value="../../../app-assist-efl/inc"/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/inc}""/> + </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=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </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="${SBI_SYSROOT}""/> + <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=""${workspace_loc:/${ProjName}/inc}""/> + </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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/> + <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=""${workspace_loc:/${ProjName}/lib}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/Debug}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/ph-common/Debug}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/carriermatch/Debug}""/> + <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=""${workspace_loc:/app-assist-efl/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/carriermatch/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/ph-common/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/dbus}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/inc}""/> + </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=""${workspace_loc:/${ProjName}/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/app-assist-efl/inc}""/> + <listOptionValue builtIn="false" value=""${workspace_loc:/common/inc}""/> + </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-speeddial" 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-speeddial}/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=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </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="${SBI_SYSROOT}""/> + <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=""${workspace_loc:/${ProjName}/inc}""/> + </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=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SDK_INSTALL_PATH}/library""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/AL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/curl""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libexif""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/EGL""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/email-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/KHR""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/msg-service""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/> + </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="${SBI_SYSROOT}""/> + <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=""${workspace_loc:/${ProjName}/inc}""/> + </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="${SBI_SYSROOT}""/> + <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/> + <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=""${workspace_loc:/${ProjName}/lib}""/> + </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-speeddial.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-speeddial"/> + </configuration> + <configuration configurationName="Debug"> + <resource resourceType="PROJECT" workspacePath="/ph-speeddial"/> + </configuration> + </storageModule> +</cproject> diff --git a/lib-phone/ph-speeddial/.project b/lib-phone/ph-speeddial/.project new file mode 100644 index 0000000..b926413 --- /dev/null +++ b/lib-phone/ph-speeddial/.project @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ph-speeddial</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-speeddial/.tproject b/lib-phone/ph-speeddial/.tproject new file mode 100644 index 0000000..f1cc1fd --- /dev/null +++ b/lib-phone/ph-speeddial/.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-speeddial/CMakeLists.txt b/lib-phone/ph-speeddial/CMakeLists.txt new file mode 100755 index 0000000..c8f4fbd --- /dev/null +++ b/lib-phone/ph-speeddial/CMakeLists.txt @@ -0,0 +1,23 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) +PROJECT(ph-speeddial C 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_CURRENT_SOURCE_DIR}/inc + ${CMAKE_CURRENT_SOURCE_DIR}/res/edje +) + +FILE(GLOB SRCS "src/*.cpp") +ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) +TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${TIZEN_PKGS_LDFLAGS} + "app-assist-efl" + "contacts-common" + "ph-common" +) +ADD_DEPENDENCIES(${PROJECT_NAME} ph-speeddial.edj) + +INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_APP_LIB_DIR}) + +ADD_SUBDIRECTORY(res/edje) diff --git a/lib-phone/ph-speeddial/inc/PhSpeedDialItem.h b/lib-phone/ph-speeddial/inc/PhSpeedDialItem.h new file mode 100644 index 0000000..b1bb217 --- /dev/null +++ b/lib-phone/ph-speeddial/inc/PhSpeedDialItem.h @@ -0,0 +1,60 @@ +/* + * 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_SPEED_DIAL_ITEM_H_ +#define _PH_SPEED_DIAL_ITEM_H_ + +#include <app_control.h> +#include <contacts.h> +#include "WControl.h" + +class PhSpeedDialItem : public WControl +{ +public: + /** + * @brief Create speed dial settings item. + * @param[in] number Speed dial dialer number (1-9) + */ + PhSpeedDialItem(int number); + ~PhSpeedDialItem(); + + /** + * @brief Set speed dial item data. + * @param[in] record Speed dial record to fetch the data from + */ + void setData(contacts_record_h record); + +private: + Evas_Object *onCreate(Evas_Object *parent, void *param); + Evas_Object *createAddButton(Evas_Object *parent); + Evas_Object *createDeleteButton(Evas_Object *parent); + + void setEmptyLayout(Evas_Object *layout); + void setLayoutData(Evas_Object *layout, contacts_record_h record); + void fetchData(); + void closeChooser(); + + static void onPickResult(app_control_h request, app_control_h reply, + app_control_result_e result, void *data); + static void onItemPressed(void *data, Evas_Object *obj, void *event_info); + static void onDeletePressed(void *data, Evas_Object *obj, void *event_info); + + int m_Number; + app_control_h m_Chooser; +}; + +#endif /* _PH_SPEED_DIAL_ITEM_H_ */ diff --git a/lib-phone/ph-speeddial/inc/PhSpeedDialView.h b/lib-phone/ph-speeddial/inc/PhSpeedDialView.h new file mode 100644 index 0000000..242dc42 --- /dev/null +++ b/lib-phone/ph-speeddial/inc/PhSpeedDialView.h @@ -0,0 +1,43 @@ +/* + * 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_SPEED_DIAL_VIEW_H_ +#define _PH_SPEED_DIAL_VIEW_H_ + +#include "WView.h" + +#define SPEED_DIAL_ITEM_COUNT 9 + +class PhSpeedDialItem; + +class WAPP_ASSIST_EXPORT PhSpeedDialView : public WView +{ +public: + PhSpeedDialView(); + ~PhSpeedDialView(); + +private: + Evas_Object *onCreate(Evas_Object *parent, void *param); + void onPushed(Elm_Object_Item *item); + + void fillItems(); + static void onDbChanged(const char *uri, void *data); + + PhSpeedDialItem *m_Items[SPEED_DIAL_ITEM_COUNT]; +}; + +#endif /* _PH_SPEED_DIAL_VIEW_H_ */ diff --git a/lib-phone/ph-speeddial/res/edje/CMakeLists.txt b/lib-phone/ph-speeddial/res/edje/CMakeLists.txt new file mode 100644 index 0000000..0e9e422 --- /dev/null +++ b/lib-phone/ph-speeddial/res/edje/CMakeLists.txt @@ -0,0 +1,12 @@ +CMAKE_MINIMUM_REQUIRED(VERSION 2.6) + +SET(PH_EDJ_PATH "${CMAKE_APP_RES_DIR}/edje/phone") + +ADD_CUSTOM_TARGET(ph-speeddial-layout.edj + COMMAND edje_cc ${EDJE_CFLAGS} + -id ${CMAKE_CURRENT_SOURCE_DIR}/../images + ${CMAKE_CURRENT_SOURCE_DIR}/ph-speeddial-layout.edc ph-speeddial-layout.edj + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/ph-speeddial-layout.edc +) +ADD_DEPENDENCIES(${PROJECT_NAME} ph-speeddial-layout.edj) +INSTALL(FILES ph-speeddial-layout.edj DESTINATION ${PH_EDJ_PATH}) diff --git a/lib-phone/ph-speeddial/res/edje/PhSpeedDialLayout.h b/lib-phone/ph-speeddial/res/edje/PhSpeedDialLayout.h new file mode 100644 index 0000000..60cea7a --- /dev/null +++ b/lib-phone/ph-speeddial/res/edje/PhSpeedDialLayout.h @@ -0,0 +1,36 @@ +/* + * 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_SPEED_DIAL_LAYOUT_H_ +#define _PH_SPEED_DIAL_LAYOUT_H_ + +#define SPEED_DIAL_LAYOUT_EDJ "ph-speeddial-layout.edj" +#define GROUP_MAIN_LAYOUT "main_layout" +#define GROUP_DELETE_BUTTON "delete_button" +#define GROUP_ITEM_ICON "icon" +#define GROUP_ITEM_LAYOUT "item" + +#define PART_CONTENT "swallow.content" +#define PART_ICON "swallow.icon" +#define PART_DELETE_BUTTON "swallow.delete_button" +#define PART_NAME "text.name" + +#define ICON_BG "keypad_speed_dial_bg.png" +#define ICON_ADD "keypad_speed_dial_add.png" +#define ICON_DELETE "keypad_speed_dial_del.png" + +#endif /* _PH_SPEED_DIAL_LAYOUT_H_ */ diff --git a/lib-phone/ph-speeddial/res/edje/PhSpeedDialLayoutMetrics.h b/lib-phone/ph-speeddial/res/edje/PhSpeedDialLayoutMetrics.h new file mode 100644 index 0000000..775e9c6 --- /dev/null +++ b/lib-phone/ph-speeddial/res/edje/PhSpeedDialLayoutMetrics.h @@ -0,0 +1,43 @@ +/* + * 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_SPEED_DIAL_LAYOUT_METRICS_H_ +#define _PH_SPEED_DIAL_LAYOUT_METRICS_H_ + +#define VIEW_W 720 +#define VIEW_H 1130 + +#define LAYOUT_X 32 +#define LAYOUT_Y 70 + +#define ITEM_W 192 +#define ITEM_H 308 + +#define ITEM_PAD_X 40 +#define ITEM_PAD_Y 54 + +#define ICON_SIZE 192 +#define ICON_DELETE_SIZE 60 + +#define ICON_ADD_SIZE 80 +#define ICON_ADD_POS (ICON_SIZE-ICON_ADD_SIZE)/2 + +#define TEXT_H 104 +#define TEXT_Y (ICON_SIZE+12) +#define TEXT_FONT_SIZE 37 + +#endif /* _PH_SPEED_DIAL_LAYOUT_METRICS_H_ */ diff --git a/lib-phone/ph-speeddial/res/edje/ph-speeddial-layout.edc b/lib-phone/ph-speeddial/res/edje/ph-speeddial-layout.edc new file mode 100644 index 0000000..4faa017 --- /dev/null +++ b/lib-phone/ph-speeddial/res/edje/ph-speeddial-layout.edc @@ -0,0 +1,235 @@ +/* + * 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 "PhSpeedDialLayout.h" +#include "PhSpeedDialLayoutMetrics.h" + +styles { + style { + name: "text_style"; + base: "font=Tizen:style=Regular font_size="TEXT_FONT_SIZE" color=#000000 align=center wrap=word ellipsis=1.0"; + } +} + +images { + image: ICON_BG COMP; +} + +collections { + base_scale: 2.6; + + group { + name: GROUP_MAIN_LAYOUT; + + parts { + part { + name: "bg"; + type: RECT; + description { + state: "default" 0.0; + color: 255 255 255 255; + } + } + part { + name: PART_CONTENT; + type: SWALLOW; + description { + state: "default" 0.0; + fixed: 1 1; + rel1 { + relative: LAYOUT_X/VIEW_W LAYOUT_Y/VIEW_H; + } + rel2 { + relative: 1.0-LAYOUT_X/VIEW_W 1.0-LAYOUT_Y/VIEW_H; + } + } + } + } + } + + group { + name: GROUP_ITEM_ICON; + images.image: ICON_ADD COMP; + + parts { + part { + name: "bg"; + type: IMAGE; + description { + state: "default" 0.0; + color: 61 185 204 127; + aspect: 1 1; + aspect_preference: SOURCE; + image.normal: ICON_BG; + } + } + part { + name: "icon"; + type: IMAGE; + description { + state: "default" 0.0; + aspect: 1 1; + aspect_preference: SOURCE; + image.normal: ICON_ADD; + rel1 { + relative: ICON_ADD_POS/ICON_SIZE ICON_ADD_POS/ICON_SIZE; + } + rel2 { + relative: (ICON_ADD_SIZE+ICON_ADD_POS)/ICON_SIZE (ICON_ADD_SIZE+ICON_ADD_POS)/ICON_SIZE; + } + } + } + part { + name: "mask"; + type: IMAGE; + description { + state: "default" 0.0; + visible: 0; + color: 0 0 0 50; + aspect: 1 1; + aspect_preference: SOURCE; + image.normal: ICON_BG; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { + name: "pressed"; + signal: "mouse,down,*"; + source: "*"; + action: STATE_SET "pressed" 0.0; + target: "mask"; + } + program { + name: "unpressed"; + signal: "mouse,up,*"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "mask"; + } + } + } + + group { + name: GROUP_DELETE_BUTTON; + images.image: ICON_DELETE COMP; + + parts { + part { + name: "icon"; + type: IMAGE; + description { + state: "default" 0.0; + aspect: 1 1; + aspect_preference: SOURCE; + image.normal: ICON_DELETE; + } + } + part { + name: "mask"; + type: IMAGE; + description { + state: "default" 0.0; + visible: 0; + color: 0 0 0 50; + aspect: 1 1; + aspect_preference: SOURCE; + image.normal: ICON_BG; + rel1.to: "icon"; + rel2.to: "icon"; + } + description { + state: "pressed" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + } + programs { + program { + name: "pressed"; + signal: "mouse,down,*"; + source: "*"; + action: STATE_SET "pressed" 0.0; + target: "mask"; + } + program { + name: "unpressed"; + signal: "mouse,up,*"; + source: "*"; + action: STATE_SET "default" 0.0; + target: "mask"; + } + } + } + + group { + name: GROUP_ITEM_LAYOUT; + + parts { + part { + name: PART_ICON; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: ICON_SIZE/ITEM_W ICON_SIZE/ITEM_H; + } + } + } + part { + name: PART_DELETE_BUTTON; + type: SWALLOW; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + } + rel2 { + relative: ICON_DELETE_SIZE/ITEM_W ICON_DELETE_SIZE/ITEM_H; + } + } + } + part { + name: PART_NAME; + type: TEXTBLOCK; + scale: 1; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 TEXT_Y/ITEM_H; + } + rel2 { + relative: 1.0 (TEXT_H+TEXT_Y)/ITEM_H; + } + text { + align: 0.5 0.0; + style: "text_style"; + } + } + } + } + } +} diff --git a/lib-phone/ph-speeddial/res/images/keypad_speed_dial_add.png b/lib-phone/ph-speeddial/res/images/keypad_speed_dial_add.png Binary files differnew file mode 100644 index 0000000..39c6a86 --- /dev/null +++ b/lib-phone/ph-speeddial/res/images/keypad_speed_dial_add.png diff --git a/lib-phone/ph-speeddial/res/images/keypad_speed_dial_bg.png b/lib-phone/ph-speeddial/res/images/keypad_speed_dial_bg.png Binary files differnew file mode 100644 index 0000000..2218a17 --- /dev/null +++ b/lib-phone/ph-speeddial/res/images/keypad_speed_dial_bg.png diff --git a/lib-phone/ph-speeddial/res/images/keypad_speed_dial_del.png b/lib-phone/ph-speeddial/res/images/keypad_speed_dial_del.png Binary files differnew file mode 100644 index 0000000..38c1786 --- /dev/null +++ b/lib-phone/ph-speeddial/res/images/keypad_speed_dial_del.png diff --git a/lib-phone/ph-speeddial/src/PhSpeedDialItem.cpp b/lib-phone/ph-speeddial/src/PhSpeedDialItem.cpp new file mode 100644 index 0000000..f8e6f93 --- /dev/null +++ b/lib-phone/ph-speeddial/src/PhSpeedDialItem.cpp @@ -0,0 +1,174 @@ +/* + * 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 "PhSpeedDialItem.h" +#include "PhSpeedDialLayout.h" +#include "PhCommon.h" +#include "PhStrings.h" + +#include "ContactsAppControl.h" +#include "ContactsCommon.h" +#include "ContactsDebug.h" +#include "ContactsThumbnail.h" + +#include <notification.h> + +#define TEXT_BUFFER_SIZE 256 + +namespace +{ + const std::string layoutPath = ContactsCommon::getAppEdjePath("phone/" SPEED_DIAL_LAYOUT_EDJ); +} + +PhSpeedDialItem::PhSpeedDialItem(int number) + : m_Number(number), m_Chooser(nullptr) +{ +} + +PhSpeedDialItem::~PhSpeedDialItem() +{ + closeChooser(); +} + +void PhSpeedDialItem::setData(contacts_record_h record) +{ + if (record) { + setLayoutData(getEvasObj(), record); + } else { + setEmptyLayout(getEvasObj()); + } +} + +Evas_Object *PhSpeedDialItem::onCreate(Evas_Object *parent, void *param) +{ + Evas_Object *layout = elm_layout_add(parent); + elm_layout_file_set(layout, layoutPath.c_str(), GROUP_ITEM_LAYOUT); + return layout; +} + +Evas_Object *PhSpeedDialItem::createAddButton(Evas_Object *parent) +{ + Evas_Object *button = elm_image_add(parent); + elm_image_file_set(button, layoutPath.c_str(), GROUP_ITEM_ICON); + evas_object_smart_callback_add(button, "clicked", + &PhSpeedDialItem::onItemPressed, this); + + return button; +} + +Evas_Object *PhSpeedDialItem::createDeleteButton(Evas_Object *parent) +{ + Evas_Object *button = elm_image_add(parent); + elm_image_file_set(button, layoutPath.c_str(), GROUP_DELETE_BUTTON); + evas_object_smart_callback_add(button, "clicked", + &PhSpeedDialItem::onDeletePressed, this); + + return button; +} + +void PhSpeedDialItem::setEmptyLayout(Evas_Object *layout) +{ + elm_object_part_content_set(layout, PART_ICON, createAddButton(layout)); + elm_object_part_content_set(layout, PART_DELETE_BUTTON, nullptr); + + char buffer[TEXT_BUFFER_SIZE]; + snprintf(buffer, sizeof(buffer), "%d", m_Number); + elm_object_part_text_set(layout, PART_NAME, buffer); +} + +void PhSpeedDialItem::setLayoutData(Evas_Object *layout, contacts_record_h record) +{ + char *name = nullptr; + char *imagePath = nullptr; + + contacts_record_get_str_p(record, _contacts_speeddial.display_name, &name); + contacts_record_get_str_p(record, _contacts_speeddial.image_thumbnail_path, &imagePath); + + elm_object_part_content_set(layout, PART_ICON, createThumbnail(layout, THUMBNAIL_240, imagePath)); + elm_object_part_content_set(layout, PART_DELETE_BUTTON, createDeleteButton(layout)); + + char buffer[TEXT_BUFFER_SIZE]; + snprintf(buffer, sizeof(buffer), "%d. %s", m_Number, name); + elm_object_part_text_set(layout, PART_NAME, buffer); +} + +void PhSpeedDialItem::fetchData() +{ + contacts_record_h record = nullptr; + contacts_db_get_record(_contacts_speeddial._uri, m_Number, &record); + + setData(record); + contacts_record_destroy(record, true); +} + +void PhSpeedDialItem::closeChooser() +{ + if (m_Chooser) { + app_control_send_terminate_request(m_Chooser); + app_control_destroy(m_Chooser); + m_Chooser = nullptr; + } +} + +void PhSpeedDialItem::onPickResult(app_control_h request, app_control_h reply, + app_control_result_e result, void *data) +{ + PhSpeedDialItem *item = (PhSpeedDialItem*) data; + + char **numberIds = nullptr; + int count = 0; + int err = app_control_get_extra_data_array(reply, APP_CONTROL_DATA_SELECTED, &numberIds, &count); + WPRET_M(err != APP_CONTROL_ERROR_NONE, "app_control_get_extra_data() failed(%d)", err); + + if (numberIds && numberIds[0]) { + int numberId = atoi(numberIds[0]); + + if (PhCommon::addSpeedDialNumber(item->m_Number, numberId)) { + item->fetchData(); + } else { + notification_status_message_post(PAT_("IDS_PB_POP_ALREADY_EXISTS_LC")); + } + } + + for (int i = 0; i < count; ++i) { + free(numberIds[i]); + } + free(numberIds); +} + +void PhSpeedDialItem::onItemPressed(void *data, Evas_Object *obj, void *event_info) +{ + PhSpeedDialItem *item = (PhSpeedDialItem*) data; + item->closeChooser(); + + int err = launchContactPick(APP_CONTROL_DATA_SELECTION_MODE_SINGLE, APP_CONTROL_DATA_TYPE_PHONE, + &PhSpeedDialItem::onPickResult, data, true, &item->m_Chooser); + WPWARN(err != APP_CONTROL_ERROR_NONE, "launchContactPick() failed(%d)", err); +} + +void PhSpeedDialItem::onDeletePressed(void *data, Evas_Object *obj, void *event_info) +{ + PhSpeedDialItem *item = (PhSpeedDialItem*) data; + + int err = contacts_db_delete_record(_contacts_speeddial._uri, item->m_Number); + WPRET_M(err != CONTACTS_ERROR_NONE, "contacts_db_delete_record() failed(%d)", err); + item->setEmptyLayout(item->getEvasObj()); + + char buffer[TEXT_BUFFER_SIZE]; + snprintf(buffer, sizeof(buffer), PAT_(PH_KPD_TPOP_SPEED_DIAL_NUMBER_PD_REMOVED), item->m_Number); + notification_status_message_post(buffer); +} diff --git a/lib-phone/ph-speeddial/src/PhSpeedDialView.cpp b/lib-phone/ph-speeddial/src/PhSpeedDialView.cpp new file mode 100644 index 0000000..0bad8cc --- /dev/null +++ b/lib-phone/ph-speeddial/src/PhSpeedDialView.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 "PhSpeedDialView.h" +#include "PhSpeedDialItem.h" +#include "PhSpeedDialLayout.h" +#include "PhSpeedDialLayoutMetrics.h" + +#include "ContactsCommon.h" +#include "ContactsDebug.h" +#include "ContactsUtils.h" + +#define ITEM_ROWS 3 +#define ITEM_COLS SPEED_DIAL_ITEM_COUNT / ITEM_ROWS + +PhSpeedDialView::PhSpeedDialView() + : m_Items{nullptr} +{ + contacts_db_add_changed_cb(_contacts_speeddial._uri, + &PhSpeedDialView::onDbChanged, this); + contacts_db_add_changed_cb(_contacts_contact._uri, + &PhSpeedDialView::onDbChanged, this); +} + +PhSpeedDialView::~PhSpeedDialView() +{ + contacts_db_remove_changed_cb(_contacts_speeddial._uri, + &PhSpeedDialView::onDbChanged, this); + contacts_db_remove_changed_cb(_contacts_contact._uri, + &PhSpeedDialView::onDbChanged, this); +} + +Evas_Object *PhSpeedDialView::onCreate(Evas_Object *parent, void *param) +{ + Evas_Object *layout = elm_layout_add(parent); + elm_layout_file_set(layout, ContactsCommon::getAppEdjePath("phone/" SPEED_DIAL_LAYOUT_EDJ).c_str(), GROUP_MAIN_LAYOUT); + + Evas_Object *table = elm_table_add(layout); + elm_object_part_content_set(layout, PART_CONTENT, table); + elm_table_homogeneous_set(table, EINA_TRUE); + elm_table_padding_set(table, + ContactsCommon::getScaledWidth(ITEM_PAD_X), + ContactsCommon::getScaledHeight(ITEM_PAD_Y)); + + for (int i = 0, k = 0; i < ITEM_ROWS; ++i) { + for (int j = 0; j < ITEM_COLS; ++j, ++k) { + m_Items[k] = new PhSpeedDialItem(k + 1); + m_Items[k]->create(table, nullptr); + Evas_Object *item = m_Items[k]->getEvasObj(); + + evas_object_size_hint_weight_set(item, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(item, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_table_pack(table, item, j, i, 1, 1); + evas_object_show(item); + } + } + fillItems(); + + return layout; +} + +void PhSpeedDialView::onPushed(Elm_Object_Item *item) +{ + elm_object_item_domain_translatable_part_text_set(item, "elm.text.title", + PACKAGE, "IDS_KPD_OPT_SPEED_DIAL_SETTINGS_ABB2"); +} + +void PhSpeedDialView::fillItems() +{ + contacts_list_h list = nullptr; + contacts_db_get_all_records(_contacts_speeddial._uri, 0, 0, &list); + + contacts_record_h records[SPEED_DIAL_ITEM_COUNT] = { nullptr }; + contacts_record_h record = nullptr; + CONTACTS_LIST_FOREACH(list, record) { + int number = 0; + contacts_record_get_int(record, _contacts_speeddial.speeddial_number, &number); + if (number > 0 && number <= SPEED_DIAL_ITEM_COUNT) { + records[number - 1] = record; + } + } + + for (int i = 0; i < SPEED_DIAL_ITEM_COUNT; ++i) { + m_Items[i]->setData(records[i]); + } + + contacts_list_destroy(list, false); +} + +void PhSpeedDialView::onDbChanged(const char *uri, void *data) +{ + PhSpeedDialView *view = (PhSpeedDialView*) data; + view->fillItems(); +} |