diff options
Diffstat (limited to 'lib-phone/ph-dialer')
64 files changed, 4073 insertions, 0 deletions
diff --git a/lib-phone/ph-dialer/.cproject b/lib-phone/ph-dialer/.cproject new file mode 100644 index 0000000..4fd20e9 --- /dev/null +++ b/lib-phone/ph-dialer/.cproject @@ -0,0 +1,594 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> + <storageModule moduleId="org.eclipse.cdt.core.settings"> + <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067" moduleId="org.eclipse.cdt.core.settings" name="Debug"> + <externalSettings/> + <extensions> + <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/> + <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + <extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> + </extensions> + </storageModule> + <storageModule moduleId="cdtBuildSystem" version="4.0.0"> + <configuration artifactExtension="so" artifactName="ph-dialer" buildArtefactType="org.tizen.nativecore.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.sharedLib" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.so.debug"> + <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.so.debug.215597067." name="/" resourcePath=""> + <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.so.debug.1901856276" name="Tizen Core Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.so.debug"> + <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.109029664" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> + <builder autoBuildTarget="all" buildPath="${workspace_loc:/ph-dialer}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.33649487" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" parallelBuildOn="true" parallelizationNumber="unlimited" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/> + <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.1405004172" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> + <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1950179025" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> + <option id="gnu.cpp.compiler.option.optimization.level.315623720" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> + <option id="sbi.gnu.cpp.compiler.option.debugging.level.core.1861914823" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/> + <option defaultValue="true" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1074302357" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/> + <option id="sbi.gnu.cpp.compiler.option.1760981851" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs"> + <listOptionValue builtIn="false" value="mobile-2.3-emulator.core_llvm34.i386.core.sharedLib"/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1951899281" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${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); + } +} |