--- /dev/null
+<?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.nativecpp.config.sbi.gcc45.app.debug.emulator.1641263607">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.emulator.1641263607" moduleId="org.eclipse.cdt.core.settings" name="Debug-Tizen-Emulator">
+ <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="exe" artifactName="Contacts" buildArtefactType="org.tizen.nativecpp.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecpp.buildArtefactType.app" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.emulator.1641263607" name="Debug-Tizen-Emulator" parent="org.tizen.nativecpp.config.sbi.gcc45.app.debug.emulator">
+ <folderInfo id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.emulator.1641263607." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecpp.toolchain.sbi.gcc45.app.debug.emulator.2067876693" name="Tizen Native Toolchain" superClass="org.tizen.nativecpp.toolchain.sbi.gcc45.app.debug.emulator">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1103387176" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder buildPath="${workspace_loc:/Contacts/Debug-Tizen-Emulator}" id="org.tizen.nativecpp.target.sbi.gnu.builder.514814471" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecpp.target.sbi.gnu.builder"/>
+ <tool id="org.tizen.nativecpp.tool.sbi.gnu.archiver.1921880714" name="Archiver" superClass="org.tizen.nativecpp.tool.sbi.gnu.archiver"/>
+ <tool command="i386-linux-gnueabi-g++" id="org.tizen.nativecpp.tool.sbi.gnu.cpp.compiler.349444330" name="C++ Compiler" superClass="org.tizen.nativecpp.tool.sbi.gnu.cpp.compiler">
+ <option id="gnu.cpp.compiler.option.optimization.level.1200993717" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.954918535" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option id="sbi.gnu.cpp.compiler.option.1208626948" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="tizen-emulator-2.0.cpp.partner_gcc45.i386.cpp.app"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.1394955291" 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_inc.cpp.437612442" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.cpp" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""/home/jeonkun2/tizen-sdk/library""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/osp""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.cpp.2044357148" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks.cpp.1374010452" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.cpp" valueType="userObjs">
+ <listOptionValue builtIn="false" value="osp"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.305639474" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_DEBUG"/>
+ </option>
+ <inputType id="sbi.gnu.cpp.compiler.tizen.inputType.1042764860" superClass="sbi.gnu.cpp.compiler.tizen.inputType"/>
+ </tool>
+ <tool command="i386-linux-gnueabi-gcc" id="org.tizen.nativecpp.tool.sbi.gnu.c.compiler.1370741748" name="C Compiler" superClass="org.tizen.nativecpp.tool.sbi.gnu.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.537086632" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.1675421074" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option id="sbi.gnu.c.compiler.option.830698819" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="tizen-emulator-2.0.cpp.partner_gcc45.i386.cpp.app"/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.1456258304" 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.cpp.589702197" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.cpp" valueType="userObjs">
+ <listOptionValue builtIn="false" value="osp"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.cpp.1874085099" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.cpp" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""/home/jeonkun2/tizen-sdk/library""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/osp""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_cflags.cpp.83273980" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.1030290005" 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.1234877164" superClass="sbi.gnu.c.compiler.tizen.inputType"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.2103576525" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+ <tool command="i386-linux-gnueabi-g++" id="org.tizen.nativecpp.tool.sbi.gnu.cpp.linker.1340628682" name="C++ Linker" superClass="org.tizen.nativecpp.tool.sbi.gnu.cpp.linker">
+ <option id="gnu.cpp.link.option.paths.1136718191" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/>
+ </option>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.cpp.124096287" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value="-Xlinker --as-needed"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="-pie -lpthread "/>
+ <listOptionValue builtIn="false" value="-Xlinker -rpath=\$$ORIGIN/.. -Xlinker -rpath=\$$ORIGIN/../lib"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib/osp""/>
+ <listOptionValue builtIn="false" value="-losp-appfw"/>
+ <listOptionValue builtIn="false" value="-losp-uifw"/>
+ <listOptionValue builtIn="false" value="-losp-image"/>
+ <listOptionValue builtIn="false" value="-losp-ime"/>
+ <listOptionValue builtIn="false" value="-losp-net"/>
+ <listOptionValue builtIn="false" value="-lpthread"/>
+ <listOptionValue builtIn="false" value="-losp-content"/>
+ <listOptionValue builtIn="false" value="-losp-locations"/>
+ <listOptionValue builtIn="false" value="-losp-telephony"/>
+ <listOptionValue builtIn="false" value="-losp-uix"/>
+ <listOptionValue builtIn="false" value="-losp-media"/>
+ <listOptionValue builtIn="false" value="-losp-messaging"/>
+ <listOptionValue builtIn="false" value="-losp-web"/>
+ <listOptionValue builtIn="false" value="-losp-social"/>
+ <listOptionValue builtIn="false" value="-losp-wifi"/>
+ <listOptionValue builtIn="false" value="-losp-bluetooth"/>
+ <listOptionValue builtIn="false" value="-losp-nfc"/>
+ <listOptionValue builtIn="false" value="-losp-face"/>
+ <listOptionValue builtIn="false" value="-losp-speech-tts"/>
+ <listOptionValue builtIn="false" value="-losp-speech-stt"/>
+ <listOptionValue builtIn="false" value="-lxml2"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.2132470908" 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.396737143" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.260382181" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecpp.tool.sbi.po.compiler.1372364636" name="PO Resource Compiler" superClass="org.tizen.nativecpp.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecpp.tool.sbi.edc.compiler.1611907919" name="EDC Resource Compiler" superClass="org.tizen.nativecpp.tool.sbi.edc.compiler"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.1259456537">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.1259456537" moduleId="org.eclipse.cdt.core.settings" name="Debug-Tizen-Device">
+ <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="exe" artifactName="${ProjName}" buildArtefactType="org.tizen.nativecpp.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecpp.buildArtefactType.app" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.1259456537" name="Debug-Tizen-Device" parent="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device">
+ <folderInfo id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.1259456537." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecpp.toolchain.sbi.gcc45.app.debug.device.794762191" name="Tizen Native Toolchain" superClass="org.tizen.nativecpp.toolchain.sbi.gcc45.app.debug.device">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1886416075" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder buildPath="${workspace_loc:/Contacts/Debug-Tizen-Device}" id="org.tizen.nativecpp.target.sbi.gnu.builder.114373669" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecpp.target.sbi.gnu.builder"/>
+ <tool id="org.tizen.nativecpp.tool.sbi.gnu.archiver.1090102522" name="Archiver" superClass="org.tizen.nativecpp.tool.sbi.gnu.archiver"/>
+ <tool command="arm-linux-gnueabi-g++" id="org.tizen.nativecpp.tool.sbi.gnu.cpp.compiler.896732815" name="C++ Compiler" superClass="org.tizen.nativecpp.tool.sbi.gnu.cpp.compiler">
+ <option id="gnu.cpp.compiler.option.optimization.level.215979766" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.1759272737" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
+ <option id="sbi.gnu.cpp.compiler.option.1049950184" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="tizen-device-2.0.cpp.partner_gcc45.armel.cpp.app"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.1462254760" 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_inc.cpp.681234351" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.cpp" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""/home/jeonkun2/tizen-sdk/library""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/osp""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.cpp.1079889405" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks.cpp.1780477288" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.cpp" valueType="userObjs">
+ <listOptionValue builtIn="false" value="osp"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.674971018" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_DEBUG"/>
+ </option>
+ <inputType id="sbi.gnu.cpp.compiler.tizen.inputType.154278668" superClass="sbi.gnu.cpp.compiler.tizen.inputType"/>
+ </tool>
+ <tool command="arm-linux-gnueabi-gcc" id="org.tizen.nativecpp.tool.sbi.gnu.c.compiler.167673593" name="C Compiler" superClass="org.tizen.nativecpp.tool.sbi.gnu.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.461447159" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.184516183" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
+ <option id="sbi.gnu.c.compiler.option.1257170235" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="tizen-device-2.0.cpp.partner_gcc45.armel.cpp.app"/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.524185425" 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.cpp.995267749" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.cpp" valueType="userObjs">
+ <listOptionValue builtIn="false" value="osp"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.cpp.1209783963" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.cpp" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""/home/jeonkun2/tizen-sdk/library""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/osp""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_cflags.cpp.1084454403" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.882222560" 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.2099083137" superClass="sbi.gnu.c.compiler.tizen.inputType"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.2033568127" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+ <tool command="arm-linux-gnueabi-g++" id="org.tizen.nativecpp.tool.sbi.gnu.cpp.linker.1791839683" name="C++ Linker" superClass="org.tizen.nativecpp.tool.sbi.gnu.cpp.linker">
+ <option id="gnu.cpp.link.option.paths.1751668066" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/>
+ </option>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.cpp.1945186424" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value="-Xlinker --as-needed"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="-pie -lpthread "/>
+ <listOptionValue builtIn="false" value="-Xlinker -rpath=\$$ORIGIN/.. -Xlinker -rpath=\$$ORIGIN/../lib"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib/osp""/>
+ <listOptionValue builtIn="false" value="-losp-appfw"/>
+ <listOptionValue builtIn="false" value="-losp-uifw"/>
+ <listOptionValue builtIn="false" value="-losp-image"/>
+ <listOptionValue builtIn="false" value="-losp-ime"/>
+ <listOptionValue builtIn="false" value="-losp-net"/>
+ <listOptionValue builtIn="false" value="-lpthread"/>
+ <listOptionValue builtIn="false" value="-losp-content"/>
+ <listOptionValue builtIn="false" value="-losp-locations"/>
+ <listOptionValue builtIn="false" value="-losp-telephony"/>
+ <listOptionValue builtIn="false" value="-losp-uix"/>
+ <listOptionValue builtIn="false" value="-losp-media"/>
+ <listOptionValue builtIn="false" value="-losp-messaging"/>
+ <listOptionValue builtIn="false" value="-losp-web"/>
+ <listOptionValue builtIn="false" value="-losp-social"/>
+ <listOptionValue builtIn="false" value="-losp-wifi"/>
+ <listOptionValue builtIn="false" value="-losp-bluetooth"/>
+ <listOptionValue builtIn="false" value="-losp-nfc"/>
+ <listOptionValue builtIn="false" value="-losp-face"/>
+ <listOptionValue builtIn="false" value="-losp-speech-tts"/>
+ <listOptionValue builtIn="false" value="-losp-speech-stt"/>
+ <listOptionValue builtIn="false" value="-lxml2"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1531802899" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool command="arm-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.771931264" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.472443606" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecpp.tool.sbi.po.compiler.959163426" name="PO Resource Compiler" superClass="org.tizen.nativecpp.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecpp.tool.sbi.edc.compiler.415331287" name="EDC Resource Compiler" superClass="org.tizen.nativecpp.tool.sbi.edc.compiler"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="org.tizen.nativecpp.config.sbi.gcc45.app.release.1471180288">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecpp.config.sbi.gcc45.app.release.1471180288" 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="exe" artifactName="${ProjName}" buildArtefactType="org.tizen.nativecpp.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecpp.buildArtefactType.app" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecpp.config.sbi.gcc45.app.release.1471180288" name="Release" parent="org.tizen.nativecpp.config.sbi.gcc45.app.release">
+ <folderInfo id="org.tizen.nativecpp.config.sbi.gcc45.app.release.1471180288." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecpp.toolchain.sbi.gcc45.app.release.2102315425" name="Tizen Native Toolchain" superClass="org.tizen.nativecpp.toolchain.sbi.gcc45.app.release">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1176531242" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder buildPath="${workspace_loc:/Contacts/Release}" id="org.tizen.nativecpp.target.sbi.gnu.builder.960845429" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecpp.target.sbi.gnu.builder"/>
+ <tool id="org.tizen.nativecpp.tool.sbi.gnu.archiver.69741976" name="Archiver" superClass="org.tizen.nativecpp.tool.sbi.gnu.archiver"/>
+ <tool command="arm-linux-gnueabi-g++" id="org.tizen.nativecpp.tool.sbi.gnu.cpp.compiler.754299140" name="C++ Compiler" superClass="org.tizen.nativecpp.tool.sbi.gnu.cpp.compiler">
+ <option id="gnu.cpp.compiler.option.optimization.level.863469911" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+ <option id="gnu.cpp.compiler.option.debugging.level.1763512" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
+ <option id="sbi.gnu.cpp.compiler.option.1681665666" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="tizen-device-2.0.cpp.partner_gcc45.armel.cpp.app"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.16058996" 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_inc.cpp.1120711182" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.cpp" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""/home/jeonkun2/tizen-sdk/library""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/osp""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.cpp.231164750" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks.cpp.1799193859" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.cpp" valueType="userObjs">
+ <listOptionValue builtIn="false" value="osp"/>
+ </option>
+ <inputType id="sbi.gnu.cpp.compiler.tizen.inputType.1427546111" superClass="sbi.gnu.cpp.compiler.tizen.inputType"/>
+ </tool>
+ <tool command="arm-linux-gnueabi-gcc" id="org.tizen.nativecpp.tool.sbi.gnu.c.compiler.442301962" name="C Compiler" superClass="org.tizen.nativecpp.tool.sbi.gnu.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.494696227" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+ <option id="gnu.c.compiler.option.debugging.level.372952474" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
+ <option id="sbi.gnu.c.compiler.option.1354264482" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="tizen-device-2.0.cpp.partner_gcc45.armel.cpp.app"/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.1475305455" 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.cpp.1326575928" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.cpp" valueType="userObjs">
+ <listOptionValue builtIn="false" value="osp"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.cpp.996436845" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.cpp" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""/home/jeonkun2/tizen-sdk/library""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/osp""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_cflags.cpp.22923401" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <inputType id="sbi.gnu.c.compiler.tizen.inputType.743584144" superClass="sbi.gnu.c.compiler.tizen.inputType"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1928744851" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+ <tool command="arm-linux-gnueabi-g++" id="org.tizen.nativecpp.tool.sbi.gnu.cpp.linker.462496593" name="C++ Linker" superClass="org.tizen.nativecpp.tool.sbi.gnu.cpp.linker">
+ <option id="gnu.cpp.link.option.paths.292903970" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/>
+ </option>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.cpp.1498450347" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value="-Xlinker --as-needed"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="-pie -lpthread "/>
+ <listOptionValue builtIn="false" value="-Xlinker -rpath=\$$ORIGIN/.. -Xlinker -rpath=\$$ORIGIN/../lib"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib/osp""/>
+ <listOptionValue builtIn="false" value="-losp-appfw"/>
+ <listOptionValue builtIn="false" value="-losp-uifw"/>
+ <listOptionValue builtIn="false" value="-losp-image"/>
+ <listOptionValue builtIn="false" value="-losp-ime"/>
+ <listOptionValue builtIn="false" value="-losp-net"/>
+ <listOptionValue builtIn="false" value="-lpthread"/>
+ <listOptionValue builtIn="false" value="-losp-content"/>
+ <listOptionValue builtIn="false" value="-losp-locations"/>
+ <listOptionValue builtIn="false" value="-losp-telephony"/>
+ <listOptionValue builtIn="false" value="-losp-uix"/>
+ <listOptionValue builtIn="false" value="-losp-media"/>
+ <listOptionValue builtIn="false" value="-losp-messaging"/>
+ <listOptionValue builtIn="false" value="-losp-web"/>
+ <listOptionValue builtIn="false" value="-losp-social"/>
+ <listOptionValue builtIn="false" value="-losp-wifi"/>
+ <listOptionValue builtIn="false" value="-losp-bluetooth"/>
+ <listOptionValue builtIn="false" value="-losp-nfc"/>
+ <listOptionValue builtIn="false" value="-losp-face"/>
+ <listOptionValue builtIn="false" value="-losp-speech-tts"/>
+ <listOptionValue builtIn="false" value="-losp-speech-stt"/>
+ <listOptionValue builtIn="false" value="-lxml2"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1431770158" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool command="arm-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1117464319" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1305998945" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecpp.tool.sbi.po.compiler.393129318" name="PO Resource Compiler" superClass="org.tizen.nativecpp.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecpp.tool.sbi.edc.compiler.1109123740" name="EDC Resource Compiler" superClass="org.tizen.nativecpp.tool.sbi.edc.compiler"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+ <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.nativecpp.config.sbi.gcc45.app.debug.emulator.da.184633764">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.emulator.da.184633764" moduleId="org.eclipse.cdt.core.settings" name="DA-Tizen-Emulator">
+ <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="exe" artifactName="${ProjName}" buildArtefactType="org.tizen.nativecpp.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecpp.buildArtefactType.app" description="" id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.emulator.da.184633764" name="DA-Tizen-Emulator" parent="org.tizen.nativecpp.config.sbi.gcc45.app.debug.emulator.da">
+ <folderInfo id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.emulator.da.184633764." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecpp.toolchain.sbi.gcc45.app.debug.emulator.da.1437173019" name="Tizen Native Toolchain" superClass="org.tizen.nativecpp.toolchain.sbi.gcc45.app.debug.emulator.da">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1939224674" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder buildPath="${workspace_loc:/Contacts/DA-Tizen-Emulator}" id="org.tizen.nativecpp.target.sbi.gnu.builder.1641072335" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecpp.target.sbi.gnu.builder"/>
+ <tool id="org.tizen.nativecpp.tool.sbi.gnu.archiver.1250839274" name="Archiver" superClass="org.tizen.nativecpp.tool.sbi.gnu.archiver"/>
+ <tool command="i386-linux-gnueabi-g++" id="org.tizen.nativecpp.tool.sbi.gnu.cpp.compiler.da.508156815" name="C++ Compiler" superClass="org.tizen.nativecpp.tool.sbi.gnu.cpp.compiler.da">
+ <option id="sbi.gnu.cpp.compiler.option.2139745048" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="tizen-emulator-2.0.cpp.partner_gcc45.i386.cpp.app"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.552061890" 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=""${SDK_INSTALL_PATH}/library""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.cpp.1780544491" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.cpp" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""/home/jeonkun2/tizen-sdk/library""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/osp""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.cpp.708296644" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks.cpp.973966144" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.cpp" valueType="userObjs">
+ <listOptionValue builtIn="false" value="osp"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.630972266" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_USE_DA_"/>
+ </option>
+ <inputType id="sbi.gnu.cpp.compiler.tizen.inputType.910375147" superClass="sbi.gnu.cpp.compiler.tizen.inputType"/>
+ </tool>
+ <tool command="i386-linux-gnueabi-gcc" id="org.tizen.nativecpp.tool.sbi.gnu.c.compiler.1775475783" name="C Compiler" superClass="org.tizen.nativecpp.tool.sbi.gnu.c.compiler">
+ <option id="sbi.gnu.c.compiler.option.696443110" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="tizen-emulator-2.0.cpp.partner_gcc45.i386.cpp.app"/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.904160799" 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=""${SDK_INSTALL_PATH}/library""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks.cpp.965344979" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.cpp" valueType="userObjs">
+ <listOptionValue builtIn="false" value="osp"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.cpp.1785329060" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.cpp" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""/home/jeonkun2/tizen-sdk/library""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/osp""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_cflags.cpp.1054979047" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.1984376558" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_USE_DA_"/>
+ </option>
+ <inputType id="sbi.gnu.c.compiler.tizen.inputType.1921879176" superClass="sbi.gnu.c.compiler.tizen.inputType"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1249879388" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+ <tool command="i386-linux-gnueabi-g++" id="org.tizen.nativecpp.tool.sbi.gnu.cpp.linker.da.2143148228" name="C++ Linker" superClass="org.tizen.nativecpp.tool.sbi.gnu.cpp.linker.da">
+ <option id="gnu.cpp.link.option.paths.1782981009" 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=""${SDK_INSTALL_PATH}/library/da/x86""/>
+ </option>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.cpp.1140712344" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value="-Xlinker --as-needed"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="-pie -lpthread "/>
+ <listOptionValue builtIn="false" value="-Xlinker -rpath=\$$ORIGIN/.. -Xlinker -rpath=\$$ORIGIN/../lib"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib/osp""/>
+ <listOptionValue builtIn="false" value="-losp-appfw"/>
+ <listOptionValue builtIn="false" value="-losp-uifw"/>
+ <listOptionValue builtIn="false" value="-losp-image"/>
+ <listOptionValue builtIn="false" value="-losp-ime"/>
+ <listOptionValue builtIn="false" value="-losp-net"/>
+ <listOptionValue builtIn="false" value="-lpthread"/>
+ <listOptionValue builtIn="false" value="-losp-content"/>
+ <listOptionValue builtIn="false" value="-losp-locations"/>
+ <listOptionValue builtIn="false" value="-losp-telephony"/>
+ <listOptionValue builtIn="false" value="-losp-uix"/>
+ <listOptionValue builtIn="false" value="-losp-media"/>
+ <listOptionValue builtIn="false" value="-losp-messaging"/>
+ <listOptionValue builtIn="false" value="-losp-web"/>
+ <listOptionValue builtIn="false" value="-losp-social"/>
+ <listOptionValue builtIn="false" value="-losp-wifi"/>
+ <listOptionValue builtIn="false" value="-losp-bluetooth"/>
+ <listOptionValue builtIn="false" value="-losp-nfc"/>
+ <listOptionValue builtIn="false" value="-losp-face"/>
+ <listOptionValue builtIn="false" value="-losp-speech-tts"/>
+ <listOptionValue builtIn="false" value="-losp-speech-stt"/>
+ <listOptionValue builtIn="false" value="-lxml2"/>
+ </option>
+ <option id="gnu.cpp.link.option.libs.1818980245" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+ <listOptionValue builtIn="false" value="daprobe"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1934265400" 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.1372128175" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1921757412" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecpp.tool.sbi.po.compiler.1370349425" name="PO Resource Compiler" superClass="org.tizen.nativecpp.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecpp.tool.sbi.edc.compiler.1344738242" name="EDC Resource Compiler" superClass="org.tizen.nativecpp.tool.sbi.edc.compiler"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.da.950144939">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.da.950144939" moduleId="org.eclipse.cdt.core.settings" name="DA-Tizen-Device">
+ <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="exe" artifactName="${ProjName}" buildArtefactType="org.tizen.nativecpp.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecpp.buildArtefactType.app" description="" id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.da.950144939" name="DA-Tizen-Device" parent="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.da">
+ <folderInfo id="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.da.950144939." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecpp.toolchain.sbi.gcc45.app.debug.device.da.461623457" name="Tizen Native Toolchain" superClass="org.tizen.nativecpp.toolchain.sbi.gcc45.app.debug.device.da">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.836191378" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder buildPath="${workspace_loc:/Contacts/DA-Tizen-Device}" id="org.tizen.nativecpp.target.sbi.gnu.builder.657769114" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecpp.target.sbi.gnu.builder"/>
+ <tool id="org.tizen.nativecpp.tool.sbi.gnu.archiver.138682376" name="Archiver" superClass="org.tizen.nativecpp.tool.sbi.gnu.archiver"/>
+ <tool command="arm-linux-gnueabi-g++" id="org.tizen.nativecpp.tool.sbi.gnu.cpp.compiler.da.906356560" name="C++ Compiler" superClass="org.tizen.nativecpp.tool.sbi.gnu.cpp.compiler.da">
+ <option id="sbi.gnu.cpp.compiler.option.1772980485" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="tizen-device-2.0.cpp.partner_gcc45.armel.cpp.app"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.103288954" 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=""${SDK_INSTALL_PATH}/library""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.cpp.1566085490" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.cpp" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""/home/jeonkun2/tizen-sdk/library""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/osp""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.cpp.2008910311" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks.cpp.1134054424" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.cpp" valueType="userObjs">
+ <listOptionValue builtIn="false" value="osp"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.preprocessor.def.403654649" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_USE_DA_"/>
+ </option>
+ <inputType id="sbi.gnu.cpp.compiler.tizen.inputType.620877569" superClass="sbi.gnu.cpp.compiler.tizen.inputType"/>
+ </tool>
+ <tool command="arm-linux-gnueabi-gcc" id="org.tizen.nativecpp.tool.sbi.gnu.c.compiler.282300119" name="C Compiler" superClass="org.tizen.nativecpp.tool.sbi.gnu.c.compiler">
+ <option id="sbi.gnu.c.compiler.option.2023916269" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="tizen-device-2.0.cpp.partner_gcc45.armel.cpp.app"/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.1397237277" 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=""${SDK_INSTALL_PATH}/library""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks.cpp.1480084836" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.cpp" valueType="userObjs">
+ <listOptionValue builtIn="false" value="osp"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.cpp.1593650372" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.cpp" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""/home/jeonkun2/tizen-sdk/library""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/osp""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_cflags.cpp.2028560638" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="gnu.c.compiler.option.preprocessor.def.symbols.931653870" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="_USE_DA_"/>
+ </option>
+ <inputType id="sbi.gnu.c.compiler.tizen.inputType.53753718" superClass="sbi.gnu.c.compiler.tizen.inputType"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1818129702" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+ <tool command="arm-linux-gnueabi-g++" id="org.tizen.nativecpp.tool.sbi.gnu.cpp.linker.da.1214520792" name="C++ Linker" superClass="org.tizen.nativecpp.tool.sbi.gnu.cpp.linker.da">
+ <option id="gnu.cpp.link.option.paths.2111852526" 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=""${SDK_INSTALL_PATH}/library/da/arm""/>
+ </option>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.cpp.1281373840" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.cpp" valueType="stringList">
+ <listOptionValue builtIn="false" value="-Xlinker --as-needed"/>
+ <listOptionValue builtIn="false" value=""/>
+ <listOptionValue builtIn="false" value="-pie -lpthread "/>
+ <listOptionValue builtIn="false" value="-Xlinker -rpath=\$$ORIGIN/.. -Xlinker -rpath=\$$ORIGIN/../lib"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib/osp""/>
+ <listOptionValue builtIn="false" value="-losp-appfw"/>
+ <listOptionValue builtIn="false" value="-losp-uifw"/>
+ <listOptionValue builtIn="false" value="-losp-image"/>
+ <listOptionValue builtIn="false" value="-losp-ime"/>
+ <listOptionValue builtIn="false" value="-losp-net"/>
+ <listOptionValue builtIn="false" value="-lpthread"/>
+ <listOptionValue builtIn="false" value="-losp-content"/>
+ <listOptionValue builtIn="false" value="-losp-locations"/>
+ <listOptionValue builtIn="false" value="-losp-telephony"/>
+ <listOptionValue builtIn="false" value="-losp-uix"/>
+ <listOptionValue builtIn="false" value="-losp-media"/>
+ <listOptionValue builtIn="false" value="-losp-messaging"/>
+ <listOptionValue builtIn="false" value="-losp-web"/>
+ <listOptionValue builtIn="false" value="-losp-social"/>
+ <listOptionValue builtIn="false" value="-losp-wifi"/>
+ <listOptionValue builtIn="false" value="-losp-bluetooth"/>
+ <listOptionValue builtIn="false" value="-losp-nfc"/>
+ <listOptionValue builtIn="false" value="-losp-face"/>
+ <listOptionValue builtIn="false" value="-losp-speech-tts"/>
+ <listOptionValue builtIn="false" value="-losp-speech-stt"/>
+ <listOptionValue builtIn="false" value="-lxml2"/>
+ </option>
+ <option id="gnu.cpp.link.option.libs.1044260223" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+ <listOptionValue builtIn="false" value="daprobe"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.228964238" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool command="arm-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1230393612" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1323347410" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecpp.tool.sbi.po.compiler.890832320" name="PO Resource Compiler" superClass="org.tizen.nativecpp.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecpp.tool.sbi.edc.compiler.1390574152" name="EDC Resource Compiler" superClass="org.tizen.nativecpp.tool.sbi.edc.compiler"/>
+ </toolChain>
+ </folderInfo>
+ <sourceEntries>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="res"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="inc"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="Contacts.org.tizen.nativecpp.target.sbi.gcc45.app.894784160" name="Tizen Application" projectType="org.tizen.nativecpp.target.sbi.gcc45.app"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.1259456537">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.tizen.nativecommon.TizenGCCManagedMakePerProjectProfileCPP"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecpp.config.sbi.gcc45.app.debug.emulator.da.184633764">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.tizen.nativecommon.TizenGCCManagedMakePerProjectProfileCPP"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecpp.config.sbi.gcc45.app.release.1471180288">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.tizen.nativecommon.TizenGCCManagedMakePerProjectProfileCPP"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecpp.config.sbi.gcc45.app.debug.emulator.1641263607">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.tizen.nativecommon.TizenGCCManagedMakePerProjectProfileCPP"/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecpp.config.sbi.gcc45.app.debug.device.da.950144939">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.tizen.nativecommon.TizenGCCManagedMakePerProjectProfileCPP"/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+ <storageModule moduleId="com.samsung.tizen.nativeapp.projectInfo" version="1.0.0"/>
+ <storageModule moduleId="refreshScope"/>
+</cproject>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Contacts</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>?name?</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.append_environment</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.autoBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildArguments</key>
+ <value></value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildCommand</key>
+ <value>sbi-make</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.buildLocation</key>
+ <value>${workspace_loc:/Contacts/Debug-Tizen-Emulator}</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
+ <value>clean</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.contents</key>
+ <value>org.eclipse.cdt.make.core.activeConfigSettings</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableAutoBuild</key>
+ <value>false</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableCleanBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.enableFullBuild</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.fullBuildTarget</key>
+ <value>all</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.stopOnError</key>
+ <value>true</value>
+ </dictionary>
+ <dictionary>
+ <key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
+ <value>true</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.tizen.nativecpp.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.nativecpp.apichecker.core.tizenCppNature</nature>
+ </natures>
+</projectDescription>
--- /dev/null
+# Target name and AppID
+## TODO : set application name and PKG_ID
+SET(this_target Contacts)
+SET(PKG_ID f9uev8hsyo)
+
+# include directory
+INCLUDE_DIRECTORIES(
+ /usr/include/osp
+ inc
+ )
+
+# Source files
+FILE(GLOB ${this_target}_SOURCE_FILES src/*.cpp)
+
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIE")
+
+# Create executable
+SET(CMAKE_EXECUTABLE_SUFFIX ".exe")
+ADD_EXECUTABLE (${this_target} ${${this_target}_SOURCE_FILES})
+
+# Set link libraries and link options
+## TODO : add more link libraries and options
+TARGET_LINK_LIBRARIES(${this_target} -L/usr/lib/osp osp-appfw osp-uifw osp-media osp-content osp-image osp-social pthread)
+TARGET_LINK_LIBRARIES(${this_target} -Xlinker --allow-shlib-undefined -pthread -pie)
+
+# Copy info, data, res, and icons directories
+INSTALL(TARGETS ${this_target} DESTINATION ../usr/apps/${PKG_ID}/bin)
+
+# Copy resource
+INSTALL(FILES ${CMAKE_SOURCE_DIR}/manifest.xml DESTINATION ../usr/apps/${PKG_ID}/info)
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/res DESTINATION ../usr/apps/${PKG_ID})
+INSTALL(DIRECTORY ${CMAKE_SOURCE_DIR}/shared DESTINATION ../usr/apps/${PKG_ID})
--- /dev/null
+Flora License
+
+Version 1.1, April, 2013
+
+http://floralicense.org/license/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction,
+and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by
+the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and
+all other entities that control, are controlled by, or are
+under common control with that entity. For the purposes of
+this definition, "control" means (i) the power, direct or indirect,
+to cause the direction or management of such entity,
+whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
+or more of the outstanding shares, or (iii) beneficial ownership of
+such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity
+exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.
+
+"Object" form shall mean any form resulting from mechanical
+transformation or translation of a Source form, including but
+not limited to compiled object code, generated documentation,
+and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice
+that is included in or attached to the work (an example is provided
+in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent,
+as a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from,
+or merely link (or bind by name) to the interfaces of, the Work and
+Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor
+for inclusion in the Work by the copyright owner or by an individual or
+Legal Entity authorized to submit on behalf of the copyright owner.
+For the purposes of this definition, "submitted" means any form of
+electronic, verbal, or written communication sent to the Licensor or
+its representatives, including but not limited to communication on
+electronic mailing lists, source code control systems, and issue
+tracking systems that are managed by, or on behalf of, the Licensor
+for the purpose of discussing and improving the Work, but excluding
+communication that is conspicuously marked or otherwise designated
+in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity
+on behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+"Tizen Certified Platform" shall mean a software platform that complies
+with the standards set forth in the Tizen Compliance Specification
+and passes the Tizen Compliance Tests as defined from time to time
+by the Tizen Technical Steering Group and certified by the Tizen
+Association or its designated agent.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+copyright license to reproduce, prepare Derivative Works of,
+publicly display, publicly perform, sublicense, and distribute the
+Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+this License, each Contributor hereby grants to You a perpetual,
+worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+(except as stated in this section) patent license to make, have made,
+use, offer to sell, sell, import, and otherwise transfer the Work
+solely as incorporated into a Tizen Certified Platform, where such
+license applies only to those patent claims licensable by such
+Contributor that are necessarily infringed by their Contribution(s)
+alone or by combination of their Contribution(s) with the Work solely
+as incorporated into a Tizen Certified Platform to which such
+Contribution(s) was submitted. If You institute patent litigation
+against any entity (including a cross-claim or counterclaim
+in a lawsuit) alleging that the Work or a Contribution incorporated
+within the Work constitutes direct or contributory patent infringement,
+then any patent licenses granted to You under this License for that
+Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+Work or Derivative Works thereof pursuant to the copyright license
+above, in any medium, with or without modifications, and in Source or
+Object form, provided that You meet the following conditions:
+
+ 1. You must give any other recipients of the Work or Derivative Works
+ a copy of this License; and
+ 2. You must cause any modified files to carry prominent notices stating
+ that You changed the files; and
+ 3. You must retain, in the Source form of any Derivative Works that
+ You distribute, all copyright, patent, trademark, and attribution
+ notices from the Source form of the Work, excluding those notices
+ that do not pertain to any part of the Derivative Works; and
+ 4. If the Work includes a "NOTICE" text file as part of its distribution,
+ then any Derivative Works that You distribute must include a readable
+ copy of the attribution notices contained within such NOTICE file,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works, in at least one of the following places:
+ within a NOTICE text file distributed as part of the Derivative Works;
+ within the Source form or documentation, if provided along with the
+ Derivative Works; or, within a display generated by the Derivative Works,
+ if and wherever such third-party notices normally appear.
+ The contents of the NOTICE file are for informational purposes only
+ and do not modify the License. You may add Your own attribution notices
+ within Derivative Works that You distribute, alongside or as an addendum
+ to the NOTICE text from the Work, provided that such additional attribution
+ notices cannot be construed as modifying the License. You may add Your own
+ copyright statement to Your modifications and may provide additional or
+ different license terms and conditions for use, reproduction, or
+ distribution of Your modifications, or for any such Derivative Works
+ as a whole, provided Your use, reproduction, and distribution of
+ the Work otherwise complies with the conditions stated in this License
+ and your own copyright statement or terms and conditions do not conflict
+ the conditions stated in the License including section 3.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+any Contribution intentionally submitted for inclusion in the Work
+by You to the Licensor shall be under the terms and conditions of
+this License, without any additional terms or conditions.
+Notwithstanding the above, nothing herein shall supersede or modify
+the terms of any separate license agreement you may have executed
+with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor,
+except as required for reasonable and customary use in describing the
+origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+agreed to in writing, Licensor provides the Work (and each
+Contributor provides its Contributions) on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+implied, including, without limitation, any warranties or conditions
+of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+PARTICULAR PURPOSE. You are solely responsible for determining the
+appropriateness of using or redistributing the Work and assume any
+risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+whether in tort (including negligence), contract, or otherwise,
+unless required by applicable law (such as deliberate and grossly
+negligent acts) or agreed to in writing, shall any Contributor be
+liable to You for damages, including any direct, indirect, special,
+incidental, or consequential damages of any character arising as a
+result of this License or out of the use or inability to use the
+Work (including but not limited to damages for loss of goodwill,
+work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor
+has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+the Work or Derivative Works thereof, You may choose to offer,
+and charge a fee for, acceptance of support, warranty, indemnity,
+or other liability obligations and/or rights consistent with this
+License. However, in accepting such obligations, You may act only
+on Your own behalf and on Your sole responsibility, not on behalf
+of any other Contributor, and only if You agree to indemnify,
+defend, and hold each Contributor harmless for any liability
+incurred by, or claims asserted against, such Contributor by reason
+of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Flora License to your work
+
+To apply the Flora License to your work, attach the following
+boilerplate notice, with the fields enclosed by brackets "[]"
+replaced with your own identifying information. (Don't include
+the brackets!) The text should be enclosed in the appropriate
+comment syntax for the file format. We also recommend that a
+file or class name and description of purpose be included on the
+same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Flora License, Version 1.1 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://floralicense.org/license/
+
+ 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.
+
--- /dev/null
+Copyright (c) 2012 Samsung Electronics Co., Ltd. All rights reserved.
+Except as noted, this software is licensed under Flora License, Version 1.1
+Please, see the LICENSE.Flora file for Flora License, Version 1.1 terms and conditions.
\ No newline at end of file
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtAccountListItemProvider.h
+ * @brief This is the header file for the AccountListItemProvider class.
+ */
+
+#ifndef _CT_ACCOUNT_LIST_ITEM_PROVIDER_H_
+#define _CT_ACCOUNT_LIST_ITEM_PROVIDER_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class ContactListPresentationModel;
+
+class AccountListItemProvider
+ : public Tizen::Ui::Controls::IListViewItemProvider
+{
+public:
+ AccountListItemProvider(Tizen::Ui::Controls::ListView* pAccountListView, ContactListPresentationModel* pContactListPresentationModel);
+ virtual ~AccountListItemProvider(void);
+
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);
+ virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual int GetItemCount(void);
+
+private:
+ Tizen::Ui::Controls::ListView* __pAccountListView;
+ ContactListPresentationModel* __pContactListPresentationModel;
+};
+
+
+#endif /* _CT_ACCOUNT_LIST_ITEM_PROVIDER_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtCommonUtil.h
+ * @brief This is the header file for the CtCommonUtil class.
+ */
+
+#ifndef _CT_COMMON_UTIL_H_
+#define _CT_COMMON_UTIL_H_
+
+#include <FApp.h>
+
+class CommonUtil
+{
+public:
+ static bool isMemoryAvailable();
+ static void showMemoryFullMessageBox();
+};
+
+#endif /* _CT_COMMON_UTIL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactDetailsForm.h
+ * @brief This is the header file for the ContactDetailsForm class.
+ */
+
+#ifndef _CT_CONTACT_DETAILS_FORM_H_
+#define _CT_CONTACT_DETAILS_FORM_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FIo.h>
+#include <FUi.h>
+#include <FSystem.h>
+#include "CtIContactEventListener.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+
+class ContactPresentationModel;
+
+class ContactDetailsForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::App::IAppControlResponseListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IFocusEventListener
+ , public Tizen::Ui::IPropagatedKeyEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Io::IFileEventListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IFormMenuEventListener
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IScrollEventListener
+ , public Tizen::Ui::Controls::ITableViewItemEventListener
+ , public Tizen::Ui::Controls::ITableViewItemProvider
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::System::ISettingEventListener
+ , public IContactEventListener
+ , public IContactsAppStateChangeEventListener
+ , public Tizen::Ui::IKeyEventListener
+{
+public:
+ ContactDetailsForm(void);
+ virtual ~ContactDetailsForm(void);
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnFormMenuRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual int GetItemCount(void);
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth);
+ virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual int GetDefaultItemHeight(void);
+
+ virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated);
+ virtual void OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo);
+
+ virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+
+ virtual void OnFileEventOccured(const unsigned long events, const Tizen::Base::String &path, const unsigned int eventId);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+
+ virtual void OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type);
+ virtual void OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos);
+ virtual void OnScrollStopped (Tizen::Ui::Control &source);
+
+ virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
+ virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);
+ virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status);
+
+ virtual void OnForeground(void);
+ virtual void OnBackground(void);
+
+ virtual bool OnKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+
+ virtual void OnFocusGained(const Tizen::Ui::Control& source);
+ virtual void OnFocusLost(const Tizen::Ui::Control& source);
+
+ virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+ virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+ virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+
+ virtual void OnSettingChanged(Tizen::Base::String &key);
+private:
+ void InitializeDetailItemList(void);
+ result InitializeAppControl(Tizen::Base::Collection::IList* pArgs);
+
+ void AddMainInfo(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem);
+ void AddProperty(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, int detailProperty, int itemSubIndex);
+ void AddGroup(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem);
+ void AddRingTone(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem);
+ void AddShareButtons(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem);
+
+ void CreateValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, const Tizen::Base::String& value, const Tizen::Base::String& type);
+ void CreateTitleValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, const Tizen::Base::String& title, const Tizen::Base::String& value, const Tizen::Base::String& type = L"", int lineCount = 1);
+ void CreateTitleValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, int detailProperty);
+ void CreateNoteItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem);
+
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& launchType = L"", const Tizen::Base::String& value = L"");
+ result ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content);
+
+ void AddGroupStylePanel(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::GroupStyle groupStyle);
+
+ void ShowDefaultSelectorPopup(void);
+ void HideDefaultSelectorPopup(void);
+ void ShowInvalidFileMessageBox(const Tizen::Base::String errorMsg, bool showFooter = false);
+
+ void ShowDeletePopup(void);
+ void HideDeletePopup(void);
+private:
+ bool __isAppControlLaunching;
+ Tizen::App::AppControl* __pAppControl;
+ Tizen::Ui::Controls::TableView* __pTableView;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuCall;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuShare;
+ Tizen::Io::FileEventManager* __pFileEventManager;
+ Tizen::Ui::Controls::OptionMenu* __pOptionMenu;
+ Tizen::Ui::Controls::Popup* __pDefaultSelectorPopup;
+ Tizen::Ui::Controls::Popup* __pDeletePopup;
+ Tizen::Base::Collection::ArrayListT<int>* __pItemList;
+ Tizen::Base::String __appControlViewType;
+ ContactPresentationModel* __pPresentationModel;
+ int __scrolledDistance;
+ Tizen::Base::String __currentFocusedItem;
+ Tizen::Ui::Controls::Button* __pFavoriteButton;
+ Tizen::Ui::Controls::TableViewItem* __pGroupsItem;
+ Tizen::Ui::Controls::TableViewItem* __pRingtoneItem;
+ Tizen::Ui::Controls::Button* __pClearButton;
+};
+
+
+#endif /* _CT_CONTACT_DETAILS_FORM_H_ */
+
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactEditorForm.h
+ * @brief This is the header file for the ContactEditorForm class.
+ */
+
+#ifndef _CT_CONTACT_EDITOR_FORM_H_
+#define _CT_CONTACT_EDITOR_FORM_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FIo.h>
+#include <FUi.h>
+#include <FSystem.h>
+#include "CtIContactEventListener.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+#include "CtTypes.h"
+
+class ContactPresentationModel;
+
+class ContactEditorForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::App::IAppControlResponseListener
+ , public Tizen::Io::IFileEventListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IDateChangeEventListener
+ , public Tizen::Ui::IFocusEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::IKeyEventListener
+ , public Tizen::Ui::IPropagatedKeyEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IExpandableEditAreaEventListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Controls::IScrollEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::System::IDeviceEventListener
+ , public Tizen::System::ISettingEventListener
+ , public IContactEventListener
+ , public IContactsAppStateChangeEventListener
+{
+public:
+ ContactEditorForm(void);
+ virtual ~ContactEditorForm(void);
+ void Initialize(void);
+
+ bool ValidateEmailAddress(const Tizen::Base::String& emailAddress);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day);
+ virtual void OnDateChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual void OnExpandableEditAreaLineAdded (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount);
+ virtual void OnExpandableEditAreaLineRemoved (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount);
+
+ virtual void OnFocusGained(const Tizen::Ui::Control& source);
+ virtual void OnFocusLost(const Tizen::Ui::Control& source);
+
+ virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
+ virtual void OnKeypadOpened(Tizen::Ui::Control& source);
+ virtual void OnKeypadClosed(Tizen::Ui::Control& source);
+ virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction);
+ virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source);
+
+ virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+ virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+ virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual int GetDefaultGroupItemHeight(void);
+ virtual int GetDefaultItemHeight(void);
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem);
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem);
+
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem *pContextItem, bool activated);
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+
+ virtual void OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type);
+ virtual void OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos);
+ virtual void OnScrollStopped (Tizen::Ui::Control &source);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnForeground(void);
+ virtual void OnBackground(void);
+
+ virtual void OnFileEventOccured(const unsigned long events, const Tizen::Base::String &path, const unsigned int eventId);
+
+ virtual void OnDeviceStateChanged(Tizen::System::DeviceType deviceType, const Tizen::Base::String &state);
+ virtual void OnSettingChanged(Tizen::Base::String &key);
+
+ virtual bool OnKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+
+private:
+ Tizen::Ui::Controls::TableViewItem* GetThumbnailField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetNameFields(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetPhoneNumberFields(int itemIndex, int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetEmailFields(int itemIndex, int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetAddressFields(int itemIndex, int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetImAddressFields(int itemIndex, int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetUrlFields(int itemIndex, int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetGroupsField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetBirthdayField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetNoteField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetRingtoneField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetMoreInformationField(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetDefaultPhoneNumberItem(int itemWidth);
+ Tizen::Ui::Controls::TableViewItem* GetInputFieldN(int groupIndex, int itemIndex, int itemWidth, Tizen::Ui::Controls::EditFieldStyle style, const Tizen::Base::String& titleText, const Tizen::Base::String& guideText, const Tizen::Base::String& text = L"", bool isDeleteButton = false);
+ result DeleteInputField(int groupIndex, int itemIndex, int isUpdating = false);
+ void SetThumbnailControls(Tizen::Ui::Controls::TableViewItem& item, bool isUpdated = false);
+ void SetNameFields(Tizen::Ui::Controls::TableViewItem& item);
+
+ void AddHorizontalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionY, int width);
+ void AddVerticalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionX, int positionY);
+
+ result SetAsDefaultPhoneNumber(int index, bool scrollToItem = false);
+ result ChangeNameFieldStatus(void);
+ result SaveNameFields(void);
+ result SaveContactData(bool isSaved = true);
+ bool IsSaveContactValid(void);
+ void SetSaveButtonEnabled(bool enable);
+ bool IsMoreInformationButtonVisible(void);
+
+ void ShowDefaultPhoneNumberContextMenu(const Tizen::Graphics::Point& position);
+ void ShowMoreInformationContextMenu(const Tizen::Graphics::Point& position);
+ void ShowTypeContextMenu(int currentType, const Tizen::Graphics::Point& position, int itemTag);
+
+ result ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content);
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId);
+
+ void ShowDiscardChangesPopup(void);
+ void HideDiscardChangesPopup(void);
+
+private:
+ bool __isExpandable;
+ bool __isAppControl;
+ bool __isJobTitleEnabled;
+ bool __isDepartmentEnabled;
+ bool __isDefaultPhoneNumberButtonEnabled;
+ bool __isSaved;
+ bool __isMoreInformationContextMenuShowing;
+ bool __isTypeContextMenuShowing;
+ bool __isKeypadOpened;
+ bool __isScrollOccurred;
+ bool __isContactModified;
+ int __scrolledDistance;
+ int __origScrolledDistance;
+ int __itemIndex;
+ int __groupIndex;
+ int __previousItemIndex;
+ int __previousGroupIndex;
+
+ Tizen::App::AppControl* __pAppControl;
+ Tizen::Base::Collection::ArrayList* __pPhoneNumberFieldItem;
+ Tizen::Base::Collection::ArrayList* __pEmailFieldItem;
+ Tizen::Base::Collection::ArrayList* __pAddressFieldItem;
+ Tizen::Base::Collection::ArrayList* __pImAddressFieldItem;
+ Tizen::Base::Collection::ArrayList* __pUrlFieldItem;
+ Tizen::Base::Collection::ArrayList* __pDeletedItemList;
+ Tizen::Io::FileEventManager* __pFileEventManager;
+ Tizen::Ui::Controls::Popup* __pDiscardChangesPopup;
+ Tizen::Ui::Control* __pCurrentFocusedItem;
+ Tizen::Ui::Control* __pMoreInformationItem;
+ Tizen::Ui::Controls::Button* __pMoreInformationButton;
+ Tizen::Ui::Controls::ContextMenu* __pDefaultPhoneNumberContextMenu;
+ Tizen::Ui::Controls::ContextMenu* __pMoreInformationContextMenu;
+ Tizen::Ui::Controls::ContextMenu* __pThumbnailContextMenu;
+ Tizen::Ui::Controls::ContextMenu* __pTypeContextMenu;
+ Tizen::Ui::Controls::GroupedTableView* __pTableView;
+ Tizen::Ui::Controls::TableViewItem* __pNameFieldItem;
+ Tizen::Ui::Controls::TableViewItem* __pNoteFieldItem;
+ ContactPresentationModel* __pPresentationModel;
+ Tizen::Base::String __fullName;
+};
+
+#endif /* _CONTACT_EDITOR_FORM_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactListEditorPanel.h
+ * @brief This is the header file for the ContactListEditorPanel class.
+ */
+
+#ifndef _CT_CONTACT_LIST_EDITOR_PANEL_H_
+#define _CT_CONTACT_LIST_EDITOR_PANEL_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FUi.h>
+#include "CtContactValueListItemProvider.h"
+#include "CtIContactEventListener.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+
+class ContactListPresentationModel;
+class ContactValueListItemProvider;
+class SearchListEventListener;
+
+class ContactListEditorPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Base::Runtime::ITimerEventListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::IWindowEventListener
+ , public Tizen::Ui::IPropagatedKeyEventListener
+ , public Tizen::Ui::Controls::IFastScrollListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::ISearchBarEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+{
+public:
+ ContactListEditorPanel(void);
+ virtual ~ContactListEditorPanel(void);
+ void Initialize(void);
+
+ result RemoveContactList(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+ virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);
+
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
+ virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual void OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index);
+
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
+ virtual void OnKeypadOpened(Tizen::Ui::Control& source);
+ virtual void OnKeypadClosed(Tizen::Ui::Control& source);
+ virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source);
+ virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction);
+
+ virtual void OnWindowActivated(const Tizen::Ui::Window &source);
+ virtual void OnWindowDeactivated(const Tizen::Ui::Window &source);
+
+ virtual void OnTimerExpired(Tizen::Base::Runtime::Timer &timer);
+
+ virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo);
+ virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+
+ virtual bool OnKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+
+private:
+ result UpdateBottomLabel(void);
+ void ShowContactValuePopup(int groupIndex, int itemIndex);
+ void HideContactValuePopup(void);
+ void ShowDeleteConfirmationPopup(void);
+ void HideDeleteConfirmationPopup(void);
+ void ShowDeleteProgressPopup(void);
+ void HideDeleteProgressPopup(void);
+ int GetCheckedContactCounts(void);
+ void ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ void ReturnMultipleValues(void);
+ void ReturnResultFailed(void);
+
+private:
+ Tizen::Base::Collection::HashMap* __pTempContactValueHashMap;
+ Tizen::Base::Runtime::Timer __deleteContactTimer;
+ Tizen::Ui::Controls::CheckButton* __pSelectAll;
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::GroupedListView* __pSearchListView;
+ Tizen::Ui::Controls::SearchBar* __pSearchBar;
+ Tizen::Ui::Controls::Label* __pCheckLabel;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ Tizen::Ui::Controls::Popup* __pDeleteProgressPopup;
+ Tizen::Ui::Controls::Popup* __pDeleteConfirmationPopup;
+ ContactValueListItemProvider* __pContactValueListEvent;
+ ContactListPresentationModel* __pPresentationModel;
+ SearchListEventListener* __pSearchListEvent;
+ bool __isContactRemoved;
+ int __selectedIndex;
+ int __selectedSearchIndex;
+ int __deleteGroupIndex;
+ int __deleteItemIndex;
+};
+
+#endif /* _CT_CONTACT_LIST_EDITOR_PANEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactListItem.h
+ * @brief This is the header file for the ContactListItem class.
+ */
+
+#ifndef _CT_CONTACT_LIST_ITEM_H_
+#define _CT_CONTACT_LIST_ITEM_H_
+
+#include <FBase.h>
+#include <FGraphics.h>
+#include <FUi.h>
+
+
+class ContactListItem
+ : public Tizen::Ui::Controls::ICustomElement
+{
+public:
+ ContactListItem(const Tizen::Base::String name, Tizen::Graphics::Bitmap* pThumbnail);
+ virtual ~ContactListItem(void);
+
+ virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus);
+
+private:
+ Tizen::Base::String __name;
+ Tizen::Graphics::Bitmap* __pThumbnail;
+};
+
+#endif /* _CT_CONTACT_LIST_ITEM_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactListPanel.h
+ * @brief This is the header file for the ContactListPanel class.
+ */
+
+#ifndef _CT_CONTACT_LIST_PANEL_H_
+#define _CT_CONTACT_LIST_PANEL_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FUi.h>
+#include <FSystem.h>
+#include "CtContactValueListItemProvider.h"
+#include "CtIContactEventListener.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+
+class AccountListItemProvider;
+class ContactListPresentationModel;
+class SearchListEventListener;
+
+class ContactListPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IFastScrollListener
+ , public Tizen::Ui::IFocusEventListener
+ , public Tizen::Ui::IPropagatedKeyEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IFormMenuEventListener
+ , public Tizen::Ui::Controls::ISearchBarEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::System::ISettingEventListener
+ , public IContactEventListener
+ , public IContactsAppStateChangeEventListener
+{
+public:
+ ContactListPanel(void);
+ virtual ~ContactListPanel(void);
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+ virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);
+
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
+ virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual void OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index);
+
+ virtual void OnFocusGained(const Tizen::Ui::Control& source);
+ virtual void OnFocusLost(const Tizen::Ui::Control& source);
+
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
+ virtual void OnKeypadOpened(Tizen::Ui::Control& source);
+ virtual void OnKeypadClosed(Tizen::Ui::Control& source);
+ virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source);
+
+ virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction);
+
+ virtual void OnFormMenuRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnForeground(void);
+ virtual void OnBackground(void);
+
+ virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo);
+ virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+
+ virtual bool OnKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+
+ virtual void OnSettingChanged(Tizen::Base::String &key);
+
+private:
+ void ShowDeletePopup(void);
+ void HideDeletePopup(void);
+ void ShowAccountPopup(void);
+ void HideAccountPopup(void);
+ void ShowContactValuePopup(int groupIndex, int itemIndex);
+ void HideContactValuePopup(void);
+ void ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ void AddContactValueOnList(const Tizen::Base::Collection::IList* pList, const Tizen::Base::String& keyType, int index, Tizen::Base::Collection::HashMap* pReturnValue);
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type = L"");
+
+private:
+ Tizen::App::AppControl* __pAppControl;
+ Tizen::Base::Collection::ArrayList* __pArgList;
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::GroupedListView* __pSearchListView;
+ Tizen::Ui::Controls::Popup *__pAccountPopup;
+ Tizen::Ui::Controls::Popup* __pDeletePopup;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ Tizen::Ui::Controls::SearchBar* __pSearchBar;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ Tizen::Ui::Controls::OptionMenu* __pOptionMenu;
+
+ AccountListItemProvider* __pAccountListEvent;
+ ContactListPresentationModel* __pPresentationModel;
+ ContactValueListItemProvider* __pContactValueListEvent;
+ SearchListEventListener* __pSearchListEvent;
+
+ int __sweptItemIndex;
+ int __selectedIndex;
+};
+
+#endif /* _CT_CONTACT_LIST_PANEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactListPresentationModel.h
+ * @brief This is the header file for the ContactListPresentationModel class.
+ */
+
+#ifndef _CT_CONTACT_LIST_PRESENTATION_MODEL_H_
+#define _CT_CONTACT_LIST_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FGraphics.h>
+#include <FSocial.h>
+#include "CtTypes.h"
+
+class IContactEventListener;
+
+class ContactListPresentationModel
+ : public Tizen::Social::IAddressbookChangeEventListener
+{
+public:
+ result InitializeContactList(Tizen::Base::Collection::IList* pContactIdList = null);
+
+ Tizen::Base::String GetKey(int groupIndex);
+ Tizen::Base::String GetAllKeys(void);
+ int GetKeyCount(void);
+ int GetKeyIndex(const Tizen::Base::String& key);
+ result GetContactItemInfoN(int groupIndex, int itemIndex, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail);
+ int GetContactCount(void);
+ int GetContactCount(int groupIndex);
+ result RemoveContact(int groupIndex, int itemIndex, bool isUpdated = true);
+
+ Tizen::Social::RecordId GetContactId(int groupIndex, int itemIndex);
+ virtual Tizen::Base::String GetName(int groupIndex, int itemIndex);
+ virtual Tizen::Base::Collection::IList* GetAllPhoneNumbersN(int groupIndex, int itemIndex);
+ virtual Tizen::Base::Collection::IList* GetAllEmailsN(int groupIndex, int itemIndex);
+ Tizen::Base::String GetDefaultPhoneNumber(int groupIndex, int itemIndex);
+ Tizen::Base::String GetDefaultEmail(int groupIndex, int itemIndex);
+
+ result SetSearchText(const Tizen::Base::String& searchText, SearchType searchType);
+ Tizen::Base::String GetSearchText(void);
+ result GetSearchedContactItemInfo(int index, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail);
+ int GetSearchedContactCount(void);
+ result GetItemMainIndex(int searchedItemIndex, int& groupIndex, int& itemIndex);
+ void ResetSearchedContactList(void);
+
+ int GetAddressbookCount(void);
+ Tizen::Base::String GetAddressbookName(int index);
+ Tizen::Base::String GetCurrentAddressbook(void);
+
+ bool IsContactInCategory(int groupIndex, int itemIndex, Tizen::Social::RecordId categoryId);
+ bool IsContactInCategory(int groupIndex, Tizen::Social::RecordId categoryId);
+ bool IsSearchedContactInCategory(int index, Tizen::Social::RecordId categoryId);
+
+ Tizen::Base::String ExportToVcard(int groupIndex, int itemIndex);
+ Tizen::Base::String ExportToVcard(const Tizen::Base::Collection::IList& contactList);
+
+ void AddContactChangeListener(const IContactEventListener& listener);
+ void RemoveContactChangeListener(const IContactEventListener& listener);
+
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList);
+
+ static ContactListPresentationModel* GetInstance(void);
+
+protected:
+ ContactListPresentationModel(void);
+ virtual ~ContactListPresentationModel(void);
+
+ virtual Tizen::Social::Person* GetPersonAt(int groupIndex, int itemIndex);
+ virtual result Construct(void);
+ virtual result CreateContactList(void);
+ virtual Tizen::Base::Collection::IList* GetSearchedContactListN(const Tizen::Base::String& searchText, SearchType searchType);
+ virtual result TrimListForAppControl(Tizen::Base::Collection::IList*& pContactList);
+
+private:
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+protected:
+ Tizen::Base::Collection::MultiHashMap* _pContactList;
+ Tizen::Base::Collection::ArrayList* _pContactChangeListenerList;
+ Tizen::Base::Collection::ArrayList* _pGroupIndexList;
+ Tizen::Social::Addressbook* _pAddressbook;
+
+private:
+ Tizen::Base::Collection::IList* __pSearchedContactList;
+ Tizen::Base::Collection::IList* __pExcludedContactIdList;
+ Tizen::Base::String __searchedText;
+ bool __isContactChanged;
+
+ static ContactListPresentationModel* __pInstance;
+};
+
+#endif /* CONTACTS_APP_CONTACTLIST_PRESENTATION_MODEL_H_ */
+
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactPresentationModel.h
+ * @brief This is the header file for the ContactPresentationModel class.
+ */
+
+#ifndef _CT_CONTACT_PRESENTATION_MODEL_H_
+#define _CT_CONTACT_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FIo.h>
+#include <FSocial.h>
+#include "CtTypes.h"
+
+class IContactEventListener;
+
+class ContactPresentationModel
+ : public Tizen::Social::IAddressbookChangeEventListener
+{
+public:
+ ContactPresentationModel(void);
+ virtual ~ContactPresentationModel(void);
+
+ result Construct(void);
+ result PrepareNewContact(void);
+ result SetContactId(const Tizen::Social::RecordId contactId, bool isEditing = false);
+ result SetVcfPath(const Tizen::Base::String& filePath, bool isNewContact = false);
+ Tizen::Base::String GetVcfPath(void);
+ Tizen::Social::RecordId GetContactId(void);
+ Tizen::Base::String GetValue(DetailProperty id, int index = -1);
+ result GetDisplayName(Tizen::Base::String& name);
+ result GetBirthday(Tizen::Base::DateTime& value);
+ Tizen::Base::String GetType(DetailProperty id, int index = -1);
+ Tizen::Graphics::Bitmap* GetThumbnailN(void);
+ Tizen::Graphics::Bitmap* GetAccountIconN(const Tizen::Base::String& account);
+ result SetValue(DetailProperty id, const Tizen::Base::String& value, int index = 0);
+ result SetCustomType(DetailProperty id, const Tizen::Base::String& value, int index);
+ Tizen::Base::String GetCustomType(DetailProperty id, int index);
+ result SetBirthday(const Tizen::Base::DateTime& value);
+ result RemoveBirthday(void);
+ result SetPhoneNumber(DetailPhoneNumberType type, const Tizen::Base::String& value, int index = 0);
+ result SetEmail(DetailEmailType type, const Tizen::Base::String& value, int index = 0);
+ result SetAddress(DetailAddressType type, const Tizen::Base::String& value, int index = 0, DetailProperty property = DETAIL_PROPERTY_ADDRESS_STREET);
+ result SetUrl(DetailUrlType type, const Tizen::Base::String& value, int index = 0);
+ result SetImAddress(DetailImAddressType type, const Tizen::Base::String& value, int index = 0);
+ result SetThumbnail(const Tizen::Base::String& filePath);
+ result SetOrganization(DetailProperty id, const Tizen::Base::String& value);
+ result AddAddressBook(void);
+ int GetMultiValuesCount(DetailProperty id);
+ int GetCategoryCount(void);
+ int GetDefaultNumberIndex(void);
+ Tizen::Base::Collection::IList* GetAssignedCategoryIdListN(void);
+ result AddContactToCategory(const Tizen::Social::RecordId categoryId);
+ result RemoveContactFromAllCategories(void);
+ result AddContact(void);
+ result UpdateContact(void);
+ result RemoveContact(void);
+ bool IsContactRemoved(void);
+ void AddContactChangeListener(const IContactEventListener& listener);
+ void RemoveContactChangeListener(const IContactEventListener& listener);
+
+ Tizen::Base::String GetPhoneNumberTypeString(DetailPhoneNumberType type);
+ Tizen::Base::String GetEmailTypeString(DetailEmailType type);
+ Tizen::Base::String GetAddressTypeString(DetailAddressType type);
+ Tizen::Base::String GetUrlTypeString(DetailUrlType type);
+ Tizen::Base::String GetImAddressTypeString(DetailImAddressType type);
+
+ DetailPhoneNumberType GetPhoneNumberType(int index);
+ DetailEmailType GetEmailType(int index);
+ DetailAddressType GetAddressType(DetailProperty id, int index);
+ DetailUrlType GetUrlType(int index);
+ DetailImAddressType GetImAddressType(int index);
+
+ void SetAsFavorite(bool isFavorite);
+ bool IsFavorite(void);
+
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList);
+
+private:
+ Tizen::Base::String GetCategory(void);
+ Tizen::Base::String GetRingtone(void);
+ Tizen::Base::String GetDefaultNumber(DetailPhoneNumberType& type);
+ Tizen::Base::String GetPhoneNumber(int index, DetailPhoneNumberType& type);
+ Tizen::Base::String GetEmail(int index, DetailEmailType& type);
+ Tizen::Base::String GetImAddress(int index, DetailImAddressType& typeIndex);
+ Tizen::Base::String GetAddress(DetailProperty id, int index, DetailAddressType& typeIndex);
+ Tizen::Base::String GetUrl(int index, DetailUrlType& typeIndex);
+ Tizen::Base::String GetDateTime(DetailProperty id);
+ result SetAddress(DetailProperty id, const Tizen::Base::String& value);
+ result GetDefaultCategoryName(Tizen::Base::String& categoryName);
+
+private:
+ Tizen::Base::Collection::ArrayList* __pAssignedCategoryList;
+ Tizen::Base::Collection::ArrayList* __pContactListenerList;
+ Tizen::Base::String __vcfPath;
+ Tizen::Social::Contact* __pContact;
+ Tizen::Social::Addressbook* __pAddressbook;
+ Tizen::Social::Address __address;
+ int __defaultNumberIndex;
+ int __lastRemovedContactIndex;
+ int __lastRemovedEmailIndex;
+ bool __newMode;
+ bool __isEditing;
+};
+
+
+#endif /* _CT_CONTACT_PRESENTATION_MODEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactSelectorForm.h
+ * @brief This is the header file for the ContactSelectorForm class.
+ */
+
+#ifndef _CT_CONTACT_SELETOR_FORM_H_
+#define _CT_CONTACT_SELETOR_FORM_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include <FUi.h>
+#include "CtIContactEventListener.h"
+
+class ContactListPresentationModel;
+class SearchListEventListener;
+
+class ContactSelectorForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IFastScrollListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::ISearchBarEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+{
+public:
+ ContactSelectorForm(void);
+ virtual ~ContactSelectorForm(void);
+
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);
+
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual void OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
+ virtual void OnKeypadOpened(Tizen::Ui::Control& source);
+ virtual void OnKeypadClosed(Tizen::Ui::Control& source);
+ virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source);
+ virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction);
+
+ virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo);
+ virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+
+private:
+ result CreateFooterButton(void);
+ void UpdateBottomLabel(void);
+
+private:
+ ContactListPresentationModel* __pPresentationModel;
+ Tizen::Ui::Controls::CheckButton* __pSelectAll;
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::GroupedListView* __pSearchListView;
+ Tizen::Ui::Controls::Label* __pCheckLabel;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Ui::Controls::SearchBar* __pSearchBar;
+ SearchListEventListener* __pSearchListEvent;
+};
+
+#endif /* _CT_CONTACT_SELETOR_FORM_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactValueListItemProvider.h
+ * @brief This is the header file for the ContactValueListItemProvider class.
+ */
+
+#ifndef _CT_CONTACT_VALUE_LIST_ITEM_PROVIDER_H_
+#define _CT_CONTACT_VALUE_LIST_ITEM_PROVIDER_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class ContactValueListItemProvider
+ : public Tizen::Ui::Controls::IListViewItemProvider
+{
+public:
+ ContactValueListItemProvider(Tizen::Base::Collection::IList* pContactValueList);
+ virtual ~ContactValueListItemProvider(void);
+
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);
+ virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual int GetItemCount(void);
+
+private:
+ Tizen::Base::Collection::IList* __pContactValueList;
+};
+
+
+#endif /* _CT_CONTACT_VALUE_LIST_ITEM_PROVIDER_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactsApp.h
+ * @brief This is the header file for the ContactsApp class.
+ */
+
+#ifndef _CT_CONTACTS_APP_H_
+#define _CT_CONTACTS_APP_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FSystem.h>
+#include <FUi.h>
+#include "CtTypes.h"
+
+#define __SUPPORT_VIDEO_CALL 0
+
+class IContactsAppStateChangeEventListener;
+
+class ContactsApp
+ : public Tizen::App::UiApp
+ , public Tizen::App::IAppCheckpointEventListener
+ , public Tizen::App::IAppControlProviderEventListener
+ , public Tizen::System::IScreenEventListener
+ , public Tizen::System::ISettingEventListener
+{
+public:
+ ContactsApp(void);
+ virtual ~ContactsApp(void);
+
+ static Tizen::App::UiApp* CreateInstance(void);
+
+ Tizen::Base::String GetOperationId(void);
+ AppControlSelectionMode GetSelectionMode(void);
+ AppControlReturnType GetReturnType(void);
+ RequestId GetRequestId(void);
+ Tizen::Ui::Scenes::SceneId GetInitialSceneId(void);
+ Tizen::Base::Collection::IList* GetArguments(void);
+
+ void InitializeFontSize(void);
+ int GetFontSize(void);
+ int GetListItemSingleLineHeight(void);
+ int GetFontHeightOffset(void);
+
+ void AddContactsAppChangeEventListener(const IContactsAppStateChangeEventListener& listener);
+ void RemoveContactsAppChangeEventListener(const IContactsAppStateChangeEventListener& listener);
+
+ bool OnAppInitializing(Tizen::App::AppRegistry& appRegistry);
+ bool OnAppInitialized(void);
+ bool OnAppWillTerminate(void);
+ bool OnAppTerminating(Tizen::App::AppRegistry& appRegistry, bool forcedTermination = false);
+ void OnForeground(void);
+ void OnBackground(void);
+ void OnLowMemory(void);
+ void OnBatteryLevelChanged(Tizen::System::BatteryLevel batteryLevel);
+ void OnScreenOn(void);
+ void OnScreenOff(void);
+ void OnAppCheckpointing(Tizen::App::AppRegistry& appRegistry);
+
+ virtual void OnAppControlRequestReceived(RequestId reqId, const Tizen::Base::String& operationId, const Tizen::Base::String* pUriData, const Tizen::Base::String* pMimeType, const Tizen::Base::Collection::IMap* pExtraData);
+ virtual void OnSettingChanged(Tizen::Base::String& key);
+
+private:
+ result InitializeAppControl(Tizen::Base::Collection::IList* pArg);
+ result ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content);
+
+private:
+ Tizen::Ui::Scenes::SceneId __initialSceneId;
+ Tizen::Base::Collection::ArrayList __listenerList;
+ Tizen::Base::Collection::IList* __pArgs;
+ Tizen::Base::String __operationId;
+ AppControlSelectionMode __selectionMode;
+ AppControlReturnType __returnType;
+ RequestId __requestId;
+ int __fontSize;
+};
+
+#endif //_CT_CONTACTS_APP_H_
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtFavoriteListEditorPanel.h
+ * @brief This is the header file for the FavoriteListEditorPanel class.
+ */
+
+#ifndef _CT_FAVORITE_LIST_EDITOR_PANEL_H_
+#define _CT_FAVORITE_LIST_EDITOR_PANEL_H_
+
+#include <FUi.h>
+#include "CtContactValueListItemProvider.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+#include "CtIContactEventListener.h"
+
+class FavoriteListPresentationModel;
+
+class FavoriteListEditorPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IPropagatedKeyEventListener
+ , public Tizen::Ui::Controls::IIconListViewItemEventListener
+ , public Tizen::Ui::Controls::IIconListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+{
+public:
+ FavoriteListEditorPanel(void);
+ virtual ~FavoriteListEditorPanel(void);
+ void Initialize(void);
+
+ void RemoveFavorites(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+ virtual void OnIconListViewItemReordered(Tizen::Ui::Controls::IconListView &iconListView, int indexFrom, int indexTo);
+ virtual void OnIconListViewItemStateChanged(Tizen::Ui::Controls::IconListView &iconListView, int index, Tizen::Ui::Controls::IconListViewItemStatus status);
+ virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
+ virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual Tizen::Ui::Controls::IconListViewItem* CreateItem(int index);
+ virtual bool DeleteItem(int index, Tizen::Ui::Controls::IconListViewItem *pItem);
+ virtual int GetItemCount(void);
+
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual bool OnKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+
+private:
+ void ReturnValues(RequestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ void ReturnMultipleValues(void);
+ void ShowContactValuePopup(int index);
+ void HideContactValuePopup(void);
+ void UpdateBottomLabel(void);
+
+private:
+ Tizen::Ui::Controls::IconListView* __pFavoriteListView;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Base::Collection::HashMap* __pTempContactValueHashMap;
+
+ FavoriteListPresentationModel* __pPresentationModel;
+ ContactValueListItemProvider* __pContactValueListProvider;
+};
+
+#endif /* _CT_FAVORITE_LIST_EDITOR_PANEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtFavoriteListPanel.h
+ * @brief This is the header file for the FavoriteListPanel class.
+ */
+
+#ifndef _CT_FAVORITE_LIST_PANEL_H_
+#define _CT_FAVORITE_LIST_PANEL_H_
+
+#include <FApp.h>
+#include <FUi.h>
+#include "CtIContactsAppStateChangeEventListener.h"
+#include "CtIContactEventListener.h"
+
+class ContactValueListItemProvider;
+class FavoriteListPresentationModel;
+
+class FavoriteListPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IPropagatedKeyEventListener
+ , public Tizen::Ui::Controls::IIconListViewItemEventListener
+ , public Tizen::Ui::Controls::IIconListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IFormMenuEventListener
+ , public Tizen::Ui::Controls::IScrollEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactsAppStateChangeEventListener
+ , public IContactEventListener
+{
+public:
+ FavoriteListPanel(void);
+ virtual ~FavoriteListPanel(void);
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+ virtual void OnIconListViewItemReordered(Tizen::Ui::Controls::IconListView &iconListView, int indexFrom, int indexTo);
+ virtual void OnIconListViewItemStateChanged(Tizen::Ui::Controls::IconListView &iconListView, int index, Tizen::Ui::Controls::IconListViewItemStatus status);
+ virtual void OnIconListViewOverlayBitmapSelected(Tizen::Ui::Controls::IconListView& iconListView, int index, int overlayBitmapId);
+
+ virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
+ virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual Tizen::Ui::Controls::IconListViewItem* CreateItem(int index);
+ virtual bool DeleteItem(int index, Tizen::Ui::Controls::IconListViewItem *pItem);
+ virtual int GetItemCount(void);
+
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual void OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type);
+ virtual void OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos);
+ virtual void OnScrollStopped (Tizen::Ui::Control &source);
+
+ virtual void OnFormMenuRequested(Tizen::Ui::Controls::Form& source);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnForeground(void);
+ virtual void OnBackground(void);
+
+ virtual bool OnKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+
+private:
+ void ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ void ShowContactValuePopup(int index);
+ void HideContactValuePopup(void);
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type = L"");
+
+private:
+ bool __isAppControlLaunching;
+ int __scrolledDistance;
+ int __selectedItemIndex;
+ Tizen::App::AppControl* __pAppControl;
+ Tizen::Ui::Controls::ContextMenu* __pContextMenuAction;
+ Tizen::Ui::Controls::OptionMenu* __pOptionMenu;
+ Tizen::Ui::Controls::IconListView* __pFavoriteListView;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ FavoriteListPresentationModel* __pPresentationModel;
+ ContactValueListItemProvider* __pContactValueListProvider;
+};
+
+#endif /* _CT_FAVORITE_LIST_PANEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtFavoriteListPresentationModel.h
+ * @brief This is the header file for the FavoriteListPresentationModel class.
+ */
+
+#ifndef _CT_FAVORITE_LIST_PRESENTATION_MODEL_H_
+#define _CT_FAVORITE_LIST_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include "CtTypes.h"
+
+class IContactEventListener;
+
+class FavoriteListPresentationModel
+: public Tizen::Social::IAddressbookChangeEventListener
+{
+public:
+ FavoriteListPresentationModel(void);
+ virtual ~FavoriteListPresentationModel(void);
+
+ result Construct(void);
+ result InitializeFavoriteList(AppControlReturnType returnType = APP_CONTROL_RETURN_TYPE_NONE);
+ int GetFavoriteCount(void);
+ int GetContactCount(void);
+ result GetFavoriteItemInfo(int index, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail);
+ Tizen::Base::Collection::IList* GetMultiValuesN(AppControlReturnType returnType, int index);
+ Tizen::Social::RecordId GetContactId(int index);
+ result SetAsFavorite(Tizen::Social::RecordId contactId, bool isFavorite);
+ Tizen::Base::String GetDefaultPhoneNumber(int index);
+ Tizen::Base::String GetDefaultEmail(int index);
+ Tizen::Base::String ExportToVcard(int index);
+ Tizen::Base::String ExportToVcard(const Tizen::Base::Collection::IList& contactList);
+ void AddContactChangeListener(const IContactEventListener& listener);
+ void RemoveContactChangeListener(const IContactEventListener& listener);
+
+ static FavoriteListPresentationModel* GetInstance(void);
+
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList);
+
+private:
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+private:
+ Tizen::Base::Collection::IList* __pFavoriteList;
+ Tizen::Base::Collection::ArrayList* __pContactListenerList;
+ Tizen::Social::Addressbook* __pAddressbook;
+
+ static FavoriteListPresentationModel* __pInstance;
+};
+
+
+#endif /* _CT_FAVORITE_LIST_PRESENTATION_MODEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtFormFactory.h
+ * @brief This is the header file for the FormFactory class.
+ */
+
+#ifndef _CT_FORM_FACTORY_H_
+#define _CT_FORM_FACTORY_H_
+
+class FormFactory
+ : public Tizen::Ui::Scenes::IFormFactory
+{
+public:
+ FormFactory(void);
+ virtual ~FormFactory(void);
+
+ virtual Tizen::Ui::Controls::Form* CreateFormN(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId);
+};
+
+#endif //_CT_FORM_FACTORY_H_
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupContactListEditorForm.h
+ * @brief This is the header file for the GroupContactListEditorForm class.
+ */
+
+#ifndef _CT_GROUP_CONTACT_LIST_EDITOR_FORM_H_
+#define _CT_GROUP_CONTACT_LIST_EDITOR_FORM_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FSocial.h>
+#include <FUi.h>
+#include "CtContactValueListItemProvider.h"
+#include "CtIContactEventListener.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+
+class ContactValueListItemProvider;
+class GroupContactListPresentationModel;
+class SearchListEventListener;
+
+class GroupContactListEditorForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::IPropagatedKeyEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IFastScrollListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::ISearchBarEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+ , public IContactsAppStateChangeEventListener
+{
+public:
+ GroupContactListEditorForm(void);
+ virtual ~GroupContactListEditorForm(void);
+
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+ virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+ virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
+ virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);
+ virtual void OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index);
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
+ virtual void OnKeypadOpened(Tizen::Ui::Control& source);
+ virtual void OnKeypadClosed(Tizen::Ui::Control& source);
+ virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source);
+ virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction);
+
+ virtual void OnForeground(void);
+ virtual void OnBackground(void);
+
+ virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo);
+ virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+
+ virtual bool OnKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+
+private:
+ result RemoveSelectedContacts(void);
+ result UpdateBottomLabel(void);
+ void ShowContactValuePopup(int groupIndex, int itemIndex);
+ void HideContactValuePopup(void);
+ void ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ void ReturnMultipleValues(void);
+ void ReturnResultFailed(void);
+ result LaunchAppControl(void);
+
+private:
+ ContactValueListItemProvider* __pContactValueListEvent;
+ GroupContactListPresentationModel* __pPresentationModel;
+ SearchListEventListener* __pSearchListEvent;
+ Tizen::App::AppControl* __pAppControl;
+ Tizen::Base::Collection::HashMap* __pTempContactValueHashMap;
+ Tizen::Ui::Controls::SearchBar* __pSearchBar;
+ Tizen::Ui::Controls::CheckButton* __pSelectAllButton;
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::GroupedListView* __pSearchListView;
+ Tizen::Ui::Controls::Label* __pCheckLabel;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ long long __launchType;
+ int __selectedIndex;
+ int __selectedSearchIndex;
+};
+
+#endif /* _CT_GROUP_CONTACT_LIST_EDITOR_FORM_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupContactListForm.h
+ * @brief This is the header file for the GroupContactListForm class.
+ */
+
+#ifndef _CT_GROUP_CONTACT_LIST_FORM_H_
+#define _CT_GROUP_CONTACT_LIST_FORM_H_
+
+#include <FApp.h>
+#include <FUi.h>
+#include <FSocial.h>
+#include "CtContactValueListItemProvider.h"
+#include "CtIContactEventListener.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+
+class ContactValueListItemProvider;
+class GroupContactListPresentationModel;
+class SearchListEventListener;
+
+class GroupContactListForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IFastScrollListener
+ , public Tizen::Ui::IFocusEventListener
+ , public Tizen::Ui::IPropagatedKeyEventListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IFormMenuEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::ISearchBarEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+ , public IContactsAppStateChangeEventListener
+{
+public:
+ GroupContactListForm(void);
+ virtual ~GroupContactListForm(void);
+
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnFormMenuRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+ virtual void OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode);
+
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
+ virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual void OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index);
+
+ virtual void OnFocusGained(const Tizen::Ui::Control& source);
+ virtual void OnFocusLost(const Tizen::Ui::Control& source);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
+ virtual void OnKeypadOpened(Tizen::Ui::Control& source);
+ virtual void OnKeypadClosed(Tizen::Ui::Control& source);
+ virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source);
+ virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction);
+
+ virtual void OnForeground(void);
+ virtual void OnBackground(void);
+
+ virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo);
+ virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+
+ virtual bool OnKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+
+ virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList * pArgs);
+private:
+ void ShowDeletePopup(void);
+ void HideDeletePopup(void);
+ void ShowContactValuePopup(int groupIndex, int itemIndex);
+ void HideContactValuePopup(void);
+ result ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content);
+ void ReturnValues(RequestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue);
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type = L"");
+
+private:
+ Tizen::App::AppControl* __pAppControl;
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::GroupedListView* __pSearchListView;
+ Tizen::Ui::Controls::SearchBar* __pSearchBar;
+ Tizen::Ui::Controls::Popup* __pDeletePopup;
+ Tizen::Ui::Controls::Popup* __pMultipleContactValuePopup;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ Tizen::Ui::Controls::OptionMenu* __pOptionMenu;
+ Tizen::Social::RecordId __categoryId;
+ ContactValueListItemProvider* __pContactValueListEvent;
+ GroupContactListPresentationModel* __pPresentationModel;
+ SearchListEventListener* __pSearchListEvent;
+ bool __isCategoryUpdating;
+ int __sweptItemIndex;
+ int __selectedIndex;
+};
+
+
+#endif /* _CT_GROUP_CONTACT_LIST_FORM_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupContactListPresentationModel.h
+ * @brief This is the header file for the GroupContactListPresentationModel class.
+ */
+
+#ifndef _CT_GROUP_CONTACT_LIST_PRESENTATION_MODEL_H_
+#define _CT_GROUP_CONTACT_LIST_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include "CtContactListPresentationModel.h"
+#include "CtTypes.h"
+
+class IContactEventListener;
+
+class GroupContactListPresentationModel
+ : public ContactListPresentationModel
+{
+public:
+ virtual ~GroupContactListPresentationModel(void);
+ result InitializeGroupContactList(Tizen::Social::RecordId categoryId, GroupContactLaunchType launchType = GROUP_CONTACT_LAUNCH_TYPE_NONE);
+
+ Tizen::Base::String GetName(int groupIndex, int itemIndex);
+ Tizen::Base::Collection::IList* GetAllPhoneNumbersN(int groupIndex, int itemIndex);
+ Tizen::Base::Collection::IList* GetAllEmailsN(int groupIndex, int itemIndex);
+
+ Tizen::Base::String GetCategoryName(void);
+ int GetAllContactsCount(void);
+
+ bool IsCategoryValid(void);
+
+ result AddContactToCategory(Tizen::Base::Collection::IList* pList);
+ result RemoveContactFromCategory(int groupIndex, int itemIndex);
+
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList);
+
+ virtual Tizen::Base::Collection::IList* GetSearchedContactListN(const Tizen::Base::String& searchText, SearchType searchType);
+
+ static GroupContactListPresentationModel* GetInstance(void);
+
+private:
+ GroupContactListPresentationModel(void);
+ virtual Tizen::Social::Person* GetPersonAt(int groupIndex, int itemIndex);
+ virtual result Construct(void);
+ virtual result CreateContactList(void);
+ virtual result TrimListForAppControl(Tizen::Base::Collection::IList*& pContactList);
+ result TrimListForLaunch(Tizen::Base::Collection::IList*& pContactList);
+
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+private:
+ Tizen::Social::RecordId __categoryId;
+ GroupContactLaunchType __groupContactLaunchType;
+
+ static GroupContactListPresentationModel* __pInstance;
+};
+
+#endif /* _CT_GROUP_CONTACT_LIST_PRESENTATION_MODEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupEditorForm.h
+ * @brief This is the header file for the GroupEditorForm class.
+ */
+
+#ifndef _CT_GROUP_EDITOR_FORM_H_
+#define _CT_GROUP_EDITOR_FORM_H_
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FIo.h>
+#include <FSocial.h>
+#include <FSystem.h>
+#include <FUi.h>
+#include "CtIContactEventListener.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+
+class GroupPresentationModel;
+
+class GroupEditorForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::App::IAppControlResponseListener
+ , public Tizen::Io::IFileEventListener
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::IKeypadEventListener
+ , public Tizen::Ui::IKeyEventListener
+ , public Tizen::Ui::IPropagatedKeyEventListener
+ , public Tizen::Ui::ITextEventListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::ITableViewItemEventListener
+ , public Tizen::Ui::Controls::ITableViewItemProvider
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public Tizen::System::IDeviceEventListener
+ , public IContactEventListener
+ , public IContactsAppStateChangeEventListener
+{
+public :
+ GroupEditorForm(void);
+ virtual ~GroupEditorForm(void);
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual int GetItemCount(void);
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth);
+ virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual int GetDefaultItemHeight(void);
+
+ virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated);
+ virtual void OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnTextValueChanged(const Tizen::Ui::Control& source);
+ virtual void OnTextValueChangeCanceled(const Tizen::Ui::Control& source);
+
+ virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+
+ virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+ virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+ virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+
+ virtual void OnKeypadWillOpen(Tizen::Ui::Control& source);
+ virtual void OnKeypadOpened(Tizen::Ui::Control& source);
+ virtual void OnKeypadClosed(Tizen::Ui::Control& source);
+ virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction);
+ virtual void OnKeypadBoundsChanged(Tizen::Ui::Control& source);
+
+ virtual void OnFileEventOccured(const unsigned long events, const Tizen::Base::String &path, const unsigned int eventId);
+
+ virtual void OnDeviceStateChanged(Tizen::System::DeviceType deviceType, const Tizen::Base::String &state);
+
+ virtual void OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData);
+
+ virtual void OnForeground(void);
+ virtual void OnBackground(void);
+
+private:
+ result LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId);
+
+ virtual bool OnKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyPressed(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+ virtual bool OnPreviewKeyReleased(Tizen::Ui::Control& source, const Tizen::Ui::KeyEventInfo& keyEventInfo);
+
+ void ShowDiscardChangesPopup(void);
+ void HideDiscardChangesPopup(void);
+
+private:
+ GroupPresentationModel* __pPresentationModel;
+ Tizen::Ui::Controls::TableView* __pTableView;
+ Tizen::Ui::Controls::Popup* __pDiscardChangesPopup;
+ Tizen::Io::FileEventManager* __pFileEventManager;
+ bool __isEditMode;
+ bool __isSaved;
+ bool __isGroupsChanged;
+};
+
+#endif /* _CT_GROUP_EDITOR_FORM_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupListEditorPanel.h
+ * @brief This is the header file for the GroupListEditorPanel class.
+ */
+
+#ifndef _CT_GROUP_LIST_EDITOR_PANEL_H_
+#define _CT_GROUP_LIST_EDITOR_PANEL_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "CtIContactEventListener.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+
+class GroupListPresentationModel;
+
+class GroupListEditorPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedTableViewItemProvider
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+ , public IContactsAppStateChangeEventListener
+{
+public:
+ GroupListEditorPanel(void);
+ virtual ~GroupListEditorPanel(void);
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual Tizen::Ui::Controls::TableViewGroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual int GetDefaultGroupItemHeight(void);
+ virtual int GetDefaultItemHeight(void);
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual void UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem);
+ virtual void UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem);
+
+ virtual void OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem *pContextItem, bool activated);
+ virtual void OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ virtual void OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnForeground(void);
+ virtual void OnBackground(void);
+
+ void SaveCategoryList(void);
+
+private:
+ result UpdateBottomLabel(void);
+ void ResetSelectedItems(void);
+
+private:
+ Tizen::Ui::Controls::CheckButton* __pSelectAll;
+ Tizen::Ui::Controls::GroupedTableView* __pTableView;
+ Tizen::Ui::Controls::Label* __pCheckLabel;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ GroupListPresentationModel* __pPresentationModel;
+ Tizen::Base::Collection::ArrayList* __pSavedCategoryList;
+};
+
+#endif /* _CT_GROUP_LIST_EDITOR_PANEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupListPanel.h
+ * @brief This is the header file for the GroupListPanel class.
+ */
+
+#ifndef _CT_GROUP_LIST_PANEL_H_
+#define _CT_GROUP_LIST_PANEL_H_
+
+#include <FBase.h>
+#include <FUi.h>
+#include "CtIContactEventListener.h"
+
+class GroupListPresentationModel;
+
+class GroupListPanel
+ : public Tizen::Ui::Controls::Panel
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemEventListener
+ , public Tizen::Ui::Controls::IGroupedListViewItemProvider
+ , public Tizen::Ui::Controls::IFormMenuEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+{
+public:
+ GroupListPanel(void);
+ virtual ~GroupListPanel(void);
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId);
+
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+ virtual void OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state);
+ virtual void OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual void OnFormMenuRequested(Tizen::Ui::Controls::Form& source);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+private:
+ int __sweptItemIndex;
+ Tizen::Ui::Controls::GroupedListView* __pListView;
+ Tizen::Ui::Controls::OptionMenu* __pOptionMenu;
+ Tizen::Ui::Controls::Label* __pEmptyImageLabel;
+ Tizen::Ui::Controls::Label* __pEmptyCommentLabel;
+ GroupListPresentationModel* __pPresentationModel;
+};
+
+#endif /* _CT_GROUP_LIST_PANEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupListPresentationModel.h
+ * @brief This is the header file for the GroupListPresentationModel class.
+ */
+
+#ifndef _CT_GROUP_LIST_PRESENTATION_MODEL_H_
+#define _CT_GROUP_LIST_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+#include "CtTypes.h"
+
+class IContactEventListener;
+
+class GroupListPresentationModel
+ : public Tizen::Social::IAddressbookChangeEventListener
+{
+public:
+ virtual ~GroupListPresentationModel(void);
+ result Construct(void);
+ result RemoveCategory(int index);
+ Tizen::Base::String GetCategoryName(int index);
+ Tizen::Base::Collection::IList* GetContactIdListInCategory(int index);
+ bool IsContactInCategory(const Tizen::Base::Collection::IList& categoryIdList, int categoryIndex);
+ bool IsDefaultCategory(int index);
+ Tizen::Social::RecordId GetCategoryId(int index);
+ int GetContactCountInCategoryN(int index, Tizen::Base::Collection::IList*& pList, AppControlReturnType returnType = APP_CONTROL_RETURN_TYPE_NONE);
+ int GetContactCountInNotAssignedCategory(AppControlReturnType returnType = APP_CONTROL_RETURN_TYPE_NONE);
+ int GetCategoryCount(void);
+ int GetContactCount(void);
+ Tizen::Graphics::Bitmap* GetThumbnailN(int index, Tizen::Base::Collection::IList* pList);
+ result UpdatePersonList(int categoryIndex);
+ result UpdateCategoryList(void);
+ result AddContactToCategory(int index, Tizen::Base::Collection::IList* pList);
+ void AddGroupChangeListener(const IContactEventListener& listener);
+ void RemoveGroupChangeListener(const IContactEventListener& listener);
+
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList);
+
+ static GroupListPresentationModel* GetInstance(void);
+
+private:
+ GroupListPresentationModel(void);
+
+ static void CreateInstance(void);
+ static void DestroyInstance(void);
+
+private:
+ Tizen::Social::Addressbook* __pAddressbook;
+ Tizen::Base::Collection::IList* __pCategoryList;
+ Tizen::Base::Collection::IList* __pPersonList;
+ Tizen::Base::Collection::ArrayList* __pCategoryChangeListener;
+
+ static GroupListPresentationModel* __pInstance;
+};
+
+#endif /* _CT_GROUP_LIST_PRESENTATION_MODEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupPresentationModel.h
+ * @brief This is the header file for the GroupPresentationModel class.
+ */
+
+#ifndef _CT_GROUP_PRESENTATION_MODEL_H_
+#define _CT_GROUP_PRESENTATION_MODEL_H_
+
+#include <FBase.h>
+#include <FSocial.h>
+
+class IContactEventListener;
+
+class GroupPresentationModel
+ : public Tizen::Social::IAddressbookChangeEventListener
+{
+public:
+ GroupPresentationModel(void);
+ virtual ~GroupPresentationModel(void);
+
+ result Construct(Tizen::Social::RecordId categoryId);
+
+ bool IsDuplicatedCategory(void);
+ bool IsDefaultCategory(void);
+ result SetCategoryName(const Tizen::Base::String& groupName);
+ result SetRingtone(const Tizen::Base::String& ringtonePath);
+ result AddCategory(void);
+ result UpdateCategory(void);
+ result SetThumbnailPath(const Tizen::Base::String& filePath);
+ Tizen::Base::String GetThumbnailPath(void);
+ Tizen::Base::String GetCategoryName(void);
+ Tizen::Base::String GetRingtone(void);
+ int GetCategoryCount(void);
+ Tizen::Social::RecordId GetCategoryId(void);
+ void AddContactChangeListener(const IContactEventListener& listener);
+ void RemoveContactChangeListener(const IContactEventListener& listener);
+
+ virtual void OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList);
+ virtual void OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList);
+
+private:
+ Tizen::Base::Collection::ArrayList* __pContactChangeListenerList;
+ Tizen::Social::Addressbook* __pAddressbook;
+ Tizen::Social::Category* __pCategory;
+};
+
+#endif /* _CT_GROUP_PRESENTATION_MODEL_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupSelectorForm.h
+ * @brief This is the header file for the GroupSelectorForm class.
+ */
+
+#ifndef _CT_GROUP_SELECTOR_FORM_H_
+#define _CT_GROUP_SELECTOR_FORM_H_
+
+#include <FApp.h>
+#include <FSocial.h>
+#include <FUi.h>
+#include "CtIContactEventListener.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+
+class GroupListPresentationModel;
+
+class GroupSelectorForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::Controls::IListViewItemEventListener
+ , public Tizen::Ui::Controls::IListViewItemProvider
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::IFormMenuEventListener
+ , public Tizen::Ui::Scenes::ISceneEventListener
+ , public IContactEventListener
+ , public IContactsAppStateChangeEventListener
+{
+public:
+ GroupSelectorForm(void);
+ virtual ~GroupSelectorForm(void);
+
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs);
+ virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int index, int itemWidth);
+ virtual bool DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual int GetItemCount(void);
+ virtual void OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state);
+ virtual void OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status);
+ virtual void OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction);
+
+ virtual void OnContactsChanged(void);
+ virtual void OnCategoriesChanged(void);
+
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+ virtual void OnFormMenuRequested(Tizen::Ui::Controls::Form& source);
+
+ virtual void OnForeground(void);
+ virtual void OnBackground(void);
+
+
+private:
+ result UpdateBottomLabel(void);
+
+private:
+ bool __isDonePressed;
+ GroupListPresentationModel* __pGroupListPresentationModel;
+ Tizen::Ui::Controls::ListView* __pListView;
+ Tizen::Ui::Controls::Label* __pBottomLabel;
+ Tizen::Ui::Controls::OptionMenu* __pOptionMenu;
+ Tizen::Base::Collection::HashMapT<int, bool>* __pGroupIndexMap;
+ Tizen::Base::Collection::IList* __pGroupIdList;
+};
+
+#endif /* _CT_GROUP_SELECTOR_FORM_H_ */
+
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtIContactEventListener.h
+ * @brief This is the header file for the IContactEventListener class.
+ */
+
+#ifndef _CT_ICONTACT_EVENT_LISTENER_H_
+#define _CT_ICONTACT_EVENT_LISTENER_H_
+
+#include <FBase.h>
+
+class IContactEventListener
+ : public Tizen::Base::Object
+{
+public:
+ virtual ~IContactEventListener(void) {}
+
+ virtual void OnContactsChanged(void) = 0;
+ virtual void OnCategoriesChanged(void) = 0;
+};
+
+#endif /* _CT_ICONTACT_EVENT_LISTENER_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtIContactsAppStateChangeEventListener.h
+ * @brief This is the header file for the IContactsAppStateChangeEventListener class.
+ */
+
+#ifndef _CT_ICONTACTS_APP_STATE_CHANGE_EVENT_LISTENER_H_
+#define _CT_ICONTACTS_APP_STATE_CHANGE_EVENT_LISTENER_H_
+
+#include <FBase.h>
+
+class IContactsAppStateChangeEventListener
+ : public Tizen::Base::Object
+{
+public:
+ virtual ~IContactsAppStateChangeEventListener(void) {}
+
+ virtual void OnForeground(void) = 0;
+ virtual void OnBackground(void) = 0;
+};
+
+#endif /* _CT_ICONTACTS_APP_STATE_CHANGE_EVENT_LISTENER_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtMainForm.h
+ * @brief This is the header file for the MainForm class.
+ */
+
+#ifndef _CT_MAIN_FORM_H_
+#define _CT_MAIN_FORM_H_
+
+#include <FUi.h>
+
+class MainForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::Controls::IFormBackEventListener
+{
+public:
+ MainForm(void);
+ virtual ~MainForm(void);
+
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+
+ Tizen::Graphics::FloatRectangle GetClientBounds();
+
+private:
+ Tizen::Graphics::FloatRectangle __clientBounds;
+};
+
+#endif /* _CT_MAIN_FORM_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtMainFrame.h
+ * @brief This is the header file for the MainFrame class.
+ */
+
+#ifndef _CT_MAIN_FRAME_H_
+#define _CT_MAIN_FRAME_H_
+
+class MainFrame
+ : public Tizen::Ui::Controls::Frame
+{
+public:
+ MainFrame(void);
+ virtual ~MainFrame(void);
+
+public:
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+};
+
+#endif //_CT_MAIN_FRAME_H_
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtPanelFactory.h
+ * @brief This is the header file for the PanelFactory class.
+ */
+
+#ifndef _CT_PANEL_FACTORY_H_
+#define _CT_PANEL_FACTORY_H_
+
+class PanelFactory
+ : public Tizen::Ui::Scenes::IPanelFactory
+{
+public:
+ PanelFactory(void);
+ virtual ~PanelFactory(void);
+
+ virtual Tizen::Ui::Controls::Panel* CreatePanelN(const Tizen::Base::String& panelId, const Tizen::Ui::Scenes::SceneId& sceneId);
+};
+
+#endif //_CT_PANEL_FACTORY_H_
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtResourceManager.h
+ * @brief This is the header file for the ResourceManager class.
+ */
+
+#ifndef _CT_RESOURCE_MANAGER_H_
+#define _CT_RESOURCE_MANAGER_H_
+
+#include <FBase.h>
+#include <FGraphics.h>
+
+class ResourceManager
+{
+public:
+ static Tizen::Graphics::Bitmap* GetBitmapN(const Tizen::Base::String& id);
+ static Tizen::Base::String GetString(const Tizen::Base::String& id);
+
+private:
+ ResourceManager(void);
+ virtual ~ResourceManager(void);
+};
+
+#endif /* _CT_RESOURCE_MANAGER_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtSceneRegister.h
+ * @brief This is the header file for the SceneRegister class.
+ */
+
+#ifndef _CT_SCENE_REGISTER_H_
+#define _CT_SCENE_REGISTER_H_
+
+class SceneRegister
+{
+public:
+ static result RegisterAllScenes(void);
+
+private:
+ SceneRegister();
+ ~SceneRegister();
+};
+
+#endif /* _CT_SCENE_REGISTER_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtSearchListEventListener.h
+ * @brief This is the header file for the SearchListEventListener class.
+ */
+
+#ifndef _CT_SEARCH_LIST_EVENT_LISTENER_H_
+#define _CT_SEARCH_LIST_EVENT_LISTENER_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class ContactListPresentationModel;
+
+class SearchListEventListener
+ : public Tizen::Ui::Controls::IGroupedListViewItemProvider
+{
+public:
+ SearchListEventListener(Tizen::Ui::Controls::ListAnnexStyle itemAnnexStyle, ContactListPresentationModel* pContactListPresentationModel);
+ virtual ~SearchListEventListener(void);
+
+ virtual int GetGroupCount(void);
+ virtual int GetItemCount(int groupIndex);
+ virtual Tizen::Ui::Controls::ListItemBase* CreateItem(int groupIndex, int itemIndex, int itemWidth);
+ virtual Tizen::Ui::Controls::GroupItem* CreateGroupItem(int groupIndex, int itemWidth);
+ virtual bool DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth);
+ virtual bool DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth);
+
+ void SetShowDeleteOption(bool showDeleteOption);
+private:
+ ContactListPresentationModel* __pContactListPresentationModel;
+ Tizen::Ui::Controls::ListAnnexStyle __itemAnnexStyle;
+
+ bool __showDeleteOption;
+};
+
+
+#endif /* _CT_SEARCH_LIST_EVENT_LISTENER_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtSearchListItem.h
+ * @brief This is the header file for the SearchListItem class.
+ */
+
+#ifndef _CT_SEARCH_LIST_ITEM_H_
+#define _CT_SEARCH_LIST_ITEM_H_
+
+#include <FBase.h>
+#include <FGraphics.h>
+#include <FUi.h>
+
+class SearchListItem
+ : public Tizen::Ui::Controls::ICustomElement
+{
+public:
+ SearchListItem(const Tizen::Base::String& name, Tizen::Graphics::Bitmap* pThumbnail, const Tizen::Base::String& searchedText);
+ virtual ~SearchListItem(void);
+
+ Tizen::Graphics::EnrichedText* GetDisplayEnrichedTextN(const Tizen::Graphics::Rectangle& rect, const Tizen::Base::String& text, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus, bool isSearchingTextVisible = true);
+
+ virtual bool OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus);
+
+private:
+ Tizen::Base::String __name;
+ Tizen::Base::String __searchedText;
+ Tizen::Graphics::Bitmap* __pThumbnail;
+};
+
+#endif /* _CT_SEARCH_LIST_ITEM_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtSettingsForm.h
+ * @brief This is the header file for the SettingsForm class.
+ */
+
+#ifndef _CT_SETTINGS_FORM_H_
+#define _CT_SETTINGS_FORM_H_
+
+#include <FBase.h>
+#include <FUi.h>
+
+class SettingsForm
+ : public Tizen::Ui::Controls::Form
+ , public Tizen::Ui::IActionEventListener
+ , public Tizen::Ui::ITouchEventListener
+ , public Tizen::Ui::Controls::IFormBackEventListener
+ , public Tizen::Ui::Controls::ITableViewItemEventListener
+ , public Tizen::Ui::Controls::ITableViewItemProvider
+ , public Tizen::System::ISettingEventListener
+ , public Tizen::Ui::IKeyEventListener
+{
+public:
+ SettingsForm(void);
+ virtual ~SettingsForm(void);
+ void Initialize(void);
+
+ virtual result OnInitializing(void);
+ virtual result OnTerminating(void);
+
+ virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId);
+ virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source);
+
+ virtual int GetItemCount(void);
+ virtual Tizen::Ui::Controls::TableViewItem* CreateItem(int itemIndex, int itemWidth);
+ virtual bool DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual void UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem);
+ virtual int GetDefaultItemHeight(void);
+
+ virtual void OnSettingChanged(Tizen::Base::String &key);
+
+ virtual void OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status);
+ virtual void OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated);
+ virtual void OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo);
+
+ virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+ virtual void OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo);
+
+ virtual void OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+ virtual void OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+ virtual void OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode);
+
+private:
+ Tizen::Ui::Controls::TableView* __pTableView;
+ bool __isExpanded;
+ bool __isFirstNameFirst;
+};
+
+
+#endif /* _CT_SETTINGS_FORM_H_ */
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtTypes.h
+ * @brief This is the header file for the Contacts application types.
+ */
+
+#ifndef _CT_TYPES_H_
+#define _CT_TYPES_H_
+
+enum DetailProperty
+{
+ DETAIL_PROPERTY_PHONE_NUMBER = 0x1000,
+ DETAIL_PROPERTY_EMAIL = 0x2000,
+ DETAIL_PROPERTY_IM_ADDRESS = 0x3000,
+ DETAIL_PROPERTY_MAIN_INFO = 0x4000,
+ DETAIL_PROPERTY_ADDRESS = 0x5000,
+ DETAIL_PROPERTY_URL = 0x6000,
+ DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER = 0x7000,
+ DETAIL_PROPERTY_ADDRESS_POSTAL_CODE,
+ DETAIL_PROPERTY_ADDRESS_COUNTRY,
+ DETAIL_PROPERTY_ADDRESS_PROVINCE,
+ DETAIL_PROPERTY_ADDRESS_CITY,
+ DETAIL_PROPERTY_ADDRESS_STREET,
+ DETAIL_PROPERTY_GROUP,
+ DETAIL_PROPERTY_RINGTONE,
+ DETAIL_PROPERTY_BIRTHDAY,
+ DETAIL_PROPERTY_NOTE,
+ DETAIL_PROPERTY_SHARE_BUTTONS,
+ DETAIL_PROPERTY_THUMBNAIL,
+ DETAIL_PROPERTY_DISPLAY_NAME,
+ DETAIL_PROPERTY_FIRST_NAME,
+ DETAIL_PROPERTY_LAST_NAME,
+ DETAIL_PROPERTY_MIDDLE_NAME,
+ DETAIL_PROPERTY_NAME_SUFFIX,
+ DETAIL_PROPERTY_NICK_NAME,
+ DETAIL_PROPERTY_JOB_TITLE,
+ DETAIL_PROPERTY_DEPARTMENT,
+ DETAIL_PROPERTY_COMPANY,
+ DETAIL_PROPERTY_EMPTY,
+ DETAIL_PROPERTY_MAX
+};
+
+enum DetailPhoneNumberType
+{
+ DETAIL_PHONENUMBER_TYPE_HOME,
+ DETAIL_PHONENUMBER_TYPE_WORK,
+ DETAIL_PHONENUMBER_TYPE_MOBILE,
+ DETAIL_PHONENUMBER_TYPE_HOME_FAX,
+ DETAIL_PHONENUMBER_TYPE_WORK_FAX,
+ DETAIL_PHONENUMBER_TYPE_PAGER,
+ DETAIL_PHONENUMBER_TYPE_OTHER,
+ DETAIL_PHONENUMBER_TYPE_NONE
+};
+
+enum DetailEmailType
+{
+ DETAIL_EMAIL_TYPE_HOME,
+ DETAIL_EMAIL_TYPE_WORK,
+ DETAIL_EMAIL_TYPE_OTHER,
+ DETAIL_EMAIL_TYPE_NONE
+};
+
+enum DetailAddressType
+{
+ DETAIL_ADDRESS_TYPE_HOME,
+ DETAIL_ADDRESS_TYPE_WORK,
+ DETAIL_ADDRESS_TYPE_OTHER,
+ DETAIL_ADDRESS_TYPE_NONE
+};
+
+enum DetailImAddressType
+{
+ DETAIL_IM_ADDRESS_TYPE_AIM,
+ DETAIL_IM_ADDRESS_TYPE_MSN,
+ DETAIL_IM_ADDRESS_TYPE_YAHOO,
+ DETAIL_IM_ADDRESS_TYPE_SKYPE,
+ DETAIL_IM_ADDRESS_TYPE_QQ,
+ DETAIL_IM_ADDRESS_TYPE_GOOGLE_TALK,
+ DETAIL_IM_ADDRESS_TYPE_ICQ,
+ DETAIL_IM_ADDRESS_TYPE_JABBER,
+ DETAIL_IM_ADDRESS_TYPE_OTHER,
+ DETAIL_IM_ADDRESS_TYPE_NONE
+};
+
+enum DetailUrlType
+{
+ DETAIL_URL_TYPE_HOME,
+ DETAIL_URL_TYPE_WORK,
+ DETAIL_URL_TYPE_OTHER,
+ DETAIL_URL_TYPE_NONE
+};
+
+enum GroupContactLaunchType
+{
+ GROUP_CONTACT_LAUNCH_TYPE_NONE,
+ GROUP_CONTACT_LAUNCH_TYPE_EMAIL,
+ GROUP_CONTACT_LAUNCH_TYPE_MESSAGE
+};
+
+enum AppControlSelectionMode
+{
+ APP_CONTROL_SELECTION_MODE_NONE,
+ APP_CONTROL_SELECTION_MODE_SINGLE,
+ APP_CONTROL_SELECTION_MODE_MULTI
+};
+
+enum AppControlReturnType
+{
+ APP_CONTROL_RETURN_TYPE_NONE,
+ APP_CONTROL_RETURN_TYPE_PHONE,
+ APP_CONTROL_RETURN_TYPE_EMAIL,
+ APP_CONTROL_RETURN_TYPE_ITEM_ID,
+ APP_CONTROL_RETURN_TYPE_VCARD
+};
+
+enum SearchType
+{
+ SEARCH_TYPE_NORMAL,
+ SEARCH_TYPE_HAS_PHONE_ONLY,
+ SEARCH_TYPE_HAS_EMAIL_ONLY
+};
+
+// form, panel ids
+extern const wchar_t* IDC_FORM_CONTACT_DETAILS;
+extern const wchar_t* IDC_FORM_CONTACT_EDITOR;
+extern const wchar_t* IDC_FORM_CONTACT_SELECTOR;
+extern const wchar_t* IDC_FORM_GROUP_SELECTOR;
+extern const wchar_t* IDC_FORM_GROUP_EDITOR;
+extern const wchar_t* IDC_FORM_GROUP_CONTACT_LIST;
+extern const wchar_t* IDC_FORM_GROUP_CONTACT_LIST_EDITOR;
+extern const wchar_t* IDC_FORM_SETTINGS;
+extern const wchar_t* IDC_FORM_MAIN;
+
+extern const wchar_t* IDC_PANEL_CONTACT_LIST;
+extern const wchar_t* IDC_PANEL_CONTACT_LIST_EDITOR;
+extern const wchar_t* IDC_PANEL_GROUP_LIST;
+extern const wchar_t* IDC_PANEL_GROUP_LIST_EDITOR;
+extern const wchar_t* IDC_PANEL_FAVORITE_LIST;
+extern const wchar_t* IDC_PANEL_FAVORITE_LIST_EDITOR;
+
+// scene ids
+extern const wchar_t* IDSCN_CONTACT_LIST;
+extern const wchar_t* IDSCN_CONTACT_LIST_EDITOR;
+extern const wchar_t* IDSCN_CONTACT_DETAILS;
+extern const wchar_t* IDSCN_CONTACT_EDITOR;
+extern const wchar_t* IDSCN_CONTACT_SELECTOR;
+extern const wchar_t* IDSCN_GROUP_LIST;
+extern const wchar_t* IDSCN_GROUP_LIST_EDITOR;
+extern const wchar_t* IDSCN_GROUP_SELECTOR;
+extern const wchar_t* IDSCN_GROUP_EDITOR;
+extern const wchar_t* IDSCN_GROUP_CONTACT_LIST;
+extern const wchar_t* IDSCN_GROUP_CONTACT_LIST_EDITOR;
+extern const wchar_t* IDSCN_FAVORITE_LIST;
+extern const wchar_t* IDSCN_FAVORITE_LIST_EDITOR;
+extern const wchar_t* IDSCN_SETTINGS;
+
+extern const wchar_t* OPERATION_ID_MAIN;
+extern const wchar_t* OPERATION_ID_PICK;
+extern const wchar_t* OPERATION_ID_VIEW;
+extern const wchar_t* OPERATION_ID_ADD;
+extern const wchar_t* OPERATION_ID_EDIT;
+extern const wchar_t* OPERATION_ID_CONFIGURE;
+extern const wchar_t* OPERATION_ID_CREATE_CONTENT;
+extern const wchar_t* OPERATION_ID_CALL;
+extern const wchar_t* OPERATION_ID_COMPOSE;
+extern const wchar_t* OPERATION_ID_CROP;
+
+extern const wchar_t* CONTACT_OPERATION_ID_MAIN;
+extern const wchar_t* CONTACT_OPERATION_ID_ADD;
+extern const wchar_t* CONTACT_OPERATION_ID_VIEW;
+extern const wchar_t* CONTACT_OPERATION_ID_PICK;
+extern const wchar_t* CONTACT_OPERATION_ID_EDIT;
+extern const wchar_t* CONTACT_OPERATION_ID_CHOOSE;
+
+extern const wchar_t* RETURN_KEY_TYPE;
+extern const wchar_t* RETURN_KEY_VALUE;
+extern const wchar_t* RETURN_TYPE_PHONE;
+extern const wchar_t* RETURN_TYPE_EMAIL;
+extern const wchar_t* RETURN_TYPE_VCARD;
+extern const wchar_t* RETURN_TYPE_ITEM_ID;
+
+extern const wchar_t* CONTACT_KEY_ITEM_TYPE;
+extern const wchar_t* CONTACT_KEY_PHONE;
+extern const wchar_t* CONTACT_KEY_EMAIL;
+extern const wchar_t* CONTACT_KEY_URL;
+extern const wchar_t* CONTACT_KEY_ITEM_ID;
+extern const wchar_t* CONTACT_KEY_SELECTION_MODE;
+extern const wchar_t* CONTACT_KEY_RESULT_TYPE;
+extern const wchar_t* CONTACT_KEY_PATH;
+
+extern const wchar_t* ITEM_TYPE_PERSON;
+extern const wchar_t* ITEM_TYPE_CONTACT;
+
+extern const wchar_t* PROVIDER_ID_CAMERA;
+extern const wchar_t* PROVIDER_ID_GALLERY;
+extern const wchar_t* PROVIDER_ID_PHONE;
+extern const wchar_t* PROVIDER_ID_MESSAGE;
+extern const wchar_t* PROVIDER_ID_EMAIL;
+extern const wchar_t* PROVIDER_ID_FILEMANAGER;
+extern const wchar_t* PROVIDER_ID_IMAGEVIEWER;
+
+extern const wchar_t* SETTING_KEY_LANGUAGE;
+extern const wchar_t* SETTING_KEY_COUNTRY;
+extern const wchar_t* SETTING_KEY_FONTSIZE;
+extern const wchar_t* SETTING_KEY_NAME_ORDER;
+
+extern const wchar_t* RUNTIMEINFO_INTERNAL_MEMORY_KEY;
+
+extern const wchar_t* CHARACTER_SPACE;
+extern const wchar_t* DELIMITER;
+extern const wchar_t* DELIMITER_SEMICOLON;
+extern const wchar_t* DELIMITER_COMMA;
+extern const wchar_t* INITIAL_SELECTED_COUNT;
+extern const wchar_t* DEFAULT_GROUP_FAMILY;
+extern const wchar_t* DEFAULT_GROUP_FRIENDS;
+extern const wchar_t* DEFAULT_GROUP_COWORKERS;
+
+extern const int ID_GROUP_CONTACT_NOT_ASSIGNED;
+extern const int ID_GROUP_CONTACT_SELECT_MESSAGE;
+extern const int ID_GROUP_CONTACT_SELECT_EMAIL;
+
+extern const int W_SAVE_POPUP;
+extern const int H_SAVE_POPUP;
+extern const int W_SAVE_LABEL;
+extern const int H_SAVE_LABEL;
+extern const int X_SAVE_LABEL;
+extern const int Y_SAVE_LABEL;
+extern const int Y_SAVE_BUTTON;
+extern const int H_SAVE_BUTTON;
+extern const int W_SAVE_BUTTON;
+extern const int W_POPUP_ITEM_GAP;
+extern const int W_DELETE_POPUP;
+extern const int H_DELETE_POPUP;
+extern const int W_DELETE_LABEL;
+extern const int H_DELETE_LABEL;
+extern const int X_DELETE_LABEL;
+extern const int Y_DELETE_LABEL;
+extern const int Y_DELETE_BUTTON;
+extern const int H_DELETE_BUTTON;
+extern const int W_DELETE_BUTTON;
+
+extern const int FONT_SIZE_SAVE_CONFIRM;
+extern const int FONT_SIZE_SAVE_BUTTON;
+extern const int FONT_SIZE_DELETE_CONFIRM;
+extern const int FONT_SIZE_DELETE_BUTTON;
+
+extern const int BIRTHDAY_MIN_YEAR_DIFF;
+extern const int BIRTHDAY_MAX_YEAR_DIFF;
+
+#endif /* _CT_TYPES_H_ */
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<Manifest xmlns="http://schemas.tizen.org/2012/12/manifest">
+ <Id>f9uev8hsyo</Id>
+ <Version>1.0.0</Version>
+ <Type>C++App</Type>
+ <Requirements/>
+ <Apps>
+ <ApiVersion>2.2</ApiVersion>
+ <Privileges>
+ <Privilege>http://tizen.org/privilege/application.launch</Privilege>
+ <Privilege>http://tizen.org/privilege/contact.write</Privilege>
+ <Privilege>http://tizen.org/privilege/setting</Privilege>
+ <Privilege>http://tizen.org/privilege/contact.read</Privilege>
+ </Privileges>
+ <UiApp LaunchingHistoryVisible="True" Main="True" MenuIconVisible="True" Name="Contacts" SubMode="True">
+ <UiScalability BaseScreenSize="Normal" CoordinateSystem="Logical" LogicalCoordinate="720"/>
+ <UiTheme SystemTheme="White"/>
+ <DisplayNames>
+ <DisplayName Locale="ara-AE">الأسماء</DisplayName>
+ <DisplayName Locale="aze-AZ">Adlar</DisplayName>
+ <DisplayName Locale="bul-BG">Телефонен указател</DisplayName>
+ <DisplayName Locale="cat-ES">Contactes</DisplayName>
+ <DisplayName Locale="ces-CZ">Kontakty</DisplayName>
+ <DisplayName Locale="dan-DK">Kontakter</DisplayName>
+ <DisplayName Locale="deu-DE">Kontakte</DisplayName>
+ <DisplayName Locale="ell-GR">Επαφές</DisplayName>
+ <DisplayName Locale="eng-GB">Contacts</DisplayName>
+ <DisplayName Locale="eng-PH">Contacts</DisplayName>
+ <DisplayName Locale="eng-US">Contacts</DisplayName>
+ <DisplayName Locale="est-EE">Kontaktid</DisplayName>
+ <DisplayName Locale="eus-ES">Kontaktuak</DisplayName>
+ <DisplayName Locale="fas-AF">دفتر تلفن</DisplayName>
+ <DisplayName Locale="fin-FI">Yhteystiedot</DisplayName>
+ <DisplayName Locale="fra-CA">Contacts</DisplayName>
+ <DisplayName Locale="fra-FR">Contacts</DisplayName>
+ <DisplayName Locale="gle-IE">Teagmhálaithe</DisplayName>
+ <DisplayName Locale="glg-ES">Contactos</DisplayName>
+ <DisplayName Locale="hin-IN">संपर्क</DisplayName>
+ <DisplayName Locale="hrv-HR">Imenik</DisplayName>
+ <DisplayName Locale="hun-HU">Névjegyek</DisplayName>
+ <DisplayName Locale="hye-AM">Կոնտակտներ</DisplayName>
+ <DisplayName Locale="isl-IS">Tengiliðir</DisplayName>
+ <DisplayName Locale="ita-IT">Rubrica</DisplayName>
+ <DisplayName Locale="jpn-JP">電話帳</DisplayName>
+ <DisplayName Locale="kat-GE">კონტაქტები</DisplayName>
+ <DisplayName Locale="kaz-KZ">Контактілер</DisplayName>
+ <DisplayName Locale="kor-KR">연락처</DisplayName>
+ <DisplayName Locale="lav-LV">Kontakti</DisplayName>
+ <DisplayName Locale="lit-LT">Adresatai</DisplayName>
+ <DisplayName Locale="mkd-MK">Именик</DisplayName>
+ <DisplayName Locale="nld-NL">Contacten</DisplayName>
+ <DisplayName Locale="nob-NO">Kontakter</DisplayName>
+ <DisplayName Locale="pol-PL">Kontakty</DisplayName>
+ <DisplayName Locale="por-BR">Contatos</DisplayName>
+ <DisplayName Locale="por-PT">Contactos</DisplayName>
+ <DisplayName Locale="ron-RO">Contacte</DisplayName>
+ <DisplayName Locale="rus-RU">Контакты</DisplayName>
+ <DisplayName Locale="slk-SK">Kontakty</DisplayName>
+ <DisplayName Locale="slv-SI">Imenik</DisplayName>
+ <DisplayName Locale="spa-ES">Contactos</DisplayName>
+ <DisplayName Locale="spa-MX">Contactos</DisplayName>
+ <DisplayName Locale="srp-RS">Kontakti</DisplayName>
+ <DisplayName Locale="swe-SE">Kontakter</DisplayName>
+ <DisplayName Locale="tha-TH">รายชื่อ</DisplayName>
+ <DisplayName Locale="tur-TR">Rehber</DisplayName>
+ <DisplayName Locale="ukr-UA">Контакти</DisplayName>
+ <DisplayName Locale="urd-IN">رابطے</DisplayName>
+ <DisplayName Locale="uzb-UZ">Kontaktlar</DisplayName>
+ <DisplayName Locale="zho-CN">联系人</DisplayName>
+ <DisplayName Locale="zho-HK">聯絡人</DisplayName>
+ <DisplayName Locale="zho-SG">联系人</DisplayName>
+ <DisplayName Locale="zho-TW">聯絡人</DisplayName>
+ </DisplayNames>
+ <Icons>
+ <Icon Section="MainMenu" Type="Xhigh">mainmenu.png</Icon>
+ </Icons>
+ <AppControls>
+ <AppControl>
+ <MimeType>vnd.tizen.item.type/vnd.tizen.contact</MimeType>
+ <Operation>http://tizen.org/appcontrol/operation/social/add</Operation>
+ <Operation>http://tizen.org/appcontrol/operation/social/choose</Operation>
+ <Operation>http://tizen.org/appcontrol/operation/social/edit</Operation>
+ <Operation>http://tizen.org/appcontrol/operation/social/pick</Operation>
+ <Operation>http://tizen.org/appcontrol/operation/social/view</Operation>
+ </AppControl>
+ <AppControl>
+ <MimeType>text/x-vcard</MimeType>
+ <MimeType>text/vcard</MimeType>
+ <Operation>http://tizen.org/appcontrol/operation/view</Operation>
+ </AppControl>
+ </AppControls>
+ <LaunchConditions/>
+ <Notifications>
+ <Notification Name="Ticker">On</Notification>
+ <Notification Name="Sound">On</Notification>
+ <Notification Name="Contents">Off</Notification>
+ <Notification Name="Badge">On</Notification>
+ </Notifications>
+ </UiApp>
+ </Apps>
+</Manifest>
--- /dev/null
+Name: apps.Contacts
+Summary: Contacts application
+Version: 1.0.0.0
+Release: 1
+Group: TO_BE/FILLED_IN
+License: Flora-1.1
+Source0: %{name}-%{version}.tar.gz
+BuildRequires: cmake
+BuildRequires: pkgconfig(osp-content)
+BuildRequires: pkgconfig(osp-appfw)
+BuildRequires: pkgconfig(osp-uifw)
+BuildRequires: pkgconfig(osp-media)
+BuildRequires: pkgconfig(osp-image)
+BuildRequires: pkgconfig(osp-image-core)
+BuildRequires: pkgconfig(osp-social)
+BuildRequires: hash-signer
+
+%description
+Verification application: Contacts
+
+%prep
+%setup -q
+
+%build
+MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
+%ifarch %{ix86}
+%if 0%{?simulator}
+CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_X86_ -D_OSP_EMUL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%else
+CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_X86_ " cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%endif
+%else
+CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_ARMEL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%endif
+
+# Call make instruction with smp support
+make %{?jobs:-j%jobs}
+
+%install
+rm -rf %{buildroot}
+mkdir -p %{buildroot}/usr/share/license
+cp LICENSE.Flora %{buildroot}/usr/share/license/%{name}
+%make_install
+###### for package signing step ######
+PKG_ID=f9uev8hsyo
+%define tizen_sign 1
+%define tizen_sign_base /usr/apps/${PKG_ID}
+%define tizen_sign_level platform
+%define tizen_author_sign 1
+%define tizen_dist_sign 1
+
+
+%post
+/sbin/ldconfig
+PKG_ID=f9uev8hsyo
+echo "/usr/etc/package-manager/backend/tpk -i /usr/apps/"${PKG_ID}
+/usr/etc/package-manager/backend/tpk -i /usr/apps/${PKG_ID}
+cp -f /usr/lib/osp/osp-ui-app-loader /usr/apps/${PKG_ID}/bin/Contacts
+
+%postun
+/sbin/ldconfig
+PKG_ID=f9uev8hsyo
+echo "/usr/etc/package-manager/backend/tpk -u "${PKG_ID}
+/usr/etc/package-manager/backend/tpk -u ${PKG_ID}
+
+%files
+%defattr(-,root,root,-)
+/usr/apps/*
+/usr/share/license/%{name}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">الموقع</text>
+ <text id="IDS_PB_BODY_GROUPS">مجموعات</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">الاسم الأول</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">الوظيفة</text>
+ <text id="IDS_PB_BODY_COMPANY">الشركة</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">ذكرى سنوية</text>
+ <text id="IDS_COM_POP_CLOSE">إغلاق</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">اختيار الكل</text>
+ <text id="IDS_COM_POP_DELETE_Q">مسح؟</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">إضافة إلى المفضلة</text>
+ <text id="IDS_PB_BODY_PHONE">الهاتف</text>
+ <text id="IDS_COM_BODY_MESSAGE">رسالة</text>
+ <text id="IDS_PB_BODY_LAST_NAME">اسم العائلة</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">حفظ الاسم في</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">هاتف محمول (العمل)</text>
+ <text id="IDS_PB_SK_CANCEL">إلغاء</text>
+ <text id="IDS_COM_SK_NEW">جديدة</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">الاسم الأوسط</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">تحديد كبريد إلكتروني افتراضي</text>
+ <text id="IDS_PB_BODY_OTHER">آخر</text>
+ <text id="IDS_COM_POP_REMOVED">تم الحذف</text>
+ <text id="IDS_PB_BODY_COUNTRY">الدولة</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">زملاء العمل</text>
+ <text id="IDS_COM_POP_SUCCESS">نجاح</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">عيد ميلاد</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">كل الأسماء</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">غير محددة</text>
+ <text id="IDS_COM_SK_DONE">تمت</text>
+ <text id="IDS_PB_BODY_MOBILE">الجوال</text>
+ <text id="IDS_COM_BODY_EMAIL">بريد إلكتروني</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">ذاكرة التخزين بالجهاز ممتلئة</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">تحديد مجموعة</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">رقم غير صالح</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">إضافة عضو</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">لا توجد جهات اتصال</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">إزالة صورة</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">اسم العائلة أولا</text>
+ <text id="IDS_PB_OPT_VIEW">عرض</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">تاريخ ميلاد غير صالح</text>
+ <text id="IDS_PB_BODY_WORK">العمل</text>
+ <text id="IDS_COM_SK_EDIT">تعديل</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">عنوان البريد الإلكتروني غير صالح</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">لا توجد مجموعة</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">إضافة إلى جهات الاتصال</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">تحديد كرقم افتراضي</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">معلومات أخرى</text>
+ <text id="IDS_COM_POP_SELECTED">تم التحديد</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">خالي</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">التقاط صورة</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">مجموعة جديدة</text>
+ <text id="IDS_COM_SK_DELETE">مسح</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">فاكس (العمل)</text>
+ <text id="IDS_PB_BODY_RINGTONE">نغمة الرنين</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">الأصدقاء</text>
+ <text id="IDS_PB_BODY_ADDRESS">العنوان</text>
+ <text id="IDS_COM_BODY_COPY">نسخ</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">لا توجد مفضلة</text>
+ <text id="IDS_COM_BODY_CONTACTS">جهات الاتصال</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">تحديد جهات الاتصال</text>
+ <text id="IDS_PB_BODY_PAGER">جهاز المناداة</text>
+ <text id="IDS_MP_POP_INVALID_FILE">ملف غير صالح</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">المرسل الفوري</text>
+ <text id="IDS_COM_BODY_GALLERY">استوديو</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">الجوال (المنزل)</text>
+ <text id="IDS_COM_BODY_SEARCH">بحث</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">اسم المجموعة مستخدم مسبقا</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">العائلة</text>
+ <text id="IDS_PB_BODY_CITY">المدينة</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">الاسم</text>
+ <text id="IDS_COM_BODY_CREATE">إنشاء</text>
+ <text id="IDS_PB_BODY_NICKNAME">اللقب</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">القسم</text>
+ <text id="IDS_PB_BODY_SUFFIX">اللاحقة</text>
+ <text id="IDS_COM_BODY_CALL">اتصال</text>
+ <text id="IDS_COM_BODY_SETTINGS">الضبط</text>
+ <text id="IDS_COM_POP_UNKNOWN">غير معروف</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">حفظ الاسم؟</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">المفضلة</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">تحرير مجموعات</text>
+ <text id="IDS_COM_SK_SAVE">حفظ</text>
+ <text id="IDS_PB_BODY_PROVINCE">إقليم</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">إرسال بطاقة اسم</text>
+ <text id="IDS_COM_POP_ADDED">تمت الإضافة</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">مكالمة فيديو</text>
+ <text id="IDS_PB_BODY_HOME">منزل</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">هيئة غير صحيحة</text>
+ <text id="IDS_PB_BODY_NOTE">ملاحظة</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">ضبط الأسماء</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">ترتيب عرض الاسم</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">جار حذف جهات الاتصال...</text>
+ <text id="IDS_PB_BODY_STREET">الشارع</text>
+ <text id="IDS_PB_BODY_NUMBER">الرقم</text>
+ <text id="IDS_PB_HEADER_DETAILS">التفاصيل</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">تجاهل التغييرات؟</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">الرمز البريدي</text>
+ <text id="IDS_COM_BODY_REMOVE">حذف</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">الفاكس (المنزل)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">الاسم الأول أولا</text>
+ <text id="IDS_PB_BODY_DEFAULT">إفتراضي</text>
+ <text id="IDS_COM_SK_OK">موافق</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">اسم المجموعة</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Qruplar</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ad</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Məşğuliyyət adı</text>
+ <text id="IDS_PB_BODY_COMPANY">Şirkət</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">İldönümü</text>
+ <text id="IDS_COM_POP_CLOSE">Bağla</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Hamısını seç</text>
+ <text id="IDS_COM_POP_DELETE_Q">Silinsin?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Sevimlilərə əlavə edin</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mesaj</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Yekun ad</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kontaktı ...da saxla</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (İş)</text>
+ <text id="IDS_PB_SK_CANCEL">Ləğv et</text>
+ <text id="IDS_COM_SK_NEW">Yeni</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">İkinci ad</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Susmaya görə e-poçt kimi qeyd et</text>
+ <text id="IDS_PB_BODY_OTHER">Başqa</text>
+ <text id="IDS_COM_POP_REMOVED">Silindi</text>
+ <text id="IDS_PB_BODY_COUNTRY">Ölkə</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Həmkarlar</text>
+ <text id="IDS_COM_POP_SUCCESS">Uğur</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Doğum günü</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Bütün adlar</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Təyin olunmamışdır</text>
+ <text id="IDS_COM_SK_DONE">Bitdi</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">Elektron poçtlar</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Cihaz yaddaşı doludur</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Qrup seç</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Nömrə səhvdir</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Üzv əlavə et</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Kontakt yoxdur</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Şəkli sil</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Əvvəlcə soyad</text>
+ <text id="IDS_PB_OPT_VIEW">Bax</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Doğum tarixi səhvdir</text>
+ <text id="IDS_PB_BODY_WORK">İş</text>
+ <text id="IDS_COM_SK_EDIT">Redaktə et</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Yanlış E-poçt ünvanı</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Qrup yoxdur</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Kontaktlara əlavə et</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">İlkin təyin edilmiş nömrə kimi işarələ</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Daha çox məlumat</text>
+ <text id="IDS_COM_POP_SELECTED">Seçildi</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Boşdur</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Foto şəkil çək</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Yeni qrup</text>
+ <text id="IDS_COM_SK_DELETE">Sil</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (İş)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Zəng tonu</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Dostlar</text>
+ <text id="IDS_PB_BODY_ADDRESS">Ünvan</text>
+ <text id="IDS_COM_BODY_COPY">Köçür</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Sevimli yoxdur</text>
+ <text id="IDS_COM_BODY_CONTACTS">Adlar</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Kontaktları seç</text>
+ <text id="IDS_PB_BODY_PAGER">Peycer</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Yanlış fayl</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Ani mesencer</text>
+ <text id="IDS_COM_BODY_GALLERY">Qalereya</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (Ev)</text>
+ <text id="IDS_COM_BODY_SEARCH">Axtarış</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Qrup adı hazırda istifadə edilir</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Ailə</text>
+ <text id="IDS_PB_BODY_CITY">Şəhər</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Ad</text>
+ <text id="IDS_COM_BODY_CREATE">Yarat</text>
+ <text id="IDS_PB_BODY_NICKNAME">Təxəllüs</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departament</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffiks</text>
+ <text id="IDS_COM_BODY_CALL">Zəng</text>
+ <text id="IDS_COM_BODY_SETTINGS">Parametrlər</text>
+ <text id="IDS_COM_POP_UNKNOWN">Naməlum</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Kontaktlar saxlanılsın?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Sevimlilər</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Qrupları redaktə et</text>
+ <text id="IDS_COM_SK_SAVE">Yaddaşa yaz</text>
+ <text id="IDS_PB_BODY_PROVINCE">Rayon</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Vizit kartı göndər</text>
+ <text id="IDS_COM_POP_ADDED">Əlavə edildi</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video zəng</text>
+ <text id="IDS_PB_BODY_HOME">Ev</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Yanlış format</text>
+ <text id="IDS_PB_BODY_NOTE">Qeyd</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontakt parametrləri</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Displey adı sırası</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kontaktlar silinir...</text>
+ <text id="IDS_PB_BODY_STREET">Küçə</text>
+ <text id="IDS_PB_BODY_NUMBER">Nömrə</text>
+ <text id="IDS_PB_HEADER_DETAILS">Təfsilatlar</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Dəyişikliklərdən imtina edilsin?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Poçt kodu</text>
+ <text id="IDS_COM_BODY_REMOVE">Sil</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (Ev)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Əvvəlcə ad</text>
+ <text id="IDS_PB_BODY_DEFAULT">İlkin təyin olunan</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Qrup adı</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Групи</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Малко име</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Длъжност</text>
+ <text id="IDS_PB_BODY_COMPANY">Фирма</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Годишнина</text>
+ <text id="IDS_COM_POP_CLOSE">Затваряне</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Избери всички</text>
+ <text id="IDS_COM_POP_DELETE_Q">Изтриване?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Добавяне в Предпочитани</text>
+ <text id="IDS_PB_BODY_PHONE">Телефон</text>
+ <text id="IDS_COM_BODY_MESSAGE">Съобщение</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Фамилно име</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Запиши данните в</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Мобилен (служебен)</text>
+ <text id="IDS_PB_SK_CANCEL">Отмени</text>
+ <text id="IDS_COM_SK_NEW">Ново</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Бащино име</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Маркирай като email по подразбиране</text>
+ <text id="IDS_PB_BODY_OTHER">Друго</text>
+ <text id="IDS_COM_POP_REMOVED">Премахнат</text>
+ <text id="IDS_PB_BODY_COUNTRY">Страна</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Колеги</text>
+ <text id="IDS_COM_POP_SUCCESS">Успешно</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Рожден ден</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Всички записи</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Незададен</text>
+ <text id="IDS_COM_SK_DONE">Готово</text>
+ <text id="IDS_PB_BODY_MOBILE">Мобилен</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Паметта на устройството е пълна</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Изберете група</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Невалиден номер</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Доб. член</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Няма записи</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Махни снимката</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Първо фамилното име</text>
+ <text id="IDS_PB_OPT_VIEW">Преглед</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Невалидна рождена дата</text>
+ <text id="IDS_PB_BODY_WORK">Служебен</text>
+ <text id="IDS_COM_SK_EDIT">Редактиране</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Невалиден имейл адрес</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Няма група</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Добави към Тел. Указ.</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Маркиране като номер по подразбиране</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Още информация</text>
+ <text id="IDS_COM_POP_SELECTED">Избран</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Празен</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Направи снимка</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Нова група</text>
+ <text id="IDS_COM_SK_DELETE">Изтрий</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Факс (служебен)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Тон позвъняване</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Приятели</text>
+ <text id="IDS_PB_BODY_ADDRESS">Адрес</text>
+ <text id="IDS_COM_BODY_COPY">Копиране</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Няма предпочитани</text>
+ <text id="IDS_COM_BODY_CONTACTS">Телефонен указател</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Избор на записи</text>
+ <text id="IDS_PB_BODY_PAGER">Пейджър</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Невалиден файл</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Програма за чат</text>
+ <text id="IDS_COM_BODY_GALLERY">Галерия</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Мобилен (домашен)</text>
+ <text id="IDS_COM_BODY_SEARCH">Търси</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Името на групата вече се използва</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Семейство</text>
+ <text id="IDS_PB_BODY_CITY">Град</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Име</text>
+ <text id="IDS_COM_BODY_CREATE">Създай</text>
+ <text id="IDS_PB_BODY_NICKNAME">Псевдоним</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Отдел</text>
+ <text id="IDS_PB_BODY_SUFFIX">Обръщение</text>
+ <text id="IDS_COM_BODY_CALL">Повикване</text>
+ <text id="IDS_COM_BODY_SETTINGS">Настройки</text>
+ <text id="IDS_COM_POP_UNKNOWN">Няма информация</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Запаметяване на записа?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Предпочитани</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Редактиране\nна групи</text>
+ <text id="IDS_COM_SK_SAVE">Запази</text>
+ <text id="IDS_PB_BODY_PROVINCE">Област</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Изпращане на визитка</text>
+ <text id="IDS_COM_POP_ADDED">Добавен</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Видео разговор</text>
+ <text id="IDS_PB_BODY_HOME">Дом</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Невалиден формат</text>
+ <text id="IDS_PB_BODY_NOTE">Бележка</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Настройки за тел. указател</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ред за показване на имената</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Изтриване на записи...</text>
+ <text id="IDS_PB_BODY_STREET">Улица</text>
+ <text id="IDS_PB_BODY_NUMBER">Номер</text>
+ <text id="IDS_PB_HEADER_DETAILS">Детайли</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Отхвърляне на промените?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Пощенски код</text>
+ <text id="IDS_COM_BODY_REMOVE">Премаxване</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Факс (домашен)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Първо собственото име</text>
+ <text id="IDS_PB_BODY_DEFAULT">По подразбиране</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Име на група</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grups</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nom</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Càrrec</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversari</text>
+ <text id="IDS_COM_POP_CLOSE">Tancar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Seleccioni-ho tot</text>
+ <text id="IDS_COM_POP_DELETE_Q">Esborrar?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Afegir als preferits</text>
+ <text id="IDS_PB_BODY_PHONE">Telèfon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Missatge</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Cognoms</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Desar contacte a</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Telèfon (Feina)</text>
+ <text id="IDS_PB_SK_CANCEL">Cancel·lar</text>
+ <text id="IDS_COM_SK_NEW">Nou</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segon nom</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar com a correu electrònic predeterminat</text>
+ <text id="IDS_PB_BODY_OTHER">Altres</text>
+ <text id="IDS_COM_POP_REMOVED">Eliminat</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Companys de feina</text>
+ <text id="IDS_COM_POP_SUCCESS">Correcte</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Natalici</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Tots els contactes</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">No assignat</text>
+ <text id="IDS_COM_SK_DONE">Finalit.</text>
+ <text id="IDS_PB_BODY_MOBILE">Mòbil</text>
+ <text id="IDS_COM_BODY_EMAIL">Correu electrònic</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Emmagatzematge de dispositiu ple</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleccionar grup</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Número no vàlid</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Af membre</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">No hi ha contactes</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eliminar foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Abans el cognom</text>
+ <text id="IDS_PB_OPT_VIEW">Veure</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Data de naixement no vàlida</text>
+ <text id="IDS_PB_BODY_WORK">Feina</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Adreça correu electrònic no vàlida</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Sense Grup</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Afegir a contactes</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar com a número predeterminat</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Més informació</text>
+ <text id="IDS_COM_POP_SELECTED">Seleccionat</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Buit</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fer una foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nou grup</text>
+ <text id="IDS_COM_SK_DELETE">Esborrar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Feina)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Melodia</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amics</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adreça</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Sense preferits</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contactes</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleccionar contactes</text>
+ <text id="IDS_PB_BODY_PAGER">Cercapersones</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Fitxer no vàlid</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Missatgeria instantània</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mòbil (Casa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Cercar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ja s'està utilitzant aquest nom de grup</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Família</text>
+ <text id="IDS_PB_BODY_CITY">Ciutat</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nom</text>
+ <text id="IDS_COM_BODY_CREATE">Crear</text>
+ <text id="IDS_PB_BODY_NICKNAME">Sobrenom</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departament</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufix</text>
+ <text id="IDS_COM_BODY_CALL">Trucar</text>
+ <text id="IDS_COM_BODY_SETTINGS">Ajustaments</text>
+ <text id="IDS_COM_POP_UNKNOWN">Desconegut</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Desar contacte?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Preferits</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar grups</text>
+ <text id="IDS_COM_SK_SAVE">Desar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Província</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar targeta de visita</text>
+ <text id="IDS_COM_POP_ADDED">Afegit</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videotrucada</text>
+ <text id="IDS_PB_BODY_HOME">Pers.</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Format no vàlid</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Ajustaments de contactes</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordre de nom que apareixerà a la pantalla</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">S'estan esborrant els contactes...</text>
+ <text id="IDS_PB_BODY_STREET">Carrer</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalls</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Descartar els canvis?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Codi postal</text>
+ <text id="IDS_COM_BODY_REMOVE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Casa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Primer el nom</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predeterminat</text>
+ <text id="IDS_COM_SK_OK">Acceptar</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nom de grup</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Skupiny</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Jméno</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Pracovní zařazení</text>
+ <text id="IDS_PB_BODY_COMPANY">Společnost</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Výročí</text>
+ <text id="IDS_COM_POP_CLOSE">Zavřít</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Vybrat vše</text>
+ <text id="IDS_COM_POP_DELETE_Q">Odstranit?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Přidat do oblíbených položek</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Zpráva</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Příjmení</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Uložit kontakt do</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (práce)</text>
+ <text id="IDS_PB_SK_CANCEL">Zrušit</text>
+ <text id="IDS_COM_SK_NEW">Nový</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Druhé jméno</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Označit jako výchozí e-mail</text>
+ <text id="IDS_PB_BODY_OTHER">Další</text>
+ <text id="IDS_COM_POP_REMOVED">Odstraněno</text>
+ <text id="IDS_PB_BODY_COUNTRY">Země</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Spolupracovníci</text>
+ <text id="IDS_COM_POP_SUCCESS">Dokončeno</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Narozeniny</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Všechny kontakty</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nepřiřazeno</text>
+ <text id="IDS_COM_SK_DONE">Hotovo</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Paměť zařízení je plná</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Vyberte skupinu</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Neplatné číslo</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Př. člena</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Žádné kontakty</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Odstranit fotografii</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Napřed příjmení</text>
+ <text id="IDS_PB_OPT_VIEW">Zobrazit</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Neplatné datum narození</text>
+ <text id="IDS_PB_BODY_WORK">Práce</text>
+ <text id="IDS_COM_SK_EDIT">Upravit</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neplatná e-mailová adresa</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Žádná skupina</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Přidat do Kontaktů</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Označit jako výchozí číslo</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Další informace</text>
+ <text id="IDS_COM_POP_SELECTED">Vybráno</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Prázdné</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografovat</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nová skupina</text>
+ <text id="IDS_COM_SK_DELETE">Odstranit</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (práce)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Zvonění</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Přátelé</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresa</text>
+ <text id="IDS_COM_BODY_COPY">Kopírovat</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Žádné oblíbené</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakty</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Vybrat kontakty</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Neplatný soubor</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Rychlé zasílání zpráv</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (domů)</text>
+ <text id="IDS_COM_BODY_SEARCH">Hledat</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Název skupiny již existuje</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Rodina</text>
+ <text id="IDS_PB_BODY_CITY">Město</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Jméno</text>
+ <text id="IDS_COM_BODY_CREATE">Vytvořit</text>
+ <text id="IDS_PB_BODY_NICKNAME">Přezdívka</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Oddělení</text>
+ <text id="IDS_PB_BODY_SUFFIX">Titul za jménem</text>
+ <text id="IDS_COM_BODY_CALL">Volat</text>
+ <text id="IDS_COM_BODY_SETTINGS">Nastavení</text>
+ <text id="IDS_COM_POP_UNKNOWN">Neznámé</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Uložit kontakt?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Oblíbené</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Upravit skupiny</text>
+ <text id="IDS_COM_SK_SAVE">Uložit</text>
+ <text id="IDS_PB_BODY_PROVINCE">Kraj</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Odeslat vizitku</text>
+ <text id="IDS_COM_POP_ADDED">Přidáno</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videohovor</text>
+ <text id="IDS_PB_BODY_HOME">Domů</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Chybný formát</text>
+ <text id="IDS_PB_BODY_NOTE">Poznámka</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Nastavení kontaktů</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Pořadí zobrazení jména</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Odstraňování kontaktů...</text>
+ <text id="IDS_PB_BODY_STREET">Ulice</text>
+ <text id="IDS_PB_BODY_NUMBER">Číslo</text>
+ <text id="IDS_PB_HEADER_DETAILS">Podrobnosti</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Zrušit změny?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">PSČ</text>
+ <text id="IDS_COM_BODY_REMOVE">Odstranit</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (domů)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Napřed křestní jméno</text>
+ <text id="IDS_PB_BODY_DEFAULT">Výchozí</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Název skupiny</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupper</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Fornavn</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Jobtitel</text>
+ <text id="IDS_PB_BODY_COMPANY">Firma</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Mærkedag</text>
+ <text id="IDS_COM_POP_CLOSE">Luk</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Vælg alle</text>
+ <text id="IDS_COM_POP_DELETE_Q">Slet?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Føj til favoritter</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Meddelelse</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Efternavn</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Gem kontakt på</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (arbejde)</text>
+ <text id="IDS_PB_SK_CANCEL">Annullér</text>
+ <text id="IDS_COM_SK_NEW">Ny</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Mellemnavn</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Markér som standard-e-mail</text>
+ <text id="IDS_PB_BODY_OTHER">Anden</text>
+ <text id="IDS_COM_POP_REMOVED">Fjernet</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Kolleger</text>
+ <text id="IDS_COM_POP_SUCCESS">Fuldført</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Fødselsdag</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Alle kontakter</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Ikke tildelt</text>
+ <text id="IDS_COM_SK_DONE">Udført</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Enhedslager fuldt</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Vælg gruppe</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Ugyldigt nummer</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Tilf medl</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ingen kontakter</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Fjern billede</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Først efternavn</text>
+ <text id="IDS_PB_OPT_VIEW">Vis</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Ugyldig fødselsdato</text>
+ <text id="IDS_PB_BODY_WORK">Arbejde</text>
+ <text id="IDS_COM_SK_EDIT">Redigér</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ugyldig e-mailadresse</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ingen gruppe</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Føj til kontakter</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Markér som standardnummer</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Flere oplysninger</text>
+ <text id="IDS_COM_POP_SELECTED">Valgte</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tom</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Tag et billede</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Ny gruppe</text>
+ <text id="IDS_COM_SK_DELETE">Slet</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (arbejde)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringetone</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Venner</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresse</text>
+ <text id="IDS_COM_BODY_COPY">Kopiér</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ingen favoritter</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakter</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Vælg kontakter</text>
+ <text id="IDS_PB_BODY_PAGER">Personsøger</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Ugyldig fil</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Chat</text>
+ <text id="IDS_COM_BODY_GALLERY">Galleri</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (privat)</text>
+ <text id="IDS_COM_BODY_SEARCH">Søg</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Gruppenavnet bruges allerede</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familie</text>
+ <text id="IDS_PB_BODY_CITY">By</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Navn</text>
+ <text id="IDS_COM_BODY_CREATE">Opret</text>
+ <text id="IDS_PB_BODY_NICKNAME">Kaldenavn</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Afdeling</text>
+ <text id="IDS_PB_BODY_SUFFIX">Titel</text>
+ <text id="IDS_COM_BODY_CALL">Opkald</text>
+ <text id="IDS_COM_BODY_SETTINGS">Indstillinger</text>
+ <text id="IDS_COM_POP_UNKNOWN">Ukendt</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Gem kontakt?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoritter</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Redigér grupper</text>
+ <text id="IDS_COM_SK_SAVE">Gem</text>
+ <text id="IDS_PB_BODY_PROVINCE">Region</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Send visitkort</text>
+ <text id="IDS_COM_POP_ADDED">Tilføjet</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videoopkald</text>
+ <text id="IDS_PB_BODY_HOME">Hjem</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Ugyldigt format</text>
+ <text id="IDS_PB_BODY_NOTE">Bemærkning</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontaktindstillinger</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Rækkefølge for visningsnavn</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Sletter kontakter...</text>
+ <text id="IDS_PB_BODY_STREET">Vej</text>
+ <text id="IDS_PB_BODY_NUMBER">Nummer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detaljer</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Annullér ændringer?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postnummer</text>
+ <text id="IDS_COM_BODY_REMOVE">Fjern</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (privat)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Først fornavn</text>
+ <text id="IDS_PB_BODY_DEFAULT">Standard</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Gruppenavn</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Gruppen</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Vorname</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Beruf</text>
+ <text id="IDS_PB_BODY_COMPANY">Firma</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Jahrestag</text>
+ <text id="IDS_COM_POP_CLOSE">Schließen</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Alle auswählen</text>
+ <text id="IDS_COM_POP_DELETE_Q">Löschen?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Zu Favoriten hinzufügen</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Nachricht</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Nachname</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kontakt speichern in</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (Arbeit)</text>
+ <text id="IDS_PB_SK_CANCEL">Abbrechen</text>
+ <text id="IDS_COM_SK_NEW">Neu</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Zweiter Vorname</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Als Standard-E-Mail markieren</text>
+ <text id="IDS_PB_BODY_OTHER">Andere</text>
+ <text id="IDS_COM_POP_REMOVED">Entfernt</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Arbeitskollege</text>
+ <text id="IDS_COM_POP_SUCCESS">Abgeschlossen</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Geburtstag</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Alle Kontakte</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nicht zugewiesen</text>
+ <text id="IDS_COM_SK_DONE">OK</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-Mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Der Gerätespeicher ist voll.</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Gruppe auswählen</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Ungültige Nummer</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Mitglied hzfg.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Keine Kontakte</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Foto entfernen</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Nachname zuerst</text>
+ <text id="IDS_PB_OPT_VIEW">Anzeigen</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Ungültiges Geburtsdatum</text>
+ <text id="IDS_PB_BODY_WORK">Arbeit</text>
+ <text id="IDS_COM_SK_EDIT">Bearbeiten</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ungültige E-Mail-Adresse</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Keine Gruppe</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Zu Kontakten hinzufügen</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Als Standardnummer markieren</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Weitere Informationen</text>
+ <text id="IDS_COM_POP_SELECTED">Ausgewählt</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Leer</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Foto aufnehmen</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Neue Gruppe</text>
+ <text id="IDS_COM_SK_DELETE">Löschen</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Arbeit)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Klingelton</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Freunde</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresse</text>
+ <text id="IDS_COM_BODY_COPY">Kopieren</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Keine Favoriten</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakte</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Kontakte auswählen</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Datei ungültig</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant Messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (Privat)</text>
+ <text id="IDS_COM_BODY_SEARCH">Suche</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Gruppenname wird bereits verwendet</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familie</text>
+ <text id="IDS_PB_BODY_CITY">Stadt</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Name</text>
+ <text id="IDS_COM_BODY_CREATE">Erstellen</text>
+ <text id="IDS_PB_BODY_NICKNAME">Spitzname</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Abteilung</text>
+ <text id="IDS_PB_BODY_SUFFIX">Namenszusatz</text>
+ <text id="IDS_COM_BODY_CALL">Anruf</text>
+ <text id="IDS_COM_BODY_SETTINGS">Einstellungen</text>
+ <text id="IDS_COM_POP_UNKNOWN">Unbekannt</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Kontakt speichern?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoriten</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Gruppen\nbearbeiten</text>
+ <text id="IDS_COM_SK_SAVE">Speichern</text>
+ <text id="IDS_PB_BODY_PROVINCE">Region</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Visitenkarte senden</text>
+ <text id="IDS_COM_POP_ADDED">Hinzugefügt</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videoanruf</text>
+ <text id="IDS_PB_BODY_HOME">Privat</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Ungültiges Format</text>
+ <text id="IDS_PB_BODY_NOTE">Memo</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontakteinstellungen</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Reihenfolge des Anzeigenamens</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kontakte werden gelöscht...</text>
+ <text id="IDS_PB_BODY_STREET">Straße</text>
+ <text id="IDS_PB_BODY_NUMBER">Nummer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Details</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Änderungen verwerfen?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postleitzahl</text>
+ <text id="IDS_COM_BODY_REMOVE">Entfernen</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Privat)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Vorname zuerst</text>
+ <text id="IDS_PB_BODY_DEFAULT">Standard</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Gruppenname</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Ομάδες</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Όνομα</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Τίτλος εργασίας</text>
+ <text id="IDS_PB_BODY_COMPANY">Εταιρεία</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Επέτειος</text>
+ <text id="IDS_COM_POP_CLOSE">Κλείσιμο</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Επιλογή όλων</text>
+ <text id="IDS_COM_POP_DELETE_Q">Διαγραφή;</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Προσθήκη στα αγαπημένα</text>
+ <text id="IDS_PB_BODY_PHONE">Τηλέφωνο</text>
+ <text id="IDS_COM_BODY_MESSAGE">Μήνυμα</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Επώνυμο</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Αποθήκευση επαφής σε</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Κινητό (Εργασία)</text>
+ <text id="IDS_PB_SK_CANCEL">Άκυρο</text>
+ <text id="IDS_COM_SK_NEW">Νέο</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Πατρώνυμο</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Σήμανση ως προεπιλεγμένης διεύθυνσης ηλεκτρονικού ταχυδρομείου</text>
+ <text id="IDS_PB_BODY_OTHER">Άλλο</text>
+ <text id="IDS_COM_POP_REMOVED">Αφαιρέθηκε</text>
+ <text id="IDS_PB_BODY_COUNTRY">Χώρα</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Συνεργάτες</text>
+ <text id="IDS_COM_POP_SUCCESS">Ολοκληρώθηκε</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Γενέθλια</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Όλες οι επαφές</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Δεν έχει αντιστοιχηθεί</text>
+ <text id="IDS_COM_SK_DONE">Ok</text>
+ <text id="IDS_PB_BODY_MOBILE">Κινητό</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Ο χώρος αποθήκευσης της συσκευής είναι πλήρης</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Επιλογή ομάδας</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Μη έγκυρος αριθμός</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Πρ.μέλους</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Καμία επαφή</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Κατάργηση φωτογραφίας</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Πρώτα το επίθετο</text>
+ <text id="IDS_PB_OPT_VIEW">Προβολή</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Μη έγκυρη ημερομηνία γέννησης</text>
+ <text id="IDS_PB_BODY_WORK">Εργασία</text>
+ <text id="IDS_COM_SK_EDIT">Επεξεργ.</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Μη έγκυρη διεύθυνση email</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Καμία ομάδα</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Προσθήκη στις Επαφές</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Ορισμός ως προεπιλεγμένου αριθμού</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Περισσότερες πληροφορίες</text>
+ <text id="IDS_COM_POP_SELECTED">Επιλεγμένο</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Κενό</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Λήψη φωτογραφίας</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Νέα ομάδα</text>
+ <text id="IDS_COM_SK_DELETE">Διαγραφή</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Φαξ (Εργασία)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ήχος κλήσης</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Φίλοι</text>
+ <text id="IDS_PB_BODY_ADDRESS">Διεύθυνση</text>
+ <text id="IDS_COM_BODY_COPY">Αντιγραφή</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Δεν υπάρχουν αγαπημένα</text>
+ <text id="IDS_COM_BODY_CONTACTS">Επαφές</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Επιλογή επαφών</text>
+ <text id="IDS_PB_BODY_PAGER">Συσκευή τηλεειδοποίησης</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Άκυρο αρχείο</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Άμεσα μηνύματα</text>
+ <text id="IDS_COM_BODY_GALLERY">Συλλογή</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Προσωπικό κινητό</text>
+ <text id="IDS_COM_BODY_SEARCH">Αναζήτηση</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Το όνομα ομάδας υπάρχει ήδη</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Οικογένεια</text>
+ <text id="IDS_PB_BODY_CITY">Πόλη</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Όνομα</text>
+ <text id="IDS_COM_BODY_CREATE">Δημ/ργία</text>
+ <text id="IDS_PB_BODY_NICKNAME">Υποκοριστικό</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Τμήμα</text>
+ <text id="IDS_PB_BODY_SUFFIX">Επίθημα</text>
+ <text id="IDS_COM_BODY_CALL">Κλήση</text>
+ <text id="IDS_COM_BODY_SETTINGS">Ρυθμίσεις</text>
+ <text id="IDS_COM_POP_UNKNOWN">Άγνωστο</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Αποθήκευση επαφής;</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Αγαπημένα</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Επεξεργασία\n ομάδων</text>
+ <text id="IDS_COM_SK_SAVE">Αποθ/ση</text>
+ <text id="IDS_PB_BODY_PROVINCE">Επαρχία</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Αποστολή επαγγελματικής κάρτας</text>
+ <text id="IDS_COM_POP_ADDED">Προστέθηκε</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Κλήση βίντεο</text>
+ <text id="IDS_PB_BODY_HOME">Σπίτι</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Μη έγκυρη μορφή</text>
+ <text id="IDS_PB_BODY_NOTE">Σημείωση</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Ρυθμίσεις επαφών</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Σειρά εμφανιζόμενου ονόματος</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Διαγραφή επαφών...</text>
+ <text id="IDS_PB_BODY_STREET">Οδός</text>
+ <text id="IDS_PB_BODY_NUMBER">Αριθμός</text>
+ <text id="IDS_PB_HEADER_DETAILS">Λεπτομέρειες</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Απόρριψη αλλαγών;</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Ταχυδρομικός κώδικας</text>
+ <text id="IDS_COM_BODY_REMOVE">Κατάργηση</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Φαξ (Οικίας)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Πρώτα το όνομα</text>
+ <text id="IDS_PB_BODY_DEFAULT">Προεπιλογή</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Όνομα ομάδας</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groups</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">First name</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Job title</text>
+ <text id="IDS_PB_BODY_COMPANY">Company</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Anniversary</text>
+ <text id="IDS_COM_POP_CLOSE">Close</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Select all</text>
+ <text id="IDS_COM_POP_DELETE_Q">Delete?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Add to favorites</text>
+ <text id="IDS_PB_BODY_PHONE">Phone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Message</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Last name</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Save contact to</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobile (work)</text>
+ <text id="IDS_PB_SK_CANCEL">Cancel</text>
+ <text id="IDS_COM_SK_NEW">New</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Middle name</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Mark as default email</text>
+ <text id="IDS_PB_BODY_OTHER">Other</text>
+ <text id="IDS_COM_POP_REMOVED">Removed</text>
+ <text id="IDS_PB_BODY_COUNTRY">Country</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Co-workers</text>
+ <text id="IDS_COM_POP_SUCCESS">Success</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Birthday</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">All contacts</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Not assigned</text>
+ <text id="IDS_COM_SK_DONE">Done</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobile</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Device storage full</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Select group</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Invalid number</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Add member</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">No contacts</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Remove photo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Last name first</text>
+ <text id="IDS_PB_OPT_VIEW">View</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Invalid date of birth</text>
+ <text id="IDS_PB_BODY_WORK">Work</text>
+ <text id="IDS_COM_SK_EDIT">Edit</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Invalid email address</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">No group</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Add to Contacts</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Mark as default number</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">More information</text>
+ <text id="IDS_COM_POP_SELECTED">Selected</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Empty</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Take a photo</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">New group</text>
+ <text id="IDS_COM_SK_DELETE">Delete</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (work)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringtone</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Friends</text>
+ <text id="IDS_PB_BODY_ADDRESS">Address</text>
+ <text id="IDS_COM_BODY_COPY">Copy</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">No favourites</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Select contacts</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Invalid file</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Gallery</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobile (home)</text>
+ <text id="IDS_COM_BODY_SEARCH">Search</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Group name already in use</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Family</text>
+ <text id="IDS_PB_BODY_CITY">City</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Name</text>
+ <text id="IDS_COM_BODY_CREATE">Create</text>
+ <text id="IDS_PB_BODY_NICKNAME">Nickname</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Department</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffix</text>
+ <text id="IDS_COM_BODY_CALL">Call</text>
+ <text id="IDS_COM_BODY_SETTINGS">Settings</text>
+ <text id="IDS_COM_POP_UNKNOWN">Unknown</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Save contact?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favourites</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Edit groups</text>
+ <text id="IDS_COM_SK_SAVE">Save</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Send namecard</text>
+ <text id="IDS_COM_POP_ADDED">Added</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video call</text>
+ <text id="IDS_PB_BODY_HOME">Home</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Invalid format</text>
+ <text id="IDS_PB_BODY_NOTE">Note</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contact settings</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Order of display name</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Deleting contacts...</text>
+ <text id="IDS_PB_BODY_STREET">Street</text>
+ <text id="IDS_PB_BODY_NUMBER">Number</text>
+ <text id="IDS_PB_HEADER_DETAILS">Details</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Discard changes?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postal code</text>
+ <text id="IDS_COM_BODY_REMOVE">Remove</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (home)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">First name first</text>
+ <text id="IDS_PB_BODY_DEFAULT">Default</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Group name</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groups</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">First name</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Job title</text>
+ <text id="IDS_PB_BODY_COMPANY">Company</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Anniversary</text>
+ <text id="IDS_COM_POP_CLOSE">Close</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Select all</text>
+ <text id="IDS_COM_POP_DELETE_Q">Delete?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Add to favorites</text>
+ <text id="IDS_PB_BODY_PHONE">Phone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Message</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Last name</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Save contact to</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobile (Work)</text>
+ <text id="IDS_PB_SK_CANCEL">Cancel</text>
+ <text id="IDS_COM_SK_NEW">New</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Middle name</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Mark as default email</text>
+ <text id="IDS_PB_BODY_OTHER">Other</text>
+ <text id="IDS_COM_POP_REMOVED">Removed</text>
+ <text id="IDS_PB_BODY_COUNTRY">Country</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Co-workers</text>
+ <text id="IDS_COM_POP_SUCCESS">Success</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Birthday</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">All contacts</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Not assigned</text>
+ <text id="IDS_COM_SK_DONE">Done</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobile</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Device storage full</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Select group</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Invalid number</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Add member</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">No contacts</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Remove photo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Last name first</text>
+ <text id="IDS_PB_OPT_VIEW">View</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Invalid date of birth</text>
+ <text id="IDS_PB_BODY_WORK">Work</text>
+ <text id="IDS_COM_SK_EDIT">Edit</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Invalid Email address</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">No Group</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Add to contacts</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Mark as default number</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">More information</text>
+ <text id="IDS_COM_POP_SELECTED">Selected</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Empty</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Take a photo</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">New group</text>
+ <text id="IDS_COM_SK_DELETE">Delete</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Work)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringtone</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Friends</text>
+ <text id="IDS_PB_BODY_ADDRESS">Address</text>
+ <text id="IDS_COM_BODY_COPY">Copy</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">No favorites</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Select contacts</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Invalid file</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Gallery</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobile (Home)</text>
+ <text id="IDS_COM_BODY_SEARCH">Search</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Group name already in use</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Family</text>
+ <text id="IDS_PB_BODY_CITY">City</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Name</text>
+ <text id="IDS_COM_BODY_CREATE">Create</text>
+ <text id="IDS_PB_BODY_NICKNAME">Nickname</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Department</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffix</text>
+ <text id="IDS_COM_BODY_CALL">Call</text>
+ <text id="IDS_COM_BODY_SETTINGS">Settings</text>
+ <text id="IDS_COM_POP_UNKNOWN">Unknown</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Save contact?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favorites</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Edit groups</text>
+ <text id="IDS_COM_SK_SAVE">Save</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Send namecard</text>
+ <text id="IDS_COM_POP_ADDED">Added</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video call</text>
+ <text id="IDS_PB_BODY_HOME">Home</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Invalid format</text>
+ <text id="IDS_PB_BODY_NOTE">Note</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contact settings</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Order of display name</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Deleting contacts...</text>
+ <text id="IDS_PB_BODY_STREET">Street</text>
+ <text id="IDS_PB_BODY_NUMBER">Number</text>
+ <text id="IDS_PB_HEADER_DETAILS">Details</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Discard changes?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postal code</text>
+ <text id="IDS_COM_BODY_REMOVE">Remove</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Home)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">First name first</text>
+ <text id="IDS_PB_BODY_DEFAULT">Default</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Group name</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">Web address</text>
+ <text id="IDS_PB_BODY_GROUPS">Groups</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">First name</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Job title</text>
+ <text id="IDS_PB_BODY_COMPANY">Company</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Anniversary</text>
+ <text id="IDS_COM_POP_CLOSE">Close</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Select all</text>
+ <text id="IDS_COM_POP_DELETE_Q">Delete?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Add to Favorites</text>
+ <text id="IDS_PB_BODY_PHONE">Phone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Message</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Last name</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Save contact to</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobile (Work)</text>
+ <text id="IDS_PB_SK_CANCEL">Cancel</text>
+ <text id="IDS_COM_SK_NEW">New</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Middle name</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Mark as default email</text>
+ <text id="IDS_PB_BODY_OTHER">Other</text>
+ <text id="IDS_COM_POP_REMOVED">Removed</text>
+ <text id="IDS_PB_BODY_COUNTRY">Country</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Co-workers</text>
+ <text id="IDS_COM_POP_SUCCESS">Success</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Birthday</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">All contacts</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Not assigned</text>
+ <text id="IDS_COM_SK_DONE">Done</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobile</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Device storage full</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Select group</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Invalid number</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Add member</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">No contacts</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Remove photo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Last name first</text>
+ <text id="IDS_PB_OPT_VIEW">View</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Invalid date of birth</text>
+ <text id="IDS_PB_BODY_WORK">Work</text>
+ <text id="IDS_COM_SK_EDIT">Edit</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Invalid email address</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">No group</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Add to contacts</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Mark as default number</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">More information</text>
+ <text id="IDS_COM_POP_SELECTED">Selected</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Empty</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Take a photo</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">New group</text>
+ <text id="IDS_COM_SK_DELETE">Delete</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Work)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringtone</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Friends</text>
+ <text id="IDS_PB_BODY_ADDRESS">Address</text>
+ <text id="IDS_COM_BODY_COPY">Copy</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">No favorites</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Select contacts</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Invalid file</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Gallery</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobile (Home)</text>
+ <text id="IDS_COM_BODY_SEARCH">Search</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Group name already in use</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Family</text>
+ <text id="IDS_PB_BODY_CITY">city</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Name</text>
+ <text id="IDS_COM_BODY_CREATE">Create</text>
+ <text id="IDS_PB_BODY_NICKNAME">Nickname</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Department</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffix</text>
+ <text id="IDS_COM_BODY_CALL">Call</text>
+ <text id="IDS_COM_BODY_SETTINGS">Settings</text>
+ <text id="IDS_COM_POP_UNKNOWN">Unknown</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Save contact?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favorites</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Edit groups</text>
+ <text id="IDS_COM_SK_SAVE">Save</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Send namecard</text>
+ <text id="IDS_COM_POP_ADDED">Added</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video call</text>
+ <text id="IDS_PB_BODY_HOME">Home</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Invalid format</text>
+ <text id="IDS_PB_BODY_NOTE">Note</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contact settings</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Order of display name</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Deleting contacts...</text>
+ <text id="IDS_PB_BODY_STREET">Street</text>
+ <text id="IDS_PB_BODY_NUMBER">Number</text>
+ <text id="IDS_PB_HEADER_DETAILS">Details</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Discard changes?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postal code</text>
+ <text id="IDS_COM_BODY_REMOVE">Remove</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Home)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">First name first</text>
+ <text id="IDS_PB_BODY_DEFAULT">Default</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Group name</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Rühmad</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Eesnimi</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Ametinimetus</text>
+ <text id="IDS_PB_BODY_COMPANY">Ettevõte</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Tähtpäev</text>
+ <text id="IDS_COM_POP_CLOSE">Sulge</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Vali kõik</text>
+ <text id="IDS_COM_POP_DELETE_Q">Kustutada?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Lisa lemmikutesse</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Sõnum</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Perekonnanimi</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kontakti salvestuskoht:</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobiil (töö)</text>
+ <text id="IDS_PB_SK_CANCEL">Tühista</text>
+ <text id="IDS_COM_SK_NEW">Uus</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Keskmine nimi</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Märgi vaikimisi e-postiks</text>
+ <text id="IDS_PB_BODY_OTHER">Muu</text>
+ <text id="IDS_COM_POP_REMOVED">Eemaldatud</text>
+ <text id="IDS_PB_BODY_COUNTRY">Riik</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Kaastöötajad</text>
+ <text id="IDS_COM_POP_SUCCESS">Õnnestus</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Sünnipäev</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Kõik kontaktid</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Pole määratud</text>
+ <text id="IDS_COM_SK_DONE">Valmis</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobiil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-post</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Seadme mälu on täis</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Vali rühm</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Kehtetu number</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Lisa lii.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Kontaktid puuduvad</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eemalda foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Perekonnanimi ees</text>
+ <text id="IDS_PB_OPT_VIEW">Kuva</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Vale sünniaeg</text>
+ <text id="IDS_PB_BODY_WORK">Töö</text>
+ <text id="IDS_COM_SK_EDIT">Muuda</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Vale e-posti aadress</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Rühm puudub</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Lisa kontaktidesse</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Märgi vaikimisi numbriks</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Lisateave</text>
+ <text id="IDS_COM_POP_SELECTED">Valitud</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tühi</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Pildista</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Uus rühm</text>
+ <text id="IDS_COM_SK_DELETE">Kustuta</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (töö)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Helin</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Sõbrad</text>
+ <text id="IDS_PB_BODY_ADDRESS">Aadress</text>
+ <text id="IDS_COM_BODY_COPY">Kopeeri</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Lemmikuid ei ole</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontaktid</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Vali kontaktid</text>
+ <text id="IDS_PB_BODY_PAGER">Piipar</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Lubamatu fail</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Vahetu sõnumside</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerii</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobiil (kodu)</text>
+ <text id="IDS_COM_BODY_SEARCH">Otsi</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Rühma nimi on juba kasutusel</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Perekond</text>
+ <text id="IDS_PB_BODY_CITY">Linn</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nimi</text>
+ <text id="IDS_COM_BODY_CREATE">Loo</text>
+ <text id="IDS_PB_BODY_NICKNAME">Hüüdnimi</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Osakond</text>
+ <text id="IDS_PB_BODY_SUFFIX">Järelliide</text>
+ <text id="IDS_COM_BODY_CALL">Helista</text>
+ <text id="IDS_COM_BODY_SETTINGS">Seaded</text>
+ <text id="IDS_COM_POP_UNKNOWN">Tundmatu</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Salvestada kontakt?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Lemmikud</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Muuda rühmasid</text>
+ <text id="IDS_COM_SK_SAVE">Salvesta</text>
+ <text id="IDS_PB_BODY_PROVINCE">Maakond</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Saada nimekaart</text>
+ <text id="IDS_COM_POP_ADDED">Lisatud</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videokõne</text>
+ <text id="IDS_PB_BODY_HOME">Kodu</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Kehtetu vorming</text>
+ <text id="IDS_PB_BODY_NOTE">Märkus</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontakti seaded</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Kuvanime järjekord</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kontaktide kustutamine...</text>
+ <text id="IDS_PB_BODY_STREET">Tänav</text>
+ <text id="IDS_PB_BODY_NUMBER">Number</text>
+ <text id="IDS_PB_HEADER_DETAILS">Üksikasjad</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Kas tühistada muudatused?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postiindeks</text>
+ <text id="IDS_COM_BODY_REMOVE">Eemalda</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (kodu)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Eesnimi esimesena</text>
+ <text id="IDS_PB_BODY_DEFAULT">Vaikimisi</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Rühma nimi</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URLa</text>
+ <text id="IDS_PB_BODY_GROUPS">Taldeak</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Izena</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Kargua</text>
+ <text id="IDS_PB_BODY_COMPANY">Enpresa</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Urteurrena</text>
+ <text id="IDS_COM_POP_CLOSE">Itxi</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Denak aukeratu</text>
+ <text id="IDS_COM_POP_DELETE_Q">Ezabatu?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Gehitu gogokoetara</text>
+ <text id="IDS_PB_BODY_PHONE">Telefonoa</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mezua</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Abizena</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kontaktua hemen gorde</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mugikorra (lanekoa)</text>
+ <text id="IDS_PB_SK_CANCEL">Ezeztatu</text>
+ <text id="IDS_COM_SK_NEW">Berria</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Bigarren izena</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Markatu lehenetsitako helbide elektroniko gisa</text>
+ <text id="IDS_PB_BODY_OTHER">Besterik</text>
+ <text id="IDS_COM_POP_REMOVED">Kenduta</text>
+ <text id="IDS_PB_BODY_COUNTRY">Herrialdea</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Lankideak</text>
+ <text id="IDS_COM_POP_SUCCESS">Behar bezala</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Urtebetetzea</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Kontaktu guztiak</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Esleitu gabe</text>
+ <text id="IDS_COM_SK_DONE">Amaituta</text>
+ <text id="IDS_PB_BODY_MOBILE">Mugikorra</text>
+ <text id="IDS_COM_BODY_EMAIL">Posta elektroniko mezuak</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Gailuaren memoria beteta</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Taldea aukeratu</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Zenbakiak ez du balio</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Kide geh.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ez dago kontakturik</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Kendu argazkia</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Abizena aurrena</text>
+ <text id="IDS_PB_OPT_VIEW">Ikusi</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Jaiotegun baliogabea</text>
+ <text id="IDS_PB_BODY_WORK">Lana</text>
+ <text id="IDS_COM_SK_EDIT">Editatu</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Helbide elektroniko baliogabea</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Talderik ez</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Kontaktuetara gehitu</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Lehenetsitako zenbakia moduan markatu</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Informazio gehiago</text>
+ <text id="IDS_COM_POP_SELECTED">Aukeratutakoa(k)</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Hutsik</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Argazkia atera</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Talde berria</text>
+ <text id="IDS_COM_SK_DELETE">Ezabatu</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faxa (lanekoa)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Dei doinua</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Lagunak</text>
+ <text id="IDS_PB_BODY_ADDRESS">Helbidea</text>
+ <text id="IDS_COM_BODY_COPY">Kopiatu</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Gogokorik ez</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontaktuak</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Hautatu kontaktuak</text>
+ <text id="IDS_PB_BODY_PAGER">Bilagailua</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Fitxategi baliogabea</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instanteko mezularitza</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mugikorra (etxekoa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Bilatu</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Taldearen izena dagoenek erabileran</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familia</text>
+ <text id="IDS_PB_BODY_CITY">Hiria</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Izena</text>
+ <text id="IDS_COM_BODY_CREATE">Sortu</text>
+ <text id="IDS_PB_BODY_NICKNAME">Ezizena</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Saila</text>
+ <text id="IDS_PB_BODY_SUFFIX">Atzizkia</text>
+ <text id="IDS_COM_BODY_CALL">Deitu</text>
+ <text id="IDS_COM_BODY_SETTINGS">Ezarpenak</text>
+ <text id="IDS_COM_POP_UNKNOWN">Ezezaguna</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Kontaktua gorde?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Gogokoak</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editatu taldeak</text>
+ <text id="IDS_COM_SK_SAVE">Gorde</text>
+ <text id="IDS_PB_BODY_PROVINCE">Probintzia</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Izen txartela bidali</text>
+ <text id="IDS_COM_POP_ADDED">Gehituta</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Bideo-deia</text>
+ <text id="IDS_PB_BODY_HOME">Etxea</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Formatu baliogabea</text>
+ <text id="IDS_PB_BODY_NOTE">Oharra</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontaktuen konfigurazioa</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ezizenen antolaketa</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kontaktuak ezabatzen...</text>
+ <text id="IDS_PB_BODY_STREET">Kalea</text>
+ <text id="IDS_PB_BODY_NUMBER">Zenbakia</text>
+ <text id="IDS_PB_HEADER_DETAILS">Xehetasunak</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Aldaketaz ezeztatzea nahi duzu?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Posta kodea</text>
+ <text id="IDS_COM_BODY_REMOVE">Kendu</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faxa (etxekoa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Izena lehenago</text>
+ <text id="IDS_PB_BODY_DEFAULT">Lehenetsia</text>
+ <text id="IDS_COM_SK_OK">Ados</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Talde izena</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201305162056" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">آدرس</text>
+ <text id="IDS_PB_BODY_GROUPS">گروه ها</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">اسم کوچک</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">سالگرد</text>
+ <text id="IDS_PB_BODY_COMPANY">شرکت</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">عنوان کاری</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">انتخاب همه</text>
+ <text id="IDS_COM_POP_CLOSE">بسته</text>
+ <text id="IDS_COM_POP_DELETE_Q">حذف شود؟</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">افزودن به موارد دلخواه</text>
+ <text id="IDS_PB_BODY_PHONE">دستگاه</text>
+ <text id="IDS_COM_BODY_MESSAGE">پيام</text>
+ <text id="IDS_PB_BODY_LAST_NAME">نام خانوادگی</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">ثبت تماس در</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">موبایل (محل کار)</text>
+ <text id="IDS_COM_SK_NEW">جدید</text>
+ <text id="IDS_PB_SK_CANCEL">لغو</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">نام میانی</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">علامتگذاری به عنوان ایمیل پیش فرض</text>
+ <text id="IDS_PB_BODY_OTHER">متفرقه</text>
+ <text id="IDS_COM_POP_REMOVED">حذف شد</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">همکاران</text>
+ <text id="IDS_COM_POP_SUCCESS">موفقیت</text>
+ <text id="IDS_PB_BODY_COUNTRY">کشور</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">تولد</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">همه تماس ها</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">تعیین نشده</text>
+ <text id="IDS_COM_SK_DONE">انجام</text>
+ <text id="IDS_PB_BODY_MOBILE">موبايل</text>
+ <text id="IDS_COM_BODY_EMAIL">ایمیل</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">حافظه دستگاه پر است</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">انتخاب گروه</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">شماره نامعتبر است</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">افزودن عضو</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">فاقد مخاطب</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">حذف عکس</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">ابتدا نام خانوادگی</text>
+ <text id="IDS_PB_OPT_VIEW">نمايش</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">تاریخ تولد اشتباه است</text>
+ <text id="IDS_PB_BODY_WORK">کار</text>
+ <text id="IDS_COM_SK_EDIT">تصحيح</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">آدرس ایمیل نامعتبر</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">گروهی موجود نیست</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">افزودن به مخاطبین</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">انتخاب برای شماره پیش فرض</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">اطلاعات بيشتر</text>
+ <text id="IDS_COM_POP_SELECTED">انتخاب شد</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">خالی</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">گرفتن عکس</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">گروه جدید</text>
+ <text id="IDS_COM_SK_DELETE">حذف</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">نمابر (محل کار)</text>
+ <text id="IDS_PB_BODY_RINGTONE">زنگ تماس</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">دوستان</text>
+ <text id="IDS_COM_BODY_COPY">کپی</text>
+ <text id="IDS_PB_BODY_ADDRESS">آدرس</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">موارد علاقه وجود ندارد</text>
+ <text id="IDS_COM_BODY_CONTACTS">دفتر تلفن</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">انتخاب مخاطبین</text>
+ <text id="IDS_PB_BODY_PAGER">پیجو</text>
+ <text id="IDS_MP_POP_INVALID_FILE">فايل اشتباه</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">پيام رسان فوری</text>
+ <text id="IDS_COM_BODY_GALLERY">گالری</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">تلفن همراه (منزل)</text>
+ <text id="IDS_COM_BODY_SEARCH">جستجو</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">نام گروه موجود است</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">خانواده</text>
+ <text id="IDS_PB_BODY_CITY">شهر</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">نام</text>
+ <text id="IDS_COM_BODY_CREATE">ايجاد</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">اداره</text>
+ <text id="IDS_PB_BODY_NICKNAME">نام مستعار</text>
+ <text id="IDS_COM_BODY_CALL">تماس</text>
+ <text id="IDS_PB_BODY_SUFFIX">پسوند</text>
+ <text id="IDS_COM_BODY_SETTINGS">تنظيمات</text>
+ <text id="IDS_COM_POP_UNKNOWN">ناشناس</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">موارد دلخواه</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">ذخیره تماس؟</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">ویرایش گروه ها</text>
+ <text id="IDS_COM_SK_SAVE">ثبت</text>
+ <text id="IDS_PB_BODY_PROVINCE">استان</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">مکالمه تصویری</text>
+ <text id="IDS_COM_POP_ADDED">اضافه شد</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">ارسال کارت نام</text>
+ <text id="IDS_PB_BODY_HOME">منزل</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">تركيب اشتباه</text>
+ <text id="IDS_PB_BODY_NOTE">یادداشت</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">تنظيمات نام</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">ترتیب نمایش نام</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">در حال حذف مخاطبین...</text>
+ <text id="IDS_PB_BODY_NUMBER">شماره</text>
+ <text id="IDS_PB_BODY_STREET">خیابان</text>
+ <text id="IDS_PB_HEADER_DETAILS">جزئيات</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">کدپستی</text>
+ <text id="IDS_COM_BODY_REMOVE">حذف</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">نمابر (منزل)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">ابتدا نام</text>
+ <text id="IDS_COM_SK_OK">تاييد</text>
+ <text id="IDS_PB_BODY_DEFAULT">پيش فرض</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">نام گروه</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL-osoite</text>
+ <text id="IDS_PB_BODY_GROUPS">Ryhmät</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Etunimi</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Työtehtävä</text>
+ <text id="IDS_PB_BODY_COMPANY">Yritys</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Vuosipäivä</text>
+ <text id="IDS_COM_POP_CLOSE">Sulje</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Valitse kaikki</text>
+ <text id="IDS_COM_POP_DELETE_Q">Poistetaanko?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Lisää suosikkeihin</text>
+ <text id="IDS_PB_BODY_PHONE">Puhelin</text>
+ <text id="IDS_COM_BODY_MESSAGE">Viesti</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Sukunimi</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Tallenna yhteystieto kohteeseen</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Matkapuhelin (työ)</text>
+ <text id="IDS_PB_SK_CANCEL">Peruuta</text>
+ <text id="IDS_COM_SK_NEW">Uusi</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Toinen nimi</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Merkitse oletussähköpostiksi</text>
+ <text id="IDS_PB_BODY_OTHER">Muu</text>
+ <text id="IDS_COM_POP_REMOVED">Poistettu</text>
+ <text id="IDS_PB_BODY_COUNTRY">Maa</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Työtoverit</text>
+ <text id="IDS_COM_POP_SUCCESS">Valmis</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Syntymäpäivä</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Kaikki yhteystiedot</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Ei määritelty</text>
+ <text id="IDS_COM_SK_DONE">Valmis</text>
+ <text id="IDS_PB_BODY_MOBILE">Matkapuhelin</text>
+ <text id="IDS_COM_BODY_EMAIL">Sähköposti</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Laitteen muisti on täynnä</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Valitse ryhmä</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Virheellinen numero</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">L. jäsen</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ei yhteystietoja</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Poista valokuva</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Sukunimi ensin</text>
+ <text id="IDS_PB_OPT_VIEW">Näytä</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Virheellinen syntymäaika</text>
+ <text id="IDS_PB_BODY_WORK">Työ</text>
+ <text id="IDS_COM_SK_EDIT">Muokkaa</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Virheellinen sähköpostiosoite</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ei ryhmää</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Lisää yhteystietoihin</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Merkitse oletusnumeroksi</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Lisätietoja</text>
+ <text id="IDS_COM_POP_SELECTED">Valittu</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tyhjä</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Ota valokuva</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Uusi ryhmä</text>
+ <text id="IDS_COM_SK_DELETE">Poista</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faksi (työ)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Soittoääni</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Ystävät</text>
+ <text id="IDS_PB_BODY_ADDRESS">Osoite</text>
+ <text id="IDS_COM_BODY_COPY">Kopioi</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ei suosikkeja</text>
+ <text id="IDS_COM_BODY_CONTACTS">Yhteystiedot</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Valitse yhteystiedot</text>
+ <text id="IDS_PB_BODY_PAGER">Hakulaite</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Virheellinen tiedosto</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Pikaviestin</text>
+ <text id="IDS_COM_BODY_GALLERY">Galleria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Matkapuhelin (koti)</text>
+ <text id="IDS_COM_BODY_SEARCH">Etsi</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ryhmän nimi on jo käytössä</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Perhe</text>
+ <text id="IDS_PB_BODY_CITY">Kaupunki</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nimi</text>
+ <text id="IDS_COM_BODY_CREATE">Luo</text>
+ <text id="IDS_PB_BODY_NICKNAME">Lempinimi</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Osasto</text>
+ <text id="IDS_PB_BODY_SUFFIX">Pääte</text>
+ <text id="IDS_COM_BODY_CALL">Puhelu</text>
+ <text id="IDS_COM_BODY_SETTINGS">Asetukset</text>
+ <text id="IDS_COM_POP_UNKNOWN">Tuntematon</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Tallennetaanko yhteystieto?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Suosikit</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Muokkaa\nryhmiä</text>
+ <text id="IDS_COM_SK_SAVE">Tallenna</text>
+ <text id="IDS_PB_BODY_PROVINCE">Maakunta</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Lähetä käyntikortti</text>
+ <text id="IDS_COM_POP_ADDED">Lisätty</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videopuhelu</text>
+ <text id="IDS_PB_BODY_HOME">Koti</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Virheellinen muoto</text>
+ <text id="IDS_PB_BODY_NOTE">Huomautus</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Yhteystietoasetukset</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Nimen näyttöjärjestys</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Poistetaan yhteystietoja...</text>
+ <text id="IDS_PB_BODY_STREET">Katu</text>
+ <text id="IDS_PB_BODY_NUMBER">Numero</text>
+ <text id="IDS_PB_HEADER_DETAILS">Yksityiskohdat</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Hylätäänkö muutokset?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postinumero</text>
+ <text id="IDS_COM_BODY_REMOVE">Poista</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faksi (koti)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Etunimi ensin</text>
+ <text id="IDS_PB_BODY_DEFAULT">Oletus</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Ryhmän nimi</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groupes</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Prénom</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Profession</text>
+ <text id="IDS_PB_BODY_COMPANY">Société</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Occasion</text>
+ <text id="IDS_COM_POP_CLOSE">Fermer</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Sélectionner tout</text>
+ <text id="IDS_COM_POP_DELETE_Q">Supprimer ?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Ajouter aux favoris</text>
+ <text id="IDS_PB_BODY_PHONE">Téléphone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Message</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Nom de famille</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Enregistrer le contact dans</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobile (Professionnel)</text>
+ <text id="IDS_PB_SK_CANCEL">Annuler</text>
+ <text id="IDS_COM_SK_NEW">Nouveau</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Deuxième prénom</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marquer comme courriel par défaut</text>
+ <text id="IDS_PB_BODY_OTHER">Autre</text>
+ <text id="IDS_COM_POP_REMOVED">Retiré</text>
+ <text id="IDS_PB_BODY_COUNTRY">Pays</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Collègues</text>
+ <text id="IDS_COM_POP_SUCCESS">Terminé</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Anniversaire</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Tous les contacts</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Non affecté</text>
+ <text id="IDS_COM_SK_DONE">OK</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobile</text>
+ <text id="IDS_COM_BODY_EMAIL">Courriel</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Stockage du périphérique saturé</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Sélectionner groupe</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Numéro non valide</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Aj. membre</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Aucun contact</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Supprimer la photo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Nom en premier</text>
+ <text id="IDS_PB_OPT_VIEW">Afficher</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Date de naissance non valide</text>
+ <text id="IDS_PB_BODY_WORK">Professionnel</text>
+ <text id="IDS_COM_SK_EDIT">Modifier</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Adresse courriel incorrecte</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Aucun groupe</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Ajouter aux contacts</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Définir comme numéro par défaut</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Plus d'informations</text>
+ <text id="IDS_COM_POP_SELECTED">Sélectionné</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vide</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Photographier</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nouveau groupe</text>
+ <text id="IDS_COM_SK_DELETE">Supprimer</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Professionnel)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Sonnerie</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amis</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresse</text>
+ <text id="IDS_COM_BODY_COPY">Copier</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Aucun favori</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Sélectionner les contacts</text>
+ <text id="IDS_PB_BODY_PAGER">Téléav.</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Fichier non valide</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Messagerie instantanée</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobile - perso</text>
+ <text id="IDS_COM_BODY_SEARCH">Recherche</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nom de groupe déjà utilisé</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Famille</text>
+ <text id="IDS_PB_BODY_CITY">Ville</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nom</text>
+ <text id="IDS_COM_BODY_CREATE">Créer</text>
+ <text id="IDS_PB_BODY_NICKNAME">Surnom</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Service</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffixe</text>
+ <text id="IDS_COM_BODY_CALL">Appeler</text>
+ <text id="IDS_COM_BODY_SETTINGS">Paramètres</text>
+ <text id="IDS_COM_POP_UNKNOWN">Inconnu</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Enregistrer ce contact ?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoris</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Modifier les groupes</text>
+ <text id="IDS_COM_SK_SAVE">Sauv.</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Envoyer la carte de visite</text>
+ <text id="IDS_COM_POP_ADDED">Ajouté</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Appel vidéo</text>
+ <text id="IDS_PB_BODY_HOME">Domicile</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Format non valide</text>
+ <text id="IDS_PB_BODY_NOTE">Note</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Paramètres des contacts</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordre d'affichage des noms</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Suppression des contacts...</text>
+ <text id="IDS_PB_BODY_STREET">Rue</text>
+ <text id="IDS_PB_BODY_NUMBER">Numéro</text>
+ <text id="IDS_PB_HEADER_DETAILS">Détails</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Ignorer les modifications?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Code postal</text>
+ <text id="IDS_COM_BODY_REMOVE">Supprimer</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax - perso</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Prénom d'abord</text>
+ <text id="IDS_PB_BODY_DEFAULT">Par défaut</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nom de groupe</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groupes</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Prénom</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Profession</text>
+ <text id="IDS_PB_BODY_COMPANY">Société</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Occasion</text>
+ <text id="IDS_COM_POP_CLOSE">Fermer</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Sélect. tout</text>
+ <text id="IDS_COM_POP_DELETE_Q">Supprimer ?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Ajouter aux favoris</text>
+ <text id="IDS_PB_BODY_PHONE">Téléphone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Message</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Nom</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Enregistrer n° dans</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobile (Pro)</text>
+ <text id="IDS_PB_SK_CANCEL">Annuler</text>
+ <text id="IDS_COM_SK_NEW">Nouveau</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Deuxième prénom</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marquer comme e-mail par défaut</text>
+ <text id="IDS_PB_BODY_OTHER">Autre</text>
+ <text id="IDS_COM_POP_REMOVED">Supprimé</text>
+ <text id="IDS_PB_BODY_COUNTRY">Pays</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Collaborateurs</text>
+ <text id="IDS_COM_POP_SUCCESS">Terminé</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Anniversaire</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Tous les contacts</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Non affecté</text>
+ <text id="IDS_COM_SK_DONE">Effectué</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobile</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Stockage du périphérique saturé</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Sélectionner groupe</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Numéro non valide</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Aj. membre</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Aucun contact</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Supprimer la photo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Nom en premier</text>
+ <text id="IDS_PB_OPT_VIEW">Afficher</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Date de naissance non valide</text>
+ <text id="IDS_PB_BODY_WORK">Pro.</text>
+ <text id="IDS_COM_SK_EDIT">Modifier</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Adresse mail incorrecte.</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Aucun groupe</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Ajouter aux contacts</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Définir comme n° par défaut</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Plus d'informations</text>
+ <text id="IDS_COM_POP_SELECTED">Sélectionné</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vide</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Prendre une photo</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nouveau groupe</text>
+ <text id="IDS_COM_SK_DELETE">Supprimer</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax - Pro</text>
+ <text id="IDS_PB_BODY_RINGTONE">Sonnerie</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amis</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresse</text>
+ <text id="IDS_COM_BODY_COPY">Copier</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Aucun favori</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacts</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Sélectionner les contacts</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Fichier non valide</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Messagerie instantanée</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobile - perso</text>
+ <text id="IDS_COM_BODY_SEARCH">Rechercher</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nom de groupe déjà utilisé</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Thème</text>
+ <text id="IDS_PB_BODY_CITY">Ville</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nom</text>
+ <text id="IDS_COM_BODY_CREATE">Créer</text>
+ <text id="IDS_PB_BODY_NICKNAME">Surnom</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Service</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffixe</text>
+ <text id="IDS_COM_BODY_CALL">Appel</text>
+ <text id="IDS_COM_BODY_SETTINGS">Paramètres</text>
+ <text id="IDS_COM_POP_UNKNOWN">Inconnu</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Enregistrer ce contact ?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoris</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Modifier groupes</text>
+ <text id="IDS_COM_SK_SAVE">Sauveg.</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Envoyer carte de visite</text>
+ <text id="IDS_COM_POP_ADDED">Ajouté</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Appel visio</text>
+ <text id="IDS_PB_BODY_HOME">Domicile</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Format non valide</text>
+ <text id="IDS_PB_BODY_NOTE">Note</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contacts</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordre d'affichage des noms et prénoms</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Suppression des contacts...</text>
+ <text id="IDS_PB_BODY_STREET">Rue</text>
+ <text id="IDS_PB_BODY_NUMBER">Numéro</text>
+ <text id="IDS_PB_HEADER_DETAILS">Détails</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Ignorer les modifications ?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Code postal</text>
+ <text id="IDS_COM_BODY_REMOVE">Supprimer</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax - perso</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Prénom d'abord</text>
+ <text id="IDS_PB_BODY_DEFAULT">Par défaut</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nom de groupe</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grúpaí</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Céadainm</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Teideal poist</text>
+ <text id="IDS_PB_BODY_COMPANY">Cuideachta</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Lá cinn bliana</text>
+ <text id="IDS_COM_POP_CLOSE">Dún</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Roghnaigh gach</text>
+ <text id="IDS_COM_POP_DELETE_Q">Scrios?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Cuir le ceanáin</text>
+ <text id="IDS_PB_BODY_PHONE">Fón</text>
+ <text id="IDS_COM_BODY_MESSAGE">Teachtaireacht</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Sloinne</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Sábháil teagmhálaí chuig</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Fón póca (Obair)</text>
+ <text id="IDS_PB_SK_CANCEL">Cuir ar ceal</text>
+ <text id="IDS_COM_SK_NEW">Nua</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Dara ainm</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcáil mar r-phost réamhshocraithe</text>
+ <text id="IDS_PB_BODY_OTHER">Eile</text>
+ <text id="IDS_COM_POP_REMOVED">Bainte</text>
+ <text id="IDS_PB_BODY_COUNTRY">Tír</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Comhoibrithe</text>
+ <text id="IDS_COM_POP_SUCCESS">D’éirigh leis</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Breithlá</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Gach teagmhálaí</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Neamhsannta</text>
+ <text id="IDS_COM_SK_DONE">Déanta</text>
+ <text id="IDS_PB_BODY_MOBILE">Fón Póca</text>
+ <text id="IDS_COM_BODY_EMAIL">R-phost</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Stóras an ghléis lán</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Roghnaigh grúpa</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Uimhir neamhbhailí</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Cuir ball</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Níl teagmhálaithe ann</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Bain grianghraf</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Sloinne ar dtús</text>
+ <text id="IDS_PB_OPT_VIEW">Amharc air</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Dáta breithe neamhbhailí</text>
+ <text id="IDS_PB_BODY_WORK">Obair</text>
+ <text id="IDS_COM_SK_EDIT">Eagraigh</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Seoladh r-phoist neamhbhailí</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Níl grúpa ann</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Cuir le Teagmhálaithe</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcáil mar uimhir réamhshocraithe</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Tuilleadh eolais</text>
+ <text id="IDS_COM_POP_SELECTED">Roghnaithe</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Folamh</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Glac grianghraf</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Grúpa nua</text>
+ <text id="IDS_COM_SK_DELETE">Scrios</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Facs (Obair)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Clingthon</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Cairde</text>
+ <text id="IDS_PB_BODY_ADDRESS">Seoladh</text>
+ <text id="IDS_COM_BODY_COPY">Cóipeáil</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Níl ceanáin ann</text>
+ <text id="IDS_COM_BODY_CONTACTS">Teagmhálaithe</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Roghnaigh teagmhálaithe</text>
+ <text id="IDS_PB_BODY_PAGER">Glaoire</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Comhad neamhbhailí</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Teachtaire meandrach</text>
+ <text id="IDS_COM_BODY_GALLERY">Gailearaí</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Fón póca (Baile)</text>
+ <text id="IDS_COM_BODY_SEARCH">Cuardaigh</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ainm an ghrúpa in úsáid cheana</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Teaghlach</text>
+ <text id="IDS_PB_BODY_CITY">Cathair</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Ainm</text>
+ <text id="IDS_COM_BODY_CREATE">Cruthaigh</text>
+ <text id="IDS_PB_BODY_NICKNAME">Leasainm</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Roinn</text>
+ <text id="IDS_PB_BODY_SUFFIX">Iarmhír</text>
+ <text id="IDS_COM_BODY_CALL">Glaoigh</text>
+ <text id="IDS_COM_BODY_SETTINGS">Socruithe</text>
+ <text id="IDS_COM_POP_UNKNOWN">Anaithnid</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Sábháil teagmhálaí?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Ceanáin</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Cuir grúpaí in eagar</text>
+ <text id="IDS_COM_SK_SAVE">Sábháil</text>
+ <text id="IDS_PB_BODY_PROVINCE">Cúige</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Seol ainmchárta</text>
+ <text id="IDS_COM_POP_ADDED">Curtha leis</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Glao físe</text>
+ <text id="IDS_PB_BODY_HOME">Baile</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Formáid neamhbhailí</text>
+ <text id="IDS_PB_BODY_NOTE">Nóta</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Socruithe teagmhálaithe</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ord an ainm taispeána</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Teagmhálaithe á scriosadh...</text>
+ <text id="IDS_PB_BODY_STREET">Sráid</text>
+ <text id="IDS_PB_BODY_NUMBER">Uimhir</text>
+ <text id="IDS_PB_HEADER_DETAILS">Sonraí</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Cuileáil athruithe?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Cód poist</text>
+ <text id="IDS_COM_BODY_REMOVE">Bain</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Facs (Baile)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Céadainm ar dtús</text>
+ <text id="IDS_PB_BODY_DEFAULT">Réamhshocrú</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Ainm an ghrúpa</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupos</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nome</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Cargo</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversario</text>
+ <text id="IDS_COM_POP_CLOSE">Pechar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Seleccionar todo</text>
+ <text id="IDS_COM_POP_DELETE_Q">Eliminar?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Engadir a favoritos</text>
+ <text id="IDS_PB_BODY_PHONE">Teléfono</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mensaxe</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Apelido</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Gardar contacto en</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Móbil (Traballo)</text>
+ <text id="IDS_PB_SK_CANCEL">Cancelar</text>
+ <text id="IDS_COM_SK_NEW">Novo</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segundo nome</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar como correo electrónico predeterminado</text>
+ <text id="IDS_PB_BODY_OTHER">Outro</text>
+ <text id="IDS_COM_POP_REMOVED">Eliminado</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Compañeiros de traballo</text>
+ <text id="IDS_COM_POP_SUCCESS">Éxito</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Aniversario</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Todos os contactos</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Non asignado</text>
+ <text id="IDS_COM_SK_DONE">Finalizado</text>
+ <text id="IDS_PB_BODY_MOBILE">Móbil</text>
+ <text id="IDS_COM_BODY_EMAIL">Correo electrónico</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Almacenamento do dispositivo cheo</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleccionar grupo</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Número non válido</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Eng. mem</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Sen contactos</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eliminar foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Apelido en primeiro lugar</text>
+ <text id="IDS_PB_OPT_VIEW">Ver</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Data de nacemento incorrecta</text>
+ <text id="IDS_PB_BODY_WORK">Traballo</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Enderezo de correo electrónico non válido</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Sen grupo</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Engadir a Contactos</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar como número predeterminado</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Máis información</text>
+ <text id="IDS_COM_POP_SELECTED">Seleccionado</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Baleira</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Capturar unha foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Novo grupo</text>
+ <text id="IDS_COM_SK_DELETE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Traballo)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Melodía</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amigos</text>
+ <text id="IDS_PB_BODY_ADDRESS">Enderezo</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Non hai favoritos</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleccionar contactos</text>
+ <text id="IDS_PB_BODY_PAGER">Busca</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Arquivo non válido</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Mensaxería instantánea</text>
+ <text id="IDS_COM_BODY_GALLERY">Galería</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Móbil (particular)</text>
+ <text id="IDS_COM_BODY_SEARCH">Buscar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nome de grupo xa en uso</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familia</text>
+ <text id="IDS_PB_BODY_CITY">Cidade</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nome</text>
+ <text id="IDS_COM_BODY_CREATE">Crear</text>
+ <text id="IDS_PB_BODY_NICKNAME">Alcume</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departamento</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufixo</text>
+ <text id="IDS_COM_BODY_CALL">Chamar</text>
+ <text id="IDS_COM_BODY_SETTINGS">Axustes</text>
+ <text id="IDS_COM_POP_UNKNOWN">Descoñecido</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Gardar contacto?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoritos</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar grupos</text>
+ <text id="IDS_COM_SK_SAVE">Gardar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincia</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar tarxeta de visita</text>
+ <text id="IDS_COM_POP_ADDED">Engadido</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videochamada</text>
+ <text id="IDS_PB_BODY_HOME">Particular</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">formato non válido</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Axustes de contactos</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Orde de nome de pantalla</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Eliminando contactos...</text>
+ <text id="IDS_PB_BODY_STREET">Rúa</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalles</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Descartar cambios?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Código postal</text>
+ <text id="IDS_COM_BODY_REMOVE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (particular)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Primeiro o nome</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predeterminada</text>
+ <text id="IDS_COM_SK_OK">Aceptar</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nome do grupo</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">समूह</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">पहला नाम</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">कार्य शीर्षक</text>
+ <text id="IDS_PB_BODY_COMPANY">कंपनी</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">वर्षगाँठ</text>
+ <text id="IDS_COM_POP_CLOSE">बंद करें</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">सभी चुनें</text>
+ <text id="IDS_COM_POP_DELETE_Q">हटाएँ?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">पसंदीदा में जोड़ें</text>
+ <text id="IDS_PB_BODY_PHONE">फोन</text>
+ <text id="IDS_COM_BODY_MESSAGE">सन्देश</text>
+ <text id="IDS_PB_BODY_LAST_NAME">अंतिम नाम</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">में संपर्क सुरक्षित करें</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">मोबाइल (कार्यस्थल)</text>
+ <text id="IDS_PB_SK_CANCEL">रद्द</text>
+ <text id="IDS_COM_SK_NEW">नया</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">मध्य का नाम</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">डिफ़ॉल्ट ईमेल के रूप में चिह्नित करें</text>
+ <text id="IDS_PB_BODY_OTHER">अन्य</text>
+ <text id="IDS_COM_POP_REMOVED">हटाया</text>
+ <text id="IDS_PB_BODY_COUNTRY">देश</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">सहयोगी</text>
+ <text id="IDS_COM_POP_SUCCESS">सफलता</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">जन्मदिन</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">सभी संपर्क</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">सौंपा नहीं गया</text>
+ <text id="IDS_COM_SK_DONE">हुआ</text>
+ <text id="IDS_PB_BODY_MOBILE">मोबाइल</text>
+ <text id="IDS_COM_BODY_EMAIL">ईमेल</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">डिवाइस स्टोरेज भर गया</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">समूह चुनें</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">अमान्य नंबर</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">सदस्य जोड़ें</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">कोई संपर्क नहीं</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">फ़ोटो निकालें</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">पहले अंतिम नाम</text>
+ <text id="IDS_PB_OPT_VIEW">देखें</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">अमान्य जन्म तिथि</text>
+ <text id="IDS_PB_BODY_WORK">काम</text>
+ <text id="IDS_COM_SK_EDIT">संपादन</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">अमान्य ईमेल पता</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">कोई समूह नहीं</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">संपर्को में जोड़ें</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">डिफॉल्ट नंबर के रूप में चिन्हित करें</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">अधिक सूचना</text>
+ <text id="IDS_COM_POP_SELECTED">चयनित</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">खाली</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">एक फोटो लें</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">नया समूह</text>
+ <text id="IDS_COM_SK_DELETE">हटाएँ</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">फ़ैक्स (कार्यस्थल)</text>
+ <text id="IDS_PB_BODY_RINGTONE">रिंगटोन</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">मित्र</text>
+ <text id="IDS_PB_BODY_ADDRESS">पता</text>
+ <text id="IDS_COM_BODY_COPY">कॉपी करें</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">कोई पसंदीदा नहीं</text>
+ <text id="IDS_COM_BODY_CONTACTS">संपर्क</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">संपर्क चुनें</text>
+ <text id="IDS_PB_BODY_PAGER">पेजर</text>
+ <text id="IDS_MP_POP_INVALID_FILE">अमान्य फाइल</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">तत्काल मैसेंजर</text>
+ <text id="IDS_COM_BODY_GALLERY">गैलरी</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">मोबाइल (घर)</text>
+ <text id="IDS_COM_BODY_SEARCH">खोजें</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">समूह नाम पहले से उपयोग में</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">परिवार</text>
+ <text id="IDS_PB_BODY_CITY">शहर</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">नाम</text>
+ <text id="IDS_COM_BODY_CREATE">बनाएँ</text>
+ <text id="IDS_PB_BODY_NICKNAME">उपनाम</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">विभाग</text>
+ <text id="IDS_PB_BODY_SUFFIX">प्रत्यय</text>
+ <text id="IDS_COM_BODY_CALL">कॉल</text>
+ <text id="IDS_COM_BODY_SETTINGS">सेटिंग्स</text>
+ <text id="IDS_COM_POP_UNKNOWN">अज्ञात</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">कांटेक्ट सेव करें?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">पसंदीदा</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">समूह संपादित करें</text>
+ <text id="IDS_COM_SK_SAVE">सुरक्षित</text>
+ <text id="IDS_PB_BODY_PROVINCE">प्रांत</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">नामकार्ड भेजें</text>
+ <text id="IDS_COM_POP_ADDED">जोड़ा गया</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">वीडियो कॉल</text>
+ <text id="IDS_PB_BODY_HOME">घर</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">अमान्य फॉर्मेट</text>
+ <text id="IDS_PB_BODY_NOTE">टिप्पणी</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">संपर्क सेटिंग्स</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">प्रदर्शित नाम का क्रम</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">संपर्क हटाए जा रहे हैं...</text>
+ <text id="IDS_PB_BODY_STREET">गली</text>
+ <text id="IDS_PB_BODY_NUMBER">नंबर</text>
+ <text id="IDS_PB_HEADER_DETAILS">विवरण</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">बदलाव निरस्त करें?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">डाक का कोड</text>
+ <text id="IDS_COM_BODY_REMOVE">हटाएँ</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">फैक्स (घर)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">प्रथम नाम पहले</text>
+ <text id="IDS_PB_BODY_DEFAULT">डिफॉल्ट</text>
+ <text id="IDS_COM_SK_OK">ओके</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">समूह का नाम</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">Adresa</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupe</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ime</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Radno mjesto</text>
+ <text id="IDS_PB_BODY_COMPANY">Tvrtka</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Godišnjica</text>
+ <text id="IDS_COM_POP_CLOSE">Prekid</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Odaberi sve</text>
+ <text id="IDS_COM_POP_DELETE_Q">Obrisati?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Dodaj u Favorite</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Poruka</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Prezime</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Spremiti kontakt u?</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobitel (posao)</text>
+ <text id="IDS_PB_SK_CANCEL">Prekid</text>
+ <text id="IDS_COM_SK_NEW">Nova</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Srednje ime</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Označi kao zadani email</text>
+ <text id="IDS_PB_BODY_OTHER">Ostalo</text>
+ <text id="IDS_COM_POP_REMOVED">Uklonjeno</text>
+ <text id="IDS_PB_BODY_COUNTRY">Država</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Kolege</text>
+ <text id="IDS_COM_POP_SUCCESS">Uspješno</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Rođendan</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Svi kontakti</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nedodijeljeno</text>
+ <text id="IDS_COM_SK_DONE">OK</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobitel</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Memorija uređaja puna</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Odaberite grupu</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Neispravan broj</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Dod. čl.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Nema kontakata</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Obriši fotografiju</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Prvo prezime</text>
+ <text id="IDS_PB_OPT_VIEW">Prikaz</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Datum rođenja neispravan</text>
+ <text id="IDS_PB_BODY_WORK">Posao</text>
+ <text id="IDS_COM_SK_EDIT">Uredi</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neispravna email adresa</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nema grupe</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Dodaj u Imenik</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Označi kao postavljeni</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Detalji</text>
+ <text id="IDS_COM_POP_SELECTED">Odabrano</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Prazno</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografiranje</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nova grupa</text>
+ <text id="IDS_COM_SK_DELETE">Obriši</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (posao)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ton zvona</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Prijatelji</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresa</text>
+ <text id="IDS_COM_BODY_COPY">Kopiraj</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nema favorita</text>
+ <text id="IDS_COM_BODY_CONTACTS">Imenik</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Odaberite kontakte</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Neispravna datoteka</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Album</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobitel - kućni</text>
+ <text id="IDS_COM_BODY_SEARCH">Traži</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Naziv grupe se već koristi</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Obitelj</text>
+ <text id="IDS_PB_BODY_CITY">Grad</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Naziv</text>
+ <text id="IDS_COM_BODY_CREATE">Novi</text>
+ <text id="IDS_PB_BODY_NICKNAME">Nadimak</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Odjel</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufiks</text>
+ <text id="IDS_COM_BODY_CALL">Poziv</text>
+ <text id="IDS_COM_BODY_SETTINGS">Postavke</text>
+ <text id="IDS_COM_POP_UNKNOWN">Nepoznato</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Spremiti kontakt?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoriti</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Uredi grupe</text>
+ <text id="IDS_COM_SK_SAVE">Spremi</text>
+ <text id="IDS_PB_BODY_PROVINCE">Županija</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Pošalji posjetnicu</text>
+ <text id="IDS_COM_POP_ADDED">Dodano</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video poziv</text>
+ <text id="IDS_PB_BODY_HOME">Kuća</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Neispravan format</text>
+ <text id="IDS_PB_BODY_NOTE">Bilješka</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Postavke kontakta</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Prikaz unosa</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Brisanje kontakata...</text>
+ <text id="IDS_PB_BODY_STREET">Ulica</text>
+ <text id="IDS_PB_BODY_NUMBER">Broj</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalji</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Odbaciti promjene?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Poštanski broj</text>
+ <text id="IDS_COM_BODY_REMOVE">Ukloni</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks - kućni</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Prvo ime</text>
+ <text id="IDS_PB_BODY_DEFAULT">Zadano</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Naziv grupe</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Csoportok</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Keresztnév</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Beosztás</text>
+ <text id="IDS_PB_BODY_COMPANY">Cég</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Évforduló</text>
+ <text id="IDS_COM_POP_CLOSE">Bezárás</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Összes kijelölése</text>
+ <text id="IDS_COM_POP_DELETE_Q">Törli?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Kedvencekhez adás</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Üzenet</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Vezetéknév</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Név mentése ide</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (munkahelyi)</text>
+ <text id="IDS_PB_SK_CANCEL">Mégse</text>
+ <text id="IDS_COM_SK_NEW">Új</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Középső név</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Megjelölés alapértelmezett e-mail címként</text>
+ <text id="IDS_PB_BODY_OTHER">Egyéb</text>
+ <text id="IDS_COM_POP_REMOVED">Törölve</text>
+ <text id="IDS_PB_BODY_COUNTRY">Ország</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Munkatársak</text>
+ <text id="IDS_COM_POP_SUCCESS">Sikeres</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Születésnap</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Összes névjegy</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nincs hozzárendelve</text>
+ <text id="IDS_COM_SK_DONE">Kész</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Az eszköz tárhelye megtelt</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Válasszon csoportot</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Érvénytelen szám</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Tagfelv.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Nincs névjegy</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Fénykép eltávolítása</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Vezetéknév áll elöl</text>
+ <text id="IDS_PB_OPT_VIEW">Megnéz</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Érvénytelen születési dátum</text>
+ <text id="IDS_PB_BODY_WORK">Munkahelyi</text>
+ <text id="IDS_COM_SK_EDIT">Szerkeszt</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Érvénytelen e-mail cím</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nincs csoport</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Kapcsolatokhoz ad</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Megjelölés alapértelmezett számként</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">További információ</text>
+ <text id="IDS_COM_POP_SELECTED">Kiválasztva</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Kiürítés</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fénykép készítése</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Új csoport</text>
+ <text id="IDS_COM_SK_DELETE">Töröl</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (munkahelyi)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Csengőhang</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Barátok</text>
+ <text id="IDS_PB_BODY_ADDRESS">Cím</text>
+ <text id="IDS_COM_BODY_COPY">Másol</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nincsenek kedvencek</text>
+ <text id="IDS_COM_BODY_CONTACTS">Névjegyek</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Névjegyet hozzáad</text>
+ <text id="IDS_PB_BODY_PAGER">Személyhívó</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Érvénytelen fájl</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant Messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galéria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (otthoni)</text>
+ <text id="IDS_COM_BODY_SEARCH">Keresés</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">A csoportnév már létezik</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Család</text>
+ <text id="IDS_PB_BODY_CITY">Város</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Név</text>
+ <text id="IDS_COM_BODY_CREATE">Létrehoz</text>
+ <text id="IDS_PB_BODY_NICKNAME">Becenév</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Osztály</text>
+ <text id="IDS_PB_BODY_SUFFIX">Titulus</text>
+ <text id="IDS_COM_BODY_CALL">Hívás</text>
+ <text id="IDS_COM_BODY_SETTINGS">Beállítások</text>
+ <text id="IDS_COM_POP_UNKNOWN">Ismeretlen</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Menti a névjegyet?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Kedven-cek</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Csoportok\nszerkesztése</text>
+ <text id="IDS_COM_SK_SAVE">Ment</text>
+ <text id="IDS_PB_BODY_PROVINCE">Tartomány</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">hanghívás</text>
+ <text id="IDS_COM_POP_ADDED">Hozzáadva</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videohívás</text>
+ <text id="IDS_PB_BODY_HOME">Otthoni</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Érvénytelen formátum</text>
+ <text id="IDS_PB_BODY_NOTE">Jegyzet</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Névbeállítások</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Név megjelenési sorrendje</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Névjegyek törlése...</text>
+ <text id="IDS_PB_BODY_STREET">Utca</text>
+ <text id="IDS_PB_BODY_NUMBER">Szám</text>
+ <text id="IDS_PB_HEADER_DETAILS">Részletek</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Elveti a változtatásokat?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Irányítószám</text>
+ <text id="IDS_COM_BODY_REMOVE">Eltávolít</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (otthoni)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Utónév áll elöl</text>
+ <text id="IDS_PB_BODY_DEFAULT">Alapértelmezett</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Csoport neve</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Խմբեր</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Անուն</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Աշխատանքի վերնագիր</text>
+ <text id="IDS_PB_BODY_COMPANY">Ընկերություն</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Տարեդարձ</text>
+ <text id="IDS_COM_POP_CLOSE">Փակել</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Ընտրել բոլորը</text>
+ <text id="IDS_COM_POP_DELETE_Q">Ջնջե՞լ</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Հավելել Ընտրյալներին</text>
+ <text id="IDS_PB_BODY_PHONE">Հեռախոս</text>
+ <text id="IDS_COM_BODY_MESSAGE">Հաղորդագրություն</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Ազգանուն</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Պահել կոնտակտը</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Շարժական (աշխատանքային)</text>
+ <text id="IDS_PB_SK_CANCEL">Չեղարկել</text>
+ <text id="IDS_COM_SK_NEW">Նոր</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Հայրանունը</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Նշել որպես կանխադրված էլփոստ</text>
+ <text id="IDS_PB_BODY_OTHER">Այլ</text>
+ <text id="IDS_COM_POP_REMOVED">Հեռացված է</text>
+ <text id="IDS_PB_BODY_COUNTRY">Երկիր</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Աշխատակիցներ</text>
+ <text id="IDS_COM_POP_SUCCESS">Հաջողված է</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Ծննդյան օր</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Բոլոր կոնտակտները</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Նշանակված չէ</text>
+ <text id="IDS_COM_SK_DONE">Պատրաստ</text>
+ <text id="IDS_PB_BODY_MOBILE">Բջջային</text>
+ <text id="IDS_COM_BODY_EMAIL">Էլ.փոստ</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Սարքի պահոցը լիքն է</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Ընտրեք խումբը</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Անվավեր համար</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Ավց անդամ</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Կոնտակտներ չկան</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Հեռացնել լուսանկարը</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Նախ ազգանունը</text>
+ <text id="IDS_PB_OPT_VIEW">Դիտել</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Ծննդյան անվավեր ամսաթիվ</text>
+ <text id="IDS_PB_BODY_WORK">Աշխատանք</text>
+ <text id="IDS_COM_SK_EDIT">Խմբագրել</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Անվավեր էլ. փոստի հասցե</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Խումբ չկա</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Ավելացնել Կոնտակտներում</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Նշել որպես լռելյայն համար</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Այլ տեղեկություններ</text>
+ <text id="IDS_COM_POP_SELECTED">Ընտրված</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Դատարկ է</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Լուսանկարել</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Նոր խումբ</text>
+ <text id="IDS_COM_SK_DELETE">Ջնջել</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Ֆաքս (աշխատանքային)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Մեղեդի</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Ընկերներ</text>
+ <text id="IDS_PB_BODY_ADDRESS">Հասցե</text>
+ <text id="IDS_COM_BODY_COPY">Պատճենել</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Սիրվածներ չկան</text>
+ <text id="IDS_COM_BODY_CONTACTS">Կոնտակտներ</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Ընտրել կոնտակտներ</text>
+ <text id="IDS_PB_BODY_PAGER">Հեռատող</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Անվավեր ֆայլ</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Ակնթարթային հաղորդագրող</text>
+ <text id="IDS_COM_BODY_GALLERY">Պատկերասրահ</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Բջջայինը (Տան)</text>
+ <text id="IDS_COM_BODY_SEARCH">Որոնել</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Խմբի անունն արդեն օգտագործված է</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Ընտանիք</text>
+ <text id="IDS_PB_BODY_CITY">Քաղաք</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Անուն</text>
+ <text id="IDS_COM_BODY_CREATE">Ստեղծել</text>
+ <text id="IDS_PB_BODY_NICKNAME">Մականուն</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Բաժին</text>
+ <text id="IDS_PB_BODY_SUFFIX">Ածանց</text>
+ <text id="IDS_COM_BODY_CALL">Զանգ</text>
+ <text id="IDS_COM_BODY_SETTINGS">Պարամետրեր</text>
+ <text id="IDS_COM_POP_UNKNOWN">Անհայտ</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Պահպանե՞լ կոնտակտը</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Սիրվածներ</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Խմբագրել խմբեր</text>
+ <text id="IDS_COM_SK_SAVE">Պահել</text>
+ <text id="IDS_PB_BODY_PROVINCE">Գավառ</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Ուղարկել անվանաքարտը</text>
+ <text id="IDS_COM_POP_ADDED">Ավելացված է</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Վիդեո կանչ</text>
+ <text id="IDS_PB_BODY_HOME">Տուն</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Անվավեր ձևաչափ</text>
+ <text id="IDS_PB_BODY_NOTE">Նշում</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Կոնտակտի կայանքներ</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Անվան ցուցադրման հերթականությունը</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Վերացվում են կոնտակտներ...</text>
+ <text id="IDS_PB_BODY_STREET">Փողոց</text>
+ <text id="IDS_PB_BODY_NUMBER">Համար</text>
+ <text id="IDS_PB_HEADER_DETAILS">Մանրամասներ</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Մերժե՞լ փոփոխությունները:</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Փոստային ինդեքս</text>
+ <text id="IDS_COM_BODY_REMOVE">Հեռացնել</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Հեռապատճենը (Տան)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Նախ անունը</text>
+ <text id="IDS_PB_BODY_DEFAULT">Լռելյայն</text>
+ <text id="IDS_COM_SK_OK">Ընդունել</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Խմբի անվանումը</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">Vefslóð</text>
+ <text id="IDS_PB_BODY_GROUPS">Hópar</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Fornafn</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Starfsheiti</text>
+ <text id="IDS_PB_BODY_COMPANY">Fyrirtæki</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Afmæli</text>
+ <text id="IDS_COM_POP_CLOSE">Loka</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Velja allt</text>
+ <text id="IDS_COM_POP_DELETE_Q">Á að eyða?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Bæta við uppáhald</text>
+ <text id="IDS_PB_BODY_PHONE">Sími</text>
+ <text id="IDS_COM_BODY_MESSAGE">Skilaboð</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Eftirnafn</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Vista tengilið í</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Farsími (Vinna)</text>
+ <text id="IDS_PB_SK_CANCEL">Hætta við</text>
+ <text id="IDS_COM_SK_NEW">Nýr</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Millinafn</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Merkja sem sjálfgefinn póst</text>
+ <text id="IDS_PB_BODY_OTHER">Annað</text>
+ <text id="IDS_COM_POP_REMOVED">Fjarlægt</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Samstarfsmenn</text>
+ <text id="IDS_COM_POP_SUCCESS">Árangur</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Afmælisdagur</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Allir tengiliðir</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Óúthlutað</text>
+ <text id="IDS_COM_SK_DONE">Lokið</text>
+ <text id="IDS_PB_BODY_MOBILE">Farsími</text>
+ <text id="IDS_COM_BODY_EMAIL">Tölvupóstur</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Minni tækis er fullt</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Velja hóp</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Ógilt númer</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Bæta við meðlim</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Engir tengiliðir</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Fjarlægja mynd</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Fyrst eftirnafn</text>
+ <text id="IDS_PB_OPT_VIEW">Skoða</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Ógildur fæðingardagur</text>
+ <text id="IDS_PB_BODY_WORK">Vinna</text>
+ <text id="IDS_COM_SK_EDIT">Breyta</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ógilt netfang</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Enginn hópur</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Bæta við tengiliði</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Merkja sem sjálfgefið númer</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Frekari upplýsingar</text>
+ <text id="IDS_COM_POP_SELECTED">Valið</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tómt</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Taka ljósmynd</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nýr hópur</text>
+ <text id="IDS_COM_SK_DELETE">Eyða</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (vinna)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Hringitónn</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Vinir</text>
+ <text id="IDS_PB_BODY_ADDRESS">Heimilisfang</text>
+ <text id="IDS_COM_BODY_COPY">Afrita</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ekkert uppáhald</text>
+ <text id="IDS_COM_BODY_CONTACTS">Tengiliðir</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Velja tengiliði</text>
+ <text id="IDS_PB_BODY_PAGER">Símboði</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Ógild skrá</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Spjallforrit</text>
+ <text id="IDS_COM_BODY_GALLERY">Gallerí</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Farsími (heima)</text>
+ <text id="IDS_COM_BODY_SEARCH">Leit</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Heitið er þegar í notkun</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Fjölskylda</text>
+ <text id="IDS_PB_BODY_CITY">Borg</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Heiti</text>
+ <text id="IDS_COM_BODY_CREATE">Búa til</text>
+ <text id="IDS_PB_BODY_NICKNAME">Gælunafn</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Deild</text>
+ <text id="IDS_PB_BODY_SUFFIX">Viðskeyti</text>
+ <text id="IDS_COM_BODY_CALL">Símtal</text>
+ <text id="IDS_COM_BODY_SETTINGS">Stillingar</text>
+ <text id="IDS_COM_POP_UNKNOWN">Óþekkt</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Vista tengilið?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Uppáhalds</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Breyta hópum</text>
+ <text id="IDS_COM_SK_SAVE">Vista</text>
+ <text id="IDS_PB_BODY_PROVINCE">Hérað</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Senda nafnspjald</text>
+ <text id="IDS_COM_POP_ADDED">Bætt við</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Vídeósímtal</text>
+ <text id="IDS_PB_BODY_HOME">Heima</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Ógilt snið</text>
+ <text id="IDS_PB_BODY_NOTE">Athugasemd</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Tengiliðastillingar</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Röð birtra nafna</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Eyði tengiliðum...</text>
+ <text id="IDS_PB_BODY_STREET">Gata</text>
+ <text id="IDS_PB_BODY_NUMBER">Númer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Upplýsingar</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Hætta við breytingar?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Póstnúmer</text>
+ <text id="IDS_COM_BODY_REMOVE">Fjarlægja</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (heima)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Fornafn fyrst</text>
+ <text id="IDS_PB_BODY_DEFAULT">Sjálfgefið</text>
+ <text id="IDS_COM_SK_OK">Í lagi</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Heiti hóps</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Gruppi</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nome</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Mansione</text>
+ <text id="IDS_PB_BODY_COMPANY">Azienda</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Anniversario</text>
+ <text id="IDS_COM_POP_CLOSE">Chiudi</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Seleziona tutto</text>
+ <text id="IDS_COM_POP_DELETE_Q">Eliminare?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Aggiungi a preferiti</text>
+ <text id="IDS_PB_BODY_PHONE">Telefono</text>
+ <text id="IDS_COM_BODY_MESSAGE">Messaggio</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Cognome</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Salva contatto in</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Cellulare (Ufficio)</text>
+ <text id="IDS_PB_SK_CANCEL">Annulla</text>
+ <text id="IDS_COM_SK_NEW">Nuovo</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Secondo nome</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Segna come e-mail predefinita</text>
+ <text id="IDS_PB_BODY_OTHER">Altri</text>
+ <text id="IDS_COM_POP_REMOVED">Rimosso</text>
+ <text id="IDS_PB_BODY_COUNTRY">Paese</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Colleghi</text>
+ <text id="IDS_COM_POP_SUCCESS">Operazione eseguita</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Compleanno</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Tutti i contatti</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Non assegnato</text>
+ <text id="IDS_COM_SK_DONE">Fatto</text>
+ <text id="IDS_PB_BODY_MOBILE">Cellulare</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Memoria dispositivo piena</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleziona gruppo</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Numero non valido</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Agg.membro</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Nessun contatto</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Rimuovi foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Prima cognome</text>
+ <text id="IDS_PB_OPT_VIEW">Visualizza</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Data di nascita non valida</text>
+ <text id="IDS_PB_BODY_WORK">Ufficio</text>
+ <text id="IDS_COM_SK_EDIT">Modifica</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Indirizzo e-mail non valido</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nessun gruppo</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Aggiungi a Rubrica</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Segna come numero predefinito</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Altre informazioni</text>
+ <text id="IDS_COM_POP_SELECTED">Selezionato</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vuoto</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Scatta foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nuovo gruppo</text>
+ <text id="IDS_COM_SK_DELETE">Elimina</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Ufficio)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Suoneria</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amici</text>
+ <text id="IDS_PB_BODY_ADDRESS">Indirizzo</text>
+ <text id="IDS_COM_BODY_COPY">Copia</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nessun preferito</text>
+ <text id="IDS_COM_BODY_CONTACTS">Rubrica</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleziona contatti</text>
+ <text id="IDS_PB_BODY_PAGER">Cercapersone</text>
+ <text id="IDS_MP_POP_INVALID_FILE">File non valido</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant Messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galleria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Cellulare (Casa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Cerca</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nome gruppo già in uso</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Famiglia</text>
+ <text id="IDS_PB_BODY_CITY">Città</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nome</text>
+ <text id="IDS_COM_BODY_CREATE">Crea</text>
+ <text id="IDS_PB_BODY_NICKNAME">Soprannome</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Reparto</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffisso</text>
+ <text id="IDS_COM_BODY_CALL">Chiama</text>
+ <text id="IDS_COM_BODY_SETTINGS">Impostazioni</text>
+ <text id="IDS_COM_POP_UNKNOWN">Sconosciuto</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Salvare contatto?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Preferiti</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Modifica gruppi</text>
+ <text id="IDS_COM_SK_SAVE">Salva</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincia</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Invia biglietto da visita</text>
+ <text id="IDS_COM_POP_ADDED">Aggiunto</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videochiamata</text>
+ <text id="IDS_PB_BODY_HOME">Casa</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Formato non valido</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Impostazioni rubrica</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordine visualizzazione nome</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Eliminazione contatti in corso...</text>
+ <text id="IDS_PB_BODY_STREET">Indirizzo</text>
+ <text id="IDS_PB_BODY_NUMBER">Numero</text>
+ <text id="IDS_PB_HEADER_DETAILS">Dettagli</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Annullare le modifiche?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">CAP</text>
+ <text id="IDS_COM_BODY_REMOVE">Rimuovi</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Casa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Prima nome</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predefinito</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nome gruppo</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">グループ</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">名</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">役職</text>
+ <text id="IDS_PB_BODY_COMPANY">会社</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">記念日</text>
+ <text id="IDS_COM_POP_CLOSE">閉じる</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">全て選択</text>
+ <text id="IDS_COM_POP_DELETE_Q">削除しますか?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">お気に入りに追加</text>
+ <text id="IDS_PB_BODY_PHONE">本体</text>
+ <text id="IDS_COM_BODY_MESSAGE">メッセージ</text>
+ <text id="IDS_PB_BODY_LAST_NAME">姓</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">連絡先の保存先</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">携帯(仕事)</text>
+ <text id="IDS_PB_SK_CANCEL">キャンセル</text>
+ <text id="IDS_COM_SK_NEW">新規</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">ミドルネーム</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">基本Eメールとして指定</text>
+ <text id="IDS_PB_BODY_OTHER">その他</text>
+ <text id="IDS_COM_POP_REMOVED">削除しました。</text>
+ <text id="IDS_PB_BODY_COUNTRY">国</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">同僚</text>
+ <text id="IDS_COM_POP_SUCCESS">正常に完了しました。</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">誕生日</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">全ての連絡先</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">指定なし</text>
+ <text id="IDS_COM_SK_DONE">完了</text>
+ <text id="IDS_PB_BODY_MOBILE">モバイル</text>
+ <text id="IDS_COM_BODY_EMAIL">Eメール</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">システムメモリ(本体)がいっぱいです。</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">グループを選択</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">番号が無効です。</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">メンバーを追加</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">連絡先がありません。</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">画像を削除</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">姓を先に表示</text>
+ <text id="IDS_PB_OPT_VIEW">表示</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">無効な生年月日です。</text>
+ <text id="IDS_PB_BODY_WORK">勤務先</text>
+ <text id="IDS_COM_SK_EDIT">編集</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Eメールアドレスが正しくありません。</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">グループなし</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">連絡先に追加</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">メインの番号に設定</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">その他の情報</text>
+ <text id="IDS_COM_POP_SELECTED">選択しました。</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">未入力</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">カメラを起動</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">新規グループ</text>
+ <text id="IDS_COM_SK_DELETE">削除</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">FAX(仕事)</text>
+ <text id="IDS_PB_BODY_RINGTONE">着信音</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">友だち</text>
+ <text id="IDS_PB_BODY_ADDRESS">住所</text>
+ <text id="IDS_COM_BODY_COPY">コピー</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">お気に入りがありません。</text>
+ <text id="IDS_COM_BODY_CONTACTS">電話帳</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">連絡先を選択</text>
+ <text id="IDS_PB_BODY_PAGER">ポケベル</text>
+ <text id="IDS_MP_POP_INVALID_FILE">無効なファイルです。</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">インスタントメッセンジャー</text>
+ <text id="IDS_COM_BODY_GALLERY">ギャラリー</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">携帯(自宅)</text>
+ <text id="IDS_COM_BODY_SEARCH">検索</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">グループ名は既に使用されています。</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">家族</text>
+ <text id="IDS_PB_BODY_CITY">都市</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">名前</text>
+ <text id="IDS_COM_BODY_CREATE">作成</text>
+ <text id="IDS_PB_BODY_NICKNAME">ニックネーム</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">部門</text>
+ <text id="IDS_PB_BODY_SUFFIX">敬称(名前の後)</text>
+ <text id="IDS_COM_BODY_CALL">発信</text>
+ <text id="IDS_COM_BODY_SETTINGS">設定</text>
+ <text id="IDS_COM_POP_UNKNOWN">不明</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">連絡先を保存しますか?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">お気に入り</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">グループを編集</text>
+ <text id="IDS_COM_SK_SAVE">保存</text>
+ <text id="IDS_PB_BODY_PROVINCE">都道府県</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">名刺を送信</text>
+ <text id="IDS_COM_POP_ADDED">追加しました。</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">テレビ電話</text>
+ <text id="IDS_PB_BODY_HOME">自宅</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">無効な形式</text>
+ <text id="IDS_PB_BODY_NOTE">ノート</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">電話帳設定</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">表示名順</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">連絡先を削除中...</text>
+ <text id="IDS_PB_BODY_STREET">番地</text>
+ <text id="IDS_PB_BODY_NUMBER">番号</text>
+ <text id="IDS_PB_HEADER_DETAILS">詳細</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">変更を破棄しますか?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">郵便番号</text>
+ <text id="IDS_COM_BODY_REMOVE">削除</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">FAX(自宅)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">名前を先に表示</text>
+ <text id="IDS_PB_BODY_DEFAULT">標準</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">グループ名</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">ჯგუფები</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">სახელი</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">დავალების სათაური</text>
+ <text id="IDS_PB_BODY_COMPANY">კომპანია</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">იუბილე</text>
+ <text id="IDS_COM_POP_CLOSE">დახურვა</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">ყველას არჩევა</text>
+ <text id="IDS_COM_POP_DELETE_Q">წაიშალოს?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">ფავორიტებში დამატება</text>
+ <text id="IDS_PB_BODY_PHONE">ტელეფონი</text>
+ <text id="IDS_COM_BODY_MESSAGE">შეტყობინება</text>
+ <text id="IDS_PB_BODY_LAST_NAME">გვარი</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">კონტაქტის შენახვა ადგილზე:</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">მობილური (სამსახურის)</text>
+ <text id="IDS_PB_SK_CANCEL">გაუქმება</text>
+ <text id="IDS_COM_SK_NEW">ახალი</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">მამის სახელი</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">აღნიშვნა ნაგულისხმევ ელ.ფოსტად</text>
+ <text id="IDS_PB_BODY_OTHER">სხვა</text>
+ <text id="IDS_COM_POP_REMOVED">წაშლილია</text>
+ <text id="IDS_PB_BODY_COUNTRY">ქვეყანა</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">თანამშრომლები</text>
+ <text id="IDS_COM_POP_SUCCESS">წარმატება</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">დაბადების დღე</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">ყველა კონტაქტი</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">არ არის მინიჭებული</text>
+ <text id="IDS_COM_SK_DONE">შესრულდა</text>
+ <text id="IDS_PB_BODY_MOBILE">მობილური</text>
+ <text id="IDS_COM_BODY_EMAIL">ელ-ფოსტა</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">აპარატის მეხსიერება სავსეა</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">ჯგუფის შერჩევა</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">ნომერი არასწორია</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">წევრ.დამ.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">კონტაქტი ვერ მოიძებნა</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">ფოტოს მოცილება</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">ჯერ გვარი</text>
+ <text id="IDS_PB_OPT_VIEW">ნახვა</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">დაბადების თარიღი არასწორია</text>
+ <text id="IDS_PB_BODY_WORK">სამსახური</text>
+ <text id="IDS_COM_SK_EDIT">რედაქტ.</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">ელ.ფოსტა არასწორია</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">ჯგუფი არ არის</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">კონტაქტებში დამატება</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">ნაგულისხმევ ნომრად აღნიშვნა</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">დამატებითი ინფორმაცია</text>
+ <text id="IDS_COM_POP_SELECTED">შერჩეულია</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">ცარიელია</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">ფოტოს გადაღება</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">ახალი ჯგუფი</text>
+ <text id="IDS_COM_SK_DELETE">წაშლა</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">ფაქსი (სამსახურის)</text>
+ <text id="IDS_PB_BODY_RINGTONE">ზარის მელოდია</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">მეგობრები</text>
+ <text id="IDS_PB_BODY_ADDRESS">მისამართი</text>
+ <text id="IDS_COM_BODY_COPY">ასლი</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">ფავორიტები არ არის</text>
+ <text id="IDS_COM_BODY_CONTACTS">კონტაქტები</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">აირჩიეთ კონტაქტები</text>
+ <text id="IDS_PB_BODY_PAGER">პეიჯერი</text>
+ <text id="IDS_MP_POP_INVALID_FILE">ფაილი არასწორია</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">მესინჯერი</text>
+ <text id="IDS_COM_BODY_GALLERY">გალერეა</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">მობილური (სახლის)</text>
+ <text id="IDS_COM_BODY_SEARCH">ძიება</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">ჯგუფის სახელი უკვე გამოყენებულია</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">ოჯახი</text>
+ <text id="IDS_PB_BODY_CITY">ქალაქი</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">სახელი</text>
+ <text id="IDS_COM_BODY_CREATE">შექმნა</text>
+ <text id="IDS_PB_BODY_NICKNAME">მეტსახელი</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">განყოფილება</text>
+ <text id="IDS_PB_BODY_SUFFIX">სუფიქსი</text>
+ <text id="IDS_COM_BODY_CALL">დარეკვა</text>
+ <text id="IDS_COM_BODY_SETTINGS">პარამეტრები</text>
+ <text id="IDS_COM_POP_UNKNOWN">უცნობი</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">შეინახავთ კონტაქტს?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">ფავორიტები</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">ჯგუფების შესწორება</text>
+ <text id="IDS_COM_SK_SAVE">შენახვა</text>
+ <text id="IDS_PB_BODY_PROVINCE">პროვინცია</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">სავიზიტო ბარათის გაგზავნა</text>
+ <text id="IDS_COM_POP_ADDED">დამატებულია</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">ვიდეოზარი</text>
+ <text id="IDS_PB_BODY_HOME">საწყისი გვერდი</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">ფორმატი არასწორია</text>
+ <text id="IDS_PB_BODY_NOTE">შენიშვნა</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">კონტაქტის პარამეტრები</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">ეკრანზე საჩვენებლად სახელის შერჩევა</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">სრულდება კონტაქტების წაშლა...</text>
+ <text id="IDS_PB_BODY_STREET">ქუჩა</text>
+ <text id="IDS_PB_BODY_NUMBER">რიცხვი</text>
+ <text id="IDS_PB_HEADER_DETAILS">დეტალები</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">უარყოფთ ცვლილებებს?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">საფოსტო კოდი</text>
+ <text id="IDS_COM_BODY_REMOVE">წაშლა</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">ფაქსი (სახლის)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">ჯერ სახელი</text>
+ <text id="IDS_PB_BODY_DEFAULT">ნაგულისხმევი</text>
+ <text id="IDS_COM_SK_OK">კი</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">ჯგუფის სახელი</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Топтар</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Есімі</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Лауазым</text>
+ <text id="IDS_PB_BODY_COMPANY">Компания</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Жылдық</text>
+ <text id="IDS_COM_POP_CLOSE">Жабу</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Бәрін бөлектеу</text>
+ <text id="IDS_COM_POP_DELETE_Q">Өшіресіз бе?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Сүйіктілер қатарына қосу</text>
+ <text id="IDS_PB_BODY_PHONE">Телефон</text>
+ <text id="IDS_COM_BODY_MESSAGE">Хабарлама</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Тегі</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Кітапшаға сақтау</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Ұялы (жұмыс)</text>
+ <text id="IDS_PB_SK_CANCEL">Тоқтату</text>
+ <text id="IDS_COM_SK_NEW">Жаңа</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Әкесінің аты</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Әдепкі электрондық пошта деп белгілеу</text>
+ <text id="IDS_PB_BODY_OTHER">Басқа</text>
+ <text id="IDS_COM_POP_REMOVED">Жойылған</text>
+ <text id="IDS_PB_BODY_COUNTRY">Ел</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Әріптес</text>
+ <text id="IDS_COM_POP_SUCCESS">Жетістік</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Туған күн</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Барлық контактілер</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Қойылған жоқ</text>
+ <text id="IDS_COM_SK_DONE">Дайын</text>
+ <text id="IDS_PB_BODY_MOBILE">Ұялы телефон</text>
+ <text id="IDS_COM_BODY_EMAIL">Эл. пошта</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Құрылғы жады толы</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Топты таңдау</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Жарамсыз нөмір</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Мүше қосу</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Контакттар жоқ</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Фотоны жою</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Алдымен тегі</text>
+ <text id="IDS_PB_OPT_VIEW">Көрініс</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Туған күн дұрыс емес</text>
+ <text id="IDS_PB_BODY_WORK">Жұмыс</text>
+ <text id="IDS_COM_SK_EDIT">Өзгер.</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Электрондық пошта мекен-жайы жарамсыз</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Топ жоқ</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Кітапшаға қосыңыз</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Өздігінен нөмірдің белгіленуі</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Көбірек ақпарат</text>
+ <text id="IDS_COM_POP_SELECTED">Таңдалған</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Бос</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Суретке алыңыз</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Жаңа топ</text>
+ <text id="IDS_COM_SK_DELETE">Жою</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Факс (жұмыс)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Әуен</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Достар</text>
+ <text id="IDS_PB_BODY_ADDRESS">Мекен-жай</text>
+ <text id="IDS_COM_BODY_COPY">Көшіру</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Сүйіктілер жоқ</text>
+ <text id="IDS_COM_BODY_CONTACTS">Контактілер</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Контактілерді таңдау</text>
+ <text id="IDS_PB_BODY_PAGER">Пейджер</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Файл қате</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Жедел хабаршы</text>
+ <text id="IDS_COM_BODY_GALLERY">Галерея</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Ұялы (үй)</text>
+ <text id="IDS_COM_BODY_SEARCH">Іздеу</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Мұндай топ аты қолданыста бар</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Отбасы</text>
+ <text id="IDS_PB_BODY_CITY">Қала</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Аты</text>
+ <text id="IDS_COM_BODY_CREATE">Құру</text>
+ <text id="IDS_PB_BODY_NICKNAME">Жасырын ат</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Бөлім</text>
+ <text id="IDS_PB_BODY_SUFFIX">Лауазым</text>
+ <text id="IDS_COM_BODY_CALL">Қоңырау</text>
+ <text id="IDS_COM_BODY_SETTINGS">Қондырғылар</text>
+ <text id="IDS_COM_POP_UNKNOWN">Белгісіз</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Байланыс сақталсын ба?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Таңдаулылар</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Топтарды өзгерту</text>
+ <text id="IDS_COM_SK_SAVE">Сақтау</text>
+ <text id="IDS_PB_BODY_PROVINCE">Облыс</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Атау картасын жіберу</text>
+ <text id="IDS_COM_POP_ADDED">Қосылды</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Бейне қоңырау</text>
+ <text id="IDS_PB_BODY_HOME">Үй парағы</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Жарамсыз формат</text>
+ <text id="IDS_PB_BODY_NOTE">Ескерту</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Контакт қондырғылары</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Дисплей есімі жасату</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Контактілер жойылуда...</text>
+ <text id="IDS_PB_BODY_STREET">Көше</text>
+ <text id="IDS_PB_BODY_NUMBER">Нөмір</text>
+ <text id="IDS_PB_HEADER_DETAILS">Өзгешеліктері</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Өзгерістерді алып тастау керек пе?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Пошта индексі</text>
+ <text id="IDS_COM_BODY_REMOVE">Жоғалту</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Факс (үй)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Алдымен аты</text>
+ <text id="IDS_PB_BODY_DEFAULT">Өздігінен</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Топ атауы</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">그룹</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">이름</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">직위</text>
+ <text id="IDS_PB_BODY_COMPANY">회사</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">기념일</text>
+ <text id="IDS_COM_POP_CLOSE">닫기</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">모두 선택</text>
+ <text id="IDS_COM_POP_DELETE_Q">삭제할까요?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">즐겨찾기에 추가</text>
+ <text id="IDS_PB_BODY_PHONE">전화</text>
+ <text id="IDS_COM_BODY_MESSAGE">메시지</text>
+ <text id="IDS_PB_BODY_LAST_NAME">성</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">연락처 저장</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">휴대폰(회사)</text>
+ <text id="IDS_PB_SK_CANCEL">취소</text>
+ <text id="IDS_COM_SK_NEW">추가</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">중간 이름</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">대표 이메일로 지정</text>
+ <text id="IDS_PB_BODY_OTHER">기타</text>
+ <text id="IDS_COM_POP_REMOVED">제거되었습니다</text>
+ <text id="IDS_PB_BODY_COUNTRY">국가</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">동료</text>
+ <text id="IDS_COM_POP_SUCCESS">완료되었습니다</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">생일</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">모든 연락처</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">미지정</text>
+ <text id="IDS_COM_SK_DONE">완료</text>
+ <text id="IDS_PB_BODY_MOBILE">휴대폰</text>
+ <text id="IDS_COM_BODY_EMAIL">이메일</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">내장 메모리에 저장 공간이 없습니다</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">그룹 선택</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">전화번호가 바르지 않습니다</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">구성원 추가</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">연락처가 없습니다</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">사진 삭제</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">성 먼저</text>
+ <text id="IDS_PB_OPT_VIEW">보기</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">생년월일이 바르지 않습니다</text>
+ <text id="IDS_PB_BODY_WORK">회사</text>
+ <text id="IDS_COM_SK_EDIT">편집</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">이메일 주소가 바르지 않습니다</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">모둠이 없습니다</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">연락처에 추가</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">대표 번호로 지정</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">추가 정보</text>
+ <text id="IDS_COM_POP_SELECTED">선택되었습니다</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">비어 있음</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">사진 촬영</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">그룹 추가</text>
+ <text id="IDS_COM_SK_DELETE">삭제</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">팩스(회사)</text>
+ <text id="IDS_PB_BODY_RINGTONE">벨소리</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">친구</text>
+ <text id="IDS_PB_BODY_ADDRESS">주소</text>
+ <text id="IDS_COM_BODY_COPY">복사</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">자주 사용하는 연락처 목록이 없습니다</text>
+ <text id="IDS_COM_BODY_CONTACTS">연락처</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">연락처 선택</text>
+ <text id="IDS_PB_BODY_PAGER">호출기</text>
+ <text id="IDS_MP_POP_INVALID_FILE">바르지 않은 파일입니다</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">메신저</text>
+ <text id="IDS_COM_BODY_GALLERY">갤러리</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">휴대폰(집)</text>
+ <text id="IDS_COM_BODY_SEARCH">검색</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">사용 중인 이름입니다</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">가족</text>
+ <text id="IDS_PB_BODY_CITY">도시</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">이름</text>
+ <text id="IDS_COM_BODY_CREATE">추가</text>
+ <text id="IDS_PB_BODY_NICKNAME">별명</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">부서</text>
+ <text id="IDS_PB_BODY_SUFFIX">호칭</text>
+ <text id="IDS_COM_BODY_CALL">통화</text>
+ <text id="IDS_COM_BODY_SETTINGS">설정</text>
+ <text id="IDS_COM_POP_UNKNOWN">알 수 없음</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">연락처를 저장할까요?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">즐겨찾기</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">그룹 편집</text>
+ <text id="IDS_COM_SK_SAVE">저장</text>
+ <text id="IDS_PB_BODY_PROVINCE">지역</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">명함 전송</text>
+ <text id="IDS_COM_POP_ADDED">추가되었습니다</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">영상통화</text>
+ <text id="IDS_PB_BODY_HOME">집</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">형식이 바르지 않습니다</text>
+ <text id="IDS_PB_BODY_NOTE">노트</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">연락처 설정</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">이름 표기 순서</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">연락처 삭제 중...</text>
+ <text id="IDS_PB_BODY_STREET">거리</text>
+ <text id="IDS_PB_BODY_NUMBER">번호</text>
+ <text id="IDS_PB_HEADER_DETAILS">상세 정보</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">변경사항을 저장하지 않고 종료할까요?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">우편번호</text>
+ <text id="IDS_COM_BODY_REMOVE">제거</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">팩스(집)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">이름 먼저</text>
+ <text id="IDS_PB_BODY_DEFAULT">기본</text>
+ <text id="IDS_COM_SK_OK">확인</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">그룹 이름</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupas</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Vārds</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Amata nosaukums</text>
+ <text id="IDS_PB_BODY_COMPANY">Uzņēmums</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Jubileja</text>
+ <text id="IDS_COM_POP_CLOSE">Aizvērt</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Izv. visu</text>
+ <text id="IDS_COM_POP_DELETE_Q">Vai dzēst?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Pievienot izlasēm</text>
+ <text id="IDS_PB_BODY_PHONE">Tālrunis</text>
+ <text id="IDS_COM_BODY_MESSAGE">Ziņa</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Uzvārds</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Saglabāt kontaktu</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobilā tālruņa numurs (darba)</text>
+ <text id="IDS_PB_SK_CANCEL">Atcelt</text>
+ <text id="IDS_COM_SK_NEW">Jauns</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Otrs vārds</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Atzīmēt kā noklusējuma e-pastu</text>
+ <text id="IDS_PB_BODY_OTHER">Cits</text>
+ <text id="IDS_COM_POP_REMOVED">Noņemts</text>
+ <text id="IDS_PB_BODY_COUNTRY">Valsts</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Darba biedri</text>
+ <text id="IDS_COM_POP_SUCCESS">Veiksmīgi</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Dzimšanas diena</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Visi kontakti</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nav piešķirts</text>
+ <text id="IDS_COM_SK_DONE">Gatavs</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobilais</text>
+ <text id="IDS_COM_BODY_EMAIL">E-pasts</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Ierīces krātuve ir pilna</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Atlasīt grupu</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Nederīgs numurs</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Piev.dal.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Kontaktu nav</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Noņemt fotoattēlu</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Vispirms uzvārds</text>
+ <text id="IDS_PB_OPT_VIEW">Skatīt</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Nederīgs dzimšanas datums</text>
+ <text id="IDS_PB_BODY_WORK">Darbā</text>
+ <text id="IDS_COM_SK_EDIT">Rediģēt</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Nederīga e-pasta adrese</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nav grupas</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Pievienot kontaktiem</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Atzīmēt kā noklusējuma numuru</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Papildinformācija</text>
+ <text id="IDS_COM_POP_SELECTED">Izvēlēts</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tukšs</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografēt</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Jauna grupa</text>
+ <text id="IDS_COM_SK_DELETE">Dzēst</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faksa numurs (darba)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Zvana signāls</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Draugi</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adrese</text>
+ <text id="IDS_COM_BODY_COPY">Kopēt</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nav izlašu</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakti</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Kontaktu izvēle</text>
+ <text id="IDS_PB_BODY_PAGER">Peidžera numurs</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Nederīgs fails</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Tūlītējā ziņapmaiņa</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobilā tālruņa numurs (mājas)</text>
+ <text id="IDS_COM_BODY_SEARCH">Meklēt</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Grupas nosaukums jau tiek lietots</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Ģimene</text>
+ <text id="IDS_PB_BODY_CITY">Pilsēta</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nosaukums</text>
+ <text id="IDS_COM_BODY_CREATE">Izveidot</text>
+ <text id="IDS_PB_BODY_NICKNAME">Segvārds</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Nodaļa</text>
+ <text id="IDS_PB_BODY_SUFFIX">Piedēklis</text>
+ <text id="IDS_COM_BODY_CALL">Zvans</text>
+ <text id="IDS_COM_BODY_SETTINGS">Iestatījumi</text>
+ <text id="IDS_COM_POP_UNKNOWN">Nezināms</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Vai saglabāt kontaktu?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Izlase</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Rediģēt grupas</text>
+ <text id="IDS_COM_SK_SAVE">Saglabāt</text>
+ <text id="IDS_PB_BODY_PROVINCE">Province</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Sūtīt vizītkarti</text>
+ <text id="IDS_COM_POP_ADDED">Pievienots</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videozvans</text>
+ <text id="IDS_PB_BODY_HOME">Mājas</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Nederīgs formāts</text>
+ <text id="IDS_PB_BODY_NOTE">Piezīme</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontakta iestatījumi</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Parādāmā vārda secība</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Dzēš kontaktus...</text>
+ <text id="IDS_PB_BODY_STREET">Iela</text>
+ <text id="IDS_PB_BODY_NUMBER">Numurs</text>
+ <text id="IDS_PB_HEADER_DETAILS">Dati</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Vai atmest izmaiņas?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Pasta indekss</text>
+ <text id="IDS_COM_BODY_REMOVE">Noņemt</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faksa numurs (mājas)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Vispirms vārds</text>
+ <text id="IDS_PB_BODY_DEFAULT">Noklusējums</text>
+ <text id="IDS_COM_SK_OK">Labi</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Grupas nosaukums</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupės</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Vardas</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Pareigos</text>
+ <text id="IDS_PB_BODY_COMPANY">Įmonė</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Sukaktis</text>
+ <text id="IDS_COM_POP_CLOSE">Uždaryti</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Pasirinkti viską</text>
+ <text id="IDS_COM_POP_DELETE_Q">Ar trinti?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Įtraukti į parankinius</text>
+ <text id="IDS_PB_BODY_PHONE">Telefonas</text>
+ <text id="IDS_COM_BODY_MESSAGE">Žinutė</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Pavardė</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Išsaugoti adresatą</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobilusis (darbo)</text>
+ <text id="IDS_PB_SK_CANCEL">Atšaukti</text>
+ <text id="IDS_COM_SK_NEW">Naujas</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Antras vardas</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Pažymėti kaip numatytąjį el. paštą</text>
+ <text id="IDS_PB_BODY_OTHER">Kiti</text>
+ <text id="IDS_COM_POP_REMOVED">Pašalinta</text>
+ <text id="IDS_PB_BODY_COUNTRY">Šalis</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Bendradarbiai</text>
+ <text id="IDS_COM_POP_SUCCESS">Pavyko</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Gimtadienis</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Visi adresatai</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nepriskirta</text>
+ <text id="IDS_COM_SK_DONE">Atlikta</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobilusis</text>
+ <text id="IDS_COM_BODY_EMAIL">El. paštas</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Įrenginio atmintis pilna</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Pasirinkti grupę</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Neteisingas numeris</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Prid.narį</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Nėra adresatų</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Šalinti nuotrauką</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Pirmiausia pavardė</text>
+ <text id="IDS_PB_OPT_VIEW">Rodyti</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Neteisinga gimimo data</text>
+ <text id="IDS_PB_BODY_WORK">Darbas</text>
+ <text id="IDS_COM_SK_EDIT">Redaguoti</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neteisingas el. pašto adresas</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nėra grupės</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Įtraukti į adresatus</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Pažymėti kaip numatytąjį skaičių</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Daugiau informacijos</text>
+ <text id="IDS_COM_POP_SELECTED">Pasirinkta</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tuščia</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografuoti</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nauja grupė</text>
+ <text id="IDS_COM_SK_DELETE">Trinti</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faksas (darbo)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Skambėjimo tonas</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Draugai</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresas</text>
+ <text id="IDS_COM_BODY_COPY">Kopijuoti</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nėra parankinių</text>
+ <text id="IDS_COM_BODY_CONTACTS">Adresatai</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Pasirinkite adresatus</text>
+ <text id="IDS_PB_BODY_PAGER">Pranešimų gaviklis</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Netinkamas failas</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Tiesioginis pranešiklis</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobilusis telefonas (namų)</text>
+ <text id="IDS_COM_BODY_SEARCH">Ieškoti</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Grupės pavadinimas jau naudojamas</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Šeima</text>
+ <text id="IDS_PB_BODY_CITY">Miestas</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Pavadinimas</text>
+ <text id="IDS_COM_BODY_CREATE">Kurti</text>
+ <text id="IDS_PB_BODY_NICKNAME">Slapyvardis</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Skyrius</text>
+ <text id="IDS_PB_BODY_SUFFIX">Priesaga</text>
+ <text id="IDS_COM_BODY_CALL">Skambutis</text>
+ <text id="IDS_COM_BODY_SETTINGS">Nustat.</text>
+ <text id="IDS_COM_POP_UNKNOWN">Nežinomas</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Išsaugoti adresatą?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Parankiniai</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Redaguoti grupes</text>
+ <text id="IDS_COM_SK_SAVE">Išsaug.</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincija</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Siųsti vardo kortelę</text>
+ <text id="IDS_COM_POP_ADDED">Pridėta</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Vaizdo skambutis</text>
+ <text id="IDS_PB_BODY_HOME">Namų</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Netinkamas formatas</text>
+ <text id="IDS_PB_BODY_NOTE">Pastaba</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Adresatų nustatymai</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Vardų rodymo tvarka</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Trinami adresatai...</text>
+ <text id="IDS_PB_BODY_STREET">Gatvė</text>
+ <text id="IDS_PB_BODY_NUMBER">Numeris</text>
+ <text id="IDS_PB_HEADER_DETAILS">Išsami informacija</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Naikinti pakeitimus?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Pašto kodas</text>
+ <text id="IDS_COM_BODY_REMOVE">Šalinti</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faksas (namų)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Pirmiausia vardas</text>
+ <text id="IDS_PB_BODY_DEFAULT">Numatytoji</text>
+ <text id="IDS_COM_SK_OK">Gerai</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Grupės pavadinimas</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Групи</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Име</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Работно место</text>
+ <text id="IDS_PB_BODY_COMPANY">Фирма</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Годишнина</text>
+ <text id="IDS_COM_POP_CLOSE">Затвори</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Избери ги сите</text>
+ <text id="IDS_COM_POP_DELETE_Q">Да се избрише?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Додај во омилени</text>
+ <text id="IDS_PB_BODY_PHONE">Телефон</text>
+ <text id="IDS_COM_BODY_MESSAGE">Порака</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Презиме</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Сочувај запис во</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Мобилен (Работа)</text>
+ <text id="IDS_PB_SK_CANCEL">Откажи</text>
+ <text id="IDS_COM_SK_NEW">Нова</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Татково име</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Означи како основен email</text>
+ <text id="IDS_PB_BODY_OTHER">Друго</text>
+ <text id="IDS_COM_POP_REMOVED">Отстрането</text>
+ <text id="IDS_PB_BODY_COUNTRY">Држава</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Колеги</text>
+ <text id="IDS_COM_POP_SUCCESS">Успешно</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Роденден</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Сите записи</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Не е назначено</text>
+ <text id="IDS_COM_SK_DONE">Готово</text>
+ <text id="IDS_PB_BODY_MOBILE">Мобилен</text>
+ <text id="IDS_COM_BODY_EMAIL">Е-пошта</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Меморијата на уредот е полна</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Избери група</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Погрешен број</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Дод. член</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Нема записи</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Избриши фотографија</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Прво презимето</text>
+ <text id="IDS_PB_OPT_VIEW">Прикажи</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Неправилен датум на раѓање</text>
+ <text id="IDS_PB_BODY_WORK">Работа</text>
+ <text id="IDS_COM_SK_EDIT">Измени</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Погрешна email адреса</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Без група</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Додај во Контакти</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Означи како основен број</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Повеќе информации</text>
+ <text id="IDS_COM_POP_SELECTED">Избрано</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Празно</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Фотографирај</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Нова група</text>
+ <text id="IDS_COM_SK_DELETE">Избриши</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Факс (Работа)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Тон на ѕвонење</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Пријатели</text>
+ <text id="IDS_PB_BODY_ADDRESS">Адреса</text>
+ <text id="IDS_COM_BODY_COPY">Копирај</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Нема омилени</text>
+ <text id="IDS_COM_BODY_CONTACTS">Именик</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Избери контакти</text>
+ <text id="IDS_PB_BODY_PAGER">Пејџер</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Неправилен фајл</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Инстант пораки</text>
+ <text id="IDS_COM_BODY_GALLERY">Галерија</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Мобилен телефон (домашен)</text>
+ <text id="IDS_COM_BODY_SEARCH">Пребарување</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Името на групата веќе се користи</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Семејство</text>
+ <text id="IDS_PB_BODY_CITY">Град</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Име</text>
+ <text id="IDS_COM_BODY_CREATE">Ново</text>
+ <text id="IDS_PB_BODY_NICKNAME">Прекар</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Оддел</text>
+ <text id="IDS_PB_BODY_SUFFIX">Наставка</text>
+ <text id="IDS_COM_BODY_CALL">Повик</text>
+ <text id="IDS_COM_BODY_SETTINGS">Опции</text>
+ <text id="IDS_COM_POP_UNKNOWN">Непознато</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Да се сними контактот?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Омилени</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Измени групи</text>
+ <text id="IDS_COM_SK_SAVE">Сочувај</text>
+ <text id="IDS_PB_BODY_PROVINCE">Подрачје</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Прати картичка со име</text>
+ <text id="IDS_COM_POP_ADDED">Додадено</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Видео повик</text>
+ <text id="IDS_PB_BODY_HOME">Дома</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Погрешен формат</text>
+ <text id="IDS_PB_BODY_NOTE">Забелешка</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Параметри за контактот</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Редослед за прикажување на имињата</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Се бришат контакти...</text>
+ <text id="IDS_PB_BODY_STREET">Улица</text>
+ <text id="IDS_PB_BODY_NUMBER">Број</text>
+ <text id="IDS_PB_HEADER_DETAILS">Детали</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Отфрли промени?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Поштенски број</text>
+ <text id="IDS_COM_BODY_REMOVE">Отстрани</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Факс (домашен)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Првo името</text>
+ <text id="IDS_PB_BODY_DEFAULT">Основно</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Име на група</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Groepen</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Voornaam</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Functie</text>
+ <text id="IDS_PB_BODY_COMPANY">Bedrijf</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Verjaardag</text>
+ <text id="IDS_COM_POP_CLOSE">Sluiten</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Alles selecteren</text>
+ <text id="IDS_COM_POP_DELETE_Q">Verwijderen?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Toevoegen aan favorieten</text>
+ <text id="IDS_PB_BODY_PHONE">Telefoon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Bericht</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Achternaam</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Contact opslaan in</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobiel (werk)</text>
+ <text id="IDS_PB_SK_CANCEL">Annuleren</text>
+ <text id="IDS_COM_SK_NEW">Nieuw</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Tweede naam</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Markeren als standaard e-mailadres</text>
+ <text id="IDS_PB_BODY_OTHER">Overig</text>
+ <text id="IDS_COM_POP_REMOVED">Verwijderd</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Medewerkers</text>
+ <text id="IDS_COM_POP_SUCCESS">Voltooid</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Verjaardag</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Alle contacten</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Niet toegewezen</text>
+ <text id="IDS_COM_SK_DONE">Gereed</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobiel</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Apparaatopslag is vol</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Groep selecteren</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Ongeldig getal</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Nw lid</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Geen contactpersonen</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Foto verwijderen</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Achternaam eerst</text>
+ <text id="IDS_PB_OPT_VIEW">Weergeven</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Ongeldige geboortedatum</text>
+ <text id="IDS_PB_BODY_WORK">Zakelijk</text>
+ <text id="IDS_COM_SK_EDIT">Bewerken</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ongeldig e-mailadres</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Geen groep</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Voeg toe aan contacten</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Markeren als standaardnummer</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Meer informatie</text>
+ <text id="IDS_COM_POP_SELECTED">Geselecteerd</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Leeg</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Foto maken</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nieuwe groep</text>
+ <text id="IDS_COM_SK_DELETE">Wissen</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (werk)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Beltoon</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Vrienden</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adres</text>
+ <text id="IDS_COM_BODY_COPY">Kopiëren</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Geen favorieten</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacten</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Contacten selecteren</text>
+ <text id="IDS_PB_BODY_PAGER">Pieper</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Ongeldig bestand</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant Messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerij</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobiel (privé)</text>
+ <text id="IDS_COM_BODY_SEARCH">Zoeken</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Groepsnaam bestaat al</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familie</text>
+ <text id="IDS_PB_BODY_CITY">Plaats</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Naam</text>
+ <text id="IDS_COM_BODY_CREATE">Nieuw</text>
+ <text id="IDS_PB_BODY_NICKNAME">Bijnaam</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Afdeling</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffix</text>
+ <text id="IDS_COM_BODY_CALL">Oproep</text>
+ <text id="IDS_COM_BODY_SETTINGS">Instellingen</text>
+ <text id="IDS_COM_POP_UNKNOWN">Onbekend</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Contact opslaan?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favo- rieten</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Groepen bewerken</text>
+ <text id="IDS_COM_SK_SAVE">Opslaan</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincie</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Visitekaartje verzenden</text>
+ <text id="IDS_COM_POP_ADDED">Toegevoegd</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video-oproep</text>
+ <text id="IDS_PB_BODY_HOME">Privé</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Ongeldige indeling</text>
+ <text id="IDS_PB_BODY_NOTE">Notitie</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Instellingen contacten</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Weergavevolgorde</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Contacten verwijderen...</text>
+ <text id="IDS_PB_BODY_STREET">Straat</text>
+ <text id="IDS_PB_BODY_NUMBER">Nummer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Gegevens</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Wilt u de wijzigingen negeren?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postcode</text>
+ <text id="IDS_COM_BODY_REMOVE">Verwijderen</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (privé)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Voornaam eerst</text>
+ <text id="IDS_PB_BODY_DEFAULT">Standaard</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Groepsnaam</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupper</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Fornavn</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Jobbtittel</text>
+ <text id="IDS_PB_BODY_COMPANY">Selskap</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Årsdag</text>
+ <text id="IDS_COM_POP_CLOSE">Lukk</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Merk alt</text>
+ <text id="IDS_COM_POP_DELETE_Q">Slette?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Legg til i favoritter</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Melding</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Etternavn</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Lagre kontakt i</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (arbeid)</text>
+ <text id="IDS_PB_SK_CANCEL">Avbryt</text>
+ <text id="IDS_COM_SK_NEW">Ny</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Mellomnavn</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Merk som standard e-post</text>
+ <text id="IDS_PB_BODY_OTHER">Annet</text>
+ <text id="IDS_COM_POP_REMOVED">Fjernet</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Medarbeidere</text>
+ <text id="IDS_COM_POP_SUCCESS">Fullført</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Fødselsdag</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Alle kontakter</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Ikke tilordnet</text>
+ <text id="IDS_COM_SK_DONE">Utført</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-post</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Enhetsminnet er fullt</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Velg gruppe</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Ugyldig nummer</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Tilf. medl.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ingen kontakter</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Fjern bilde</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Etternavn først</text>
+ <text id="IDS_PB_OPT_VIEW">Vis</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Ugyldig fødselsdato</text>
+ <text id="IDS_PB_BODY_WORK">Arbeid</text>
+ <text id="IDS_COM_SK_EDIT">Rediger</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ugyldig e-postadresse</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ingen grupper</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Legg til i Kontakter</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Merk som standardnummer</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Mer informasjon</text>
+ <text id="IDS_COM_POP_SELECTED">Valgt</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tom</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Ta et bilde</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Ny gruppe</text>
+ <text id="IDS_COM_SK_DELETE">Slett</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (arbeid)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringetone</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Venner</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresse</text>
+ <text id="IDS_COM_BODY_COPY">Kopier</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ingen favoritter</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakter</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Velg kontakter</text>
+ <text id="IDS_PB_BODY_PAGER">Personsøker</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Ugyldig fil</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Direktemeldinger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galleri</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (hjem)</text>
+ <text id="IDS_COM_BODY_SEARCH">Søk</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Gruppenavn allerede i bruk</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familie</text>
+ <text id="IDS_PB_BODY_CITY">Sted</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Navn</text>
+ <text id="IDS_COM_BODY_CREATE">Opprett</text>
+ <text id="IDS_PB_BODY_NICKNAME">Kallenavn</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Avdeling</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffiks</text>
+ <text id="IDS_COM_BODY_CALL">Ring</text>
+ <text id="IDS_COM_BODY_SETTINGS">Innstillinger</text>
+ <text id="IDS_COM_POP_UNKNOWN">Ukjent</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Lagre kontakt?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favor.</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Rediger grupper</text>
+ <text id="IDS_COM_SK_SAVE">Lagre</text>
+ <text id="IDS_PB_BODY_PROVINCE">Region</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Send visittkort</text>
+ <text id="IDS_COM_POP_ADDED">Lagt til</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videoanrop</text>
+ <text id="IDS_PB_BODY_HOME">Hjem</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Ugyldig format</text>
+ <text id="IDS_PB_BODY_NOTE">Merknad</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontaktinnstillinger</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Rekkefølge på visningsnavn</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Sletter kontakter ...</text>
+ <text id="IDS_PB_BODY_STREET">Gate</text>
+ <text id="IDS_PB_BODY_NUMBER">Nummer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detaljer</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Forkaste endringer?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postnummer</text>
+ <text id="IDS_COM_BODY_REMOVE">Fjern</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (hjem)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Fornavn først</text>
+ <text id="IDS_PB_BODY_DEFAULT">Standard</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Gruppenavn</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">Adres URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupy</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Imię</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Stanowisko</text>
+ <text id="IDS_PB_BODY_COMPANY">Firma</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Rocznica</text>
+ <text id="IDS_COM_POP_CLOSE">Zamknij</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Zaznacz wszystko</text>
+ <text id="IDS_COM_POP_DELETE_Q">Usunąć?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Dodaj do Ulubionych</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Wiadomość</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Nazwisko</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Zapisz kontakt w</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Telefon komórkowy (praca)</text>
+ <text id="IDS_PB_SK_CANCEL">Anuluj</text>
+ <text id="IDS_COM_SK_NEW">Nowy</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Drugie imię</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Zaznacz jako domyślny adres e-mail</text>
+ <text id="IDS_PB_BODY_OTHER">Inne</text>
+ <text id="IDS_COM_POP_REMOVED">Usunięto</text>
+ <text id="IDS_PB_BODY_COUNTRY">Kraj</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Współpracownicy</text>
+ <text id="IDS_COM_POP_SUCCESS">Zakończono</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Urodziny</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Wszystkie kontakty</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nieprzypisane</text>
+ <text id="IDS_COM_SK_DONE">Gotowe</text>
+ <text id="IDS_PB_BODY_MOBILE">Komórkowy</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Pamięć urządzenia pełna</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Wybierz grupę</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Nieprawidłowy numer</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Dod. czł.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Brak kontaktów</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Usuń zdjęcie</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Najpierw nazwisko</text>
+ <text id="IDS_PB_OPT_VIEW">Podgląd</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Nieprawidłowa data urodzenia</text>
+ <text id="IDS_PB_BODY_WORK">Praca</text>
+ <text id="IDS_COM_SK_EDIT">Edytuj</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Nieprawidłowy adres e-mail</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Brak grupy</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Dodaj do kontaktów</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Zaznacz jako numer domyślny</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Więcej informacji</text>
+ <text id="IDS_COM_POP_SELECTED">Wybrane</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Pusta</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Zrób zdjęcie</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nowa grupa</text>
+ <text id="IDS_COM_SK_DELETE">Usuń</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (praca)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Dzwonek</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Przyjaciele</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adres</text>
+ <text id="IDS_COM_BODY_COPY">Kopiuj</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Brak ulubionych</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakty</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Wybierz kontakty</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Nieprawidłowy plik</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Komunikator błyskawiczny</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Komórkowy (prywatny)</text>
+ <text id="IDS_COM_BODY_SEARCH">Szukaj</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nazwa grupy już istnieje</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Rodzina</text>
+ <text id="IDS_PB_BODY_CITY">Miasto</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nazwa</text>
+ <text id="IDS_COM_BODY_CREATE">Utwórz</text>
+ <text id="IDS_PB_BODY_NICKNAME">Pseudonim</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Dział</text>
+ <text id="IDS_PB_BODY_SUFFIX">Nick</text>
+ <text id="IDS_COM_BODY_CALL">Połączenie</text>
+ <text id="IDS_COM_BODY_SETTINGS">Ustawienia</text>
+ <text id="IDS_COM_POP_UNKNOWN">Nieznana</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Zapisać kontakt?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Ulubione</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Edytuj grupy</text>
+ <text id="IDS_COM_SK_SAVE">Zapisz</text>
+ <text id="IDS_PB_BODY_PROVINCE">Okręg</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Wyślij wizytówkę</text>
+ <text id="IDS_COM_POP_ADDED">Dodano</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Połączenie wideo</text>
+ <text id="IDS_PB_BODY_HOME">Domowy</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Nieprawidłowy format</text>
+ <text id="IDS_PB_BODY_NOTE">Notatka</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Ustawienia kontaktów</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Kolejność wyświetlania nazw</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Usuwanie kontaktów...</text>
+ <text id="IDS_PB_BODY_STREET">Ulica</text>
+ <text id="IDS_PB_BODY_NUMBER">Numer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Szczegóły</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Odrzucić zmiany?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Kod pocztowy</text>
+ <text id="IDS_COM_BODY_REMOVE">Usuń</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (prywatny)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Najpierw imię</text>
+ <text id="IDS_PB_BODY_DEFAULT">Domyślna</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nazwa grupy</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupos</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Primeiro nome</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Título do trabalho</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Data comemorativa</text>
+ <text id="IDS_COM_POP_CLOSE">Fechar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Selecionar tudo</text>
+ <text id="IDS_COM_POP_DELETE_Q">Apagar?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Adicionar aos favoritos</text>
+ <text id="IDS_PB_BODY_PHONE">Telefone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mensagem</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Sobrenome</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Salvar contatos no</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Celular (Trabalho)</text>
+ <text id="IDS_PB_SK_CANCEL">Cancelar</text>
+ <text id="IDS_COM_SK_NEW">Novo</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segundo nome</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar como e-mail padrão</text>
+ <text id="IDS_PB_BODY_OTHER">Outros</text>
+ <text id="IDS_COM_POP_REMOVED">Removido</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Colegas de trabalho</text>
+ <text id="IDS_COM_POP_SUCCESS">Sucesso</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Aniversário</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Todos os contatos</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Não atribuído</text>
+ <text id="IDS_COM_SK_DONE">Concluído</text>
+ <text id="IDS_PB_BODY_MOBILE">Celular</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Armazenamento do dispositivo cheio</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Selecionar grupo</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Número inválido</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Adic. membro</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Sem contatos</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Remover foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Sobrenome primeiro</text>
+ <text id="IDS_PB_OPT_VIEW">Ver</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Data de nascimento inválida</text>
+ <text id="IDS_PB_BODY_WORK">Trabalho</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Endereço de e-mail inválido</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nenhum grupo</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Adicionar aos Contatos</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar como número padrão</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Mais informações</text>
+ <text id="IDS_COM_POP_SELECTED">Selecionado</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vazio</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Tirar uma foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Novo grupo</text>
+ <text id="IDS_COM_SK_DELETE">Apagar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Trabalho)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Toque</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amigos</text>
+ <text id="IDS_PB_BODY_ADDRESS">Endereço</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nenhum favorito</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contatos</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Selecionar contatos</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Arquivo inválido</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Mensagens instantâneas</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Celular (casa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Pesquisar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nome de grupo já utilizado</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Família</text>
+ <text id="IDS_PB_BODY_CITY">Cidade</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nome</text>
+ <text id="IDS_COM_BODY_CREATE">Criar</text>
+ <text id="IDS_PB_BODY_NICKNAME">Apelido</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departamento</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufixo</text>
+ <text id="IDS_COM_BODY_CALL">Chamada</text>
+ <text id="IDS_COM_BODY_SETTINGS">Config.</text>
+ <text id="IDS_COM_POP_UNKNOWN">Desconhecido</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Salvar contato?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoritos</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar grupos</text>
+ <text id="IDS_COM_SK_SAVE">Salvar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Província</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar cartão de visita</text>
+ <text id="IDS_COM_POP_ADDED">Adicionado</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videochamada</text>
+ <text id="IDS_PB_BODY_HOME">Casa</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Formato inválido</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contatos</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordem de exibição</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Apagando contatos...</text>
+ <text id="IDS_PB_BODY_STREET">Rua</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalhes</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Excluir alterações?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Código postal</text>
+ <text id="IDS_COM_BODY_REMOVE">Remover</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (casa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Nome próprio primeiro</text>
+ <text id="IDS_PB_BODY_DEFAULT">Padrão</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nome do grupo</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupos</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nome próprio</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Título</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversário</text>
+ <text id="IDS_COM_POP_CLOSE">Fechar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Seleccionar tudo</text>
+ <text id="IDS_COM_POP_DELETE_Q">Eliminar?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Adicionar aos favoritos</text>
+ <text id="IDS_PB_BODY_PHONE">Telefone</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mensagem</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Apelido</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Guardar contacto em</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Telemóvel (Trabalho)</text>
+ <text id="IDS_PB_SK_CANCEL">Cancelar</text>
+ <text id="IDS_COM_SK_NEW">Nova</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segundo nome</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar como e-mail padrão</text>
+ <text id="IDS_PB_BODY_OTHER">Outro</text>
+ <text id="IDS_COM_POP_REMOVED">Removido</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Colegas de trabalho</text>
+ <text id="IDS_COM_POP_SUCCESS">Concluído</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Data de nascimento</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Todos os contactos</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Não atribuído</text>
+ <text id="IDS_COM_SK_DONE">Concluído</text>
+ <text id="IDS_PB_BODY_MOBILE">Telemóvel</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Armazenamento do dispositivo cheio</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleccionar grupo</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Número inválido</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Adicionar</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Sem contactos</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Remover foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Apelido primeiro</text>
+ <text id="IDS_PB_OPT_VIEW">Ver</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Data de nascimento inválida</text>
+ <text id="IDS_PB_BODY_WORK">Empresa</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Endereço de e-mail inválido</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nenhum grupo</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Adicionar aos contactos</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar como número padrão</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Mais informações</text>
+ <text id="IDS_COM_POP_SELECTED">Seleccionado</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vazio</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Tirar uma fotografia</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Novo grupo</text>
+ <text id="IDS_COM_SK_DELETE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Trabalho)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Tom de toque</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amigos</text>
+ <text id="IDS_PB_BODY_ADDRESS">Endereço</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nenhuns favoritos</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleccionar contactos</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Ficheiro inválido</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Mensagens instantâneas</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Telemóvel (casa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Procurar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Nome do grupo já existente</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Família</text>
+ <text id="IDS_PB_BODY_CITY">Cidade</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nome</text>
+ <text id="IDS_COM_BODY_CREATE">Criar</text>
+ <text id="IDS_PB_BODY_NICKNAME">Pseudónimo</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departamento</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufixo</text>
+ <text id="IDS_COM_BODY_CALL">Ligar</text>
+ <text id="IDS_COM_BODY_SETTINGS">Definições</text>
+ <text id="IDS_COM_POP_UNKNOWN">Desconhecido</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Guardar contacto?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favorit.</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar\ngrupos</text>
+ <text id="IDS_COM_SK_SAVE">Guardar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Província</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar cartão de visita</text>
+ <text id="IDS_COM_POP_ADDED">Adicionado</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Vídeochamada</text>
+ <text id="IDS_PB_BODY_HOME">Pessoal</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Formato inválido</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Definições dos contactos</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordem do nome de apresentação</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">A eliminar contactos...</text>
+ <text id="IDS_PB_BODY_STREET">Rua</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalhes</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Eliminar alterações?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Código postal</text>
+ <text id="IDS_COM_BODY_REMOVE">Remover</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (casa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Nome próprio primeiro</text>
+ <text id="IDS_PB_BODY_DEFAULT">Padrão</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nome do grupo</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupuri</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nume</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Funcţie</text>
+ <text id="IDS_PB_BODY_COMPANY">Firmă</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversare</text>
+ <text id="IDS_COM_POP_CLOSE">Închidere</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Selectare toate</text>
+ <text id="IDS_COM_POP_DELETE_Q">Ştergeţi?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Adăugare la favorite</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mesaj</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Prenume</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Salvare contact în</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (Serviciu)</text>
+ <text id="IDS_PB_SK_CANCEL">Anulare</text>
+ <text id="IDS_COM_SK_NEW">Nou</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Al doilea nume</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcare ca e-mail implicit</text>
+ <text id="IDS_PB_BODY_OTHER">Alte</text>
+ <text id="IDS_COM_POP_REMOVED">Eliminat</text>
+ <text id="IDS_PB_BODY_COUNTRY">Ţară</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Colegi de muncă</text>
+ <text id="IDS_COM_POP_SUCCESS">Succes</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Zi de naştere</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Toate contactele</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Neatribuit</text>
+ <text id="IDS_COM_SK_DONE">Gata</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Spaţiu de stocare pe dispozitiv plin</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Selectare grup</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Număr incorect</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Ad. memb.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Niciun contact</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eliminare foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Mai întâi numele</text>
+ <text id="IDS_PB_OPT_VIEW">Vizualizare</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Data naşterii nevalidă</text>
+ <text id="IDS_PB_BODY_WORK">Serviciu</text>
+ <text id="IDS_COM_SK_EDIT">Editare</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Adresă e-mail invalidă</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Niciun grup</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Adăugare la Contacte</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcare ca număr implicit</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Mai multe informaţii</text>
+ <text id="IDS_COM_POP_SELECTED">Selectat</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Liber</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografiere</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Grup nou</text>
+ <text id="IDS_COM_SK_DELETE">Ştergere</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (Serviciu)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ton sonerie</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Prieteni</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresă</text>
+ <text id="IDS_COM_BODY_COPY">Copiere</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Niciun element favorit</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contacte</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Selectare contacte</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Fişier incorect</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Instant Messenger</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerie</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (Domiciliu)</text>
+ <text id="IDS_COM_BODY_SEARCH">Căutare</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Numele grupului deja în uz</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familie</text>
+ <text id="IDS_PB_BODY_CITY">Oraş</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nume</text>
+ <text id="IDS_COM_BODY_CREATE">Creare</text>
+ <text id="IDS_PB_BODY_NICKNAME">Pseudonim</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departament</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufix</text>
+ <text id="IDS_COM_BODY_CALL">Apel</text>
+ <text id="IDS_COM_BODY_SETTINGS">Setări</text>
+ <text id="IDS_COM_POP_UNKNOWN">Necunoscut</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Salvaţi contactul?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favorite</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editare grupuri</text>
+ <text id="IDS_COM_SK_SAVE">Salvare</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincie</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Trimitere carte de vizită</text>
+ <text id="IDS_COM_POP_ADDED">Adăugat</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Apel video</text>
+ <text id="IDS_PB_BODY_HOME">Acasă</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Format incorect</text>
+ <text id="IDS_PB_BODY_NOTE">Notă</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Setări contact</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Ordine afişare nume</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Se şterg contactele...</text>
+ <text id="IDS_PB_BODY_STREET">Stradă</text>
+ <text id="IDS_PB_BODY_NUMBER">Număr</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalii</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Renunţare la modificări?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Cod poştal</text>
+ <text id="IDS_COM_BODY_REMOVE">Eliminare</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (Domiciliu)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Mai întâi prenumele</text>
+ <text id="IDS_PB_BODY_DEFAULT">Implicit</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nume grup</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Группы</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Имя</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Должность</text>
+ <text id="IDS_PB_BODY_COMPANY">Компания</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Годовщина</text>
+ <text id="IDS_COM_POP_CLOSE">Закрыть</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Выделить все</text>
+ <text id="IDS_COM_POP_DELETE_Q">Удалить?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Добавить в избранное</text>
+ <text id="IDS_PB_BODY_PHONE">Телефон</text>
+ <text id="IDS_COM_BODY_MESSAGE">Сообщение</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Фамилия</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Место сохранения контакта</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Мобильный (рабочий)</text>
+ <text id="IDS_PB_SK_CANCEL">Отмена</text>
+ <text id="IDS_COM_SK_NEW">Создать</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Отчество</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Сделать адресом по умолчан.</text>
+ <text id="IDS_PB_BODY_OTHER">Другое</text>
+ <text id="IDS_COM_POP_REMOVED">Удалено</text>
+ <text id="IDS_PB_BODY_COUNTRY">Страна</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Коллеги</text>
+ <text id="IDS_COM_POP_SUCCESS">Успешно</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">День рождения</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Все контакты</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Не назначено</text>
+ <text id="IDS_COM_SK_DONE">Готово</text>
+ <text id="IDS_PB_BODY_MOBILE">Мобильный</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Память устройства заполнена</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Выберите группу</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Неправильный номер</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Добавить</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Нет контактов</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Удалить фото</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Сначала фамилия</text>
+ <text id="IDS_PB_OPT_VIEW">Просмотреть</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Недопустимая дата рождения</text>
+ <text id="IDS_PB_BODY_WORK">Рабочий</text>
+ <text id="IDS_COM_SK_EDIT">Изменить</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Неправильный адрес эл. почты</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Группа отсутствует</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Добавить в Контакты</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Сделать номером по умолчанию</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Подробнее</text>
+ <text id="IDS_COM_POP_SELECTED">Выбрано</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Пусто</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Сделать фото</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Новая группа</text>
+ <text id="IDS_COM_SK_DELETE">Удалить</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Факс (рабочий)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Мелодия звонка</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Друзья</text>
+ <text id="IDS_PB_BODY_ADDRESS">Адрес</text>
+ <text id="IDS_COM_BODY_COPY">Копировать</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Нет избранных</text>
+ <text id="IDS_COM_BODY_CONTACTS">Контакты</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Выберите контакты</text>
+ <text id="IDS_PB_BODY_PAGER">Пейджер</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Недопустимый файл</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Чат</text>
+ <text id="IDS_COM_BODY_GALLERY">Галерея</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Мобильный (домашний)</text>
+ <text id="IDS_COM_BODY_SEARCH">Поиск</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Имя группы уже используется</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Семья</text>
+ <text id="IDS_PB_BODY_CITY">Город</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Имя</text>
+ <text id="IDS_COM_BODY_CREATE">Создать</text>
+ <text id="IDS_PB_BODY_NICKNAME">Псевдоним</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Отдел</text>
+ <text id="IDS_PB_BODY_SUFFIX">Суффикс</text>
+ <text id="IDS_COM_BODY_CALL">Вызов</text>
+ <text id="IDS_COM_BODY_SETTINGS">Настройки</text>
+ <text id="IDS_COM_POP_UNKNOWN">Неизвестно</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Сохранить контакт?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Избранное</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Изменить группы</text>
+ <text id="IDS_COM_SK_SAVE">Соxранить</text>
+ <text id="IDS_PB_BODY_PROVINCE">Область</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Отправить визитку</text>
+ <text id="IDS_COM_POP_ADDED">Добавлено</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Видеовызов</text>
+ <text id="IDS_PB_BODY_HOME">Домашний</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Неверный формат</text>
+ <text id="IDS_PB_BODY_NOTE">Заметка</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Настройки контактов</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Сортировка контактов</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Удаление контактов...</text>
+ <text id="IDS_PB_BODY_STREET">Улица</text>
+ <text id="IDS_PB_BODY_NUMBER">Число</text>
+ <text id="IDS_PB_HEADER_DETAILS">Свойства</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Отменить изменения?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Почтовый индекс</text>
+ <text id="IDS_COM_BODY_REMOVE">Удалить</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Факс (домашний)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Сначала имя</text>
+ <text id="IDS_PB_BODY_DEFAULT">По умолчанию</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Имя группы</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="3.0.0.201209071526" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_CONTACT_DETAILS_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_FOOTER" type="NONE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_FOOTER" type="NONE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_TEXT" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="true"/>
+ <itemSet>
+ <footerItem actionId="10" disabledIconPath="" highlightedIconPath="" normalIconPath="" pressedIconPath="" selectedIconPath="" text="::IDS_COM_SK_EDIT"/>
+ <footerItem actionId="11" disabledIconPath="" highlightedIconPath="" normalIconPath="" pressedIconPath="" selectedIconPath="" text="::IDS_COM_SK_DELETE"/>
+ </itemSet>
+ </Footer>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+<Scene Bversion="3.0.0.201212051713" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_GROUP_EDITOR_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="NONE"/>
+ <layout mode="Landscape" style="FORM_STYLE_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="NONE"/>
+ </Form>
+ <Header>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" titleIconPath="" titleText="" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_TEXT" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="true"/>
+ <itemSet>
+ <footerItem actionId="0" disabledIconPath="" highlightedIconPath="" normalIconPath="" pressedIconPath="" selectedIconPath="" text="::IDS_COM_SK_SAVE"/>
+ </itemSet>
+ </Footer>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<!DOCTYPE Scene SYSTEM "UIForm.dtd">
+
+<Scene Bversion="2.0.0.201307161751" Dversion="20120315">
+ <LogicalCoordinate>720</LogicalCoordinate>
+ <Form id="IDL_GROUP_SELECTOR_FORM">
+ <property backgroundColor="" backgroundColorOpacity="100" notificationTrayOpenEnabled="false" orientation="Portrait" softKey0NormalIcon="" softKey0PressedIcon="" softKey0Text="" softKey1NormalIcon="" softKey1PressedIcon="" softKey1Text="" title="" titleAlign="ALIGN_CENTER" titleIcon="" translucentFooter="false" translucentHeader="false" translucentIndicator="false"/>
+ <layout mode="Portrait" style="FORM_STYLE_PORTRAIT_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ <layout mode="Landscape" style="FORM_STYLE_PORTRAIT_INDICATOR|FORM_STYLE_HEADER|FORM_STYLE_FOOTER" type="LAYOUT_RELATIVE"/>
+ </Form>
+ <Footer>
+ <property backgroundBitmapPath="" color="" colorOpacity="100" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" footerStyle="FOOTER_STYLE_BUTTON_TEXT" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="false" showMenuButton="false"/>
+ <itemSet>
+ <footerItem accessibilityHint="" actionId="12" disabledIconPath="" highlightedIconPath="" normalIconPath="" pressedIconPath="" selectedIconPath="" text="::IDS_PB_SK_CANCEL"/>
+ <footerItem accessibilityHint="" actionId="11" disabledIconPath="" highlightedIconPath="" normalIconPath="" pressedIconPath="" selectedIconPath="" text="::IDS_COM_SK_DONE"/>
+ </itemSet>
+ </Footer>
+ <Header>
+ <property accessibilityHint="" backgroundBitmapPath="" color="" colorOpacity="100" descriptionText="" descriptionTextColor="" disabledButtonColor="" disabledButtonColorOpacity="100" disabledButtonTextColor="" disabledItemColor="" disabledItemColorOpacity="100" disabledItemTextColor="" headerStyle="HEADER_STYLE_TITLE" highlightedButtonColor="" highlightedButtonColorOpacity="100" highlightedButtonTextColor="" highlightedItemColor="" highlightedItemColorOpacity="100" highlightedItemTextColor="" normalButtonColor="" normalButtonColorOpacity="100" normalButtonTextColor="" normalItemColor="" normalItemColorOpacity="100" normalItemTextColor="" pressedButtonColor="" pressedButtonColorOpacity="100" pressedButtonTextColor="" pressedItemColor="" pressedItemColorOpacity="100" pressedItemTextColor="" selectedItemColor="" selectedItemColorOpacity="100" selectedItemTextColor="" showBackButton="false" titleIconPath="" titleText="::IDS_PB_HEADER_SELECT_GROUP" titleTextColor=""/>
+ <itemSet/>
+ </Header>
+ <ListView id="IDC_LISTVIEW" parent="IDL_GROUP_SELECTOR_FORM">
+ <property backgroundBitmapPath="" backgroundColor="" backgroundColorOpacity="0" bitmapPathOfEmptyList="" colorOfEmptyListText="" itemDivider="true" itemDividerColor="" listScrollStyle="SCROLL_STYLE_FADE_OUT" scrollInputMode="SCROLL_INPUT_MODE_ALLOW_ANY_DIRECTION" sweepEnabled="false" textOfEmptyList="::IDS_PB_HEADER_NO_GROUP"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="963.0" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0.0" marginLeft="0.0" marginRight="0.0" marginTop="0.0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720.0" x="0.0" y="0.0"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="124.0" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0.0" marginLeft="0.0" marginRight="0.0" marginTop="0.0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="730.0" x="218.0" y="205.0"/>
+ </ListView>
+ <Label id="IDC_LABEL" parent="IDL_GROUP_SELECTOR_FORM">
+ <property accessibilityHint="" backgroundBitmapPath="" backgroundColor="#444444" backgroundColorOpacity="100" horizontalAlign="ALIGN_LEFT" leftMargin="16" text="::IDS_COM_POP_SELECTED" textColor="#FFFFFF" textSize="32.0" textStyle="LABEL_TEXT_STYLE_BOLD" topMargin="0" verticalAlign="ALIGN_MIDDLE"/>
+ <layout bottomRelation="IDL_GROUP_SELECTOR_FORM" bottomRelationType="RECT_EDGE_RELATION_BOTTOM_TO_BOTTOM" centerHorizontal="false" centerVertical="false" height="48.0" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0.0" marginLeft="0.0" marginRight="0.0" marginTop="0.0" mode="Portrait" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="720.0" x="0.0" y="978.0"/>
+ <layout bottomRelation="" bottomRelationType="" centerHorizontal="false" centerVertical="false" height="52.0" horizontalFitPolicy="FIT_POLICY_FIXED" leftRelation="" leftRelationType="" marginBottom="0.0" marginLeft="0.0" marginRight="0.0" marginTop="0.0" mode="Landscape" rightRelation="" rightRelationType="" topRelation="" topRelationType="" verticalFitPolicy="FIT_POLICY_FIXED" width="533.0" x="190.0" y="411.0"/>
+ </Label>
+</Scene>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Skupiny</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Meno</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Pracovná funkcia</text>
+ <text id="IDS_PB_BODY_COMPANY">Spoločnosť</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Výročie</text>
+ <text id="IDS_COM_POP_CLOSE">Zavrieť</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Vybrať všetky</text>
+ <text id="IDS_COM_POP_DELETE_Q">Odstrániť?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Pridať do obľúbených položiek</text>
+ <text id="IDS_PB_BODY_PHONE">Telefón</text>
+ <text id="IDS_COM_BODY_MESSAGE">Správa</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Priezvisko</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Uložiť kontakt do</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (práca)</text>
+ <text id="IDS_PB_SK_CANCEL">Zrušiť</text>
+ <text id="IDS_COM_SK_NEW">Nové</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Druhé krstné meno</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Označiť ako predvolený e-mail</text>
+ <text id="IDS_PB_BODY_OTHER">Ďalšie</text>
+ <text id="IDS_COM_POP_REMOVED">Odstránené</text>
+ <text id="IDS_PB_BODY_COUNTRY">Krajina</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Spolupracovníci</text>
+ <text id="IDS_COM_POP_SUCCESS">Dokončené</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Narodeniny</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Všetky kontakty</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nepriradené</text>
+ <text id="IDS_COM_SK_DONE">Hotovo</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobilné</text>
+ <text id="IDS_COM_BODY_EMAIL">E-mail</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Ukladací priestor zariadenia je plný</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Vyberte skupinu</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Neplatné číslo</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Pr. člena</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Žiadne kontakty</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Odstrániť fotografiu</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Najprv priezvisko</text>
+ <text id="IDS_PB_OPT_VIEW">Zobraziť</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Neplatný dátum narodenia</text>
+ <text id="IDS_PB_BODY_WORK">Práca</text>
+ <text id="IDS_COM_SK_EDIT">Upraviť</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neplatná e-mailová adresa</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Žiadna skupina</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Pridať do kontaktov</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Označiť ako predvolené číslo</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Ďalšie informácie</text>
+ <text id="IDS_COM_POP_SELECTED">Vybrané</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Prázdne</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotografovať</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nová skupina</text>
+ <text id="IDS_COM_SK_DELETE">Odstrániť</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (práca)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Zvonenie</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Priatelia</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresa</text>
+ <text id="IDS_COM_BODY_COPY">Kopírovať</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Žiadne obľúbené položky</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakty</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Vybrať kontakty</text>
+ <text id="IDS_PB_BODY_PAGER">Pager</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Neplatný súbor</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Odosielanie okamž. správ</text>
+ <text id="IDS_COM_BODY_GALLERY">Galéria</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (domov)</text>
+ <text id="IDS_COM_BODY_SEARCH">Hľadať</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Názov skupiny už existuje</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Rodina</text>
+ <text id="IDS_PB_BODY_CITY">Mesto</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Meno</text>
+ <text id="IDS_COM_BODY_CREATE">Vytvoriť</text>
+ <text id="IDS_PB_BODY_NICKNAME">Prezývka</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Oddelenie</text>
+ <text id="IDS_PB_BODY_SUFFIX">Titul za menom</text>
+ <text id="IDS_COM_BODY_CALL">Hovor</text>
+ <text id="IDS_COM_BODY_SETTINGS">Nastavenia</text>
+ <text id="IDS_COM_POP_UNKNOWN">Neznáme</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Uložiť kontakt?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Obľúbené</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Upraviť skupiny</text>
+ <text id="IDS_COM_SK_SAVE">Uložiť</text>
+ <text id="IDS_PB_BODY_PROVINCE">Kraj</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Odoslať vizitku</text>
+ <text id="IDS_COM_POP_ADDED">Pridané</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videohovor</text>
+ <text id="IDS_PB_BODY_HOME">Domov</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Neplatný formát</text>
+ <text id="IDS_PB_BODY_NOTE">Poznámka</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Nastavenia kontaktov</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Poradie zobrazovania mien</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Odstraňujú sa kontakty...</text>
+ <text id="IDS_PB_BODY_STREET">Ulica</text>
+ <text id="IDS_PB_BODY_NUMBER">Číslo</text>
+ <text id="IDS_PB_HEADER_DETAILS">Podrobnosti</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Zrušiť zmeny?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">PSČ</text>
+ <text id="IDS_COM_BODY_REMOVE">Odstrániť</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (domov)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Najprv krstné meno</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predvolený</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Názov skupiny</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Skupine</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ime</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Službeni naziv</text>
+ <text id="IDS_PB_BODY_COMPANY">Podjetje</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Obletnica</text>
+ <text id="IDS_COM_POP_CLOSE">Zapri</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Izberi vse</text>
+ <text id="IDS_COM_POP_DELETE_Q">Izbrišem?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Dodaj med priljubljene</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Sporočilo</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Priimek</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Stik shrani v</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobilni telefon (služba)</text>
+ <text id="IDS_PB_SK_CANCEL">Prekliči</text>
+ <text id="IDS_COM_SK_NEW">Novo</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Srednje ime</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Označi kot privzeto e-pošto</text>
+ <text id="IDS_PB_BODY_OTHER">Drugo</text>
+ <text id="IDS_COM_POP_REMOVED">Odstranjeno</text>
+ <text id="IDS_PB_BODY_COUNTRY">Država</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Sodelavci</text>
+ <text id="IDS_COM_POP_SUCCESS">Uspeh</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Rojstni dan</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Vse vizitke</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Ni dodeljeno</text>
+ <text id="IDS_COM_SK_DONE">Končano</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobilni</text>
+ <text id="IDS_COM_BODY_EMAIL">E-pošta</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Pomnilnik naprave je poln</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Izberite skupino</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Neveljavna številka</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Dod.člana</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ni stikov</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Odstrani fotografijo</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Najprej priimek</text>
+ <text id="IDS_PB_OPT_VIEW">Prikaži</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Neveljaven datum rojstva</text>
+ <text id="IDS_PB_BODY_WORK">Službeni</text>
+ <text id="IDS_COM_SK_EDIT">Uredi</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neveljaven e-poštni naslov</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ni skupine</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Dodaj nov stik</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Označi kot privzeto številko</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Več informacij</text>
+ <text id="IDS_COM_POP_SELECTED">Izbrano</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Izprazni</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Naredi fotografijo</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nova skupina</text>
+ <text id="IDS_COM_SK_DELETE">Izbriši</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (služba)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Melodija zvonjenja</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Prijatelji</text>
+ <text id="IDS_PB_BODY_ADDRESS">Naslov</text>
+ <text id="IDS_COM_BODY_COPY">Kopiraj</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ni priljubljenih</text>
+ <text id="IDS_COM_BODY_CONTACTS">Imenik</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Izberi stike</text>
+ <text id="IDS_PB_BODY_PAGER">Pozivnik</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Neveljavna datoteka</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Neposredno sporočanje</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobilni telefon (doma)</text>
+ <text id="IDS_COM_BODY_SEARCH">Iskanje</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ime skupine že obstaja</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Družina</text>
+ <text id="IDS_PB_BODY_CITY">Mesto</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Ime</text>
+ <text id="IDS_COM_BODY_CREATE">Ustvari</text>
+ <text id="IDS_PB_BODY_NICKNAME">Vzdevek</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Oddelek</text>
+ <text id="IDS_PB_BODY_SUFFIX">Pripona</text>
+ <text id="IDS_COM_BODY_CALL">Klic</text>
+ <text id="IDS_COM_BODY_SETTINGS">Nastavitve</text>
+ <text id="IDS_COM_POP_UNKNOWN">Neznano</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Shranim stik?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Priljub.</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Uredi skupine</text>
+ <text id="IDS_COM_SK_SAVE">Shrani</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provinca</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Pošlji vizitko</text>
+ <text id="IDS_COM_POP_ADDED">Dodano</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video klic</text>
+ <text id="IDS_PB_BODY_HOME">Domači</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Neveljaven zapis</text>
+ <text id="IDS_PB_BODY_NOTE">Beležka</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Nastavitve stika</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Zaporedje prikazanega imena</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Brisanje stikov ...</text>
+ <text id="IDS_PB_BODY_STREET">Ulica</text>
+ <text id="IDS_PB_BODY_NUMBER">Številka</text>
+ <text id="IDS_PB_HEADER_DETAILS">Podrobnosti</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Želite zavreči spremembe?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Poštna številka</text>
+ <text id="IDS_COM_BODY_REMOVE">Odstrani</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (doma)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Najprej ime</text>
+ <text id="IDS_PB_BODY_DEFAULT">Privzeto</text>
+ <text id="IDS_COM_SK_OK">V redu</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Ime skupine</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupos</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nombre</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Cargo</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversario</text>
+ <text id="IDS_COM_POP_CLOSE">Cerrar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Seleccionar todo</text>
+ <text id="IDS_COM_POP_DELETE_Q">¿Eliminar?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Añadir a favoritos</text>
+ <text id="IDS_PB_BODY_PHONE">Teléfono</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mensajes</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Apellidos</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Guardar contacto en</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Móvil (trabajo)</text>
+ <text id="IDS_PB_SK_CANCEL">Cancelar</text>
+ <text id="IDS_COM_SK_NEW">Nuevo</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segundo nombre</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar como correo electrónico predeterminado</text>
+ <text id="IDS_PB_BODY_OTHER">Otro</text>
+ <text id="IDS_COM_POP_REMOVED">Eliminado</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Compañeros de trabajo</text>
+ <text id="IDS_COM_POP_SUCCESS">Finalizado</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Cumpleaños</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Todos los contactos</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">No asignado</text>
+ <text id="IDS_COM_SK_DONE">Hecho</text>
+ <text id="IDS_PB_BODY_MOBILE">Móvil</text>
+ <text id="IDS_COM_BODY_EMAIL">Correo electrónico</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Almacenamiento de dispositivo lleno</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleccionar grupo</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Número no válido</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Añ miembr</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ningún contacto</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eliminar foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Apellido en primer lugar</text>
+ <text id="IDS_PB_OPT_VIEW">Ver</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Fecha de nacimiento incorrecta</text>
+ <text id="IDS_PB_BODY_WORK">Profesional</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Dirección de correo electrónico no válida</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ningún grupo</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Agregar a Contactos</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar como número predeterminado</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Más información</text>
+ <text id="IDS_COM_POP_SELECTED">Seleccionado</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vacío</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Hacer foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Grupo nuevo</text>
+ <text id="IDS_COM_SK_DELETE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (trabajo)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Melodía</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amigos</text>
+ <text id="IDS_PB_BODY_ADDRESS">Dirección</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ningún favorito</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleccionar contactos</text>
+ <text id="IDS_PB_BODY_PAGER">Buscapersonas</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Archivo no válido</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Mensajería instantánea</text>
+ <text id="IDS_COM_BODY_GALLERY">Galería</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Móvil (casa)</text>
+ <text id="IDS_COM_BODY_SEARCH">Buscar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">El nombre del grupo ya existe</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familia</text>
+ <text id="IDS_PB_BODY_CITY">Ciudad</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nombre</text>
+ <text id="IDS_COM_BODY_CREATE">Crear</text>
+ <text id="IDS_PB_BODY_NICKNAME">Alias</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departamento</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufijo</text>
+ <text id="IDS_COM_BODY_CALL">Llamar</text>
+ <text id="IDS_COM_BODY_SETTINGS">Ajustes</text>
+ <text id="IDS_COM_POP_UNKNOWN">Desconocido</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">¿Guardar contacto?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoritos</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar grupos</text>
+ <text id="IDS_COM_SK_SAVE">Guardar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincia</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar tarjeta de presentación</text>
+ <text id="IDS_COM_POP_ADDED">Añadido</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videollamada</text>
+ <text id="IDS_PB_BODY_HOME">Casa</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Formato no válido</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Ajustes de contactos</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Orden de mostrar nombre</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Eliminando contactos...</text>
+ <text id="IDS_PB_BODY_STREET">Calle</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalles</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">¿Descartar los cambios?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Código postal</text>
+ <text id="IDS_COM_BODY_REMOVE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (casa)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Nombre en primer lugar</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predeterminado</text>
+ <text id="IDS_COM_SK_OK">Aceptar</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nombre de grupo</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupos</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Nombre</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Puesto</text>
+ <text id="IDS_PB_BODY_COMPANY">Empresa</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Aniversario</text>
+ <text id="IDS_COM_POP_CLOSE">Cerrar</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Todo</text>
+ <text id="IDS_COM_POP_DELETE_Q">¿Eliminar?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Añadir a favoritos</text>
+ <text id="IDS_PB_BODY_PHONE">Dispositivo</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mensaje</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Apellido</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Guardar contacto en</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Móvil - Trabajo</text>
+ <text id="IDS_PB_SK_CANCEL">Cancelar</text>
+ <text id="IDS_COM_SK_NEW">Nuevo</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Segundo nombre</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Marcar como correo predeterminado</text>
+ <text id="IDS_PB_BODY_OTHER">Otro</text>
+ <text id="IDS_COM_POP_REMOVED">Eliminado</text>
+ <text id="IDS_PB_BODY_COUNTRY">País</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Compañeros de trabajo</text>
+ <text id="IDS_COM_POP_SUCCESS">Exitoso</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Cumpleaños</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Todos los contactos</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">No asignado</text>
+ <text id="IDS_COM_SK_DONE">Realizado</text>
+ <text id="IDS_PB_BODY_MOBILE">Móvil</text>
+ <text id="IDS_COM_BODY_EMAIL">Correo</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Almacenamiento de dispositivo completo</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Seleccionar grupo</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Número no válido</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Añ miembr</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Ningún contacto</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Eliminar imagen</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Apellido primero</text>
+ <text id="IDS_PB_OPT_VIEW">Ver</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Fecha de nacimiento no válida</text>
+ <text id="IDS_PB_BODY_WORK">Trabajo</text>
+ <text id="IDS_COM_SK_EDIT">Editar</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Dirección de correo no válida</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ningún grupo</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Añadir a Contactos</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Marcar como número predeterminado</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Más información</text>
+ <text id="IDS_COM_POP_SELECTED">Seleccionado</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Vacío</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Capturar imagen</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Añadir grupo</text>
+ <text id="IDS_COM_SK_DELETE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax - Trabajo</text>
+ <text id="IDS_PB_BODY_RINGTONE">Tono de llamada</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Amigos</text>
+ <text id="IDS_PB_BODY_ADDRESS">Dirección</text>
+ <text id="IDS_COM_BODY_COPY">Copiar</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Ningún favorito</text>
+ <text id="IDS_COM_BODY_CONTACTS">Contactos</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Seleccionar contactos</text>
+ <text id="IDS_PB_BODY_PAGER">Localizador</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Archivo no válido</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Mensaje instantáneo</text>
+ <text id="IDS_COM_BODY_GALLERY">Galería</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Móvil - Privado</text>
+ <text id="IDS_COM_BODY_SEARCH">Buscar</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ya existe ese nombre de grupo</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familia</text>
+ <text id="IDS_PB_BODY_CITY">Ciudad</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nombre</text>
+ <text id="IDS_COM_BODY_CREATE">Crear</text>
+ <text id="IDS_PB_BODY_NICKNAME">Alias</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departamento</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufijo</text>
+ <text id="IDS_COM_BODY_CALL">Llamada</text>
+ <text id="IDS_COM_BODY_SETTINGS">Configuración</text>
+ <text id="IDS_COM_POP_UNKNOWN">Desconocido</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">¿Guardar contacto?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoritos</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Editar grupos</text>
+ <text id="IDS_COM_SK_SAVE">Guardar</text>
+ <text id="IDS_PB_BODY_PROVINCE">Provincia</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Enviar tarjeta de presentación</text>
+ <text id="IDS_COM_POP_ADDED">Añadido</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videollam.</text>
+ <text id="IDS_PB_BODY_HOME">Casa</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Formato no válido</text>
+ <text id="IDS_PB_BODY_NOTE">Nota</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Contactos</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Mostrar por</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Eliminando contactos...</text>
+ <text id="IDS_PB_BODY_STREET">Calle</text>
+ <text id="IDS_PB_BODY_NUMBER">Número</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalles</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">¿Descartar los cambios?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Código postal</text>
+ <text id="IDS_COM_BODY_REMOVE">Eliminar</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax - Privado</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Nombre primero</text>
+ <text id="IDS_PB_BODY_DEFAULT">Predeterminado</text>
+ <text id="IDS_COM_SK_OK">Aceptar</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Nombre de grupo</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupe</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ime</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Radno mesto</text>
+ <text id="IDS_PB_BODY_COMPANY">Kompanija</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Godišnjica</text>
+ <text id="IDS_COM_POP_CLOSE">Zatvori</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Izaberi sve</text>
+ <text id="IDS_COM_POP_DELETE_Q">Obriši?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Dodaj u Omiljene</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Poruka</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Prezime</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Sačuvaj kontakt u</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobilni (poslovni)</text>
+ <text id="IDS_PB_SK_CANCEL">Poništi</text>
+ <text id="IDS_COM_SK_NEW">Nova</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Srednje ime</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Označi kao podrazumevanu e-poruku</text>
+ <text id="IDS_PB_BODY_OTHER">Ostalo</text>
+ <text id="IDS_COM_POP_REMOVED">Uklonjeno</text>
+ <text id="IDS_PB_BODY_COUNTRY">Zemlja</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Saradnici</text>
+ <text id="IDS_COM_POP_SUCCESS">Uspeh</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Rođendan</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Svi kontakti</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Nedodeljeno</text>
+ <text id="IDS_COM_SK_DONE">Gotovo</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobilni</text>
+ <text id="IDS_COM_BODY_EMAIL">E-pošta</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Memorija uređaja je popunjena</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Izaberi grupu</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Neispravan broj</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Dodaj čl.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Nema kontakata</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Ukloni fotografiju</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Prvo ide prezime</text>
+ <text id="IDS_PB_OPT_VIEW">Prikaži</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Neispravan datum rođenja</text>
+ <text id="IDS_PB_BODY_WORK">Posao</text>
+ <text id="IDS_COM_SK_EDIT">Izmeni</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Neispravna adresa e-pošte</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Nema grupe</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Dodaj u kontakte</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Označi kao podrazumevani broj</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Više informacija</text>
+ <text id="IDS_COM_POP_SELECTED">Izabrano</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Prazno</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Snimi fotografiju</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Nova grupa</text>
+ <text id="IDS_COM_SK_DELETE">Obriši</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (poslovni)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ton zvona</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Prijatelji</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adresa</text>
+ <text id="IDS_COM_BODY_COPY">Kopiraj</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Nema omiljenih</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakti</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Izaberi kontakte</text>
+ <text id="IDS_PB_BODY_PAGER">Pejdžer</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Neispravan fajl</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Trenutne poruke</text>
+ <text id="IDS_COM_BODY_GALLERY">Galerija</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobilni telefon (privatni)</text>
+ <text id="IDS_COM_BODY_SEARCH">Pretraži</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Ime grupe se već koristi</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Porodica</text>
+ <text id="IDS_PB_BODY_CITY">Grad</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Ime</text>
+ <text id="IDS_COM_BODY_CREATE">Kreiraj</text>
+ <text id="IDS_PB_BODY_NICKNAME">Nadimak</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Odeljenje</text>
+ <text id="IDS_PB_BODY_SUFFIX">Sufiks</text>
+ <text id="IDS_COM_BODY_CALL">Poziv</text>
+ <text id="IDS_COM_BODY_SETTINGS">Podešavanja</text>
+ <text id="IDS_COM_POP_UNKNOWN">Nepoznato</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Sačuvaj kontakt?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Omiljeni</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Izmeni grupe</text>
+ <text id="IDS_COM_SK_SAVE">Sačuvaj</text>
+ <text id="IDS_PB_BODY_PROVINCE">Regija</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Pošalji vizitkartu</text>
+ <text id="IDS_COM_POP_ADDED">Dodato</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video poziv</text>
+ <text id="IDS_PB_BODY_HOME">Kuća</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Neispravan format</text>
+ <text id="IDS_PB_BODY_NOTE">Beleška</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Podešavanja kontakata</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Redosled prikaza imena</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Brisanje kontakata...</text>
+ <text id="IDS_PB_BODY_STREET">Ulica</text>
+ <text id="IDS_PB_BODY_NUMBER">Broj</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detalji</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Odbaciti promene?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Poštanski broj</text>
+ <text id="IDS_COM_BODY_REMOVE">Ukloni</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (privatni)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Prvo ide ime</text>
+ <text id="IDS_PB_BODY_DEFAULT">Podrazumevano</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Naziv grupe</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Grupper</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Förnamn</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Befattning</text>
+ <text id="IDS_PB_BODY_COMPANY">Företag</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Årsdag</text>
+ <text id="IDS_COM_POP_CLOSE">Stäng</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Välj alla</text>
+ <text id="IDS_COM_POP_DELETE_Q">Radera?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Lägg till i favoriter</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Meddelande</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Efternamn</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Spara kontakt i</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil (arbetet)</text>
+ <text id="IDS_PB_SK_CANCEL">Avbryt</text>
+ <text id="IDS_COM_SK_NEW">Nytt</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Mellannamn</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Markera som standard-e-post</text>
+ <text id="IDS_PB_BODY_OTHER">Annat</text>
+ <text id="IDS_COM_POP_REMOVED">Borttagen</text>
+ <text id="IDS_PB_BODY_COUNTRY">Land</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Kollegor</text>
+ <text id="IDS_COM_POP_SUCCESS">Slutfört</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Födelsedag</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Alla kontakter</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Inte tilldelad</text>
+ <text id="IDS_COM_SK_DONE">Klar</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-post</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Enhetslagringen är full</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Välj grupp</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Ogiltigt nummer</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Ny medlem</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Inga kontakter</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Ta bort foto</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Efternamn först</text>
+ <text id="IDS_PB_OPT_VIEW">Visa</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Ogiltigt födelsedatum</text>
+ <text id="IDS_PB_BODY_WORK">Arbete</text>
+ <text id="IDS_COM_SK_EDIT">Redigera</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Ogiltig e-postadress</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Ingen grupp</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Lägg till i Kontakter</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Markera som huvudnummer</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Mer information</text>
+ <text id="IDS_COM_POP_SELECTED">Vald</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Tom</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Ta ett foto</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Ny grupp</text>
+ <text id="IDS_COM_SK_DELETE">Radera</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Fax (arbetet)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Ringsignal</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Vänner</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adress</text>
+ <text id="IDS_COM_BODY_COPY">Kopiera</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Inga favoriter</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontakter</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Välj kontakter</text>
+ <text id="IDS_PB_BODY_PAGER">Personsökare</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Ogiltig fil</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Snabbmeddelande</text>
+ <text id="IDS_COM_BODY_GALLERY">Galleri</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil (hem)</text>
+ <text id="IDS_COM_BODY_SEARCH">Sök</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Gruppnamnet används redan</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Familj</text>
+ <text id="IDS_PB_BODY_CITY">Ort</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Namn</text>
+ <text id="IDS_COM_BODY_CREATE">Skapa</text>
+ <text id="IDS_PB_BODY_NICKNAME">Smeknamn</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Avdelning</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffix</text>
+ <text id="IDS_COM_BODY_CALL">Samtal</text>
+ <text id="IDS_COM_BODY_SETTINGS">Inställningar</text>
+ <text id="IDS_COM_POP_UNKNOWN">Okänd</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Spara kontakt?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favorit.</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Redigera grupper</text>
+ <text id="IDS_COM_SK_SAVE">Spara</text>
+ <text id="IDS_PB_BODY_PROVINCE">Region</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Skicka visitkort</text>
+ <text id="IDS_COM_POP_ADDED">Tillagd</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Videosamtal</text>
+ <text id="IDS_PB_BODY_HOME">Hem</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Ogiltigt format</text>
+ <text id="IDS_PB_BODY_NOTE">Notering</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontaktinställningar</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Namnordning</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Raderar kontakter...</text>
+ <text id="IDS_PB_BODY_STREET">Gata</text>
+ <text id="IDS_PB_BODY_NUMBER">Nummer</text>
+ <text id="IDS_PB_HEADER_DETAILS">Detaljer</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Ta bort ändringar?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Postnr</text>
+ <text id="IDS_COM_BODY_REMOVE">Ta bort</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Fax (hem)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Förnamn först</text>
+ <text id="IDS_PB_BODY_DEFAULT">Standard</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Gruppnamn</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201305162056" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">กลุ่ม</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">ชื่อ</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">การครบรอบ</text>
+ <text id="IDS_PB_BODY_COMPANY">บริษัท</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">ชื่องาน</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">เลือกทั้งหมด</text>
+ <text id="IDS_COM_POP_CLOSE">ปิด</text>
+ <text id="IDS_COM_POP_DELETE_Q">ลบ?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">เพิ่มในรายชื่อที่ชอบ</text>
+ <text id="IDS_PB_BODY_PHONE">โทรศัพท์</text>
+ <text id="IDS_COM_BODY_MESSAGE">ข้อความ</text>
+ <text id="IDS_PB_BODY_LAST_NAME">นามสกุล</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">บันทึกรายชื่อไปยัง</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">มือถือ (ที่ทำงาน)</text>
+ <text id="IDS_COM_SK_NEW">ใหม่</text>
+ <text id="IDS_PB_SK_CANCEL">ยกเลิก</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">ชื่อกลาง</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">เลือกเป็นอีเมล์พื้นฐาน</text>
+ <text id="IDS_PB_BODY_OTHER">อื่นๆ</text>
+ <text id="IDS_COM_POP_REMOVED">ลบเรียบร้อย</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">เพื่อนร่วมงาน</text>
+ <text id="IDS_COM_POP_SUCCESS">เสร็จสิ้น</text>
+ <text id="IDS_PB_BODY_COUNTRY">ประเทศ</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">วันเกิด</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">รายชื่อทั้งหมด</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">ไม่ได้กำหนด</text>
+ <text id="IDS_COM_SK_DONE">เรียบร้อย</text>
+ <text id="IDS_PB_BODY_MOBILE">มือถือ</text>
+ <text id="IDS_COM_BODY_EMAIL">อีเมล์</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">พื้นที่จัดเก็บภายในอุปกรณ์เต็ม</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">เลือกกลุ่ม</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">ตัวเลขไม่ถูกต้อง</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">ใส่สมาชิก</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">ไม่มี\nรายชื่อ</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">ลบรูปถ่าย</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">นามสกุลก่อน</text>
+ <text id="IDS_PB_OPT_VIEW">แสดง</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">วันเกิดไม่ถูกต้อง</text>
+ <text id="IDS_PB_BODY_WORK">ที่ทำงาน</text>
+ <text id="IDS_COM_SK_EDIT">แก้ไข</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">ที่อยู่อีเมล์ไม่ถูกต้อง</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">ไม่มีกลุ่ม</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">เพิ่มในรายชื่อ</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">ระบุเป็นเบอร์พื้นฐาน</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">ข้อมูลเพิ่มเติม</text>
+ <text id="IDS_COM_POP_SELECTED">เลือกแล้ว</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">ว่าง</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">ถ่ายรูป</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">กลุ่มใหม่</text>
+ <text id="IDS_COM_SK_DELETE">ลบ</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">แฟกซ์ (ที่ทำงาน)</text>
+ <text id="IDS_PB_BODY_RINGTONE">เสียงเรียกเข้า</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">เพื่อนๆ</text>
+ <text id="IDS_COM_BODY_COPY">คัดลอก</text>
+ <text id="IDS_PB_BODY_ADDRESS">ที่อยู่</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">ไม่มีรายชื่อที่ชอบ</text>
+ <text id="IDS_COM_BODY_CONTACTS">รายชื่อ</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">เลือกรายชื่อ</text>
+ <text id="IDS_PB_BODY_PAGER">วิทยุติดตามตัว</text>
+ <text id="IDS_MP_POP_INVALID_FILE">ไฟล์ใช้ไม่ได้</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">โปรแกรมส่งข้อความทันใจ</text>
+ <text id="IDS_COM_BODY_GALLERY">แกลเลอรี่</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">มือถือ (บ้าน)</text>
+ <text id="IDS_COM_BODY_SEARCH">ค้นหา</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">ชื่อกลุ่มใช้\nอยู่แล้ว</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">ครอบครัว</text>
+ <text id="IDS_PB_BODY_CITY">เมือง</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">ชื่อ</text>
+ <text id="IDS_COM_BODY_CREATE">สร้าง</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">แผนก</text>
+ <text id="IDS_PB_BODY_NICKNAME">ชื่อเล่น</text>
+ <text id="IDS_COM_BODY_CALL">โทร</text>
+ <text id="IDS_PB_BODY_SUFFIX">คำต่อท้าย</text>
+ <text id="IDS_COM_BODY_SETTINGS">การตั้งค่า</text>
+ <text id="IDS_COM_POP_UNKNOWN">ไม่รู้จัก</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">รายการ\nที่ชอบ</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">บันทึกรายชื่อ?</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">แก้ไขกลุ่ม</text>
+ <text id="IDS_COM_SK_SAVE">บันทึก</text>
+ <text id="IDS_PB_BODY_PROVINCE">จังหวัด</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">การโทรวีดีโอ</text>
+ <text id="IDS_COM_POP_ADDED">เพิ่มแล้ว</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">ส่งนามบัตร</text>
+ <text id="IDS_PB_BODY_HOME">บ้าน</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">ฟอร์แมตไม่ถูกต้อง</text>
+ <text id="IDS_PB_BODY_NOTE">บันทึก</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">การตั้งค่ารายชื่อ</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">เรียงตามชื่อที่แสดง</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">กำลังลบรายชื่อ...</text>
+ <text id="IDS_PB_BODY_NUMBER">หมายเลข</text>
+ <text id="IDS_PB_BODY_STREET">ถนน</text>
+ <text id="IDS_PB_HEADER_DETAILS">ข้อมูล</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">รหัสไปรษณีย์</text>
+ <text id="IDS_COM_BODY_REMOVE">ลบ</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">แฟกซ์ (บ้าน)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">ชื่อก่อน</text>
+ <text id="IDS_COM_SK_OK">ตกลง</text>
+ <text id="IDS_PB_BODY_DEFAULT">พื้นฐาน</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">ชื่อกลุ่ม</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Gruplar</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ad</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">İş ünvanı</text>
+ <text id="IDS_PB_BODY_COMPANY">Şirket</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Yıl dönümü</text>
+ <text id="IDS_COM_POP_CLOSE">Kapat</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Hepsini seç</text>
+ <text id="IDS_COM_POP_DELETE_Q">Sil?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Favorilere ekle</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Mesaj</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Soyad</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kişinin kaydedileceği yer</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Cep telefonu (İş)</text>
+ <text id="IDS_PB_SK_CANCEL">İptal</text>
+ <text id="IDS_COM_SK_NEW">Yeni</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">İkinci ad</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Varsayılan e-posta olarak işaretle</text>
+ <text id="IDS_PB_BODY_OTHER">Diğer</text>
+ <text id="IDS_COM_POP_REMOVED">Kaldırıldı</text>
+ <text id="IDS_PB_BODY_COUNTRY">Ülke</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Meslektaşlar</text>
+ <text id="IDS_COM_POP_SUCCESS">Başarılı</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Doğum günü</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Tüm kişiler</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Atanmadı</text>
+ <text id="IDS_COM_SK_DONE">Kaydet</text>
+ <text id="IDS_PB_BODY_MOBILE">Cep Telefonu</text>
+ <text id="IDS_COM_BODY_EMAIL">E-posta</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Cihaz belleği dolu</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Grup seç</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Geçersiz numara</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Üye ekle</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Kişi yok</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Fotoyu kaldır</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Önce soyadı</text>
+ <text id="IDS_PB_OPT_VIEW">Göster</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Geçersiz doğum tarihi</text>
+ <text id="IDS_PB_BODY_WORK">İş</text>
+ <text id="IDS_COM_SK_EDIT">Düzenle</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Geçersiz e-posta adresi</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Grup yok</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Rehbere ekle</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Varsayılan numara olarak işaretle</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Daha fazla bilgi</text>
+ <text id="IDS_COM_POP_SELECTED">Seçili</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Boş</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Fotoğraf çek</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Yeni grup</text>
+ <text id="IDS_COM_SK_DELETE">Sil</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (İş)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Zil sesi</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Arkadaşlar</text>
+ <text id="IDS_PB_BODY_ADDRESS">Adres</text>
+ <text id="IDS_COM_BODY_COPY">Kopyala</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Favori yok</text>
+ <text id="IDS_COM_BODY_CONTACTS">Rehber</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Kişileri seç</text>
+ <text id="IDS_PB_BODY_PAGER">Çağrı cihazı</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Geçersiz dosya</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Anlık mesajlaşma</text>
+ <text id="IDS_COM_BODY_GALLERY">Galeri</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Cep telefonu (Ev)</text>
+ <text id="IDS_COM_BODY_SEARCH">Arama</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Grup ismi zaten var</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Aile</text>
+ <text id="IDS_PB_BODY_CITY">Şehir</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">İsim</text>
+ <text id="IDS_COM_BODY_CREATE">Oluştur</text>
+ <text id="IDS_PB_BODY_NICKNAME">Takma ad</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Departman</text>
+ <text id="IDS_PB_BODY_SUFFIX">Son ek</text>
+ <text id="IDS_COM_BODY_CALL">Arama</text>
+ <text id="IDS_COM_BODY_SETTINGS">Ayarlar</text>
+ <text id="IDS_COM_POP_UNKNOWN">Bilinmeyen</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Kişiyi kaydet?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Favoriler</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Grupları düzenle</text>
+ <text id="IDS_COM_SK_SAVE">Kaydet</text>
+ <text id="IDS_PB_BODY_PROVINCE">Bölge</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Kartvizit gönder</text>
+ <text id="IDS_COM_POP_ADDED">Eklendi</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video arama</text>
+ <text id="IDS_PB_BODY_HOME">Ev</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Geçersiz biçim</text>
+ <text id="IDS_PB_BODY_NOTE">Not</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kişi ayarları</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">İsim görünümü</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kişiler siliniyor...</text>
+ <text id="IDS_PB_BODY_STREET">Cadde</text>
+ <text id="IDS_PB_BODY_NUMBER">Numara:</text>
+ <text id="IDS_PB_HEADER_DETAILS">Ayrıntılar</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Değişikliklerden vazgeç?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Posta kodu</text>
+ <text id="IDS_COM_BODY_REMOVE">Kaldır</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (Ev)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Önce ilk adı</text>
+ <text id="IDS_PB_BODY_DEFAULT">Varsayılan</text>
+ <text id="IDS_COM_SK_OK">Tamam</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Grup ismi</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">Групи</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ім'я</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Посада</text>
+ <text id="IDS_PB_BODY_COMPANY">Організація</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Річниця</text>
+ <text id="IDS_COM_POP_CLOSE">Закрити</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Вибрати всі</text>
+ <text id="IDS_COM_POP_DELETE_Q">Видалити?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Додати до обраного</text>
+ <text id="IDS_PB_BODY_PHONE">Телефон</text>
+ <text id="IDS_COM_BODY_MESSAGE">Повідомлення</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Прізвище</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Зберегти контакт до</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Мобільний (робочий)</text>
+ <text id="IDS_PB_SK_CANCEL">Скасувати</text>
+ <text id="IDS_COM_SK_NEW">Нове</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Друге ім’я</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Позначити як стандартну адресу Email</text>
+ <text id="IDS_PB_BODY_OTHER">Інші</text>
+ <text id="IDS_COM_POP_REMOVED">Видалено</text>
+ <text id="IDS_PB_BODY_COUNTRY">Країна</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Співробітники</text>
+ <text id="IDS_COM_POP_SUCCESS">Успішно</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">День народження</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Всі контакти</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Не призначено</text>
+ <text id="IDS_COM_SK_DONE">Готово</text>
+ <text id="IDS_PB_BODY_MOBILE">Мобільний</text>
+ <text id="IDS_COM_BODY_EMAIL">Email</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Місце збереження на пристрої заповнено</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Вибрати групу</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Хибний номер</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">Дод.учас.</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Немає контактів</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Видалити фотографію</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Спочатку прізвище</text>
+ <text id="IDS_PB_OPT_VIEW">Переглянути</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Некоректна дата народження</text>
+ <text id="IDS_PB_BODY_WORK">Робота</text>
+ <text id="IDS_COM_SK_EDIT">Редагув.</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Невірна адреса Email</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Немає групи</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Додати в контакти</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Позначити як стандартний номер</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Подробиці</text>
+ <text id="IDS_COM_POP_SELECTED">Вибрано</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Пусто</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Зробити фото</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Нова група</text>
+ <text id="IDS_COM_SK_DELETE">Видалити</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Факс (робочий)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Звук дзвінка</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Друзі</text>
+ <text id="IDS_PB_BODY_ADDRESS">Адреса</text>
+ <text id="IDS_COM_BODY_COPY">Копіювати</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Немає обраних</text>
+ <text id="IDS_COM_BODY_CONTACTS">Контакти</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Вибір контактів</text>
+ <text id="IDS_PB_BODY_PAGER">Пейджер</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Хибний файл</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Обмін повідомленнями</text>
+ <text id="IDS_COM_BODY_GALLERY">Галерея</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Мобільний (домашній)</text>
+ <text id="IDS_COM_BODY_SEARCH">Пошук</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Назва групи вже використовується</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Сім'я</text>
+ <text id="IDS_PB_BODY_CITY">Місто</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Iм'я</text>
+ <text id="IDS_COM_BODY_CREATE">Створити</text>
+ <text id="IDS_PB_BODY_NICKNAME">Псевдонім</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Відділ</text>
+ <text id="IDS_PB_BODY_SUFFIX">Суфікс</text>
+ <text id="IDS_COM_BODY_CALL">Виклик</text>
+ <text id="IDS_COM_BODY_SETTINGS">Установки</text>
+ <text id="IDS_COM_POP_UNKNOWN">Невідомо</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Зберегти контакт?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Обране</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Редагувати групи</text>
+ <text id="IDS_COM_SK_SAVE">Зберегти</text>
+ <text id="IDS_PB_BODY_PROVINCE">Провінція</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Надіслати візитівку</text>
+ <text id="IDS_COM_POP_ADDED">Додано</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Відеовиклик</text>
+ <text id="IDS_PB_BODY_HOME">Домашній</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Недійсний формат</text>
+ <text id="IDS_PB_BODY_NOTE">Нотатка</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Установки контакту</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Порядок відображення імен</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Видалення контактів...</text>
+ <text id="IDS_PB_BODY_STREET">Вулиця</text>
+ <text id="IDS_PB_BODY_NUMBER">Цифри</text>
+ <text id="IDS_PB_HEADER_DETAILS">Деталі</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">Скасувати зміни?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Поштовий індекс</text>
+ <text id="IDS_COM_BODY_REMOVE">Видалити</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Факс (домашній)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Спочатку ім’я</text>
+ <text id="IDS_PB_BODY_DEFAULT">За замовчуванням</text>
+ <text id="IDS_COM_SK_OK">ОК</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Ім’я групи</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201305162056" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">گروپ</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">پہلا نام</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">سالگرہ</text>
+ <text id="IDS_PB_BODY_COMPANY">کمپنی</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">نوکری کا نام</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">تمام منتخب کریں</text>
+ <text id="IDS_COM_POP_CLOSE">بند کرنا</text>
+ <text id="IDS_COM_POP_DELETE_Q">مٹانا؟</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">پسندیدہ میں اضافہ کریں</text>
+ <text id="IDS_PB_BODY_PHONE">فون</text>
+ <text id="IDS_COM_BODY_MESSAGE">پیغام</text>
+ <text id="IDS_PB_BODY_LAST_NAME">آخری نام</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">کو محفوظ کریں</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">موبائل (کاروبار)</text>
+ <text id="IDS_COM_SK_NEW">نیا</text>
+ <text id="IDS_PB_SK_CANCEL">منسوخ</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">وسطی نام</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">بطور طے شدہ ای میل نشان لگائیں</text>
+ <text id="IDS_PB_BODY_OTHER">مزید</text>
+ <text id="IDS_COM_POP_REMOVED">ہٹا دیا</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">شریک کارندے</text>
+ <text id="IDS_COM_POP_SUCCESS">کامیابی</text>
+ <text id="IDS_PB_BODY_COUNTRY">ملک</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">یوم پیدائش</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">تمام کانٹیکٹس</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">غیر متعلقہ</text>
+ <text id="IDS_COM_SK_DONE">ٹھیک ہے</text>
+ <text id="IDS_PB_BODY_MOBILE">موبائل</text>
+ <text id="IDS_COM_BODY_EMAIL">ای میل</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">آلے کا ذخیرہ بھر چکا ہے</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">گروپ منتخب کریں</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">ناجائز نمبر</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">رکن شامل</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">رابطے نہیں</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">فوٹوز ہٹائیں</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">آخری نام پہلے</text>
+ <text id="IDS_PB_OPT_VIEW">نظارہ</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">غیر مجاز تاریخ پیدائش</text>
+ <text id="IDS_PB_BODY_WORK">کام</text>
+ <text id="IDS_COM_SK_EDIT">تبدیلی</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">ناجائز ای میل پتہ</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">کوئی گروپ نہیں</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">کانٹیکٹس کا اضافہ کریں</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">بطور ڈیفالٹ مارک کیں</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">اور معلومات</text>
+ <text id="IDS_COM_POP_SELECTED">انتخاب ہوگیا</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">خالی</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">تصویر لیں</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">نیا گروہ</text>
+ <text id="IDS_COM_SK_DELETE">مٹانا</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">فیکس (کاروبار)</text>
+ <text id="IDS_PB_BODY_RINGTONE">رنگ ٹون</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">فرینڈز</text>
+ <text id="IDS_COM_BODY_COPY">کاپی</text>
+ <text id="IDS_PB_BODY_ADDRESS">ایڈریس</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">کوئی پسندیدہ نہیں ہیں</text>
+ <text id="IDS_COM_BODY_CONTACTS">رابطے</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">رابطہ افراد منتخب کریں</text>
+ <text id="IDS_PB_BODY_PAGER">پیجر</text>
+ <text id="IDS_MP_POP_INVALID_FILE">فایل ویلڈ نہیں</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">انسٹنٹ میسنجر</text>
+ <text id="IDS_COM_BODY_GALLERY">گیلری</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">موبائل (گھر)</text>
+ <text id="IDS_COM_BODY_SEARCH">سرچ</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">گروپ کا نام پہلے سے استعمال میں</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">خاندان</text>
+ <text id="IDS_PB_BODY_CITY">شہر</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">نام</text>
+ <text id="IDS_COM_BODY_CREATE">تخلیق</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">محکمہ</text>
+ <text id="IDS_PB_BODY_NICKNAME">نک نام</text>
+ <text id="IDS_COM_BODY_CALL">کال</text>
+ <text id="IDS_PB_BODY_SUFFIX">لاحقہ</text>
+ <text id="IDS_COM_BODY_SETTINGS">سیٹنگز</text>
+ <text id="IDS_COM_POP_UNKNOWN">نامعلوم</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">پسندیدہ اشیا</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">کانٹیکٹ محفوظ کریں؟</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">گروپس تدوین کریں</text>
+ <text id="IDS_COM_SK_SAVE">محفوظ</text>
+ <text id="IDS_PB_BODY_PROVINCE">صُوبہ</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">ویڈیو کال</text>
+ <text id="IDS_COM_POP_ADDED">اضافہ ہو گیا</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">نام کارڈ بھیجیں</text>
+ <text id="IDS_PB_BODY_HOME">ہوم</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">غلط فارمیٹ</text>
+ <text id="IDS_PB_BODY_NOTE">نوٹ</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">کانٹیکٹ کی سیٹینگز</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">ڈسپلے نام کی ترتیب</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">رابطہ افراد حذف کررہا ہے...</text>
+ <text id="IDS_PB_BODY_NUMBER">نمبر</text>
+ <text id="IDS_PB_BODY_STREET">سٹریٹ</text>
+ <text id="IDS_PB_HEADER_DETAILS">تفصیل</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">پوسٹل کوڈ</text>
+ <text id="IDS_COM_BODY_REMOVE">ہٹانا</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">فیکس (گھر)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">پہلا نام پہلے</text>
+ <text id="IDS_COM_SK_OK">ٹھیک ہے</text>
+ <text id="IDS_PB_BODY_DEFAULT">ڈیفالٹ</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">گروپ کا نام</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL-manzil</text>
+ <text id="IDS_PB_BODY_GROUPS">Guruhlar</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">Ismi</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">Lavozim nomi</text>
+ <text id="IDS_PB_BODY_COMPANY">Kompaniya</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">Yubiley</text>
+ <text id="IDS_COM_POP_CLOSE">Yopish</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">Barchasini tanlash</text>
+ <text id="IDS_COM_POP_DELETE_Q">O'chirilsinmi?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">Tanlanganlarga qo‘shish</text>
+ <text id="IDS_PB_BODY_PHONE">Telefon</text>
+ <text id="IDS_COM_BODY_MESSAGE">Xabar</text>
+ <text id="IDS_PB_BODY_LAST_NAME">Familiya</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">Kontaktni saqla</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">Mobil telefon (ish)</text>
+ <text id="IDS_PB_SK_CANCEL">Bekor q.</text>
+ <text id="IDS_COM_SK_NEW">Yangi</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">Otasining ismi</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">Asosiy e-pochta sifatida belgilash</text>
+ <text id="IDS_PB_BODY_OTHER">Boshqa</text>
+ <text id="IDS_COM_POP_REMOVED">Olib tashlandi</text>
+ <text id="IDS_PB_BODY_COUNTRY">Mamlakat</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">Hamkasblar</text>
+ <text id="IDS_COM_POP_SUCCESS">Muvaffaqiyat</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">Tug‘ilgan kun</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">Barcha kontaktlar</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">Tayinlanmagan</text>
+ <text id="IDS_COM_SK_DONE">Bajarildi</text>
+ <text id="IDS_PB_BODY_MOBILE">Mobil</text>
+ <text id="IDS_COM_BODY_EMAIL">E-pochta</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">Qurilma xotirasi to‘la</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">Guruh tanlang</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">Noto‘g‘ri raqam</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">A’zo qo‘sh</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">Kontaktlar yo‘q</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">Rasmni olib tashlash</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">Avval familiya</text>
+ <text id="IDS_PB_OPT_VIEW">Ko‘rib chiqish</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">Noto‘g‘ri tug‘ilgan kun sanasi</text>
+ <text id="IDS_PB_BODY_WORK">Ish</text>
+ <text id="IDS_COM_SK_EDIT">Tahrirl.</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">Noto‘g‘ri e-pochta manzili</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">Guruh mavjud emas</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">Kontaktlarga qo‘shish</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">Birlam. o'rn. raqam sifatida belgilash</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">Boshqa ma’lumotlar</text>
+ <text id="IDS_COM_POP_SELECTED">Tanlangan</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">Bo‘sh</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">Suratga olish</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">Yangi guruh</text>
+ <text id="IDS_COM_SK_DELETE">O'chirish</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">Faks (ish)</text>
+ <text id="IDS_PB_BODY_RINGTONE">Rington</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">Do‘stlar</text>
+ <text id="IDS_PB_BODY_ADDRESS">Manzil</text>
+ <text id="IDS_COM_BODY_COPY">Nusxa olish</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">Tanlanganlar yo‘q</text>
+ <text id="IDS_COM_BODY_CONTACTS">Kontaktlar</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">Kontaktlar tanlang</text>
+ <text id="IDS_PB_BODY_PAGER">Peyjer</text>
+ <text id="IDS_MP_POP_INVALID_FILE">Noto‘g‘ri fayl</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">Oniy xabar mesenjeri (IM)</text>
+ <text id="IDS_COM_BODY_GALLERY">Galereya</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">Mobil telefon (uy)</text>
+ <text id="IDS_COM_BODY_SEARCH">Qidirish</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">Guruh nomi avvaldan ishlatilmoqda</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">Oila</text>
+ <text id="IDS_PB_BODY_CITY">Shahar</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">Nom</text>
+ <text id="IDS_COM_BODY_CREATE">Yaratish</text>
+ <text id="IDS_PB_BODY_NICKNAME">Laqab</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">Bo'lim</text>
+ <text id="IDS_PB_BODY_SUFFIX">Suffiks</text>
+ <text id="IDS_COM_BODY_CALL">Qo‘ng‘iroq qilish</text>
+ <text id="IDS_COM_BODY_SETTINGS">Parametrlar</text>
+ <text id="IDS_COM_POP_UNKNOWN">Noma’lum</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">Kontakt saqlansinmi?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">Tanlanganlar</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">Guruhlarni tahrirlash</text>
+ <text id="IDS_COM_SK_SAVE">Saqlash</text>
+ <text id="IDS_PB_BODY_PROVINCE">Viloyat</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">Tashrif kartasi yuborish</text>
+ <text id="IDS_COM_POP_ADDED">Qo‘shilgan</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">Video qo‘ng‘iroq</text>
+ <text id="IDS_PB_BODY_HOME">Asosiy</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">Noto‘g‘ri format</text>
+ <text id="IDS_PB_BODY_NOTE">Eslatma</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">Kontakt parametrlari</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">Displey nomlari tartibi</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">Kontaktlar o‘chirilmoqda...</text>
+ <text id="IDS_PB_BODY_STREET">Ko‘cha</text>
+ <text id="IDS_PB_BODY_NUMBER">Raqam</text>
+ <text id="IDS_PB_HEADER_DETAILS">Tafsilotlar</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">O‘zgartirishlar rad etilsinmi?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">Pochta indeksi</text>
+ <text id="IDS_COM_BODY_REMOVE">Olib tashlash</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">Faks (uy)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">Avval ism</text>
+ <text id="IDS_PB_BODY_DEFAULT">Birlamchi</text>
+ <text id="IDS_COM_SK_OK">OK</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">Guruh nomi</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">网址</text>
+ <text id="IDS_PB_BODY_GROUPS">分组</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">名字</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">职位</text>
+ <text id="IDS_PB_BODY_COMPANY">公司</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">纪念日</text>
+ <text id="IDS_COM_POP_CLOSE">关闭</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">全选</text>
+ <text id="IDS_COM_POP_DELETE_Q">删除?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">添加至收藏</text>
+ <text id="IDS_PB_BODY_PHONE">手机</text>
+ <text id="IDS_COM_BODY_MESSAGE">信息</text>
+ <text id="IDS_PB_BODY_LAST_NAME">姓氏</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">储存联系人到</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">手机(工作)</text>
+ <text id="IDS_PB_SK_CANCEL">取消</text>
+ <text id="IDS_COM_SK_NEW">新建</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">中间名</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">标记为默认电子邮件</text>
+ <text id="IDS_PB_BODY_OTHER">其他</text>
+ <text id="IDS_COM_POP_REMOVED">已移除</text>
+ <text id="IDS_PB_BODY_COUNTRY">国家</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">同事</text>
+ <text id="IDS_COM_POP_SUCCESS">成功</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">生日</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">全部联系人</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">未分配</text>
+ <text id="IDS_COM_SK_DONE">完成</text>
+ <text id="IDS_PB_BODY_MOBILE">手机</text>
+ <text id="IDS_COM_BODY_EMAIL">电子邮件</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">设备存储已满</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">选择群组</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">数值无效</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">添加成员</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">没有联系人</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">移除照片</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">姓</text>
+ <text id="IDS_PB_OPT_VIEW">查看</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">无效生日日期</text>
+ <text id="IDS_PB_BODY_WORK">工作</text>
+ <text id="IDS_COM_SK_EDIT">编辑</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">电子邮件地址无效</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">无群组</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">添加到联系人</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">标记为默认号码</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">更多信息</text>
+ <text id="IDS_COM_POP_SELECTED">已选择</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">空</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">拍照</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">新群组</text>
+ <text id="IDS_COM_SK_DELETE">删除</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">传真(工作)</text>
+ <text id="IDS_PB_BODY_RINGTONE">铃声</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">好友</text>
+ <text id="IDS_PB_BODY_ADDRESS">地址</text>
+ <text id="IDS_COM_BODY_COPY">复制</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">没有收藏</text>
+ <text id="IDS_COM_BODY_CONTACTS">联系人</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">选择联系人</text>
+ <text id="IDS_PB_BODY_PAGER">寻呼机</text>
+ <text id="IDS_MP_POP_INVALID_FILE">无效文件</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">IM</text>
+ <text id="IDS_COM_BODY_GALLERY">图库</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">手机(家庭)</text>
+ <text id="IDS_COM_BODY_SEARCH">搜索</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">群组名称已使用</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">家人</text>
+ <text id="IDS_PB_BODY_CITY">城市</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">名称</text>
+ <text id="IDS_COM_BODY_CREATE">新建</text>
+ <text id="IDS_PB_BODY_NICKNAME">昵称</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">部门</text>
+ <text id="IDS_PB_BODY_SUFFIX">后缀</text>
+ <text id="IDS_COM_BODY_CALL">通话</text>
+ <text id="IDS_COM_BODY_SETTINGS">设定</text>
+ <text id="IDS_COM_POP_UNKNOWN">未知</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">存储联系人?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">收藏</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">编辑分组</text>
+ <text id="IDS_COM_SK_SAVE">保存</text>
+ <text id="IDS_PB_BODY_PROVINCE">省</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">发送名片</text>
+ <text id="IDS_COM_POP_ADDED">已添加</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">视频通话</text>
+ <text id="IDS_PB_BODY_HOME">家庭</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">格式无效</text>
+ <text id="IDS_PB_BODY_NOTE">注释</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">联系人设置</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">姓名显示顺序</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">正在删除联系人…</text>
+ <text id="IDS_PB_BODY_STREET">街道</text>
+ <text id="IDS_PB_BODY_NUMBER">号码</text>
+ <text id="IDS_PB_HEADER_DETAILS">详情</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">放弃变更?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">邮编</text>
+ <text id="IDS_COM_BODY_REMOVE">移除</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">传真(家庭)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">首先是名字</text>
+ <text id="IDS_PB_BODY_DEFAULT">默认</text>
+ <text id="IDS_COM_SK_OK">确定</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">群组名称</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">網址</text>
+ <text id="IDS_PB_BODY_GROUPS">群組</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">名字</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">職稱</text>
+ <text id="IDS_PB_BODY_COMPANY">公司</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">週年</text>
+ <text id="IDS_COM_POP_CLOSE">關閉</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">選擇全部</text>
+ <text id="IDS_COM_POP_DELETE_Q">刪除嗎?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">加到我的最愛</text>
+ <text id="IDS_PB_BODY_PHONE">電話</text>
+ <text id="IDS_COM_BODY_MESSAGE">訊息</text>
+ <text id="IDS_PB_BODY_LAST_NAME">姓氏</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">儲存聯絡人到</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">手機(工作)</text>
+ <text id="IDS_PB_SK_CANCEL">取消</text>
+ <text id="IDS_COM_SK_NEW">新增</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">中間名</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">標記為預設電子郵件</text>
+ <text id="IDS_PB_BODY_OTHER">其他</text>
+ <text id="IDS_COM_POP_REMOVED">已移除</text>
+ <text id="IDS_PB_BODY_COUNTRY">國家</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">同事</text>
+ <text id="IDS_COM_POP_SUCCESS">成功</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">生日</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">全部聯絡人</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">無指定</text>
+ <text id="IDS_COM_SK_DONE">完成</text>
+ <text id="IDS_PB_BODY_MOBILE">手機</text>
+ <text id="IDS_COM_BODY_EMAIL">電子郵件</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">裝置記憶體已滿</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">選擇群組</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">號碼無效</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">加入成員</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">無聯絡人</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">移除相片</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">姓氏在前</text>
+ <text id="IDS_PB_OPT_VIEW">檢視</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">出生日期無效</text>
+ <text id="IDS_PB_BODY_WORK">工作</text>
+ <text id="IDS_COM_SK_EDIT">編輯</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">無效電子郵件地址</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">無群組</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">加到聯絡人</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">標記為預設號碼</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">更多資料</text>
+ <text id="IDS_COM_POP_SELECTED">已選擇</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">空白</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">拍照</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">新增群組</text>
+ <text id="IDS_COM_SK_DELETE">刪除</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">傳真(工作)</text>
+ <text id="IDS_PB_BODY_RINGTONE">鈴聲</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">朋友</text>
+ <text id="IDS_PB_BODY_ADDRESS">地址</text>
+ <text id="IDS_COM_BODY_COPY">複製</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">無我的最愛</text>
+ <text id="IDS_COM_BODY_CONTACTS">聯絡人</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">選擇聯絡人</text>
+ <text id="IDS_PB_BODY_PAGER">傳呼機</text>
+ <text id="IDS_MP_POP_INVALID_FILE">檔案無效</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">即時訊息</text>
+ <text id="IDS_COM_BODY_GALLERY">媒體瀏覽器</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">手機(住家)</text>
+ <text id="IDS_COM_BODY_SEARCH">搜尋</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">群組名稱已存在</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">家人</text>
+ <text id="IDS_PB_BODY_CITY">城市</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">名稱</text>
+ <text id="IDS_COM_BODY_CREATE">建立</text>
+ <text id="IDS_PB_BODY_NICKNAME">暱稱</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">部門</text>
+ <text id="IDS_PB_BODY_SUFFIX">字尾</text>
+ <text id="IDS_COM_BODY_CALL">通話</text>
+ <text id="IDS_COM_BODY_SETTINGS">設定</text>
+ <text id="IDS_COM_POP_UNKNOWN">未知</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">要儲存聯絡人嗎?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">我的最愛</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">編輯群組</text>
+ <text id="IDS_COM_SK_SAVE">儲存</text>
+ <text id="IDS_PB_BODY_PROVINCE">省</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">發送名片</text>
+ <text id="IDS_COM_POP_ADDED">已加入</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">視像通話</text>
+ <text id="IDS_PB_BODY_HOME">住家</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">格式無效</text>
+ <text id="IDS_PB_BODY_NOTE">記事本</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">聯絡人設定</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">顯示名稱次序</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">正在刪除聯絡人...</text>
+ <text id="IDS_PB_BODY_STREET">街道</text>
+ <text id="IDS_PB_BODY_NUMBER">號碼</text>
+ <text id="IDS_PB_HEADER_DETAILS">詳細資料</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">捨棄更改嗎?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">郵政編號</text>
+ <text id="IDS_COM_BODY_REMOVE">移除</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">傳真(住家)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">先顯示名字</text>
+ <text id="IDS_PB_BODY_DEFAULT">預設</text>
+ <text id="IDS_COM_SK_OK">確定</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">群組名稱</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">网址</text>
+ <text id="IDS_PB_BODY_GROUPS">群组</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">名字</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">职位</text>
+ <text id="IDS_PB_BODY_COMPANY">公司</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">纪念日</text>
+ <text id="IDS_COM_POP_CLOSE">关闭</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">全选</text>
+ <text id="IDS_COM_POP_DELETE_Q">删除?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">添加到收藏</text>
+ <text id="IDS_PB_BODY_PHONE">手机</text>
+ <text id="IDS_COM_BODY_MESSAGE">讯息</text>
+ <text id="IDS_PB_BODY_LAST_NAME">姓氏</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">储存联系人到</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">手机(工作)</text>
+ <text id="IDS_PB_SK_CANCEL">取消</text>
+ <text id="IDS_COM_SK_NEW">新建</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">中间名</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">标记为默认电子邮件</text>
+ <text id="IDS_PB_BODY_OTHER">其他</text>
+ <text id="IDS_COM_POP_REMOVED">已移除</text>
+ <text id="IDS_PB_BODY_COUNTRY">国家</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">合作者</text>
+ <text id="IDS_COM_POP_SUCCESS">成功</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">生日</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">全部联系人</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">未分配</text>
+ <text id="IDS_COM_SK_DONE">已完成</text>
+ <text id="IDS_PB_BODY_MOBILE">手机</text>
+ <text id="IDS_COM_BODY_EMAIL">电邮</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">设备存储已满</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">选择组群</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">数值无效</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">添加成员</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">无联系人</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">移除照片</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">姓</text>
+ <text id="IDS_PB_OPT_VIEW">查看</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">无效生日日期</text>
+ <text id="IDS_PB_BODY_WORK">工作</text>
+ <text id="IDS_COM_SK_EDIT">编辑</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">无效电子邮件地址</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">无群组</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">添加到联系人</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">标记为默认号码</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">更多信息</text>
+ <text id="IDS_COM_POP_SELECTED">已选择</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">空白</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">拍照</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">新群组</text>
+ <text id="IDS_COM_SK_DELETE">删除</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">传真(工作)</text>
+ <text id="IDS_PB_BODY_RINGTONE">铃声</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">朋友</text>
+ <text id="IDS_PB_BODY_ADDRESS">地址</text>
+ <text id="IDS_COM_BODY_COPY">复制</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">没有收藏夹</text>
+ <text id="IDS_COM_BODY_CONTACTS">联系人</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">选择联系人</text>
+ <text id="IDS_PB_BODY_PAGER">寻呼机</text>
+ <text id="IDS_MP_POP_INVALID_FILE">无效文件</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">即时通讯</text>
+ <text id="IDS_COM_BODY_GALLERY">画廊</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">手机(家庭)</text>
+ <text id="IDS_COM_BODY_SEARCH">搜寻</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">群组名称已使用</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">家人</text>
+ <text id="IDS_PB_BODY_CITY">城市</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">名称</text>
+ <text id="IDS_COM_BODY_CREATE">创建</text>
+ <text id="IDS_PB_BODY_NICKNAME">绰号</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">部门</text>
+ <text id="IDS_PB_BODY_SUFFIX">后缀</text>
+ <text id="IDS_COM_BODY_CALL">通话</text>
+ <text id="IDS_COM_BODY_SETTINGS">设定</text>
+ <text id="IDS_COM_POP_UNKNOWN">未知</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">储存联系人?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">收藏</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">编辑分组</text>
+ <text id="IDS_COM_SK_SAVE">储存</text>
+ <text id="IDS_PB_BODY_PROVINCE">省</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">发送名片</text>
+ <text id="IDS_COM_POP_ADDED">已添加</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">视像通话</text>
+ <text id="IDS_PB_BODY_HOME">首页</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">格式无效</text>
+ <text id="IDS_PB_BODY_NOTE">附注</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">联系人设置</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">显示名称顺序</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">正在删除联系人…</text>
+ <text id="IDS_PB_BODY_STREET">街道</text>
+ <text id="IDS_PB_BODY_NUMBER">号码</text>
+ <text id="IDS_PB_HEADER_DETAILS">详细内容</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">丢掉变更?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">邮编</text>
+ <text id="IDS_COM_BODY_REMOVE">移除</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">传真(家庭)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">首先是名字</text>
+ <text id="IDS_PB_BODY_DEFAULT">默认</text>
+ <text id="IDS_COM_SK_OK">确认</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">群组名称</text>
+</string_table>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+ This XML file was automatically generated by UiBuilder - do not modify by hand.
+-->
+<string_table Bversion="2.0.0.201309242034" Dversion="20120315">
+ <text id="IDS_PB_BODY_URL">URL</text>
+ <text id="IDS_PB_BODY_GROUPS">群組</text>
+ <text id="IDS_PB_BODY_FIRST_NAME">名字</text>
+ <text id="IDS_PB_BODY_JOB_TITLE">職稱</text>
+ <text id="IDS_PB_BODY_COMPANY">公司</text>
+ <text id="IDS_PB_BODY_ANNIVERSARY">週年紀念日</text>
+ <text id="IDS_COM_POP_CLOSE">關閉</text>
+ <text id="IDS_COM_BODY_SELECT_ALL">全選</text>
+ <text id="IDS_COM_POP_DELETE_Q">要刪除嗎?</text>
+ <text id="IDS_PB_OPT_ADD_TO_FAVORITES">加到我的最愛</text>
+ <text id="IDS_PB_BODY_PHONE">電話</text>
+ <text id="IDS_COM_BODY_MESSAGE">訊息</text>
+ <text id="IDS_PB_BODY_LAST_NAME">姓氏</text>
+ <text id="IDS_PB_BODY_SAVE_CONTACT_TO">儲存聯絡人到</text>
+ <text id="IDS_PB_BODY_MOBILE_HWORK">手機(工作)</text>
+ <text id="IDS_PB_SK_CANCEL">取消</text>
+ <text id="IDS_COM_SK_NEW">新增</text>
+ <text id="IDS_PB_BODY_MIDDLE_NAME">中間名</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_EMAIL">標記為預設的電子郵件</text>
+ <text id="IDS_PB_BODY_OTHER">其他</text>
+ <text id="IDS_COM_POP_REMOVED">已移除</text>
+ <text id="IDS_PB_BODY_COUNTRY">國家</text>
+ <text id="IDS_PB_BODY_CO_WORKERS">同事</text>
+ <text id="IDS_COM_POP_SUCCESS">成功</text>
+ <text id="IDS_PB_BODY_BIRTHDAY">生日</text>
+ <text id="IDS_PB_BODY_ALL_CONTACTS">全部聯絡人</text>
+ <text id="IDS_PB_BODY_NOT_ASSIGNED">未指定</text>
+ <text id="IDS_COM_SK_DONE">完成</text>
+ <text id="IDS_PB_BODY_MOBILE">行動裝置</text>
+ <text id="IDS_COM_BODY_EMAIL">電子郵件</text>
+ <text id="IDS_EMAIL_POP_DEVICE_STORAGE_FULL">裝置儲存已滿</text>
+ <text id="IDS_PB_HEADER_SELECT_GROUP">選擇群組</text>
+ <text id="IDS_PB_BODY_INVALID_NUMBER">號碼無效</text>
+ <text id="IDS_PB_SK_ADD_MEMBER">新增成員</text>
+ <text id="IDS_PB_BODY_NO_CONTACTS">無聯絡人</text>
+ <text id="IDS_PB_OPT_REMOVE_PHOTO_ABB">刪除照片</text>
+ <text id="IDS_PB_BODY_LAST_NAME_FIRST_ABB">姓氏在前</text>
+ <text id="IDS_PB_OPT_VIEW">檢視</text>
+ <text id="IDS_SAPPS_POP_INVALID_DATE_OF_BIRTH">無效的出生日期</text>
+ <text id="IDS_PB_BODY_WORK">公司</text>
+ <text id="IDS_COM_SK_EDIT">編輯</text>
+ <text id="IDS_PB_POP_INVALID_EMAIL_ADDRESS">電子郵件地址無效</text>
+ <text id="IDS_PB_HEADER_NO_GROUP">無群組</text>
+ <text id="IDS_COM_OPT_ADD_TO_CONTACTS">新增至聯絡人</text>
+ <text id="IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER">標記為預設號碼</text>
+ <text id="IDS_KA_BODY_MORE_INFORMATION">更多資訊</text>
+ <text id="IDS_COM_POP_SELECTED">已選擇</text>
+ <text id="IDS_PB_OPT_EMPTY_MVERB">空白</text>
+ <text id="IDS_PB_BODY_TAKE_A_PHOTO">拍照</text>
+ <text id="IDS_PB_OPT_NEW_GROUP">新增群組</text>
+ <text id="IDS_COM_SK_DELETE">刪除</text>
+ <text id="IDS_PB_BODY_FAX_HWORK">傳真(工作)</text>
+ <text id="IDS_PB_BODY_RINGTONE">鈴聲</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FRIENDS">朋友</text>
+ <text id="IDS_PB_BODY_ADDRESS">地址</text>
+ <text id="IDS_COM_BODY_COPY">複製</text>
+ <text id="IDS_PB_BODY_NO_FAVOURITES">無我的最愛</text>
+ <text id="IDS_COM_BODY_CONTACTS">聯絡人</text>
+ <text id="IDS_PB_HEADER_SELECT_CONTACTS">選擇聯絡人</text>
+ <text id="IDS_PB_BODY_PAGER">呼叫器</text>
+ <text id="IDS_MP_POP_INVALID_FILE">檔案無效</text>
+ <text id="IDS_PB_HEADER_INSTANT_MESSENGER_ABB">即時通訊</text>
+ <text id="IDS_COM_BODY_GALLERY">媒體瀏覽器</text>
+ <text id="IDS_PB_BODY_MOBILE_HHOME">手機(住家)</text>
+ <text id="IDS_COM_BODY_SEARCH">搜尋</text>
+ <text id="IDS_PB_POP_GROUP_ALREADY_IN_USE">群組名稱已在使用中</text>
+ <text id="IDS_PB_BODY_DEFAULT_GROUP_FAMILY">家庭</text>
+ <text id="IDS_PB_BODY_CITY">城市</text>
+ <text id="IDS_COM_BODY_DETAILS_NAME">名稱</text>
+ <text id="IDS_COM_BODY_CREATE">建立</text>
+ <text id="IDS_PB_BODY_NICKNAME">暱稱</text>
+ <text id="IDS_PB_BODY_DEPARTMENT">部門</text>
+ <text id="IDS_PB_BODY_SUFFIX">稱謂</text>
+ <text id="IDS_COM_BODY_CALL">通話</text>
+ <text id="IDS_COM_BODY_SETTINGS">設定</text>
+ <text id="IDS_COM_POP_UNKNOWN">未知</text>
+ <text id="IDS_PB_POP_SAVE_CONTACT_Q">要儲存聯絡人嗎?</text>
+ <text id="IDS_PB_ITAB4_FAVOURITES">我的最愛</text>
+ <text id="IDS_PB_OPT2_EDIT_GROUPS">編輯群組</text>
+ <text id="IDS_COM_SK_SAVE">儲存</text>
+ <text id="IDS_PB_BODY_PROVINCE">省</text>
+ <text id="IDS_PB_HEADER_SEND_NAMECARD">傳送名片</text>
+ <text id="IDS_COM_POP_ADDED">已新增</text>
+ <text id="IDS_COM_BODY_VIDEO_CALL">視訊通話</text>
+ <text id="IDS_PB_BODY_HOME">住家</text>
+ <text id="IDS_RSSR_BODY_INVALID_FORMAT">無效格式</text>
+ <text id="IDS_PB_BODY_NOTE">備註</text>
+ <text id="IDS_COM_BODY_CONTACT_SETTINGS">聯絡人設定</text>
+ <text id="IDS_PB_BODY_ORDER_OF_DISPLAY_NAME">顯示名稱順序</text>
+ <text id="IDS_PB_POP_DELETING_CONTACTS_ING">正在刪除聯絡人...</text>
+ <text id="IDS_PB_BODY_STREET">街道</text>
+ <text id="IDS_PB_BODY_NUMBER">號碼</text>
+ <text id="IDS_PB_HEADER_DETAILS">詳細資料</text>
+ <text id="IDS_PB_POP_DISCARD_CHANGES_Q">捨棄變更嗎?</text>
+ <text id="IDS_PB_BODY_POSTAL_CODE">郵政編碼</text>
+ <text id="IDS_COM_BODY_REMOVE">移除</text>
+ <text id="IDS_PB_BODY_FAX_HHOME">傳真(住家)</text>
+ <text id="IDS_PB_BODY_FIRST_NAME_FIRST">先顯示名字</text>
+ <text id="IDS_PB_BODY_DEFAULT">預設</text>
+ <text id="IDS_COM_SK_OK">確定</text>
+ <text id="IDS_PB_BODY_GROUP_NAME_ABB">群組名稱</text>
+</string_table>
--- /dev/null
+dummy
\ No newline at end of file
--- /dev/null
+dummy
\ No newline at end of file
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtAccountListItemProvider.cpp
+ * @brief This is the implementation file for the AccountListItemProvider class.
+ */
+
+#include "CtAccountListItemProvider.h"
+#include "CtContactListPresentationModel.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+static const int H_ITEM = 112;
+
+AccountListItemProvider::AccountListItemProvider(Tizen::Ui::Controls::ListView* pAccountListView, ContactListPresentationModel* pContactListPresentationModel)
+: __pAccountListView(pAccountListView)
+, __pContactListPresentationModel(pContactListPresentationModel)
+{
+}
+
+AccountListItemProvider::~AccountListItemProvider(void)
+{
+}
+
+Tizen::Ui::Controls::ListItemBase*
+AccountListItemProvider::CreateItem(int index, int itemWidth)
+{
+ SimpleItem* pItem = null;
+ String addressbookName(__pContactListPresentationModel->GetAddressbookName(index));
+
+ pItem = new (std::nothrow) SimpleItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), LIST_ANNEX_STYLE_RADIO);
+ pItem->SetElement(addressbookName);
+
+ if (addressbookName.Equals(__pContactListPresentationModel->GetCurrentAddressbook()))
+ {
+ __pAccountListView->SetItemChecked(index, true);
+ }
+
+ return pItem;
+}
+
+bool
+AccountListItemProvider::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+int
+AccountListItemProvider::GetItemCount(void)
+{
+ return __pContactListPresentationModel->GetAddressbookCount();
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtCommonUtil.cpp
+ * @brief This is the implementation file for the CtCommonUtil.cpp class.
+ */
+
+#include <FSysRuntimeInfo.h>
+#include <FUi.h>
+#include "CtCommonUtil.h"
+#include "CtResourceManager.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::System;
+
+bool CommonUtil::isMemoryAvailable()
+{
+ long long avialableMemory = 0;
+ result r = E_SUCCESS;
+
+ String key(RUNTIMEINFO_INTERNAL_MEMORY_KEY);
+
+ r = RuntimeInfo::GetValue(key, avialableMemory);
+ if (avialableMemory <= 1024)
+ {
+ return false;
+ }
+
+ return true;
+}
+
+void CommonUtil::showMemoryFullMessageBox()
+{
+ int modalResult = 0;
+ MessageBox memoryFullMessageBox;
+ memoryFullMessageBox.Construct(L"", ResourceManager::GetString(L"IDS_EMAIL_POP_DEVICE_STORAGE_FULL"), MSGBOX_STYLE_NONE, 1000);
+ memoryFullMessageBox.ShowAndWait(modalResult);
+}
+
+
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactDetailsForm.cpp
+ * @brief This is the implementation file for the ContactDetailsForm class.
+ */
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FMedia.h>
+#include <FSocial.h>
+#include "CtContactDetailsForm.h"
+#include "CtContactPresentationModel.h"
+#include "CtContactValueListItemProvider.h"
+#include "CtContactsApp.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::Io;
+using namespace Tizen::Media;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+
+static const int IDA_FOOTER_EDIT = 10;
+static const int IDA_FOOTER_DELETE = 11;
+static const int IDA_FOOTER_ADD = 13;
+static const int IDA_VOICE_CALL = 20;
+static const int IDA_MESSAGE = 21;
+static const int IDA_VIDEO_CALL = 22;
+static const int IDA_CONTEXTMENU_SHARE_EMAIL = 30;
+static const int IDA_CONTEXTMENU_SHARE_MESSAGE = 31;
+static const int IDA_BUTTON_RINGTONE_CLEAR = 40;
+static const int IDA_BUTTON_SHARE_NAME_CARD = 50;
+static const int IDA_POPUP_CLOSE = 60;
+static const int IDA_MORE_DEFAULT_NUMBER = 70;
+static const int IDA_FAVORITE_BUTTON = 80;
+static const int IDA_POPUP_DELETE_OK = 90;
+static const int IDA_POPUP_DELETE_CANCEL = 91;
+
+static const wchar_t* IDB_DETAILS_FAVORITE_ON = L"00_icon_favorite_on.png";
+static const wchar_t* IDB_DETAILS_FAVORITE_OFF = L"00_icon_favorite_off.png";
+static const wchar_t* IDB_DETAILS_RESET_NORMAL = L"00_button_refresh.png";
+static const wchar_t* IDB_DETAILS_RESET_PRESSED = L"00_button_refresh_press.png";
+static const wchar_t* IDB_CIRCLE_BUTTON_NORMAL = L"C02_circle_button.png";
+static const wchar_t* IDB_CIRCLE_BUTTON_PRESSED = L"C02_circle_button_press.png";
+static const wchar_t* IDB_CALL_NORMAL = L"C02_circle_icon_call.png";
+static const wchar_t* IDB_CALL_PRESSED = L"C02_circle_icon_call_press.png";
+static const wchar_t* IDB_SMS_NORMAL = L"C02_circle_icon_sms.png";
+static const wchar_t* IDB_SMS_PRESSED = L"C02_circle_icon_sms_press.png";
+static const wchar_t* IDB_VIDEO_CALL_NORMAL = L"C02_circle_icon_vt-call.png";
+static const wchar_t* IDB_VIDEO_CALL_PRESSED = L"C02_circle_icon_vt-call_press.png";
+
+static const wchar_t* GROUP_STYLE_PANEL = L"GroupStylePanel";
+static const wchar_t* GROUP_LABEL = L"GroupLabel";
+static const wchar_t* VALUE_LABEL = L"ValueLabel";
+
+static const int Y_THUMBNAIL = 34;
+static const int H_THUMBNAIL = 360;
+static const int X_MAIN_INFO = 26;
+static const int H_NAME = 70;
+static const int H_SUB_INFO = 40;
+static const int H_SUB_INFO_DIVIDER = 6;
+static const int H_DEFAULT_NUMBER = 50;
+static const int H_QUICK_BUTTON_DIVIDER = 42;
+#if __SUPPORT_VIDEO_CALL
+static const int W_QUICK_BUTTON_GAP = 115;
+static const int X_QUICK_BUTTON = 38;
+#else
+static const int W_QUICK_BUTTON_GAP = 148;
+static const int X_QUICK_BUTTON = 148;
+#endif
+static const int H_QUICK_BUTTON = 138;
+static const int Y_FAVORITE = 10;
+static const int H_FAVORITE = 45;
+static const int W_FAVORITE_GAP = 26;
+static const int W_GROUP_STYLE_MARGIN = 16;
+static const int W_TEXT_MARGIN = 15;
+static const int W_TYPE = 220;
+static const int H_ITEM = 112;
+static const int H_ITEM_DOUBLE_LINE = 148;
+static const int H_ADDITIONAL_ITEM = 54;
+static const int Y_ITEM_TITLE = 22;
+static const int H_ITEM_TITLE = 42;
+static const int H_ITEM_VALUE = 62;
+static const int H_ICON = 74;
+static const int Y_BUTTON = 20;
+static const int H_BUTTON = 72;
+static const int H_BUTTON_CONTAINER = 132;
+static const int W_BUTTON_GAP = 18;
+
+static const int W_POPUP = 688;
+static const int H_POPUP = 532;
+static const int H_POPUP_LIST_VIEW = 338;
+static const int Y_POPUP_BUTTON = 358;
+static const int H_POPUP_BUTTON = 74;
+static const int W_POPUP_BUTTON = 394;
+
+static const int SUB_INDEX_MASK = 0xF000;
+static const int MESSAGE_BOX_TIMEOUT_MS = 300000;
+
+static const unsigned int COLOR_TABLE_BG = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_ITEM_TITLE = Color32<128, 128, 128>::Value;
+static const unsigned int COLOR_ITEM_VALUE = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_ITEM_TYPE = Color32<128, 128, 128>::Value;
+static const unsigned int COLOR_OTHER_NUMBER = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_NAME = Color32<59, 115, 182>::Value;
+static const unsigned int COLOR_GROUP_STYLE = Color32<240, 237, 232>::Value;
+static const unsigned int COLOR_PRESSED = Color32<87, 135, 194>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_NORMAL = Color32<213, 82, 82>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_PRESSED = Color32<194, 71, 71>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_TEXT = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_ITEM_PRESSED = Color32<248, 246, 239>::Value;
+
+static const int FONT_SIZE_NAME = 56;
+static const int FONT_SIZE_SUB_INFO = 32;
+static const int FONT_SIZE_MAIN_TEXT = 44;
+static const int FONT_SIZE_SUB_TEXT = 32;
+
+static const wchar_t* INPUT_KEY_CALL_TYPE = L"http://tizen.org/appcontrol/data/call/type";
+static const wchar_t* INPUT_KEY_MESSAGE_TYPE = L"http://tizen.org/appcontrol/data/message/type";
+static const wchar_t* INPUT_KEY_MESSAGE_TO = L"http://tizen.org/appcontrol/data/to";
+static const wchar_t* INPUT_KEY_SELECTION_MODE = L"http://tizen.org/appcontrol/data/selection_mode";
+static const wchar_t* INPUT_DATA_SELECTION_MODE_SINGLE = L"single";
+static const wchar_t* INPUT_MIME_TYPE_AUDIO = L"audio/*";
+static const wchar_t* INPUT_URI_TEL = L"tel:";
+static const wchar_t* INPUT_TYPE_VIDEO = L"video";
+static const wchar_t* INPUT_TYPE_VOICE = L"voice";
+static const wchar_t* INPUT_TYPE_SMS = L"sms";
+static const wchar_t* INPUT_TYPE_MMS = L"mms";
+static const wchar_t* OUTPUT_KEY_SELECTED = L"http://tizen.org/appcontrol/data/selected";
+static const wchar_t* KEY_VIEW_TYPE = L"viewType";
+static const wchar_t* KEY_VIEW_TYPE_VCF = L"path";
+static const wchar_t* KEY_VIEW_TYPE_CONTACT_ID = L"contactId";
+static const wchar_t* VALUE_VIEW_TYPE_VCF = L"vcf";
+static const wchar_t* VALUE_VIEW_TYPE_CONTACT = L"contact";
+
+ContactDetailsForm::ContactDetailsForm(void)
+: __isAppControlLaunching(false)
+, __pAppControl(null)
+, __pTableView(null)
+, __pContextMenuCall(null)
+, __pContextMenuShare(null)
+, __pFileEventManager(null)
+, __pOptionMenu(null)
+, __pDefaultSelectorPopup(null)
+, __pDeletePopup(null)
+, __pItemList(null)
+, __pPresentationModel(null)
+, __scrolledDistance(0)
+, __pFavoriteButton(null)
+, __pGroupsItem(null)
+, __pRingtoneItem(null)
+, __pClearButton(null)
+{
+}
+
+ContactDetailsForm::~ContactDetailsForm(void)
+{
+}
+
+void
+ContactDetailsForm::Initialize(void)
+{
+ Construct(L"IDL_CONTACT_DETAILS_FORM");
+}
+
+result
+ContactDetailsForm::OnInitializing(void)
+{
+ Footer* pFooter = GetFooter();
+ pFooter->AddActionEventListener(*this);
+ SetFormBackEventListener(this);
+ SetFormMenuEventListener(this);
+
+ __pTableView = new (std::nothrow) TableView();
+ __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), false, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
+ __pTableView->SetItemProvider(this);
+ __pTableView->AddTableViewItemEventListener(*this);
+ __pTableView->SetBackgroundColor(COLOR_TABLE_BG);
+ __pTableView->AddTouchEventListener(*this);
+ __pTableView->AddScrollEventListener(*this);
+ AddControl(__pTableView);
+
+ __pContextMenuCall = new (std::nothrow) ContextMenu();
+ __pContextMenuCall->Construct(Point(0, 0), CONTEXT_MENU_STYLE_LIST);
+ __pContextMenuCall->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_CALL"), IDA_VOICE_CALL);
+ __pContextMenuCall->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), IDA_MESSAGE);
+#if __SUPPORT_VIDEO_CALL
+ __pContextMenuCall->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_VIDEO_CALL"), IDA_VIDEO_CALL);
+#endif
+ __pContextMenuCall->AddActionEventListener(*this);
+ __pContextMenuCall->SetFocusable(true);
+
+ __pContextMenuShare = new (std::nothrow) ContextMenu();
+ __pContextMenuShare->Construct(Point(0, 0), CONTEXT_MENU_STYLE_LIST);
+ __pContextMenuShare->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"), IDA_CONTEXTMENU_SHARE_EMAIL);
+ __pContextMenuShare->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), IDA_CONTEXTMENU_SHARE_MESSAGE);
+ __pContextMenuShare->AddActionEventListener(*this);
+ __pContextMenuShare->SetFocusable(true);
+
+ __pItemList = new (std::nothrow) ArrayListT<int>();
+ __pItemList->Construct();
+
+ __pPresentationModel = new (std::nothrow) ContactPresentationModel();
+ __pPresentationModel->Construct();
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ __pOptionMenu = new (std::nothrow) OptionMenu();
+ __pOptionMenu->Construct();
+ __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"), IDA_MORE_DEFAULT_NUMBER);
+ __pOptionMenu->AddActionEventListener(*this);
+ __pOptionMenu->SetShowState(false);
+
+ return E_SUCCESS;
+}
+
+result
+ContactDetailsForm::OnTerminating(void)
+{
+ delete __pAppControl;
+ delete __pContextMenuCall;
+ delete __pContextMenuShare;
+ delete __pFileEventManager;
+ delete __pOptionMenu;
+
+ if (__pItemList != null)
+ {
+ __pItemList->RemoveAll();
+ delete __pItemList;
+ }
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ delete __pPresentationModel;
+ }
+ if (__pDeletePopup != null)
+ {
+ delete __pDeletePopup;
+ }
+
+ delete __pDefaultSelectorPopup;
+
+ return E_SUCCESS;
+}
+
+void
+ContactDetailsForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ AppLog("ContactDetailsForm::OnActionPerformed(), actionId %d", actionId);
+
+ result r = E_SUCCESS;
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (actionId)
+ {
+ case IDA_FOOTER_EDIT:
+ {
+ __currentFocusedItem = L"";
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+ pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId())));
+ r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go forward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_FOOTER_DELETE:
+ {
+ __currentFocusedItem = L"";
+ ShowDeletePopup();
+ }
+ break;
+ case IDA_FOOTER_ADD:
+ {
+ __currentFocusedItem = L"";
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_VIEW)
+ {
+ if(Tizen::Io::File::IsFileExist(__pPresentationModel->GetVcfPath()) == false)
+ {
+ ShowInvalidFileMessageBox(ResourceManager::GetString(L"IDS_MP_POP_INVALID_FILE"), true);
+ return;
+ }
+ }
+
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+ pList->Add(*(new (std::nothrow) Integer(INVALID_RECORD_ID)));
+ pList->Add(*(new (std::nothrow) String(__pPresentationModel->GetVcfPath())));
+ r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go forward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_MORE_DEFAULT_NUMBER:
+ {
+ __currentFocusedItem = L"";
+ ShowDefaultSelectorPopup();
+ }
+ break;
+ case IDA_BUTTON_RINGTONE_CLEAR:
+ {
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, String());
+ __pPresentationModel->UpdateContact();
+ __pTableView->RefreshItem(__pItemList->GetCount() - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ break;
+ case IDA_VOICE_CALL:
+ {
+ __currentFocusedItem = L"";
+ r = LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, INPUT_TYPE_VOICE, source.GetName());
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ break;
+ case IDA_MESSAGE:
+ {
+ __currentFocusedItem = L"";
+ r = LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, INPUT_TYPE_SMS, source.GetName());
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ break;
+ case IDA_VIDEO_CALL:
+ {
+ __currentFocusedItem = L"";
+ r = LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, INPUT_TYPE_VIDEO, source.GetName());
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ break;
+ case IDA_CONTEXTMENU_SHARE_EMAIL:
+ {
+ __currentFocusedItem = L"";
+ r = LaunchAppControl(PROVIDER_ID_EMAIL, OPERATION_ID_COMPOSE);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ break;
+ case IDA_CONTEXTMENU_SHARE_MESSAGE:
+ {
+ __currentFocusedItem = L"";
+ r = LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, INPUT_TYPE_MMS);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ break;
+ case IDA_BUTTON_SHARE_NAME_CARD:
+ {
+ __currentFocusedItem = L"";
+ Point itemPoint;
+ itemPoint.x = GetClientAreaBounds().width / 2;
+ itemPoint.y = 0;
+
+ TableViewItem* pParent = static_cast<TableViewItem*>(source.GetParent());
+ if (pParent != null)
+ {
+ itemPoint.y = GetClientAreaBounds().y + pParent->GetY() + source.GetY() - __scrolledDistance;
+ }
+
+ __pContextMenuShare->SetAnchorPosition(itemPoint);
+ __pContextMenuShare->SetShowState(true);
+ __pContextMenuShare->Show();
+ }
+ break;
+ case IDA_POPUP_CLOSE:
+ {
+ HideDefaultSelectorPopup();
+ }
+ break;
+ case IDA_FAVORITE_BUTTON:
+ {
+ __pFavoriteButton = static_cast<Button*>(&const_cast<Control&>(source));
+ if (__pFavoriteButton == null)
+ {
+ return;
+ }
+
+ __pPresentationModel->SetAsFavorite(!__pPresentationModel->IsFavorite());
+
+ Bitmap* pBitmapNormal = null;
+ Bitmap* pBitmapPressed = null;
+ if (__pPresentationModel->IsFavorite())
+ {
+ pBitmapNormal = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_ON);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_OFF);
+ }
+ else
+ {
+ pBitmapNormal = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_OFF);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_ON);
+ }
+
+ if (pBitmapNormal != null && pBitmapPressed != null)
+ {
+ __pFavoriteButton->SetNormalBackgroundBitmap(*pBitmapNormal);
+ __pFavoriteButton->SetPressedBackgroundBitmap(*pBitmapPressed);
+ delete pBitmapNormal;
+ delete pBitmapPressed;
+ }
+ __pFavoriteButton->Invalidate(false);
+ }
+ break;
+ case IDA_POPUP_DELETE_OK:
+ {
+ r = __pPresentationModel->RemoveContact();
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to remove contact", GetErrorMessage(r));
+ HideDeletePopup();
+ }
+ break;
+ case IDA_POPUP_DELETE_CANCEL:
+ {
+ HideDeletePopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactDetailsForm::ShowDeletePopup(void)
+{
+ if (__pDeletePopup == null)
+ {
+ __pDeletePopup = new (std::nothrow) Popup();
+ __pDeletePopup->Construct(false, Dimension(W_DELETE_POPUP, H_DELETE_POPUP));
+ __pDeletePopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pDeletePopup->GetClientAreaBounds();
+
+ Label* pLabel = new (std::nothrow) Label();
+ pLabel->Construct(Rectangle(X_DELETE_LABEL, Y_DELETE_LABEL, W_DELETE_LABEL, H_DELETE_LABEL), ResourceManager::GetString(L"IDS_COM_POP_DELETE_Q"));
+ pLabel->SetTextConfig(FONT_SIZE_DELETE_CONFIRM, LABEL_TEXT_STYLE_NORMAL);
+ pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ Button* pDeleteButton = new (std::nothrow) Button();
+ pDeleteButton->Construct(Rectangle(X_DELETE_LABEL + W_DELETE_BUTTON + W_POPUP_ITEM_GAP, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+ pDeleteButton->SetColor(BUTTON_STATUS_NORMAL, COLOR_DELETE_BUTTON_NORMAL);
+ pDeleteButton->SetColor(BUTTON_STATUS_PRESSED, COLOR_DELETE_BUTTON_PRESSED);
+ pDeleteButton->SetTextColor(COLOR_DELETE_BUTTON_TEXT);
+ pDeleteButton->SetTextSize(FONT_SIZE_DELETE_BUTTON);
+ pDeleteButton->SetActionId(IDA_POPUP_DELETE_OK);
+ pDeleteButton->AddActionEventListener(*this);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle(X_DELETE_LABEL, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pCancelButton->SetTextSize(FONT_SIZE_DELETE_BUTTON);
+ pCancelButton->SetActionId(IDA_POPUP_DELETE_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pDeletePopup->AddControl(pLabel);
+ __pDeletePopup->AddControl(pDeleteButton);
+ __pDeletePopup->AddControl(pCancelButton);
+ }
+
+ __pDeletePopup->SetShowState(true);
+ __pDeletePopup->Show();
+}
+
+void
+ContactDetailsForm::HideDeletePopup(void)
+{
+ if (__pDeletePopup != null)
+ {
+ __pDeletePopup->SetShowState(false);
+ Invalidate(true);
+ }
+}
+
+void
+ContactDetailsForm::OnFormMenuRequested(Tizen::Ui::Controls::Form& source)
+{
+ __pOptionMenu->SetShowState(true);
+ __pOptionMenu->Show();
+}
+
+void
+ContactDetailsForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ if (__appControlViewType.IsEmpty() == false)
+ {
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+
+ result r = pAppManager->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_CANCELED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ UiApp::GetInstance()->Terminate();
+ }
+ else
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+}
+
+void
+ContactDetailsForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TryReturnVoid(pContactsApp != null, "Unable to cast UiApp to ContactsApp");
+
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+ SettingInfo::AddSettingEventListener(*this);
+
+ if (previousSceneId == IDSCN_GROUP_SELECTOR || previousSceneId == IDSCN_GROUP_EDITOR)
+ {
+ if (pArgs == null)
+ {
+ return;
+ }
+
+ Integer* pArgument = null;
+ __pPresentationModel->RemoveContactFromAllCategories();
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pArgument = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pArgument != null)
+ {
+ __pPresentationModel->AddContactToCategory(pArgument->ToInt());
+ }
+ }
+ delete pEnum;
+
+ __pTableView->RefreshItem(__pItemList->GetCount() - 2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ else if (previousSceneId == IDSCN_CONTACT_EDITOR && __appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
+ {
+ InitializeDetailItemList();
+ __pTableView->UpdateTableView();
+ }
+ else
+ {
+ if (pArgs == null)
+ {
+ return;
+ }
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_VIEW)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ SettingInfo::RemoveSettingEventListener(*this);
+
+ String *pError = static_cast<String*>(pArgs->GetAt(2));
+ if (pError != null)
+ {
+ ShowInvalidFileMessageBox(*pError);
+ }
+
+ result r = InitializeAppControl(pArgs);
+
+ if (IsFailed(r))
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ AppLogDebug("Unable to initialize appcontrol");
+
+ ShowInvalidFileMessageBox(ResourceManager::GetString(L"IDS_RSSR_BODY_INVALID_FORMAT"));
+
+ return;
+ }
+
+ InitializeDetailItemList();
+ }
+ else
+ {
+ Integer* pContactId = static_cast<Integer*>(pArgs->GetAt(0));
+ if (pContactId != null)
+ {
+ __pPresentationModel->SetContactId(pContactId->ToInt());
+ InitializeDetailItemList();
+ }
+ }
+ __pTableView->UpdateTableView();
+ }
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+result
+ContactDetailsForm::InitializeAppControl(Tizen::Base::Collection::IList* pArgs)
+{
+ if (pArgs == null)
+ {
+ return E_FAILURE;
+ }
+
+ result r = E_SUCCESS;
+
+ String* pArgStringType = null;
+ String* pArgStringValue = null;
+ String keyViewType;
+ String keyValue;
+ String valueViewType;
+ String value;
+
+ pArgStringType = static_cast<String*>(pArgs->GetAt(0));
+ pArgStringValue = static_cast<String*>(pArgs->GetAt(1));
+
+ TryReturn(pArgStringType != null && pArgStringValue != null, E_FAILURE, "[E_FAILURE] Unable to initialize appcontrol");
+
+ ParseAppControlArgument(*pArgStringType, keyViewType, valueViewType);
+ ParseAppControlArgument(*pArgStringValue, keyValue, value);
+
+ if (keyViewType.Equals(KEY_VIEW_TYPE, false))
+ {
+ if (valueViewType.Equals(VALUE_VIEW_TYPE_CONTACT, false))
+ {
+ if (keyValue.Equals(KEY_VIEW_TYPE_CONTACT_ID, false))
+ {
+ RecordId contactId;
+ Integer::Parse(value, contactId);
+ r = __pPresentationModel->SetContactId(contactId);
+ __appControlViewType = valueViewType;
+
+ Footer* pFooter = GetFooter();
+ pFooter->RemoveAllItems();
+
+ FooterItem footerItemEdit;
+ footerItemEdit.Construct(IDA_FOOTER_EDIT);
+ footerItemEdit.SetText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
+ pFooter->AddItem(footerItemEdit);
+
+ __pPresentationModel->AddContactChangeListener(*this);
+ }
+ else
+ {
+ AppLogDebug("Invalid KEY(contactId) of AppControl[VIEW]. [%ls] has been input", keyValue.GetPointer());
+ r = E_FAILURE;
+ }
+ }
+ else if (valueViewType.Equals(VALUE_VIEW_TYPE_VCF, false))
+ {
+ if (keyValue.Equals(KEY_VIEW_TYPE_VCF, false))
+ {
+ r = __pPresentationModel->SetVcfPath(value);
+
+ __appControlViewType = valueViewType;
+ Footer* pFooter = GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+
+ FooterItem footerItemAdd;
+ footerItemAdd.Construct(IDA_FOOTER_ADD);
+ footerItemAdd.SetText(ResourceManager::GetString(L"IDS_COM_OPT_ADD_TO_CONTACTS"));
+ pFooter->AddItem(footerItemAdd);
+ }
+ else
+ {
+ AppLogDebug("Invalid KEY(path) of AppControl[VIEW]. [%ls] has been input", keyValue.GetPointer());
+ r = E_FAILURE;
+ }
+ }
+ else
+ {
+ AppLogDebug("viewType of AppControl[VIEW] should be either vcf or contact. [%ls] has been inpue", keyValue.GetPointer());
+ r = E_FAILURE;
+ }
+ }
+ else
+ {
+ AppLogDebug("Invalid KEY(viewType) of AppControl[VIEW]. [%ls] has been input", keyViewType.GetPointer());
+ r = E_FAILURE;
+ }
+
+ return r;
+}
+
+void
+ContactDetailsForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+ SettingInfo::RemoveSettingEventListener(*this);
+
+ delete __pAppControl;
+ __pAppControl = null;
+}
+
+void
+ContactDetailsForm::InitializeDetailItemList(void)
+{
+ if (__pItemList->GetCount() > 0)
+ {
+ __pItemList->RemoveAll();
+ }
+
+ // Default area
+ __pItemList->Add(DETAIL_PROPERTY_MAIN_INFO);
+
+ // Other Phone Numbers
+ Footer* pFooter = GetFooter();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ int otherNumberCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
+
+ if (otherNumberCount > 1)
+ {
+ if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
+ {
+ SetFormMenuEventListener(this);
+ }
+ else
+ {
+ SetFormMenuEventListener(null);
+ }
+
+ for (int subIndex = 0; subIndex < otherNumberCount; subIndex++)
+ {
+ if (__pPresentationModel->GetDefaultNumberIndex() != subIndex)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_PHONE_NUMBER + subIndex);
+ }
+ }
+ }
+ else
+ {
+ SetFormMenuEventListener(null);
+ }
+
+ if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL) > 0)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_EMAIL);
+ }
+
+ if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS) > 0)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_ADDRESS);
+ }
+
+ if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS) > 0)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_IM_ADDRESS);
+ }
+
+ if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL) > 0)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_URL);
+ }
+
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_BIRTHDAY).IsEmpty() == false)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_BIRTHDAY);
+ }
+
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE).IsEmpty() == false)
+ {
+ __pItemList->Add(DETAIL_PROPERTY_NOTE);
+ }
+
+ __pItemList->Add(DETAIL_PROPERTY_GROUP);
+ __pItemList->Add(DETAIL_PROPERTY_RINGTONE);
+}
+
+int
+ContactDetailsForm::GetItemCount(void)
+{
+ return __pItemList->GetCount();
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactDetailsForm::CreateItem(int itemIndex, int itemWidth)
+{
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+
+ int contentItemIndex = -1;
+ int itemSubIndex = -1;
+ __pItemList->GetAt(itemIndex, contentItemIndex);
+
+ switch (contentItemIndex & SUB_INDEX_MASK)
+ {
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ itemSubIndex = contentItemIndex - DETAIL_PROPERTY_PHONE_NUMBER;
+ contentItemIndex = DETAIL_PROPERTY_PHONE_NUMBER;
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ contentItemIndex = DETAIL_PROPERTY_EMAIL;
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ contentItemIndex = DETAIL_PROPERTY_IM_ADDRESS;
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ {
+ contentItemIndex = DETAIL_PROPERTY_ADDRESS;
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ contentItemIndex = DETAIL_PROPERTY_URL;
+ }
+ break;
+ default:
+ break;
+ }
+
+ switch (contentItemIndex)
+ {
+ case DETAIL_PROPERTY_MAIN_INFO:
+ {
+ AddMainInfo(itemWidth, pItem);
+ }
+ break;
+ case DETAIL_PROPERTY_PHONE_NUMBER: // fall through
+ case DETAIL_PROPERTY_EMAIL: // fall through
+ case DETAIL_PROPERTY_ADDRESS: // fall through
+ case DETAIL_PROPERTY_URL: // fall through
+ case DETAIL_PROPERTY_BIRTHDAY: // fall through
+ case DETAIL_PROPERTY_NOTE:
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ AddProperty(itemWidth, pItem, contentItemIndex, itemSubIndex);
+ }
+ break;
+ case DETAIL_PROPERTY_GROUP:
+ {
+ AddGroup(itemWidth, pItem);
+ }
+ break;
+ case DETAIL_PROPERTY_RINGTONE:
+ {
+ AddRingTone(itemWidth, pItem);
+ }
+ break;
+ default:
+ {
+ delete pItem;
+ pItem = null;
+ }
+ break;
+ }
+
+ return pItem;
+}
+
+bool
+ContactDetailsForm::DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ delete pItem;
+ return true;
+}
+
+void
+ContactDetailsForm::UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ int contentItemIndex = -1;
+ __pItemList->GetAt(itemIndex, contentItemIndex);
+
+ String value;
+
+ if (contentItemIndex == DETAIL_PROPERTY_GROUP)
+ {
+ value = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
+
+ if (value.IsEmpty())
+ {
+ value = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ }
+ }
+ else if (contentItemIndex == DETAIL_PROPERTY_RINGTONE)
+ {
+ String path = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
+ int index = 0;
+ path.LastIndexOf(L"/", path.GetLength() - 1, index);
+
+ if (index != 0)
+ {
+ path.SubString(index + 1, value);
+ }
+ }
+
+ Label* pValueLabel = static_cast<Label*>(pItem->GetControl(2));
+ if (pValueLabel == null)
+ {
+ return;
+ }
+
+ pValueLabel->SetText(value);
+ pValueLabel->Invalidate(false);
+}
+
+int
+ContactDetailsForm::GetDefaultItemHeight(void)
+{
+ return H_ITEM;
+}
+
+void
+ContactDetailsForm::AddMainInfo(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ int itemHeight = Y_THUMBNAIL;
+
+ Label* pThumbnailLabel = null;
+
+ String thumbnailPath = __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL);
+ Bitmap* pThumbnail = null;
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(thumbnailPath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE);
+ }
+ if (pThumbnail != null)
+ {
+ pThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_HIGH);
+ pThumbnail->Scale(Dimension(H_THUMBNAIL, H_THUMBNAIL));
+ pThumbnailLabel = new (std::nothrow) Label();
+ pThumbnailLabel->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2, Y_THUMBNAIL, H_THUMBNAIL, H_THUMBNAIL), L"");
+ pThumbnailLabel->SetBackgroundBitmap(*pThumbnail);
+ delete pThumbnail;
+
+ itemHeight += (H_THUMBNAIL + Y_THUMBNAIL);
+ }
+
+ String name;
+ String nickName = __pPresentationModel->GetValue(DETAIL_PROPERTY_NICK_NAME);
+ String jobTitle = __pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE);
+ String company = __pPresentationModel->GetValue(DETAIL_PROPERTY_COMPANY);
+ String department = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT);
+
+ __pPresentationModel->GetDisplayName(name);
+ if (name.IsEmpty())
+ {
+ if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER))
+ {
+ name.Append(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER));
+ }
+ else
+ {
+ name.Append(__pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, 0));
+ }
+ }
+
+ String companyInfo;
+ if (jobTitle.IsEmpty() == false)
+ {
+ companyInfo = jobTitle + CHARACTER_SPACE;
+ }
+ if (company.IsEmpty() == false)
+ {
+ companyInfo += company + CHARACTER_SPACE;
+ }
+ if (department.IsEmpty() == false)
+ {
+ companyInfo += department;
+ }
+
+ Label* pNameLabel = null;
+ __pFavoriteButton = null;
+ if (name.IsEmpty() == false)
+ {
+ pNameLabel = new (std::nothrow) Label();
+ pNameLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - (X_MAIN_INFO + H_FAVORITE + W_FAVORITE_GAP * 2), H_NAME), name);
+ pNameLabel->SetTextConfig(FONT_SIZE_NAME, LABEL_TEXT_STYLE_BOLD);
+ pNameLabel->SetTextColor(COLOR_NAME);
+ pNameLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pNameLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
+
+ if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
+ {
+ __pFavoriteButton = new (std::nothrow) Button();
+ __pFavoriteButton->Construct(Rectangle(itemWidth - (H_FAVORITE + W_FAVORITE_GAP * 2), itemHeight + Y_FAVORITE, H_FAVORITE, H_FAVORITE), L"");
+ __pFavoriteButton->SetActionId(IDA_FAVORITE_BUTTON);
+ __pFavoriteButton->SetName(Integer::ToString(IDA_FAVORITE_BUTTON));
+ __pFavoriteButton->AddActionEventListener(*this);
+ __pFavoriteButton->AddFocusEventListener(*this);
+
+ Bitmap* pBitmapNormal = null;
+ Bitmap* pBitmapPressed = null;
+ if (__pPresentationModel->IsFavorite())
+ {
+ pBitmapNormal = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_ON);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_OFF);
+ }
+ else
+ {
+ pBitmapNormal = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_OFF);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_DETAILS_FAVORITE_ON);
+ }
+
+ if (pBitmapNormal != null && pBitmapPressed != null)
+ {
+ __pFavoriteButton->SetNormalBackgroundBitmap(*pBitmapNormal);
+ __pFavoriteButton->SetPressedBackgroundBitmap(*pBitmapPressed);
+ delete pBitmapNormal;
+ delete pBitmapPressed;
+ }
+ }
+
+ itemHeight += H_NAME;
+ }
+
+ Label* pSuffixNickNameLabel = null;
+ if (nickName.IsEmpty() == false)
+ {
+ pSuffixNickNameLabel = new (std::nothrow) Label();
+ pSuffixNickNameLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - X_MAIN_INFO, H_SUB_INFO), nickName);
+ pSuffixNickNameLabel->SetTextConfig(FONT_SIZE_SUB_INFO, LABEL_TEXT_STYLE_NORMAL);
+ pSuffixNickNameLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pSuffixNickNameLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ itemHeight += (H_SUB_INFO + H_SUB_INFO_DIVIDER);
+ }
+
+ Label* pCompanyInfoLabel = null;
+ if (companyInfo.IsEmpty() == false)
+ {
+ pCompanyInfoLabel = new (std::nothrow) Label();
+ pCompanyInfoLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - X_MAIN_INFO, H_SUB_INFO), companyInfo);
+ pCompanyInfoLabel->SetTextConfig(FONT_SIZE_SUB_INFO, LABEL_TEXT_STYLE_NORMAL);
+ pCompanyInfoLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pCompanyInfoLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ itemHeight += (H_SUB_INFO + H_SUB_INFO_DIVIDER);
+ }
+
+ Label* pDefaultNumberLabel = null;
+ Button* pCallButton = null;
+ Button* pMessageButton = null;
+#if __SUPPORT_VIDEO_CALL
+ Button* pVideoCallButton = null;
+#endif
+
+ String defaultPhoneNumber = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER);
+ if (defaultPhoneNumber.IsEmpty() == false)
+ {
+ pDefaultNumberLabel = new (std::nothrow) Label();
+ pDefaultNumberLabel->Construct(Rectangle(X_MAIN_INFO, itemHeight, itemWidth - X_MAIN_INFO, H_DEFAULT_NUMBER), defaultPhoneNumber);
+ pDefaultNumberLabel->SetTextConfig(FONT_SIZE_MAIN_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pDefaultNumberLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pDefaultNumberLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ itemHeight += (H_DEFAULT_NUMBER + H_QUICK_BUTTON_DIVIDER);
+
+ Bitmap* pBgNormal = ResourceManager::GetBitmapN(IDB_CIRCLE_BUTTON_NORMAL);
+ Bitmap* pBgPressed = ResourceManager::GetBitmapN(IDB_CIRCLE_BUTTON_PRESSED);
+ Bitmap* pCallNormal = ResourceManager::GetBitmapN(IDB_CALL_NORMAL);
+ Bitmap* pCallPressed = ResourceManager::GetBitmapN(IDB_CALL_PRESSED);
+ Bitmap* pMessageNormal = ResourceManager::GetBitmapN(IDB_SMS_NORMAL);
+ Bitmap* pMessagePressed = ResourceManager::GetBitmapN(IDB_SMS_PRESSED);
+ Bitmap* pVideoCallNormal = ResourceManager::GetBitmapN(IDB_VIDEO_CALL_NORMAL);
+ Bitmap* pVideoCallPressed = ResourceManager::GetBitmapN(IDB_VIDEO_CALL_PRESSED);
+
+ pCallButton = new (std::nothrow) Button();
+ pCallButton->Construct(Rectangle(X_QUICK_BUTTON, itemHeight, H_QUICK_BUTTON, H_QUICK_BUTTON));
+ pCallButton->SetActionId(IDA_VOICE_CALL);
+ pCallButton->AddActionEventListener(*this);
+ if (pBgNormal != null)
+ {
+ pCallButton->SetNormalBackgroundBitmap(*pBgNormal);
+ }
+ if (pBgPressed != null)
+ {
+ pCallButton->SetPressedBackgroundBitmap(*pBgPressed);
+ }
+ if (pCallNormal != null)
+ {
+ pCallButton->SetNormalBitmap(Point(0, 0), *pCallNormal);
+ }
+ if (pCallPressed != null)
+ {
+ pCallButton->SetPressedBitmap(Point(0, 0), *pCallPressed);
+ }
+
+ pMessageButton = new (std::nothrow) Button();
+ pMessageButton->Construct(Rectangle((X_QUICK_BUTTON + H_QUICK_BUTTON + W_QUICK_BUTTON_GAP), itemHeight, H_QUICK_BUTTON, H_QUICK_BUTTON));
+ pMessageButton->SetActionId(IDA_MESSAGE);
+ pMessageButton->AddActionEventListener(*this);
+ if (pBgNormal != null)
+ {
+ pMessageButton->SetNormalBackgroundBitmap(*pBgNormal);
+ }
+ if (pBgPressed != null)
+ {
+ pMessageButton->SetPressedBackgroundBitmap(*pBgPressed);
+ }
+ if (pMessageNormal != null)
+ {
+ pMessageButton->SetNormalBitmap(Point(0, 0), *pMessageNormal);
+ }
+ if (pMessagePressed != null)
+ {
+ pMessageButton->SetPressedBitmap(Point(0, 0), *pMessagePressed);
+ }
+#if __SUPPORT_VIDEO_CALL
+ pVideoCallButton = new (std::nothrow) Button();
+ pVideoCallButton->Construct(Rectangle((X_QUICK_BUTTON + (H_QUICK_BUTTON * 2) + (W_QUICK_BUTTON_GAP * 2)), itemHeight, H_QUICK_BUTTON, H_QUICK_BUTTON));
+ pVideoCallButton->SetActionId(IDA_VIDEO_CALL);
+ pVideoCallButton->AddActionEventListener(*this);
+ if (pBgNormal != null)
+ {
+ pVideoCallButton->SetNormalBackgroundBitmap(*pBgNormal);
+ }
+ if (pBgPressed != null)
+ {
+ pVideoCallButton->SetPressedBackgroundBitmap(*pBgPressed);
+ }
+ if (pVideoCallNormal != null)
+ {
+ pVideoCallButton->SetNormalBitmap(Point(0, 0), *pVideoCallNormal);
+ }
+ if (pVideoCallPressed != null)
+ {
+ pVideoCallButton->SetPressedBitmap(Point(0, 0), *pVideoCallPressed);
+ }
+#endif
+
+ delete pBgNormal;
+ delete pBgPressed;
+ delete pCallNormal;
+ delete pCallPressed;
+ delete pMessageNormal;
+ delete pMessagePressed;
+ delete pVideoCallNormal;
+ delete pVideoCallPressed;
+
+ itemHeight += (H_QUICK_BUTTON + H_QUICK_BUTTON_DIVIDER);
+ }
+ else
+ {
+ itemHeight += H_QUICK_BUTTON_DIVIDER;
+ }
+
+ pItem->Construct(Dimension(itemWidth, itemHeight));
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ if (pThumbnailLabel != null)
+ {
+ pItem->AddControl(pThumbnailLabel);
+ }
+ if (pNameLabel != null)
+ {
+ pItem->AddControl(pNameLabel);
+ }
+ if (__pFavoriteButton != null)
+ {
+ pItem->AddControl(__pFavoriteButton);
+ }
+ if (pSuffixNickNameLabel != null)
+ {
+ pItem->AddControl(pSuffixNickNameLabel);
+ }
+ if (pCompanyInfoLabel != null)
+ {
+ pItem->AddControl(pCompanyInfoLabel);
+ }
+ if (pDefaultNumberLabel != null)
+ {
+ pItem->AddControl(pDefaultNumberLabel);
+ }
+#if __SUPPORT_VIDEO_CALL
+ if (pCallButton != null && pMessageButton != null && pVideoCallButton != null)
+ {
+ pItem->AddControl(pCallButton);
+ pItem->AddControl(pMessageButton);
+ pItem->AddControl(pVideoCallButton);
+ }
+#else
+ if (pCallButton != null && pMessageButton != null)
+ {
+ pItem->AddControl(pCallButton);
+ pItem->AddControl(pMessageButton);
+ }
+#endif
+}
+
+void
+ContactDetailsForm::AddProperty(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, int detailProperty, int itemSubIndex)
+{
+ String title;
+ String value;
+ String type;
+ int lineCount = 1;
+ int itemHeight = H_ITEM_DOUBLE_LINE;
+ int valueCount = __pPresentationModel->GetMultiValuesCount(static_cast<DetailProperty>(detailProperty));
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (detailProperty != DETAIL_PROPERTY_PHONE_NUMBER && valueCount > 1)
+ {
+ pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE + pContactsApp->GetFontHeightOffset() + ((H_ADDITIONAL_ITEM + pContactsApp->GetFontHeightOffset()) * (valueCount - 1))), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ CreateTitleValueTypeItem(itemWidth, pItem, detailProperty);
+
+ return;
+ }
+
+ switch (detailProperty)
+ {
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ type = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, itemSubIndex);
+ value = __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, itemSubIndex);
+
+ pItem->Construct(Dimension(itemWidth, H_ITEM + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pItem->SetName(value);
+
+ CreateValueTypeItem(itemWidth, pItem, value, type);
+
+ return;
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ title = ResourceManager::GetString(L"IDS_COM_BODY_EMAIL");
+ type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), 0);
+ value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), 0);
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS");
+ type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), 0);
+ value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), 0);
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB");
+ type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), 0);
+ value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), 0);
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_BODY_URL");
+ type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), 0);
+ value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), 0);
+ }
+ break;
+ case DETAIL_PROPERTY_BIRTHDAY:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY");
+ value = __pPresentationModel->GetValue(DETAIL_PROPERTY_BIRTHDAY);
+ }
+ break;
+ case DETAIL_PROPERTY_NOTE:
+ {
+ pItem->Construct(Dimension(itemWidth, itemHeight + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ CreateNoteItem(itemWidth, pItem);
+
+ return;
+ }
+ break;
+ default:
+ break;
+ }
+
+ pItem->Construct(Dimension(itemWidth, itemHeight + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ CreateTitleValueTypeItem(itemWidth, pItem, title, value, type, lineCount);
+}
+
+void
+ContactDetailsForm::AddGroup(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pItem->SetName(Integer::ToString(DETAIL_PROPERTY_GROUP));
+ pItem->AddKeyEventListener(*this);
+
+ String title = ResourceManager::GetString(L"IDS_PB_BODY_GROUPS");
+ String value = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
+
+ if (value.IsEmpty())
+ {
+ value = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ }
+
+ AddGroupStylePanel(itemWidth, pItem, GROUP_STYLE_TOP);
+
+ CreateTitleValueTypeItem(itemWidth, pItem, title, value);
+ __pGroupsItem = pItem;
+}
+
+void
+ContactDetailsForm::AddRingTone(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ pItem->Construct(Dimension(itemWidth, H_ITEM_DOUBLE_LINE + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pItem->SetName(Integer::ToString(DETAIL_PROPERTY_RINGTONE));
+ pItem->AddKeyEventListener(*this);
+
+ String title = ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE");
+ String value = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
+
+ int index = 0;
+ String trimmedPath;
+ value.LastIndexOf(L"/", value.GetLength() - 1, index);
+
+ if (index != 0)
+ {
+ value.SubString(index + 1, trimmedPath);
+ }
+
+ AddGroupStylePanel(itemWidth, pItem, GROUP_STYLE_BOTTOM);
+
+ CreateTitleValueTypeItem(itemWidth, pItem, title, trimmedPath);
+
+ if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == false)
+ {
+ __pClearButton = new (std::nothrow) Button();
+ __pClearButton->Construct(Rectangle(itemWidth - H_ICON - W_TEXT_MARGIN - 10, (H_ITEM_DOUBLE_LINE + pContactsApp->GetFontHeightOffset() - H_ICON) / 2, H_ICON, H_ICON));
+ __pClearButton->SetActionId(IDA_BUTTON_RINGTONE_CLEAR);
+ __pClearButton->SetName(Integer::ToString(IDA_BUTTON_RINGTONE_CLEAR));
+ __pClearButton->AddActionEventListener(*this);
+ __pClearButton->AddFocusEventListener(*this);
+
+ Bitmap* pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_NORMAL);
+ if (pReset != null)
+ {
+ __pClearButton->SetNormalBitmap(Point(0, 0), *pReset);
+ delete pReset;
+ }
+ pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_PRESSED);
+ if (pReset != null)
+ {
+ __pClearButton->SetPressedBitmap(Point(0, 0), *pReset);
+ delete pReset;
+ }
+
+ pItem->AddControl(__pClearButton);
+ pItem->SetIndividualSelectionEnabled(__pClearButton, true);
+ __pRingtoneItem = pItem;
+ }
+}
+
+void
+ContactDetailsForm::AddShareButtons(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ pItem->Construct(Dimension(itemWidth, H_BUTTON_CONTAINER));
+
+ int buttonWidth = itemWidth - W_BUTTON_GAP * 2;
+
+ Button* pSendNameButton = new (std::nothrow) Button();
+ pSendNameButton->Construct(Rectangle(W_BUTTON_GAP, Y_BUTTON, buttonWidth, H_BUTTON), ResourceManager::GetString(L"IDS_PB_HEADER_SEND_NAMECARD"));
+ pSendNameButton->SetActionId(IDA_BUTTON_SHARE_NAME_CARD);
+ pSendNameButton->AddActionEventListener(*this);
+ pItem->AddControl(pSendNameButton);
+}
+
+void
+ContactDetailsForm::CreateValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, const Tizen::Base::String& value, const Tizen::Base::String& type)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Label* pValueLabel = new (std::nothrow) Label();
+ pValueLabel->Construct(Rectangle(W_TEXT_MARGIN, 0, itemWidth - W_TEXT_MARGIN * 2 - W_TYPE, H_ITEM + pContactsApp->GetFontHeightOffset()), value);
+ pValueLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pValueLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pValueLabel->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+ pValueLabel->SetTextColor(COLOR_OTHER_NUMBER);
+ pItem->AddControl(pValueLabel);
+
+ Label* pTypeLabel = new (std::nothrow) Label();
+ pTypeLabel->Construct(Rectangle((itemWidth - W_TEXT_MARGIN - W_TYPE), 0, W_TYPE, H_ITEM + pContactsApp->GetFontHeightOffset()), type);
+ pTypeLabel->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
+ pTypeLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pTypeLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pTypeLabel->SetTextColor(COLOR_ITEM_TYPE);
+ pItem->AddControl(pTypeLabel);
+}
+
+void
+ContactDetailsForm::CreateTitleValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, const Tizen::Base::String& title, const Tizen::Base::String& value, const Tizen::Base::String& type, int lineCount)
+{
+ int valueWidth = itemWidth - (W_TEXT_MARGIN * 2);
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Label* pTitleLabel = new (std::nothrow) Label();
+ pTitleLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE, itemWidth - W_TEXT_MARGIN, H_ITEM_TITLE), title);
+ pTitleLabel->SetName(GROUP_LABEL);
+ pTitleLabel->AddTouchEventListener(*this);
+ pTitleLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pTitleLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pTitleLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pTitleLabel->SetTextColor(COLOR_ITEM_TITLE);
+ pItem->AddControl(pTitleLabel);
+
+ if (type.IsEmpty() == false)
+ {
+ Label* pTypeLabel = new (std::nothrow) Label();
+ pTypeLabel->Construct(Rectangle((itemWidth - W_TEXT_MARGIN - W_TYPE), Y_ITEM_TITLE + H_ITEM_TITLE, W_TYPE, H_ITEM_VALUE), type);
+ pTypeLabel->SetName(GROUP_LABEL);
+ pTypeLabel->AddTouchEventListener(*this);
+ pTypeLabel->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
+ pTypeLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pTypeLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pTypeLabel->SetTextColor(COLOR_ITEM_TYPE);
+ pItem->AddControl(pTypeLabel);
+
+ valueWidth = itemWidth - (W_TEXT_MARGIN * 2) - W_TYPE;
+ }
+ else if (title.Equals(ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE"), false))
+ {
+ valueWidth = itemWidth - (W_TEXT_MARGIN * 2) - H_ICON;
+ }
+
+ Label* pValueLabel = new (std::nothrow) Label();
+ pValueLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE + H_ITEM_TITLE, valueWidth, (H_ITEM_VALUE + pContactsApp->GetFontHeightOffset()) * lineCount), value);
+ pValueLabel->SetName(VALUE_LABEL);
+ pValueLabel->AddTouchEventListener(*this);
+ pValueLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pValueLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pValueLabel->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+ pValueLabel->SetTextColor(COLOR_ITEM_VALUE);
+ pItem->AddControl(pValueLabel);
+}
+
+void
+ContactDetailsForm::CreateTitleValueTypeItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, int detailProperty)
+{
+ String title;
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ switch (detailProperty)
+ {
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ title = ResourceManager::GetString(L"IDS_COM_BODY_EMAIL");
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS");
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_BODY_URL");
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ title = ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB");
+ }
+ break;
+ default:
+ break;
+ }
+
+ Label* pTitleLabel = new (std::nothrow) Label();
+ pTitleLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE, itemWidth - W_TEXT_MARGIN, H_ITEM_TITLE), title);
+ pTitleLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pTitleLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pTitleLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pTitleLabel->SetTextColor(COLOR_ITEM_TITLE);
+ pItem->AddControl(pTitleLabel);
+
+ for (int i = 0; i < __pPresentationModel->GetMultiValuesCount(static_cast<DetailProperty>(detailProperty)); i++)
+ {
+ String type = __pPresentationModel->GetType(static_cast<DetailProperty>(detailProperty), i);
+ String value = __pPresentationModel->GetValue(static_cast<DetailProperty>(detailProperty), i);
+
+ int valueWidth = itemWidth - (W_TEXT_MARGIN * 2);
+ if (type.IsEmpty() == false)
+ {
+ Label* pTypeLabel = new (std::nothrow) Label();
+ pTypeLabel->Construct(Rectangle((itemWidth - W_TEXT_MARGIN - W_TYPE), (H_ADDITIONAL_ITEM + pContactsApp->GetFontHeightOffset())/2 + H_ITEM_TITLE + ((H_ADDITIONAL_ITEM + pContactsApp->GetFontHeightOffset()) * i), W_TYPE, H_ITEM_VALUE), type);
+ pTypeLabel->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
+ pTypeLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pTypeLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pTypeLabel->SetTextColor(COLOR_ITEM_TYPE);
+ pItem->AddControl(pTypeLabel);
+
+ valueWidth = itemWidth - (W_TEXT_MARGIN * 2) - W_TYPE;
+ }
+
+ Label* pValueLabel = new (std::nothrow) Label();
+ pValueLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE + H_ITEM_TITLE + ((H_ADDITIONAL_ITEM + pContactsApp->GetFontHeightOffset()) * i), valueWidth, H_ITEM_VALUE + pContactsApp->GetFontHeightOffset()), value);
+ pValueLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pValueLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pValueLabel->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+ pValueLabel->SetTextColor(COLOR_ITEM_VALUE);
+ pItem->AddControl(pValueLabel);
+ }
+}
+
+void
+ContactDetailsForm::CreateNoteItem(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ String title = ResourceManager::GetString(L"IDS_PB_BODY_NOTE");
+ String value = __pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE);
+
+ Label* pTitleLabel = new (std::nothrow) Label();
+ pTitleLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE, itemWidth - W_TEXT_MARGIN, H_ITEM_TITLE), title);
+ pTitleLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pTitleLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pTitleLabel->SetTextConfig(FONT_SIZE_SUB_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pTitleLabel->SetTextColor(COLOR_ITEM_TITLE);
+ pItem->AddControl(pTitleLabel);
+
+ Label* pValueLabel = new (std::nothrow) Label();
+ pValueLabel->Construct(Rectangle(W_TEXT_MARGIN, Y_ITEM_TITLE + H_ITEM_TITLE, itemWidth - (W_TEXT_MARGIN * 2), H_ITEM_VALUE), value);
+ pValueLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pValueLabel->SetTextVerticalAlignment(ALIGNMENT_TOP);
+ pValueLabel->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+ pValueLabel->SetTextColor(COLOR_ITEM_VALUE);
+ pItem->AddControl(pValueLabel);
+
+ Font font;
+ font.Construct(FONT_STYLE_PLAIN, pContactsApp->GetFontSize());
+
+ TextElement* pNameElement = new (std::nothrow) TextElement();
+ pNameElement->Construct(value);
+ pNameElement->SetFont(font);
+
+ EnrichedText* pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(Dimension(itemWidth - (W_TEXT_MARGIN * 2) - (pValueLabel->GetLeftMargin() * 2), H_ITEM_VALUE));
+ pEnrichedText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
+ pEnrichedText->SetTextAbbreviationEnabled(false);
+ pEnrichedText->Add(*pNameElement);
+
+ pValueLabel->SetSize(pValueLabel->GetWidth(), pEnrichedText->GetTotalLineHeight() + pValueLabel->GetTopMargin());
+ pItem->SetSize(itemWidth, (Y_ITEM_TITLE * 2) + H_ITEM_TITLE + pEnrichedText->GetTotalLineHeight());
+
+ pEnrichedText->RemoveAllTextElements(true);
+ delete pEnrichedText;
+}
+
+void
+ContactDetailsForm::OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (status == TABLE_VIEW_ITEM_STATUS_SELECTED)
+ {
+ String itemName = pItem->GetName();
+
+ if (itemName.Equals(Integer::ToString(DETAIL_PROPERTY_GROUP), true) == true)
+ {
+ if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == true)
+ {
+ return;
+ }
+
+ if (__isAppControlLaunching == true)
+ {
+ return;
+ }
+
+ __currentFocusedItem.Clear();
+ if (__pPresentationModel->GetCategoryCount() > 0)
+ {
+ IList* pCategoryList = __pPresentationModel->GetAssignedCategoryIdListN();
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pCategoryList);
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ }
+ }
+ else if (itemName.Equals(Integer::ToString(DETAIL_PROPERTY_RINGTONE), true) == true)
+ {
+ if (__isAppControlLaunching == true)
+ {
+ return;
+ }
+
+ if (__appControlViewType.Equals(VALUE_VIEW_TYPE_VCF, false) == true)
+ {
+ return;
+ }
+
+ __currentFocusedItem.Clear();
+ result r = LaunchAppControl(PROVIDER_ID_FILEMANAGER, OPERATION_ID_PICK);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to launch appcontrol", GetErrorMessage(r));
+ }
+ else if (itemName.IsEmpty() == false)
+ {
+ if (__isAppControlLaunching == true)
+ {
+ return;
+ }
+ Point itemPoint;
+ itemPoint.x = GetClientAreaBounds().width / 2;
+ itemPoint.y = GetClientAreaBounds().y + pItem->GetY() + (pItem->GetHeight() / 2) - __scrolledDistance;
+
+ __pContextMenuCall->SetName(itemName);
+ __pContextMenuCall->SetAnchorPosition(itemPoint);
+ __pContextMenuCall->SetShowState(true);
+ __pContextMenuCall->Show();
+ }
+ }
+}
+
+void
+ContactDetailsForm::OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
+{
+}
+
+void
+ContactDetailsForm::OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo)
+{
+}
+
+void
+ContactDetailsForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ if (__isAppControlLaunching == true)
+ {
+ return;
+ }
+
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&const_cast<Control&>(source));
+ }
+ else if (source.GetName().Equals(GROUP_LABEL, true) || source.GetName().Equals(VALUE_LABEL, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent()->GetControl(GROUP_STYLE_PANEL));
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_PRESSED);
+ }
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_PRESSED);
+
+ Label* pLabelValue = static_cast<Label*>(source.GetParent()->GetControl(VALUE_LABEL, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_PRESSED));
+
+ Label* pLabelTitle = static_cast<Label*>(source.GetParent()->GetControl(GROUP_LABEL, true));
+ pLabelTitle->SetTextColor(Color(COLOR_ITEM_PRESSED));
+
+ pPanel->Invalidate(true);
+ pLabelValue->Invalidate(true);
+ pLabelTitle->Invalidate(true);
+ }
+}
+
+void
+ContactDetailsForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&const_cast<Control&>(source));
+
+ }
+ else if (source.GetName().Equals(GROUP_LABEL, true) || source.GetName().Equals(VALUE_LABEL, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent()->GetControl(GROUP_STYLE_PANEL));
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_GROUP_STYLE);
+
+ Label* pLabelValue = static_cast<Label*>(source.GetParent()->GetControl(VALUE_LABEL, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+
+ Label* pLabelTitle = static_cast<Label*>(source.GetParent()->GetControl(GROUP_LABEL, true));
+ pLabelTitle->SetTextColor(Color(COLOR_ITEM_TITLE));
+
+ pPanel->Invalidate(true);
+ pLabelValue->Invalidate(true);
+ pLabelTitle->Invalidate(true);
+ }
+}
+
+void
+ContactDetailsForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&const_cast<Control&>(source));
+
+ }
+ else if (source.GetName().Equals(GROUP_LABEL, true) || source.GetName().Equals(VALUE_LABEL, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent()->GetControl(GROUP_STYLE_PANEL));
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_GROUP_STYLE);
+
+ Label* pLabelTitle = static_cast<Label*>(source.GetParent()->GetControl(GROUP_LABEL, true));
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+
+ Label* pLabelValue = static_cast<Label*>(source.GetParent()->GetControl(VALUE_LABEL, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+
+ pPanel->Invalidate(true);
+ pLabelValue->Invalidate(true);
+ pLabelTitle->Invalidate(true);
+ }
+}
+
+void
+ContactDetailsForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactDetailsForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactDetailsForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&const_cast<Control&>(source));
+
+ }
+ else if (source.GetName().Equals(GROUP_LABEL, true) || source.GetName().Equals(VALUE_LABEL, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent()->GetControl(GROUP_STYLE_PANEL));
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_GROUP_STYLE);
+
+ Label* pLabelTitle = static_cast<Label*>(source.GetParent()->GetControl(GROUP_LABEL, true));
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+
+ Label* pLabelValue = static_cast<Label*>(source.GetParent()->GetControl(VALUE_LABEL, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+
+ pPanel->Invalidate(true);
+ pLabelValue->Invalidate(true);
+ pLabelTitle->Invalidate(true);
+ }
+}
+
+void
+ContactDetailsForm::OnFileEventOccured(const unsigned long events, const Tizen::Base::String &path, const unsigned int eventId)
+{
+ String ringtonePath = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
+ if (ringtonePath.Equals(ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT"), false) == true )
+ {
+ __pTableView->RefreshItem(__pItemList->GetCount() - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+}
+
+void
+ContactDetailsForm::OnScrollEndReached(Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type)
+{
+}
+
+void
+ContactDetailsForm::OnScrollPositionChanged(Tizen::Ui::Control &source, int scrollPos)
+{
+ __scrolledDistance = scrollPos;
+}
+
+void
+ContactDetailsForm::OnScrollStopped(Tizen::Ui::Control &source)
+{
+}
+
+void
+ContactDetailsForm::OnContactsChanged(void)
+{
+ HideDeletePopup();
+ if (__pPresentationModel->IsContactRemoved())
+ {
+ if (__pAppControl != null)
+ {
+ __pAppControl->Stop();
+ }
+
+ if (__appControlViewType.IsEmpty() == true)
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ else
+ {
+ UiApp::GetInstance()->Terminate();
+ }
+ }
+ else
+ {
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TryReturnVoid(pContactsApp != null, "Unable to get ContactsApp instance.");
+
+ InitializeDetailItemList();
+ __pFavoriteButton = null;
+ __pClearButton = null;
+ __pTableView->UpdateTableView();
+
+ if (__currentFocusedItem == Integer::ToString(IDA_FAVORITE_BUTTON))
+ {
+ if (__pFavoriteButton != null)
+ {
+ __pFavoriteButton->SetFocus();
+ }
+ }
+ else if (__currentFocusedItem == Integer::ToString(IDA_BUTTON_RINGTONE_CLEAR))
+ {
+ if (__pClearButton != null)
+ {
+ __pClearButton->SetFocus();
+ }
+ }
+ }
+
+ delete __pDefaultSelectorPopup;
+ __pDefaultSelectorPopup = null;
+}
+
+void
+ContactDetailsForm::OnCategoriesChanged(void)
+{
+}
+
+result
+ContactDetailsForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& launchType, const Tizen::Base::String& value)
+{
+ result r = E_SUCCESS;
+
+ if (__pAppControl != null)
+ {
+ return E_FAILURE;
+ }
+
+ String uri;
+ String mimeType;
+ HashMap extraData;
+ extraData.Construct();
+ IAppControlResponseListener* pEvent = null;
+
+ if (appId.Equals(String(PROVIDER_ID_PHONE)) && operationId.Equals(String(OPERATION_ID_CALL)))
+ {
+ uri.Append(INPUT_URI_TEL);
+
+ if (value.IsEmpty())
+ {
+ uri.Append(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER));
+ }
+ else
+ {
+ uri.Append(value);
+ }
+
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_CALL_TYPE), new (std::nothrow) String(launchType));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_MESSAGE)) && operationId.Equals(String(OPERATION_ID_COMPOSE)))
+ {
+ String recipientAddress;
+
+ if (value.IsEmpty())
+ {
+ recipientAddress.Append(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER));
+ int index = -1;
+ recipientAddress.IndexOf(DELIMITER_SEMICOLON, 0, index);
+ if (index >= 0)
+ {
+ recipientAddress.SubString(0, index, recipientAddress);
+ }
+ index = -1;
+ recipientAddress.IndexOf(DELIMITER_COMMA, 0, index);
+ if (index >= 0)
+ {
+ recipientAddress.SubString(0, index, recipientAddress);
+ }
+ }
+ else
+ {
+ recipientAddress.Append(value);
+ }
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TO), new (std::nothrow) String(recipientAddress));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TYPE), new (std::nothrow) String(INPUT_TYPE_SMS));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ mimeType.Append(INPUT_MIME_TYPE_AUDIO);
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
+
+ pEvent = this;
+ }
+ else if (appId.Equals(String(PROVIDER_ID_EMAIL)) && operationId.Equals(String(OPERATION_ID_COMPOSE)))
+ {
+ ArrayList* pArgList = new (std::nothrow) ArrayList();
+ pArgList->Construct();
+
+ pArgList->Add(new (std::nothrow) String(__pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, 0)));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TO), pArgList);
+ }
+
+ __pAppControl = AppManager::FindAppControlN(appId, operationId);
+
+ if (__pAppControl != null)
+ {
+ r = __pAppControl->Start(&uri, &mimeType, &extraData, pEvent);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to launch app control", GetErrorMessage(r));
+
+ __isAppControlLaunching = true;
+
+ if (operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ SetEnabled(false);
+ Invalidate(true);
+ }
+
+ Footer* pFooter = GetFooter();
+ pFooter->SetEnabled(false);
+ }
+
+CATCH:
+ extraData.RemoveAll(true);
+ if (__isAppControlLaunching == false && __pAppControl != null)
+ {
+ delete __pAppControl;
+ __pAppControl = null;
+ }
+ return r;
+}
+
+void
+ContactDetailsForm::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
+{
+ AppLogDebug("ENTER");
+
+ if (pExtraData == null)
+ {
+ return;
+ }
+
+ if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ if (appControlResult == APP_CTRL_RESULT_SUCCEEDED)
+ {
+ const String *pResultString = null;
+ const ArrayList* pResultList = dynamic_cast<const ArrayList*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
+ if (pResultList != null)
+ {
+ pResultString = static_cast<const String*>(pResultList->GetAt(0));
+ }
+ else
+ {
+ pResultString = static_cast<const String*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
+ }
+
+ if (pResultString != null && pResultString->IsEmpty() == false)
+ {
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, *pResultString);
+ __pPresentationModel->UpdateContact();
+ __pTableView->RefreshItem(__pItemList->GetCount() - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__pFileEventManager == null)
+ {
+ __pFileEventManager = new (std::nothrow) FileEventManager();
+ __pFileEventManager->Construct(*this);
+ }
+ __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
+
+ }
+ }
+ }
+
+ AppLogDebug("EXIT");
+}
+
+void
+ContactDetailsForm::AddGroupStylePanel(int itemWidth, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::GroupStyle groupStyle)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ Panel* pGroupStyle = new (std::nothrow) Panel();
+ pGroupStyle->Construct(Rectangle(W_GROUP_STYLE_MARGIN, 0, itemWidth - W_GROUP_STYLE_MARGIN * 2, H_ITEM_DOUBLE_LINE + pContactsApp->GetFontHeightOffset()), groupStyle);
+ pGroupStyle->SetName(GROUP_STYLE_PANEL);
+ pGroupStyle->SetBackgroundColor(COLOR_GROUP_STYLE);
+ pGroupStyle->AddTouchEventListener(*this);
+ pItem->AddControl(pGroupStyle);
+}
+
+result
+ContactDetailsForm::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
+{
+ result r = E_SUCCESS;
+
+ if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
+ {
+ return E_FAILURE;
+ }
+
+ StringTokenizer stringToken(argument, DELIMITER);
+
+ r = stringToken.GetNextToken(type);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
+
+ r = stringToken.GetNextToken(content);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get content", GetErrorMessage(r));
+
+ return r;
+}
+
+void
+ContactDetailsForm::ShowDefaultSelectorPopup(void)
+{
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+
+ String numberWithType;
+ int numberCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
+ for (int index = 0; index < numberCount; index++)
+ {
+ numberWithType = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, index) + L" ";
+ numberWithType += __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, index);
+
+ pList->Add(*(new (std::nothrow) String(numberWithType)));
+ }
+ ContactValueListItemProvider* pProvider = new (std::nothrow) ContactValueListItemProvider(pList);
+
+ delete __pDefaultSelectorPopup;
+ __pDefaultSelectorPopup = new (std::nothrow) Popup();
+ __pDefaultSelectorPopup->Construct(true, Dimension(W_POPUP, H_POPUP));
+ __pDefaultSelectorPopup->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"));
+ __pDefaultSelectorPopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pDefaultSelectorPopup->GetClientAreaBounds();
+
+ ListView* pOtherNumberList = new (std::nothrow) ListView();
+ pOtherNumberList->Construct(Rectangle(0, 0, popupClientBounds.width, H_POPUP_LIST_VIEW));
+ pOtherNumberList->AddListViewItemEventListener(*this);
+ pOtherNumberList->SetItemProvider(*pProvider);
+
+ __pDefaultSelectorPopup->AddControl(pOtherNumberList);
+
+ Button* pCloseButton = new (std::nothrow) Button();
+ pCloseButton->Construct(Rectangle((popupClientBounds.width - W_POPUP_BUTTON) / 2, Y_POPUP_BUTTON,
+ W_POPUP_BUTTON, H_POPUP_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCloseButton->SetActionId(IDA_POPUP_CLOSE);
+ pCloseButton->AddActionEventListener(*this);
+
+ __pDefaultSelectorPopup->AddControl(pCloseButton);
+ __pDefaultSelectorPopup->SetShowState(true);
+ __pDefaultSelectorPopup->Show();
+}
+
+void
+ContactDetailsForm::HideDefaultSelectorPopup(void)
+{
+ __pDefaultSelectorPopup->SetShowState(false);
+
+ Invalidate(true);
+}
+
+void
+ContactDetailsForm::ShowInvalidFileMessageBox(const Tizen::Base::String errorMsg, bool showFooter)
+{
+ if (showFooter == false)
+ {
+ Footer* pFooter = GetFooter();
+ if (pFooter != null)
+ {
+ pFooter->SetShowState(false);
+ }
+ }
+
+ int modalResult = 0;
+ MessageBox unsupportedMessageBox;
+ unsupportedMessageBox.Construct(L"", errorMsg, MSGBOX_STYLE_OK, MESSAGE_BOX_TIMEOUT_MS);
+ unsupportedMessageBox.ShowAndWait(modalResult);
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ result r = AppControlProviderManager::GetInstance()->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ UiApp::GetInstance()->Terminate();
+}
+
+void
+ContactDetailsForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER, L"", index);
+ __pPresentationModel->AddAddressBook();
+
+ HideDefaultSelectorPopup();
+}
+
+void
+ContactDetailsForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+ContactDetailsForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus status)
+{
+}
+
+void
+ContactDetailsForm::OnForeground(void)
+{
+ AppLogDebug("ContactDetailsForm::OnForeground");
+ delete __pAppControl;
+ __pAppControl = null;
+
+ __isAppControlLaunching = false;
+}
+
+void
+ContactDetailsForm::OnBackground(void)
+{
+ if (IsEnabled() == false)
+ {
+ result r = SetEnabled(true);
+ AppLogDebug("Form Enabled = %s", GetErrorMessage(r));
+ Invalidate(true);
+ }
+
+ Footer* pFooter = GetFooter();
+ pFooter->SetEnabled(true);
+}
+
+bool
+ContactDetailsForm::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+ContactDetailsForm::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ if (keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
+ {
+ if (__pDefaultSelectorPopup && __pDefaultSelectorPopup->GetShowState() == true)
+ {
+ HideDefaultSelectorPopup();
+ return true;
+ }
+
+ if (__pDeletePopup && __pDeletePopup->GetShowState() == true)
+ {
+ HideDeletePopup();
+ return true;
+ }
+ }
+
+ return false;
+}
+
+bool
+ContactDetailsForm::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+ContactDetailsForm::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+void
+ContactDetailsForm::OnFocusGained(const Tizen::Ui::Control& source)
+{
+ if (source.GetName() == Integer::ToString(IDA_FAVORITE_BUTTON))
+ {
+ __currentFocusedItem = Integer::ToString(IDA_FAVORITE_BUTTON);
+ }
+ else if (source.GetName() == Integer::ToString(IDA_BUTTON_RINGTONE_CLEAR))
+ {
+ __currentFocusedItem = Integer::ToString(IDA_BUTTON_RINGTONE_CLEAR);
+ }
+}
+
+void
+ContactDetailsForm::OnFocusLost(const Tizen::Ui::Control& source)
+{
+
+}
+
+void
+ContactDetailsForm::OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+ if (keyCode == KEY_ENTER )
+ {
+ TableViewItem* pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ String valueString;
+ Panel* pPanel = static_cast<Panel*>(pItem->GetControl(0));
+
+ if (pPanel == null)
+ {
+ return;
+ }
+
+ Label* pLabelValue = static_cast<Label*>(pItem->GetControl(VALUE_LABEL, true));
+
+ if (pLabelValue == null)
+ {
+ return;
+ }
+
+ Label* pLabelTitle = static_cast<Label*>(pItem->GetControl(GROUP_LABEL, true));
+
+ if (pLabelTitle == null)
+ {
+ return;
+ }
+
+ pPanel->SetBackgroundColor(COLOR_PRESSED);
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_PRESSED));
+ pLabelTitle->SetTextColor(Color(COLOR_ITEM_PRESSED));
+
+ pPanel->Invalidate(true);
+ pLabelValue->Invalidate(true);
+ pLabelTitle->Invalidate(true);
+ }
+}
+
+void
+ContactDetailsForm::OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+ if (keyCode == KEY_ENTER )
+ {
+
+ TableViewItem* pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ String valueString;
+ Panel* pPanel = static_cast<Panel*>(pItem->GetControl(0));
+
+ if (pPanel == null)
+ {
+ return;
+ }
+
+ Label* pLabelValue = static_cast<Label*>(pItem->GetControl(VALUE_LABEL, true));
+
+ if (pLabelValue == null)
+ {
+ return;
+ }
+
+ Label* pLabelTitle = static_cast<Label*>(pItem->GetControl(GROUP_LABEL, true));
+
+ if (pLabelTitle == null)
+ {
+ return;
+ }
+
+
+ pPanel->SetBackgroundColor(COLOR_GROUP_STYLE);
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+ pLabelTitle->SetTextColor(Color(COLOR_ITEM_TITLE));
+
+ pPanel->Invalidate(true);
+ pLabelValue->Invalidate(true);
+ pLabelTitle->Invalidate(true);
+ }
+}
+
+void
+ContactDetailsForm::OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+
+}
+
+void
+ContactDetailsForm::OnSettingChanged(Tizen::Base::String &key)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TryReturnVoid(pContactsApp != null, "Unable to get ContactsApp instance.");
+
+ if(key == L"http://tizen.org/setting/contacts.order.firstname")
+ {
+ InitializeDetailItemList();
+ __pTableView->UpdateTableView();
+ }
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactEditorForm.cpp
+ * @brief This is the implementation file for the ContactEditorForm class.
+ */
+
+#include <FApp.h>
+#include <FMedia.h>
+#include "CtContactEditorForm.h"
+#include "CtContactPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtContactValueListItemProvider.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+#include "CtCommonUtil.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::Io;
+using namespace Tizen::Media;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+
+static const int IDA_ACTION_BAR_SAVE = 11;
+static const int IDA_BUTTON_THUMBNAIL_ADD = 21;
+static const int IDA_BUTTON_THUMBNAIL_DELETE = 22;
+static const int IDA_BUTTON_CAMERA = 23;
+static const int IDA_BUTTON_EXPANDABLE = 24;
+static const int IDA_BUTTON_MORE_INFO = 25;
+static const int IDA_BUTTON_BIRTHDAY_CLEAR = 26;
+static const int IDA_BUTTON_DEFAULT_PHONE_NUMBER = 27;
+static const int IDA_BUTTON_RINGTONE_CLEAR = 28;
+static const int IDA_BUTTON_TYPE = 29;
+static const int IDA_BUTTON_BIRTHDAY_DELETE = 30;
+static const int IDA_CONTEXT_MENU_ITEM_JOB_TITLE = 31;
+static const int IDA_CONTEXT_MENU_ITEM_DEPARTMENT = 32;
+static const int IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER = 33;
+static const int IDA_CONTEXT_MENU_ITEM_URL = 34;
+static const int IDA_CONTEXT_MENU_ITEM_BIRTHDAY = 35;
+static const int IDA_CONTEXT_MENU_ITEM_NOTE = 36;
+static const int IDA_INPUT_FIELD_DISPLAY_NAME = 41;
+static const int IDA_POPUP_DISCARD_CHANGES_OK = 44;
+static const int IDA_POPUP_DISCARD_CHANGES_CANCEL = 45;
+
+static const wchar_t* IDB_EXPAND_BUTTON_NORMAL = L"00_circle_button.png";
+static const wchar_t* IDB_EXPAND_BUTTON_PRESSED = L"00_circle_button_press.png";
+static const wchar_t* IDB_EXPAND_CLOSED = L"00_button_expand_closed.png";
+static const wchar_t* IDB_EXPAND_CLOSED_PRESSED = L"00_button_expand_closed_press.png";
+static const wchar_t* IDB_EXPAND_OPENED = L"00_button_expand_opened.png";
+static const wchar_t* IDB_EXPAND_OPENED_PRESSED = L"00_button_expand_opened_press.png";
+static const wchar_t* IDB_BUTTON_DELETE_NORMAL = L"00_circle_button_delete.png";
+static const wchar_t* IDB_BUTTON_DELETE_PRESSED = L"00_circle_button_delete_press.png";
+static const wchar_t* IDB_BUTTON_MINUS = L"00_button_expand_minus_press.png";
+static const wchar_t* IDB_BUTTON_MINUS_PRESSED = L"00_button_expand_minus_press.png";
+static const wchar_t* IDB_BUTTON_RESET_NORMAL = L"00_button_refresh.png";
+static const wchar_t* IDB_BUTTON_RESET_PRESSED = L"00_button_refresh_press.png";
+static const wchar_t* IDB_BUTTON_ADD= L"C02_caller_id_icon_add.png";
+static const wchar_t* IDB_BUTTON_ADD_PRESSED = L"C02_caller_id_icon_add_press.png";
+static const wchar_t* IDB_BUTTON_CAMERA = L"C02_caller_id_icon_camera.png";
+static const wchar_t* IDB_BUTTON_CAMERA_PRESSED = L"C02_caller_id_icon_camera_press.png";
+static const wchar_t* IDB_BUTTON_DROPBOX = L"C02_button_icon_dropbox.png";
+static const wchar_t* IDB_THUMBNAIL_BACKGROUND = L"C02_created_photo_bg.png";
+static const wchar_t* IDB_DETAILS_RESET_NORMAL = L"00_button_refresh.png";
+static const wchar_t* IDB_DETAILS_RESET_PRESSED = L"00_button_refresh_press.png";
+
+static const wchar_t* INPUT_DATA_SELECTION_MODE_SINGLE = L"single";
+static const wchar_t* INPUT_KEY_SELECTION_MODE = L"http://tizen.org/appcontrol/data/selection_mode";
+static const wchar_t* INPUT_KEY_IMAGEVIEWER_MODE = L"http://tizen.org/appcontrol/data/image/crop_mode";
+static const wchar_t* INPUT_KEY_ALLOW_SWITCH = L"http://tizen.org/appcontrol/data/camera/allow_switch";
+static const wchar_t* INPUT_MIME_TYPE_CAMERA = L"image/jpg";
+static const wchar_t* INPUT_MIME_TYPE_GALLERY = L"image/*";
+static const wchar_t* INPUT_MIME_TYPE_AUDIO = L"audio/*";
+static const wchar_t* INPUT_VALUE_FALSE = L"false";
+static const wchar_t* INPUT_VALUE_IMAGEVIEWER_TYPE = L"fit_to_screen";
+static const wchar_t* OUTPUT_KEY_SELECTED = L"http://tizen.org/appcontrol/data/selected";
+static const wchar_t* SD_CARD_UNMOUNTED = L"Unmounted";
+
+static const int H_ITEM = 112;
+static const int H_DOUBLE_LINE_ITEM = 140;
+static const int H_LABEL = 40;
+static const int H_DESCRIPTION_CONTAINER = 136;
+static const int H_DIVIDER = 1;
+static const int W_DIVIDER = 1;
+static const int H_EMPTY_SPACE = 32;
+static const int H_BUTTON = 74;
+static const int H_ICON_BUTTON = 74;
+static const int W_THUMBNAIL = 360;
+static const int W_TITLE_LABEL = 170;
+static const int X_MORE_INFORMATION_BUTTON = 60;
+static const int Y_MORE_INFORMATION_BUTTON = 30;
+static const int Y_DEFAULT_NUMBER_BUTTON = 19;
+static const int W_ITEM_GAP = 16;
+static const int W_TYPE_BUTTON = 186;
+static const int H_THUMBNAIL_DELETE_BUTTON_GAP = 31;
+static const int H_THUMBNAIL_GROUP_ITEM_HEIGHT = 34;
+static const int H_NAMEFIELD_GROUP_ITEM_HEIGHT = 40;
+static const int H_GROUP_RINGTONE_TITLE_GAP = 22;
+static const int H_GROUP_RINGTONE_TITLE_LABEL = 42;
+static const int H_GROUP_RINGTONE_VALUE_LABEL = 62;
+static const int W_DROPBOX_ICON = 29;
+static const int H_DROPBOX_ICON = 29;
+static const int X_REFRESH_BUTTON_MARGIN = 88;
+static const int Y_EDIT_FIELD_GAP = 5;
+static const int H_EDIT_FIELD_GAP = 10;
+static const int H_EXPANDABLE_EDIT_AREA_EXTENDED = 8;
+
+static const int X_MORE_INFO_PANEL_GAP = 5;
+static const int H_MORE_INFO_PANEL_GAP = 10;
+
+static const int FONT_SIZE_TITLE_TEXT = 32;
+
+static const int GROUP_ITEM_COUNT = 11;
+static const int NAME_FIELD_ITEM_COUNT = 1;
+
+static const int EDIT_FIELD_EXTENDED_LENGTH = 100;
+
+static const int MESSAGE_BOX_TIMEOUT_MS = 300000;
+
+static const int DEFAULT_EXPAND_NAME_FIELD_COUNT = 6;
+
+static const wchar_t* EXPAND_BUTTON = L"ExpandButton";
+
+static const unsigned int COLOR_TABLE_VIEW_BG = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_DIVIDER = Color32<169, 169, 169>::Value;
+static const unsigned int COLOR_THUMBNAIL_BACKGROUND = Color32<239, 237, 229>::Value;
+static const unsigned int COLOR_ITEM_TITLE = Color32<128, 128, 128>::Value;
+static const unsigned int COLOR_ITEM_VALUE = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_ITEM_PRESSED = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_PRESSED = Color32<87, 135, 194>::Value;
+
+static const int TABLE_VIEW_DELETE_INPUT_FIELD_ID = 0xE0000000;
+static const int TABLE_VIEW_INPUT_FIELD_ACTION_MASK = 0xF0000000;
+static const int TABLE_VIEW_INPUT_FIELD_INDEX_MASK = 0x0F000000;
+static const int TABLE_VIEW_GROUP_INDEX_MASK = 0x00FF0000;
+static const int TABLE_VIEW_ITEM_INDEX_MASK = 0x0000FFFF;
+static const int TABLE_VIEW_GROUP_INDEX_SHIFT = 16;
+static const int TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT = 24;
+static const int TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT = 28;
+static const int TABLE_VIEW_THUMBNAIL_FIELD_INDEX = 0;
+static const int TABLE_VIEW_NAME_FIELD_INDEX = 1;
+static const int TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX = 2;
+static const int TABLE_VIEW_EMAIL_FIELD_INDEX = 3;
+static const int TABLE_VIEW_ADDRESS_FIELD_INDEX = 4;
+static const int TABLE_VIEW_IM_ADDRESS_FIELD_INDEX = 5;
+static const int TABLE_VIEW_URL_FIELD_INDEX = 6;
+static const int TABLE_VIEW_BIRTHDAY_FIELD_INDEX = 7;
+static const int TABLE_VIEW_NOTE_FIELD_INDEX = 8;
+static const int TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX = 9;
+static const int TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX = 10;
+
+static const wchar_t* INPUT_TYPE_PHONE = L"phone";
+static const wchar_t* INPUT_TYPE_EMAIL = L"email";
+static const wchar_t* INPUT_TYPE_URL = L"url";
+static const wchar_t* VIEW_TYPE = L"viewType";
+static const wchar_t* VIEW_TYPE_VALUE_CONTACT = L"contact";
+static const wchar_t* VIEW_TYPE_CONTACT_ID = L"contactId";
+static const wchar_t* GROUP_LABEL_TITLE = L"GroupLabelTitle";
+static const wchar_t* GROUP_LABEL_VALUE = L"GroupLabelValue";
+static const wchar_t* GROUP_STYLE_PANEL = L"GroupStylePanel";
+
+ContactEditorForm::ContactEditorForm(void)
+: __isExpandable(false)
+, __isAppControl(false)
+, __isJobTitleEnabled(false)
+, __isDepartmentEnabled(false)
+, __isDefaultPhoneNumberButtonEnabled(false)
+, __isSaved(false)
+, __isMoreInformationContextMenuShowing(false)
+, __isTypeContextMenuShowing(false)
+, __isKeypadOpened(false)
+, __isScrollOccurred(false)
+, __isContactModified(false)
+, __scrolledDistance(0)
+, __origScrolledDistance(0)
+, __itemIndex(-1)
+, __groupIndex(-1)
+, __previousItemIndex(-1)
+, __previousGroupIndex(-1)
+, __pAppControl(null)
+, __pPhoneNumberFieldItem(null)
+, __pEmailFieldItem(null)
+, __pAddressFieldItem(null)
+, __pImAddressFieldItem(null)
+, __pUrlFieldItem(null)
+, __pDeletedItemList(null)
+, __pFileEventManager(null)
+, __pDiscardChangesPopup(null)
+, __pCurrentFocusedItem(null)
+, __pMoreInformationItem(null)
+, __pMoreInformationButton(null)
+, __pDefaultPhoneNumberContextMenu(null)
+, __pMoreInformationContextMenu(null)
+, __pThumbnailContextMenu(null)
+, __pTypeContextMenu(null)
+, __pTableView(null)
+, __pNameFieldItem(null)
+, __pNoteFieldItem(null)
+, __pPresentationModel(null)
+{
+}
+
+ContactEditorForm::~ContactEditorForm(void)
+{
+}
+
+void
+ContactEditorForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+ContactEditorForm::OnInitializing(void)
+{
+ SetFormBackEventListener(this);
+ SettingInfo::AddSettingEventListener(*this);
+
+ Footer* pFooter = GetFooter();
+
+ FooterItem footerItemSave;
+ footerItemSave.Construct(IDA_ACTION_BAR_SAVE);
+ footerItemSave.SetText(ResourceManager::GetString(L"IDS_COM_SK_SAVE"));
+
+ pFooter->AddItem(footerItemSave);
+ pFooter->AddActionEventListener(*this);
+
+ __pTableView = new (std::nothrow) GroupedTableView();
+ __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), false, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
+ __pTableView->SetItemProvider(this);
+ __pTableView->AddScrollEventListener(*this);
+ __pTableView->AddGroupedTableViewItemEventListener(*this);
+ AddControl(__pTableView);
+
+ __pPhoneNumberFieldItem = new (std::nothrow) ArrayList();
+ __pPhoneNumberFieldItem->Construct();
+
+ __pEmailFieldItem = new (std::nothrow) ArrayList();
+ __pEmailFieldItem->Construct();
+
+ __pAddressFieldItem = new (std::nothrow) ArrayList();
+ __pAddressFieldItem->Construct();
+
+ __pImAddressFieldItem = new (std::nothrow) ArrayList();
+ __pImAddressFieldItem->Construct();
+
+ __pUrlFieldItem = new (std::nothrow) ArrayList();
+ __pUrlFieldItem->Construct();
+
+ __pPresentationModel = new (std::nothrow) ContactPresentationModel();
+ __pPresentationModel->Construct();
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ DeviceManager::AddDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
+
+ __pDeletedItemList = new ArrayList();
+ __pDeletedItemList->Construct();
+
+ return E_SUCCESS;
+}
+
+result
+ContactEditorForm::OnTerminating(void)
+{
+ AppLog("ContactEditorForm::OnTerminating()");
+
+ result r = E_SUCCESS;
+
+ __pTableView->SetItemProvider(null);
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ delete __pPresentationModel;
+ }
+
+ if (__pPhoneNumberFieldItem)
+ {
+ __pPhoneNumberFieldItem->RemoveAll(true);
+ delete __pPhoneNumberFieldItem;
+ }
+
+ if (__pEmailFieldItem)
+ {
+ __pEmailFieldItem->RemoveAll(true);
+ delete __pEmailFieldItem;
+ }
+
+ if (__pAddressFieldItem)
+ {
+ __pAddressFieldItem->RemoveAll(true);
+ delete __pAddressFieldItem;
+ }
+
+ if (__pUrlFieldItem)
+ {
+ __pUrlFieldItem->RemoveAll(true);
+ delete __pUrlFieldItem;
+ }
+
+ if (__pImAddressFieldItem)
+ {
+ __pImAddressFieldItem->RemoveAll(true);
+ delete __pImAddressFieldItem;
+ }
+
+ if (__pDeletedItemList)
+ {
+ __pDeletedItemList->RemoveAll(true);
+ delete __pDeletedItemList;
+ }
+
+ if (__pDiscardChangesPopup)
+ {
+ delete __pDiscardChangesPopup;
+ }
+ delete __pAppControl;
+ delete __pNameFieldItem;
+ delete __pNoteFieldItem;
+ delete __pDefaultPhoneNumberContextMenu;
+ delete __pMoreInformationContextMenu;
+ delete __pThumbnailContextMenu;
+ delete __pTypeContextMenu;
+ delete __pFileEventManager;
+
+ DeviceManager::RemoveDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
+ SettingInfo::RemoveSettingEventListener(*this);
+
+ return r;
+}
+
+void
+ContactEditorForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ SetFocus();
+
+ if( IsSaveContactValid() == true && __isContactModified == true)
+ {
+ ShowDiscardChangesPopup();
+ return;
+ }
+ if (__isAppControl == true)
+ {
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+
+ result r = pAppManager->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_CANCELED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ UiApp::GetInstance()->Terminate();
+ }
+ else
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+}
+
+void
+ContactEditorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ AppLog("ContactEditorForm::OnActionPerformed(), actionId %d", actionId);
+
+ if ((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) == TABLE_VIEW_DELETE_INPUT_FIELD_ID)
+ {
+ int groupIndex = (actionId & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+
+ if (groupIndex > TABLE_VIEW_NAME_FIELD_INDEX)
+ {
+ DeleteInputField(groupIndex, itemIndex);
+ if (groupIndex == __previousGroupIndex && itemIndex < __previousItemIndex) //if we deleted a number on top of the item to be deleted
+ {
+ __previousItemIndex--; //adjust the index of the item to be deleted
+ }
+ __isContactModified = true;
+ }
+
+ return;
+ }
+ else if (&source == __pDefaultPhoneNumberContextMenu)
+ {
+ SetAsDefaultPhoneNumber(actionId, true);
+ __isContactModified = true;
+
+ return;
+ }
+ else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
+ {
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+ int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return;
+ }
+ pItem->SetName(Integer::ToString(selectedItemIndex));
+
+ Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
+ if (pButtonType == null)
+ {
+ return;
+ }
+
+ pButtonType->SetText(__pPresentationModel->GetPhoneNumberTypeString((DetailPhoneNumberType)selectedItemIndex));
+ pButtonType->Invalidate(false);
+
+ __isContactModified = true;
+ return;
+ }
+ else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_EMAIL_FIELD_INDEX)
+ {
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+ int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return;
+ }
+ pItem->SetName(Integer::ToString(selectedItemIndex));
+
+ Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
+ if (pButtonType == null)
+ {
+ return;
+ }
+
+ pButtonType->SetText(__pPresentationModel->GetEmailTypeString((DetailEmailType)selectedItemIndex));
+ pButtonType->Invalidate(false);
+
+ __isContactModified = true;
+ return;
+ }
+ else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_ADDRESS_FIELD_INDEX)
+ {
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+ int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return;
+ }
+ pItem->SetName(Integer::ToString(selectedItemIndex));
+
+ Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
+ if (pButtonType == null)
+ {
+ return;
+ }
+
+ pButtonType->SetText(__pPresentationModel->GetAddressTypeString((DetailAddressType)selectedItemIndex));
+ pButtonType->Invalidate(false);
+
+ __isContactModified = true;
+ return;
+ }
+ else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_IM_ADDRESS_FIELD_INDEX)
+ {
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+ int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return;
+ }
+ pItem->SetName(Integer::ToString(selectedItemIndex));
+
+ Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
+ if (pButtonType == null)
+ {
+ return;
+ }
+
+ pButtonType->SetText(__pPresentationModel->GetImAddressTypeString((DetailImAddressType)selectedItemIndex));
+ pButtonType->Invalidate(false);
+
+ __isContactModified = true;
+ return;
+ }
+ else if (((actionId & TABLE_VIEW_INPUT_FIELD_ACTION_MASK) >> TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT) == TABLE_VIEW_URL_FIELD_INDEX)
+ {
+ int itemIndex = (actionId & TABLE_VIEW_ITEM_INDEX_MASK);
+ int selectedItemIndex = (actionId & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return;
+ }
+ pItem->SetName(Integer::ToString(selectedItemIndex));
+
+ Button* pButtonType = static_cast<Button *>(pItem->GetControl(1));
+ if (pButtonType == null)
+ {
+ return;
+ }
+
+ pButtonType->SetText(__pPresentationModel->GetUrlTypeString((DetailUrlType)selectedItemIndex));
+ pButtonType->Invalidate(false);
+
+ __isContactModified = true;
+ return;
+ }
+
+ switch (actionId)
+ {
+ case IDA_ACTION_BAR_SAVE:
+ {
+ result r = E_SUCCESS;
+
+ r = SaveContactData();
+ if (r != E_SUCCESS)
+ {
+ return;
+ }
+ SetFocus();
+
+ __isSaved = true;
+ }
+ break;
+ case IDA_BUTTON_THUMBNAIL_ADD:
+ {
+ if (__pCurrentFocusedItem != null)
+ {
+ SetFocus();
+ }
+ LaunchAppControl(PROVIDER_ID_GALLERY, OPERATION_ID_PICK);
+ }
+ break;
+ case IDA_BUTTON_THUMBNAIL_DELETE:
+ {
+ __pPresentationModel->SetThumbnail(L"");
+ __isContactModified = true;
+ __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ delete __pFileEventManager;
+ __pFileEventManager = null;
+ }
+ break;
+ case IDA_BUTTON_CAMERA:
+ {
+ if (__pCurrentFocusedItem != null)
+ {
+ SetFocus();
+ }
+ LaunchAppControl(PROVIDER_ID_CAMERA, OPERATION_ID_CREATE_CONTENT);
+ }
+ break;
+ case IDA_BUTTON_EXPANDABLE:
+ {
+ ChangeNameFieldStatus();
+ if (__previousItemIndex != -1 && __previousGroupIndex != -1)
+ {
+ DeleteInputField(__previousGroupIndex, __previousItemIndex, true);
+ }
+ if (__pCurrentFocusedItem == __pNameFieldItem)
+ {
+ __pCurrentFocusedItem = null;
+ }
+
+ __pTableView->UpdateTableView();
+ static_cast<Button*>(__pNameFieldItem->GetControl(EXPAND_BUTTON))->SetFocus();
+
+ Rectangle clientBounds = GetClientAreaBounds();
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+
+ if (__pCurrentFocusedItem != null)
+ {
+ SetFocus();
+ }
+ }
+ break;
+ case IDA_BUTTON_MORE_INFO:
+ {
+ if (__pCurrentFocusedItem != null)
+ {
+ if (__isKeypadOpened)
+ {
+ __isMoreInformationContextMenuShowing = true;
+ __scrolledDistance = 0;
+ }
+ }
+
+ __pMoreInformationButton = static_cast<Button*>(&(const_cast<Control&>(source)));
+
+ Control* pParentPanel = source.GetParent();
+ if (pParentPanel == null)
+ {
+ return;
+ }
+
+ __pMoreInformationItem = pParentPanel->GetParent();
+ if (__pMoreInformationItem == null)
+ {
+ return;
+ }
+
+ Point contextMenuPos;
+
+ contextMenuPos.x = __pMoreInformationItem->GetWidth() / 2;
+ contextMenuPos.y = GetClientAreaBounds().y + __pMoreInformationItem->GetY() + source.GetY() - __scrolledDistance;
+
+ ShowMoreInformationContextMenu(contextMenuPos);
+
+ __pMoreInformationButton->SetFocus();
+ }
+ break;
+ case IDA_BUTTON_BIRTHDAY_CLEAR:
+ {
+ DateTime currentDate;
+ Tizen::System::SystemTime::GetCurrentTime(currentDate);
+ __pPresentationModel->SetBirthday(currentDate);
+
+ __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ __isContactModified = true;
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_JOB_TITLE:
+ {
+ __isExpandable = false;
+ __isJobTitleEnabled = true;
+
+ ChangeNameFieldStatus();
+
+ __pTableView->UpdateTableView();
+
+ if (IsMoreInformationButtonVisible() == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __pTableView->ScrollToItem(TABLE_VIEW_NAME_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_DEPARTMENT:
+ {
+ __isExpandable = false;
+ __isDepartmentEnabled = true;
+
+ ChangeNameFieldStatus();
+
+ __pTableView->UpdateTableView();
+
+ if (IsMoreInformationButtonVisible() == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __pTableView->ScrollToItem(TABLE_VIEW_NAME_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER:
+ {
+ SaveContactData(false);
+
+ int index = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
+
+ __pTableView->RefreshItem(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, index, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+
+ if (IsMoreInformationButtonVisible() == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __pTableView->ScrollToItem(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_URL:
+ {
+ SaveContactData(false);
+
+ int index = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
+
+ __pTableView->RefreshItem(TABLE_VIEW_URL_FIELD_INDEX, index, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+
+ if (IsMoreInformationButtonVisible() == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __pTableView->ScrollToItem(TABLE_VIEW_URL_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_BIRTHDAY:
+ {
+ DateTime currentDate;
+
+ Tizen::System::SystemTime::GetCurrentTime(currentDate);
+ __pPresentationModel->SetBirthday(currentDate);
+
+ __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+
+ if (IsMoreInformationButtonVisible() == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __pTableView->ScrollToItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_CONTEXT_MENU_ITEM_NOTE:
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+
+ if (IsMoreInformationButtonVisible() == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __pTableView->ScrollToItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0);
+ }
+ break;
+ case IDA_BUTTON_DEFAULT_PHONE_NUMBER:
+ {
+ Control* pParent = source.GetParent();
+ Point contextMenuPos;
+
+ contextMenuPos.x = pParent->GetWidth() / 2;
+ contextMenuPos.y = GetClientAreaBounds().y + pParent->GetY() + source.GetY() + (source.GetHeight() / 2) - __scrolledDistance;
+
+ if (__pCurrentFocusedItem != null)
+ {
+ SetFocus();
+ }
+
+ SaveContactData(false);
+ ShowDefaultPhoneNumberContextMenu(contextMenuPos);
+ }
+ break;
+ case IDA_POPUP_DISCARD_CHANGES_CANCEL:
+ {
+ HideDiscardChangesPopup();
+ }
+ break;
+ case IDA_POPUP_DISCARD_CHANGES_OK:
+ {
+ HideDiscardChangesPopup();
+
+ if (__isAppControl == true)
+ {
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+
+ result r = pAppManager->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_CANCELED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ UiApp::GetInstance()->Terminate();
+ }
+ else
+ {
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ }
+ break;
+ case IDA_BUTTON_RINGTONE_CLEAR:
+ {
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, L"", 0);
+ __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ break;
+ case IDA_BUTTON_BIRTHDAY_DELETE:
+ {
+ __pPresentationModel->RemoveBirthday();
+ __isContactModified = true;
+ __pTableView->UpdateTableView();
+ }
+ break;
+ case IDA_BUTTON_TYPE:
+ {
+ Control* pParent = source.GetParent();
+ Point position = pParent->GetPosition();
+ Point itemPosition(position.x + source.GetX(), GetClientAreaBounds().y + position.y + source.GetY() + (source.GetHeight() / 2) - __scrolledDistance);
+ String typeString = pParent->GetName();
+ String itemIndexTag = source.GetName();
+ int type;
+ int itemIndex;
+
+ Integer::Parse(itemIndexTag, itemIndex);
+ Integer::Parse(typeString, type);
+ ShowTypeContextMenu(type, itemPosition, itemIndex);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactEditorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TryReturnVoid(pContactsApp != null, "Unable to cast UiApp to ContactsApp");
+
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+
+ Header* pHeader = GetHeader();
+ Footer* pFooter = GetFooter();
+
+ if (previousSceneId.Equals(IDSCN_GROUP_SELECTOR, true) || previousSceneId.Equals(IDSCN_GROUP_EDITOR, true))
+ {
+ if (pArgs != null)
+ {
+ Integer* pCategoryId = null;
+ int prevCount = 0;
+ int curCount = 0;
+
+ IList* pCategoryList = __pPresentationModel->GetAssignedCategoryIdListN();
+ prevCount = pCategoryList->GetCount();
+ delete pCategoryList;
+
+ __pPresentationModel->RemoveContactFromAllCategories();
+
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategoryId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pCategoryId != null)
+ {
+ __pPresentationModel->AddContactToCategory(pCategoryId->ToInt());
+ __isContactModified = true;
+ curCount++;
+ }
+ }
+
+ if(prevCount > 0 && curCount == 0)
+ {
+ __isContactModified = true;
+ }
+
+ delete pEnum;
+
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+
+ __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ return;
+ }
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_ADD)
+ {
+ __isAppControl = true;
+ __pPresentationModel->PrepareNewContact();
+
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+ pFooter->SetItemEnabled(0, false);
+ }
+ else if (pContactsApp->GetOperationId() == OPERATION_ID_EDIT)
+ {
+ __isAppControl = true;
+
+ if (pArgs != null)
+ {
+ String* pArgString = null;
+ String type;
+ String content;
+
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pArgString = static_cast<String*>(pEnum->GetCurrent());
+ if (pArgString != null)
+ {
+ ParseAppControlArgument(*pArgString, type, content);
+
+ if (type.Equals(RETURN_TYPE_ITEM_ID, false))
+ {
+ RecordId contactId;
+ Integer::Parse(content, contactId);
+ result r = __pPresentationModel->SetContactId(contactId, true);
+
+ if (IsFailed(r))
+ {
+ AppLogDebug("Invalid contactId has been input : %d", contactId);
+ UiApp::GetInstance()->Terminate();
+ }
+
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE).IsEmpty() == false)
+ {
+ __isJobTitleEnabled = true;
+ }
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT).IsEmpty() == false)
+ {
+ __isDepartmentEnabled = true;
+ }
+ break;
+ }
+ }
+ }
+ delete pEnum;
+
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
+ }
+ }
+ else
+ {
+ if (pArgs != null)
+ {
+ Integer* pContactId = null;
+
+ pContactId = static_cast<Integer*>(pArgs->GetAt(0));
+ if (pContactId != null)
+ {
+ if (pContactId->ToInt() != INVALID_RECORD_ID)
+ {
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_SK_EDIT"));
+ __pPresentationModel->SetContactId(pContactId->ToInt(), true);
+ }
+ else
+ {
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+
+ String* pVcfPath = static_cast<String*>(pArgs->GetAt(1));
+ if (pVcfPath != null)
+ {
+ __pPresentationModel->SetVcfPath(*pVcfPath, true);
+ SetSaveButtonEnabled(IsSaveContactValid());
+ }
+ }
+ }
+
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE).IsEmpty() == false)
+ {
+ __isJobTitleEnabled = true;
+ }
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT).IsEmpty() == false)
+ {
+ __isDepartmentEnabled = true;
+ }
+ }
+ else
+ {
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+ pFooter->SetItemEnabled(0, false);
+ __pPresentationModel->PrepareNewContact();
+ }
+ }
+
+ if (__isAppControl == true)
+ {
+ if (pArgs != null)
+ {
+ String* pArgString = null;
+ String type;
+ String content;
+
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pArgString = static_cast<String*>(pEnum->GetCurrent());
+ if (pArgString != null)
+ {
+ result r = E_SUCCESS;
+ ParseAppControlArgument(*pArgString, type, content);
+
+ if (type.Equals(INPUT_TYPE_PHONE, false))
+ {
+ r = __pPresentationModel->SetValue(DETAIL_PROPERTY_PHONE_NUMBER, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER));
+ }
+ else if (type.Equals(INPUT_TYPE_EMAIL, false))
+ {
+ r = __pPresentationModel->SetValue(DETAIL_PROPERTY_EMAIL, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL));
+ }
+ else if (type.Equals(INPUT_TYPE_URL, false))
+ {
+ r = __pPresentationModel->SetValue(DETAIL_PROPERTY_URL, content, __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL));
+ }
+
+ if (r == E_SUCCESS)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ }
+ }
+ delete pEnum;
+ }
+ }
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+void
+ContactEditorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+ if (__previousItemIndex != -1 && __previousGroupIndex != -1)
+ {
+ DeleteInputField(__previousGroupIndex, __previousItemIndex);
+ }
+}
+
+void
+ContactEditorForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactEditorForm::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+ Rectangle clientBounds = GetClientAreaBounds();
+
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+ __isKeypadOpened = true;
+}
+
+void
+ContactEditorForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ Rectangle clientBounds = GetClientAreaBounds();
+ AppLogDebug("Contacts::OnKeypadclosed bounds are width:(%d), height:(%d)", clientBounds.width, clientBounds.height);
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+
+ if (__isMoreInformationContextMenuShowing)
+ {
+ if (__pCurrentFocusedItem != null)
+ {
+ __isMoreInformationContextMenuShowing = false;
+ __isKeypadOpened = false;
+ return;
+ }
+
+ AppLogDebug("__isMoreInformationContextMenuShowing is True");
+ Point anchorPosition = __pMoreInformationContextMenu->GetAnchorPosition();
+ __pTableView->ScrollToItem(TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX, 0, TABLE_VIEW_SCROLL_ITEM_ALIGNMENT_BOTTOM);
+ if (__scrolledDistance != __origScrolledDistance)
+ {
+ __scrolledDistance = __origScrolledDistance;
+ }
+
+ if (__pMoreInformationItem != null && __pMoreInformationButton != null)
+ {
+ anchorPosition.x = __pMoreInformationItem->GetWidth() / 2;
+ anchorPosition.y = GetClientAreaBounds().y + __pMoreInformationItem->GetY() + __pMoreInformationButton->GetY() - __scrolledDistance;
+
+ __pMoreInformationItem = null;
+ __pMoreInformationButton = null;
+ }
+
+ __pMoreInformationContextMenu->SetAnchorPosition(anchorPosition);
+ __pMoreInformationContextMenu->Show();
+
+ __isMoreInformationContextMenuShowing = false;
+ }
+ __isKeypadOpened = false;
+}
+
+void
+ContactEditorForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+}
+
+void
+ContactEditorForm::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
+{
+ Rectangle clientBounds = GetClientAreaBounds();
+ int diff = clientBounds.height - __pTableView->GetHeight();
+
+ if (__pTypeContextMenu != null)
+ {
+ int yPos = __pTypeContextMenu->GetAnchorPosition().y;
+ __pTypeContextMenu->SetAnchorPosition(Point(__pTypeContextMenu->GetAnchorPosition().x, yPos + diff));
+ __pTypeContextMenu->Show();
+ }
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+}
+
+void
+ContactEditorForm::OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (status == TABLE_VIEW_ITEM_STATUS_SELECTED && groupIndex == TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX)
+ {
+ if (__pCurrentFocusedItem != null)
+ {
+ SetFocus();
+ }
+
+ if (itemIndex == 0)
+ {
+ if (__isMoreInformationContextMenuShowing == true)
+ {
+ __isMoreInformationContextMenuShowing = false;
+ }
+
+ if (__pPresentationModel->GetCategoryCount() > 0)
+ {
+ IList* pCategoryList = __pPresentationModel->GetAssignedCategoryIdListN();
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pCategoryList);
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ }
+
+ return;
+ }
+ else if (itemIndex == 2)
+ {
+ if (__isMoreInformationContextMenuShowing == true)
+ {
+ __isMoreInformationContextMenuShowing = false;
+ }
+
+ Panel* pPanel = static_cast<Panel*>(pItem->GetControl(0));
+ if (pPanel != null)
+ {
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(1));
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(0));
+
+ pPanel->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+ if (pLabelValue != null)
+ {
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+ }
+
+ if (pLabelValue != null)
+ {
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+ }
+ pPanel->Invalidate(true);
+ }
+
+ LaunchAppControl(PROVIDER_ID_FILEMANAGER, OPERATION_ID_PICK);
+ }
+ }
+}
+
+void
+ContactEditorForm::OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem *pContextItem, bool activated)
+{
+}
+
+void
+ContactEditorForm::OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+}
+
+int
+ContactEditorForm::GetGroupCount(void)
+{
+ return GROUP_ITEM_COUNT;
+}
+
+int
+ContactEditorForm::GetItemCount(int groupIndex)
+{
+ int itemCount = 0;
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
+ {
+ itemCount = 1;
+ }
+ break;
+ case TABLE_VIEW_NAME_FIELD_INDEX:
+ {
+ itemCount = NAME_FIELD_ITEM_COUNT;
+ }
+ break;
+ case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
+ {
+ itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) + 1;
+
+ if (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) > 1)
+ {
+ __isDefaultPhoneNumberButtonEnabled = true;
+ itemCount++;
+ }
+ else
+ {
+ __isDefaultPhoneNumberButtonEnabled = false;
+ }
+ }
+ break;
+ case TABLE_VIEW_EMAIL_FIELD_INDEX:
+ {
+ itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL) + 1;
+ }
+ break;
+ case TABLE_VIEW_ADDRESS_FIELD_INDEX:
+ {
+ itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS) + 1;
+ }
+ break;
+ case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
+ {
+ itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
+
+ if ((itemCount == 0 && __pImAddressFieldItem->GetCount() > 0) || itemCount > 0)
+ {
+ itemCount++;
+ }
+ }
+ break;
+ case TABLE_VIEW_URL_FIELD_INDEX:
+ {
+ itemCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
+
+ if ((itemCount == 0 && __pUrlFieldItem->GetCount() > 0) || itemCount > 0)
+ {
+ itemCount++;
+ }
+ }
+ break;
+ case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
+ {
+ DateTime birthday;
+ if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
+ {
+ itemCount = 0;
+ }
+ else
+ {
+ itemCount = 1;
+ }
+ }
+ break;
+ case TABLE_VIEW_NOTE_FIELD_INDEX:
+ {
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE).IsEmpty() == false || __pNoteFieldItem != null )
+ {
+ itemCount = 1;
+ }
+ else
+ {
+ itemCount = 0;
+ }
+ }
+ break;
+ case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
+ {
+ itemCount = 3;
+ }
+ break;
+ case TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX:
+ {
+ if (IsMoreInformationButtonVisible())
+ {
+ itemCount = 1;
+ }
+ else
+ {
+ itemCount = 0;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return itemCount;
+}
+
+int
+ContactEditorForm::GetDefaultGroupItemHeight(void)
+{
+ return H_EMPTY_SPACE;
+}
+
+int
+ContactEditorForm::GetDefaultItemHeight(void)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ return pContactsApp->GetListItemSingleLineHeight();
+}
+
+TableViewGroupItem*
+ContactEditorForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ int groupItemHeight = H_EMPTY_SPACE;
+
+ if (groupIndex == TABLE_VIEW_THUMBNAIL_FIELD_INDEX)
+ {
+ groupItemHeight = H_THUMBNAIL_GROUP_ITEM_HEIGHT;
+ }
+ else if (groupIndex == TABLE_VIEW_NAME_FIELD_INDEX)
+ {
+ groupItemHeight = H_NAMEFIELD_GROUP_ITEM_HEIGHT;
+ }
+ else if (groupIndex == TABLE_VIEW_BIRTHDAY_FIELD_INDEX)
+ {
+ groupItemHeight = Y_EDIT_FIELD_GAP;
+ }
+ else if (groupIndex == TABLE_VIEW_NOTE_FIELD_INDEX)
+ {
+ groupItemHeight = H_EDIT_FIELD_GAP;
+ }
+ else if ((groupIndex > TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX && groupIndex < TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX) || groupIndex == TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX)
+ {
+ groupItemHeight = 0;
+ }
+
+ TableViewGroupItem* pGroupItem = new (std::nothrow) TableViewGroupItem();
+ pGroupItem->Construct(Dimension(itemWidth, groupItemHeight));
+ pGroupItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pGroupItem->SetEnabled(false);
+
+ Panel* pPanel = new (std::nothrow) Panel();
+ pPanel->Construct(Rectangle(0, -(H_DIVIDER), itemWidth, groupItemHeight + H_DIVIDER));
+ pPanel->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG));
+
+ pGroupItem->AddControl(pPanel);
+
+ return pGroupItem;
+}
+
+bool
+ContactEditorForm::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+TableViewItem*
+ContactEditorForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ TableViewItem* pItem = null;
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
+ {
+ pItem = GetThumbnailField(itemWidth);
+ }
+ break;
+ case TABLE_VIEW_NAME_FIELD_INDEX:
+ {
+ pItem = GetNameFields(itemWidth);
+ }
+ break;
+ case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
+ {
+ if ((itemIndex == __pTableView->GetItemCountAt(groupIndex) - 1) && __isDefaultPhoneNumberButtonEnabled == true)
+ {
+ pItem = GetDefaultPhoneNumberItem(itemWidth);
+ break;
+ }
+
+ pItem = GetPhoneNumberFields(itemIndex, itemWidth);
+ }
+ break;
+ case TABLE_VIEW_EMAIL_FIELD_INDEX:
+ {
+ pItem = GetEmailFields(itemIndex, itemWidth);
+ }
+ break;
+ case TABLE_VIEW_ADDRESS_FIELD_INDEX:
+ {
+ pItem = GetAddressFields(itemIndex, itemWidth);
+ }
+ break;
+ case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
+ {
+ pItem = GetImAddressFields(itemIndex, itemWidth);
+ }
+ break;
+ case TABLE_VIEW_URL_FIELD_INDEX:
+ {
+ pItem = GetUrlFields(itemIndex, itemWidth);
+ }
+ break;
+ case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
+ {
+ pItem = GetBirthdayField(itemWidth);
+ }
+ break;
+ case TABLE_VIEW_NOTE_FIELD_INDEX:
+ {
+ pItem = GetNoteField(itemWidth);
+ }
+ break;
+ case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
+ {
+ switch (itemIndex)
+ {
+ case 0:
+ pItem = GetGroupsField(itemWidth);
+ break;
+ case 1:
+ {
+ pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_DIVIDER * 2));
+ pItem->SetEnabled(false);
+ }
+ break;
+ case 2:
+ pItem = GetRingtoneField(itemWidth);
+ break;
+ default:
+ break;
+ }
+ }
+ break;
+ case TABLE_VIEW_MORE_INFORMATION_FIELD_INDEX:
+ {
+ if (IsMoreInformationButtonVisible())
+ {
+ pItem = GetMoreInformationField(itemWidth);
+ }
+ else
+ {
+ pItem = null;
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ return pItem;
+}
+
+bool
+ContactEditorForm::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ if ((groupIndex > TABLE_VIEW_NAME_FIELD_INDEX && groupIndex < TABLE_VIEW_BIRTHDAY_FIELD_INDEX) || groupIndex == TABLE_VIEW_NOTE_FIELD_INDEX)
+ {
+ int index = -1;
+ __pDeletedItemList->IndexOf(*pItem, index);
+
+ if (index >= 0)
+ {
+ __pDeletedItemList->RemoveAt(index);
+ }
+ else
+ {
+ return true;
+ }
+ }
+ else if (groupIndex == TABLE_VIEW_NAME_FIELD_INDEX)
+ {
+ SaveNameFields();
+ __pNameFieldItem = null;
+ }
+
+ if (__pCurrentFocusedItem == pItem && __isKeypadOpened)
+ {
+ __isKeypadOpened = false;
+ }
+
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+ContactEditorForm::UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem)
+{
+}
+
+void
+ContactEditorForm::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem)
+{
+ if (pItem == null)
+ {
+ return;
+ }
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_THUMBNAIL_FIELD_INDEX:
+ {
+ SetThumbnailControls(*pItem, true);
+ pItem->Invalidate(true);
+ }
+ break;
+ case TABLE_VIEW_NAME_FIELD_INDEX:
+ {
+ if (__pCurrentFocusedItem == pItem && __isKeypadOpened)
+ {
+ __isKeypadOpened = false;
+ }
+ pItem->RemoveAllControls();
+ SetNameFields(*pItem);
+ Invalidate(true);
+ }
+ break;
+ case TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX:
+ {
+ String valueString;
+ Panel* pPanel = static_cast<Panel*>(pItem->GetControl(0));
+
+ if (pPanel == null)
+ {
+ return;
+ }
+
+ Label* pLabel = static_cast<Label*>(pPanel->GetControl(1));
+
+ if (pLabel == null)
+ {
+ return;
+ }
+
+ if (itemIndex == 0)
+ {
+ valueString = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
+ if (valueString.IsEmpty() == true)
+ {
+ valueString = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ }
+ }
+ else if (itemIndex == 2)
+ {
+ String ringtoneName = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
+ int index = 0;
+
+ ringtoneName.LastIndexOf(L"/", ringtoneName.GetLength() - 1, index);
+
+ if (index != 0)
+ {
+ ringtoneName.SubString(index + 1, valueString);
+ }
+ }
+
+ pLabel->SetText(valueString);
+ pLabel->Invalidate(false);
+ }
+ break;
+ case TABLE_VIEW_BIRTHDAY_FIELD_INDEX:
+ {
+ EditDate* pBirthday = static_cast<EditDate *>(pItem->GetControl(1));
+ if (pBirthday == null)
+ {
+ return;
+ }
+ pBirthday->Invalidate(false);
+ }
+ break;
+ case TABLE_VIEW_NOTE_FIELD_INDEX:
+ {
+ Control* pNoteField = pItem->GetControl(1);
+ Control* pNoteLabel = pItem->GetControl(0);
+ if (pNoteField == null)
+ {
+ return;
+ }
+
+ pItem->SetSize(pItem->GetWidth(), pNoteLabel->GetHeight() + pNoteField->GetHeight() + H_EDIT_FIELD_GAP + H_EXPANDABLE_EDIT_AREA_EXTENDED);
+
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetThumbnailField(int itemWidth)
+{
+ TableViewItem* pThumbnailItem = new (std::nothrow) TableViewItem();
+ pThumbnailItem->Construct(Dimension(itemWidth, W_THUMBNAIL + H_THUMBNAIL_DELETE_BUTTON_GAP + Y_EDIT_FIELD_GAP * 2));
+ pThumbnailItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ SetThumbnailControls(*pThumbnailItem);
+
+ return pThumbnailItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetNameFields(int itemWidth)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ __pNameFieldItem = new (std::nothrow) TableViewItem();
+ __pNameFieldItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()));
+ __pNameFieldItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ SetNameFields(*__pNameFieldItem);
+
+ return __pNameFieldItem;
+}
+
+void
+ContactEditorForm::SetNameFields(Tizen::Ui::Controls::TableViewItem& item)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int itemWidth = item.GetWidth();
+ int itemHeight = pContactsApp->GetListItemSingleLineHeight();
+
+ if (__isExpandable == true)
+ {
+ itemHeight = DEFAULT_EXPAND_NAME_FIELD_COUNT * pContactsApp->GetListItemSingleLineHeight();
+
+ if (__isJobTitleEnabled == true)
+ {
+ itemHeight += pContactsApp->GetListItemSingleLineHeight();
+ }
+
+ if (__isDepartmentEnabled)
+ {
+ itemHeight += pContactsApp->GetListItemSingleLineHeight();
+ }
+ }
+
+ item.SetSize(itemWidth, itemHeight);
+
+ Rectangle itemBounds(W_ITEM_GAP, Y_EDIT_FIELD_GAP, itemWidth - (W_ITEM_GAP * 3) - H_BUTTON, pContactsApp->GetListItemSingleLineHeight() - H_EDIT_FIELD_GAP);
+
+ if (__isExpandable == true)
+ {
+ EditField* pFirstName = new (std::nothrow) EditField();
+ pFirstName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, false, __pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME).GetLength() + EDIT_FIELD_EXTENDED_LENGTH);
+ pFirstName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"));
+ pFirstName->AddFocusEventListener(*this);
+ pFirstName->AddKeypadEventListener(*this);
+ pFirstName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"));
+ pFirstName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME));
+ pFirstName->AddTextEventListener(*this);
+ pFirstName->SetTextSize(pContactsApp->GetFontSize());
+
+ item.AddControl(pFirstName);
+ item.SetIndividualSelectionEnabled(pFirstName, true);
+
+ itemBounds.y += pContactsApp->GetListItemSingleLineHeight();
+ EditField* pMiddleName = new (std::nothrow) EditField();
+ pMiddleName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, false, __pPresentationModel->GetValue(DETAIL_PROPERTY_MIDDLE_NAME).GetLength() + EDIT_FIELD_EXTENDED_LENGTH);
+ pMiddleName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"));
+ pMiddleName->AddFocusEventListener(*this);
+ pMiddleName->AddKeypadEventListener(*this);
+ pMiddleName->AddTextEventListener(*this);
+ pMiddleName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"));
+ pMiddleName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_MIDDLE_NAME));
+ pMiddleName->SetTextSize(pContactsApp->GetFontSize());
+
+ item.AddControl(pMiddleName);
+ item.SetIndividualSelectionEnabled(pMiddleName, true);
+
+ itemBounds.y += pContactsApp->GetListItemSingleLineHeight();
+ EditField* pLastName = new (std::nothrow) EditField();
+ pLastName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, false, __pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME).GetLength() + EDIT_FIELD_EXTENDED_LENGTH);
+ pLastName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"));
+ pLastName->AddFocusEventListener(*this);
+ pLastName->AddKeypadEventListener(*this);
+ pLastName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"));
+ pLastName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME));
+ pLastName->SetTextSize(pContactsApp->GetFontSize());
+ pLastName->AddTextEventListener(*this);
+
+ item.AddControl(pLastName);
+ item.SetIndividualSelectionEnabled(pLastName, true);
+
+ itemBounds.y += pContactsApp->GetListItemSingleLineHeight();
+ EditField* pSuffix = new (std::nothrow) EditField();
+ pSuffix->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, false, __pPresentationModel->GetValue(DETAIL_PROPERTY_NAME_SUFFIX).GetLength() + EDIT_FIELD_EXTENDED_LENGTH);
+ pSuffix->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"));
+ pSuffix->AddFocusEventListener(*this);
+ pSuffix->AddKeypadEventListener(*this);
+ pSuffix->AddTextEventListener(*this);
+ pSuffix->SetName(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"));
+ pSuffix->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NAME_SUFFIX));
+ pSuffix->SetTextSize(pContactsApp->GetFontSize());
+
+ item.AddControl(pSuffix);
+ item.SetIndividualSelectionEnabled(pSuffix, true);
+
+ itemBounds.y += pContactsApp->GetListItemSingleLineHeight();
+ EditField* pNickName = new (std::nothrow) EditField();
+ pNickName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pNickName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"));
+ pNickName->AddFocusEventListener(*this);
+ pNickName->AddKeypadEventListener(*this);
+ pNickName->AddTextEventListener(*this);
+ pNickName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"));
+ pNickName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NICK_NAME));
+ pNickName->SetTextSize(pContactsApp->GetFontSize());
+
+ item.AddControl(pNickName);
+ item.SetIndividualSelectionEnabled(pNickName, true);
+
+ itemBounds.y += pContactsApp->GetListItemSingleLineHeight();
+ if (__isJobTitleEnabled == true)
+ {
+ EditField* pJobTitle = new (std::nothrow) EditField();
+ pJobTitle->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pJobTitle->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"));
+ pJobTitle->AddFocusEventListener(*this);
+ pJobTitle->AddKeypadEventListener(*this);
+ pJobTitle->AddTextEventListener(*this);
+ pJobTitle->SetName(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"));
+ pJobTitle->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_JOB_TITLE));
+ pJobTitle->SetTextSize(pContactsApp->GetFontSize());
+
+ item.AddControl(pJobTitle);
+ item.SetIndividualSelectionEnabled(pJobTitle, true);
+
+ itemBounds.y += pContactsApp->GetListItemSingleLineHeight();
+ }
+
+ if (__isDepartmentEnabled == true)
+ {
+ EditField* pDepartment = new (std::nothrow) EditField();
+ pDepartment->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pDepartment->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"));
+ pDepartment->AddFocusEventListener(*this);
+ pDepartment->AddKeypadEventListener(*this);
+ pDepartment->AddTextEventListener(*this);
+ pDepartment->SetName(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"));
+ pDepartment->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_DEPARTMENT));
+ pDepartment->SetTextSize(pContactsApp->GetFontSize());
+
+ item.AddControl(pDepartment);
+ item.SetIndividualSelectionEnabled(pDepartment, true);
+
+ itemBounds.y += pContactsApp->GetListItemSingleLineHeight();
+ }
+
+ EditField* pCompanyName = new (std::nothrow) EditField();
+ pCompanyName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY);
+ pCompanyName->SetGuideText(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"));
+ pCompanyName->AddFocusEventListener(*this);
+ pCompanyName->AddKeypadEventListener(*this);
+ pCompanyName->SetName(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"));
+ pCompanyName->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_COMPANY));
+ pCompanyName->SetTextSize(pContactsApp->GetFontSize());
+
+ item.AddControl(pCompanyName);
+ item.SetIndividualSelectionEnabled(pCompanyName, true);
+ }
+ else
+ {
+ int nameLength = 0;
+ String firstName(__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME));
+ String lastName(__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME));
+ String middleName(__pPresentationModel->GetValue(DETAIL_PROPERTY_MIDDLE_NAME));
+ String suffix(__pPresentationModel->GetValue(DETAIL_PROPERTY_NAME_SUFFIX));
+
+ nameLength = firstName.GetLength() + lastName.GetLength() + middleName.GetLength();
+ if (suffix.IsEmpty() == false)
+ {
+ nameLength = nameLength + suffix.GetLength() + 1;
+ }
+
+ EditField* pName = new (std::nothrow) EditField();
+ pName->Construct(itemBounds, EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, false, nameLength + EDIT_FIELD_EXTENDED_LENGTH);
+ pName->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_DETAILS_NAME"));
+ pName->AddFocusEventListener(*this);
+ pName->AddKeypadEventListener(*this);
+ pName->SetName(Integer::ToString(IDA_INPUT_FIELD_DISPLAY_NAME));
+ pName->AddTextEventListener(*this);
+ pName->SetTextSize(pContactsApp->GetFontSize());
+
+ if (firstName.IsEmpty() == false)
+ {
+ pName->SetText(firstName);
+ }
+
+ if (middleName.IsEmpty() == false)
+ {
+ pName->AppendText(CHARACTER_SPACE + middleName);
+ }
+
+ if (lastName.IsEmpty() == false)
+ {
+ pName->AppendText(CHARACTER_SPACE + lastName);
+ }
+
+ if (suffix.IsEmpty() == false)
+ {
+ pName->AppendText(DELIMITER_COMMA);
+ pName->AppendText(CHARACTER_SPACE + suffix);
+ }
+
+ item.AddControl(pName);
+ item.SetIndividualSelectionEnabled(pName, true);
+ __fullName = pName->GetText();
+ }
+
+ Button* pButtonExpand = new (std::nothrow) Button();
+ pButtonExpand->Construct(Rectangle(itemWidth - (H_BUTTON + W_ITEM_GAP), (pContactsApp->GetListItemSingleLineHeight() - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
+ pButtonExpand->SetActionId(IDA_BUTTON_EXPANDABLE);
+ pButtonExpand->SetName(EXPAND_BUTTON);
+ pButtonExpand->AddActionEventListener(*this);
+
+ Bitmap* pBitmap = null;
+ Bitmap* pBitmapPressed = null;
+
+ if (__isExpandable == true)
+ {
+ pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_OPENED);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_OPENED_PRESSED);
+ }
+ else
+ {
+ pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_CLOSED);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_CLOSED_PRESSED);
+ }
+
+ if (pBitmap != null)
+ {
+ pButtonExpand->SetNormalBitmap(Point(0, 0), *pBitmap);
+ }
+
+ if (pBitmapPressed != null)
+ {
+ pButtonExpand->SetPressedBitmap(Point(0, 0), *pBitmapPressed);
+ }
+
+ delete pBitmap;
+ delete pBitmapPressed;
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_BUTTON_NORMAL);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_EXPAND_BUTTON_PRESSED);
+
+ if (pBitmap != null)
+ {
+ pButtonExpand->SetNormalBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ if (pBitmapPressed != null)
+ {
+ pButtonExpand->SetPressedBackgroundBitmap(*pBitmapPressed);
+ delete pBitmapPressed;
+ }
+
+ item.AddControl(pButtonExpand);
+ item.SetIndividualSelectionEnabled(pButtonExpand, true);
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetInputFieldN(int groupIndex, int itemIndex, int itemWidth, Tizen::Ui::Controls::EditFieldStyle style, const Tizen::Base::String& titleText, const Tizen::Base::String& guideText, const Tizen::Base::String& text, bool isDeleteButton)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ TableViewItem* pTableViewItem = new (std::nothrow) TableViewItem();
+ pTableViewItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pTableViewItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ EditField* pInputField = new (std::nothrow) EditField();
+ pInputField->Construct(Rectangle(W_ITEM_GAP, Y_EDIT_FIELD_GAP, itemWidth - (W_ITEM_GAP * 4) - H_BUTTON - W_TYPE_BUTTON, pContactsApp->GetListItemSingleLineHeight() - H_EDIT_FIELD_GAP), style, INPUT_STYLE_OVERLAY);
+ pInputField->SetGuideText(guideText);
+ pInputField->SetText(text);
+ pInputField->SetTextSize(pContactsApp->GetFontSize());
+ pInputField->AddKeypadEventListener(*this);
+ pInputField->AddFocusEventListener(*this);
+ pInputField->AddTextEventListener(*this);
+ pInputField->SetEnabled(true);
+
+ int parsedItemIndex = 0;
+ parsedItemIndex |= (groupIndex << TABLE_VIEW_INPUT_FIELD_ACTION_SHIFT);
+ parsedItemIndex |= (groupIndex << TABLE_VIEW_GROUP_INDEX_SHIFT);
+ parsedItemIndex |= itemIndex;
+
+ pInputField->SetName(Integer::ToString(parsedItemIndex));
+ pTableViewItem->AddControl(pInputField);
+
+ Button *pButtonType = new (std::nothrow) Button();
+ pButtonType->Construct(Rectangle(pInputField->GetX() + pInputField->GetWidth() + W_ITEM_GAP, (pContactsApp->GetListItemSingleLineHeight() - H_BUTTON) / 2, W_TYPE_BUTTON, H_BUTTON));
+ pButtonType->SetText(titleText);
+ pButtonType->SetActionId(IDA_BUTTON_TYPE);
+ pButtonType->AddActionEventListener(*this);
+ pButtonType->AddTouchEventListener(*this);
+ pButtonType->SetName(Integer::ToString(parsedItemIndex));
+
+ Bitmap* pDropBoxIcon = ResourceManager::GetBitmapN(IDB_BUTTON_DROPBOX);
+
+ if (pDropBoxIcon != null)
+ {
+ pButtonType->SetNormalBitmap(Point(W_TYPE_BUTTON - W_DROPBOX_ICON, H_BUTTON - H_DROPBOX_ICON), *pDropBoxIcon);
+ pButtonType->SetPressedBitmap(Point(W_TYPE_BUTTON - W_DROPBOX_ICON, H_BUTTON - H_DROPBOX_ICON), *pDropBoxIcon);
+ pButtonType->SetDisabledBitmap(Point(W_TYPE_BUTTON - W_DROPBOX_ICON, H_BUTTON - H_DROPBOX_ICON), *pDropBoxIcon);
+ delete pDropBoxIcon;
+ }
+ pTableViewItem->AddControl(pButtonType);
+
+ Button *pButtonDelete = new (std::nothrow) Button();
+ pButtonDelete->Construct(Rectangle(itemWidth - H_BUTTON - W_ITEM_GAP, (pContactsApp->GetListItemSingleLineHeight() - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS);
+ Bitmap* pBitmapPressed = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS_PRESSED);
+
+ if (pBitmap != null)
+ {
+ pButtonDelete->SetNormalBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+ }
+ if (pBitmapPressed != null)
+ {
+ pButtonDelete->SetPressedBitmap(Point(0, 0), *pBitmapPressed);
+ delete pBitmapPressed;
+ }
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_NORMAL);
+ pBitmapPressed = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_PRESSED);
+
+ if (pBitmap != null)
+ {
+ pButtonDelete->SetNormalBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ if (pBitmapPressed != null)
+ {
+ pButtonDelete->SetPressedBackgroundBitmap(*pBitmapPressed);
+ delete pBitmapPressed;
+ }
+
+ int actionId = 0;
+ actionId |= TABLE_VIEW_DELETE_INPUT_FIELD_ID;
+ actionId |= (groupIndex << TABLE_VIEW_GROUP_INDEX_SHIFT);
+ actionId |= itemIndex;
+
+ pButtonDelete->SetActionId(actionId);
+ pButtonDelete->AddActionEventListener(*this);
+
+ pTableViewItem->AddControl(pButtonDelete);
+
+ if (isDeleteButton == false)
+ {
+ pButtonDelete->SetShowState(false);
+ }
+
+ pTableViewItem->SetIndividualSelectionEnabled(pInputField, true);
+ pTableViewItem->SetIndividualSelectionEnabled(pButtonType, true);
+ pTableViewItem->SetIndividualSelectionEnabled(pButtonDelete, true);
+
+ return pTableViewItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetPhoneNumberFields(int itemIndex, int itemWidth)
+{
+ if (__pPhoneNumberFieldItem->GetCount() == 0)
+ {
+ int phoneNumberCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
+ String guideText = ResourceManager::GetString(L"IDS_PB_BODY_NUMBER");
+ String defaultPhoneNumber = __pPresentationModel->GetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER);
+
+ for (int i = 0; i < phoneNumberCount; i++)
+ {
+ String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, i);
+ String phoneNumberString = __pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i);
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_PHONE_NUMBER, typeString, guideText, phoneNumberString, true);
+ pItem->SetName(Integer::ToString(__pPresentationModel->GetPhoneNumberType(i)));
+
+ __pPhoneNumberFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, phoneNumberCount, itemWidth, EDIT_FIELD_STYLE_PHONE_NUMBER, __pPresentationModel->GetPhoneNumberTypeString(DETAIL_PHONENUMBER_TYPE_MOBILE), guideText);
+ pItem->SetName(Integer::ToString(DETAIL_PHONENUMBER_TYPE_MOBILE));
+
+ __pPhoneNumberFieldItem->Add(*pItem);
+ SetAsDefaultPhoneNumber(__pPresentationModel->GetDefaultNumberIndex());
+ }
+
+ if (__pPhoneNumberFieldItem->GetCount() < (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) + 1))
+ {
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, __pPhoneNumberFieldItem->GetCount(), itemWidth, EDIT_FIELD_STYLE_PHONE_NUMBER, __pPresentationModel->GetPhoneNumberTypeString(DETAIL_PHONENUMBER_TYPE_MOBILE), ResourceManager::GetString(L"IDS_PB_BODY_NUMBER"));
+ pItem->SetName(Integer::ToString(DETAIL_PHONENUMBER_TYPE_MOBILE));
+
+ __pPhoneNumberFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return null;
+ }
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetEmailFields(int itemIndex, int itemWidth)
+{
+ if (__pEmailFieldItem->GetCount() == 0)
+ {
+ int emailCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL);
+ String guideText = ResourceManager::GetString(L"IDS_COM_BODY_EMAIL");
+
+ for (int i = 0; i < emailCount; i++)
+ {
+ String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_EMAIL, i);
+ String emailString = __pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, i);
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_EMAIL_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_EMAIL, typeString, guideText, emailString, true);
+ pItem->SetName(Integer::ToString(__pPresentationModel->GetEmailType(i)));
+
+ __pEmailFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_EMAIL_FIELD_INDEX, emailCount, itemWidth, EDIT_FIELD_STYLE_EMAIL, __pPresentationModel->GetEmailTypeString(DETAIL_EMAIL_TYPE_HOME), guideText);
+ pItem->SetName(Integer::ToString(DETAIL_EMAIL_TYPE_HOME));
+
+ __pEmailFieldItem->Add(*pItem);
+ }
+
+ if (__pEmailFieldItem->GetCount() < (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL) + 1))
+ {
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_EMAIL_FIELD_INDEX, __pEmailFieldItem->GetCount(), itemWidth, EDIT_FIELD_STYLE_EMAIL, __pPresentationModel->GetEmailTypeString(DETAIL_EMAIL_TYPE_HOME), ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"));
+ pItem->SetName(Integer::ToString(DETAIL_EMAIL_TYPE_HOME));
+
+ __pEmailFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return null;
+ }
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetAddressFields(int itemIndex, int itemWidth)
+{
+ if (__pAddressFieldItem->GetCount() == 0)
+ {
+ int addressCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS);
+ String guideText = ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS");
+
+ for (int i = 0; i < addressCount; i++)
+ {
+ String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_ADDRESS, i);
+ String addressString = __pPresentationModel->GetValue(DETAIL_PROPERTY_ADDRESS, i);
+
+ TableViewItem* pItem= GetInputFieldN(TABLE_VIEW_ADDRESS_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_NORMAL, typeString, guideText, addressString, true);
+ pItem->SetName(Integer::ToString(__pPresentationModel->GetAddressType(DETAIL_PROPERTY_ADDRESS, i)));
+
+ __pAddressFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_ADDRESS_FIELD_INDEX, addressCount, itemWidth, EDIT_FIELD_STYLE_NORMAL, ResourceManager::GetString(L"IDS_PB_BODY_HOME"), guideText);
+ pItem->SetName(Integer::ToString(DETAIL_ADDRESS_TYPE_HOME));
+
+ __pAddressFieldItem->Add(*pItem);
+ }
+
+ if (__pAddressFieldItem->GetCount() < (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_ADDRESS) + 1))
+ {
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_ADDRESS_FIELD_INDEX, __pAddressFieldItem->GetCount(), itemWidth, EDIT_FIELD_STYLE_NORMAL, ResourceManager::GetString(L"IDS_PB_BODY_HOME"), ResourceManager::GetString(L"IDS_PB_BODY_ADDRESS"));
+ pItem->SetName(Integer::ToString(DETAIL_ADDRESS_TYPE_HOME));
+
+ __pAddressFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return null;
+ }
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetImAddressFields(int itemIndex, int itemWidth)
+{
+ if (__pImAddressFieldItem->GetCount() == 0)
+ {
+ int imCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS);
+ String guideText = ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB");
+
+ for (int i = 0; i < imCount; i++)
+ {
+ String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_IM_ADDRESS, i);
+ String imString = __pPresentationModel->GetValue(DETAIL_PROPERTY_IM_ADDRESS, i);
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_NORMAL, typeString, guideText, imString, true);
+ pItem->SetName(Integer::ToString(__pPresentationModel->GetImAddressType(i)));
+
+ __pImAddressFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, imCount, itemWidth, EDIT_FIELD_STYLE_NORMAL, IM_ADDRESS_YAHOO, guideText);
+ pItem->SetName(Integer::ToString(DETAIL_IM_ADDRESS_TYPE_YAHOO));
+
+ __pImAddressFieldItem->Add(*pItem);
+ }
+
+ if (__pImAddressFieldItem->GetCount() < (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_IM_ADDRESS) + 1))
+ {
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_IM_ADDRESS_FIELD_INDEX, __pImAddressFieldItem->GetCount(), itemWidth, EDIT_FIELD_STYLE_NORMAL, IM_ADDRESS_YAHOO, ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB"));
+ pItem->SetName(Integer::ToString(DETAIL_IM_ADDRESS_TYPE_YAHOO));
+
+ __pImAddressFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return null;
+ }
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetUrlFields(int itemIndex, int itemWidth)
+{
+ if (__pUrlFieldItem->GetCount() == 0)
+ {
+ int urlCount = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL);
+ String guideText = ResourceManager::GetString(L"IDS_PB_BODY_URL");
+
+ for (int i = 0; i < urlCount; i++)
+ {
+ String typeString = __pPresentationModel->GetType(DETAIL_PROPERTY_URL, i);
+ String urlString = __pPresentationModel->GetValue(DETAIL_PROPERTY_URL, i);
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_URL_FIELD_INDEX, i, itemWidth, EDIT_FIELD_STYLE_URL, typeString, guideText, urlString, true);
+ pItem->SetName(Integer::ToString(__pPresentationModel->GetUrlType(i)));
+
+ __pUrlFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_URL_FIELD_INDEX, urlCount, itemWidth, EDIT_FIELD_STYLE_URL, __pPresentationModel->GetUrlTypeString(DETAIL_URL_TYPE_HOME), guideText);
+ pItem->SetName(Integer::ToString(DETAIL_URL_TYPE_HOME));
+
+ __pUrlFieldItem->Add(*pItem);
+ }
+
+ if (__pUrlFieldItem->GetCount() < (__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_URL) + 1))
+ {
+ TableViewItem* pItem = GetInputFieldN(TABLE_VIEW_URL_FIELD_INDEX, __pUrlFieldItem->GetCount(), itemWidth, EDIT_FIELD_STYLE_URL, __pPresentationModel->GetUrlTypeString(DETAIL_URL_TYPE_HOME), ResourceManager::GetString(L"IDS_PB_BODY_URL"));
+ pItem->SetName(Integer::ToString(DETAIL_URL_TYPE_HOME));
+
+ __pUrlFieldItem->Add(*pItem);
+ }
+
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(itemIndex));
+ if (pItem == null)
+ {
+ return null;
+ }
+
+ return pItem;
+}
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetGroupsField(int itemWidth)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ TableViewItem* pGroupsItem = new (std::nothrow) TableViewItem();
+ pGroupsItem->Construct(Dimension(itemWidth, H_DOUBLE_LINE_ITEM + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pGroupsItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+ pGroupsItem->AddKeyEventListener(*this);
+
+ Panel* pGroupStyle = new (std::nothrow) Panel();
+ pGroupStyle->Construct(Rectangle(0, 0, itemWidth , H_DOUBLE_LINE_ITEM + pContactsApp->GetFontHeightOffset()), GROUP_STYLE_NONE);
+ pGroupStyle->SetName(GROUP_STYLE_PANEL);
+ pGroupStyle->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+ pGroupStyle->AddTouchEventListener(*this);
+ pGroupsItem->AddControl(pGroupStyle);
+
+ Label* pLabelTitle = new (std::nothrow) Label();
+ pLabelTitle->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP, itemWidth, H_GROUP_RINGTONE_TITLE_LABEL), ResourceManager::GetString(L"IDS_PB_BODY_GROUPS"));
+ pLabelTitle->SetName(GROUP_LABEL_TITLE);
+ pLabelTitle->AddTouchEventListener(*this);
+ pLabelTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+ pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ pGroupStyle->AddControl(pLabelTitle);
+
+ String groupsName = __pPresentationModel->GetValue(DETAIL_PROPERTY_GROUP);
+ if (groupsName.IsEmpty() == true)
+ {
+ groupsName = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ }
+
+ Label* pLabelGroupName = new (std::nothrow) Label();
+ pLabelGroupName->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP + H_GROUP_RINGTONE_TITLE_LABEL, itemWidth, H_GROUP_RINGTONE_VALUE_LABEL + pContactsApp->GetFontHeightOffset()), groupsName);
+ pLabelGroupName->SetName(GROUP_LABEL_VALUE);
+ pLabelGroupName->AddTouchEventListener(*this);
+ pLabelGroupName->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+ pLabelGroupName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ pGroupStyle->AddControl(pLabelGroupName);
+
+ return pGroupsItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetBirthdayField(int itemWidth)
+{
+ DateTime birthdayDate;
+ EditDate* pBirthday = new (std::nothrow) EditDate();
+ pBirthday->Construct(Point(W_TITLE_LABEL, 0));
+ pBirthday->AddDateChangeEventListener(*this);
+
+ __pPresentationModel->GetBirthday(birthdayDate);
+ pBirthday->SetDate(birthdayDate);
+
+ DateTime currentDate;
+ Tizen::System::SystemTime::GetCurrentTime(currentDate);
+ int min;
+ int max;
+ pBirthday->GetYearRange(min, max);
+ max = currentDate.GetYear();
+ pBirthday->SetYearRange(max - BIRTHDAY_MIN_YEAR_DIFF, max + BIRTHDAY_MAX_YEAR_DIFF);
+
+ if (birthdayDate.GetYear() < (currentDate.GetYear() - BIRTHDAY_MIN_YEAR_DIFF))
+ {
+ birthdayDate.SetValue(currentDate.GetYear() - BIRTHDAY_MIN_YEAR_DIFF, birthdayDate.GetMonth(), birthdayDate.GetDay());
+ __pPresentationModel->SetBirthday(birthdayDate);
+ }
+
+ TableViewItem* pBirthdayItem = new (std::nothrow) TableViewItem();
+ pBirthdayItem->Construct(Dimension(itemWidth, H_ITEM), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pBirthdayItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pBirthdayItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Label* pLabelTitle = new (std::nothrow) Label();
+ pLabelTitle->Construct(Rectangle(0, 0, W_TITLE_LABEL, pBirthdayItem->GetHeight()), L"");
+ pLabelTitle->SetText(ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY"));
+ pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+ pLabelTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
+
+ pBirthdayItem->AddControl(pLabelTitle);
+ pBirthdayItem->AddControl(pBirthday);
+
+ Button* pClearButton = new (std::nothrow) Button();
+ pClearButton->Construct(Rectangle(itemWidth - (H_BUTTON * 2) - H_BUTTON/2, (pBirthdayItem->GetHeight() - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
+ pClearButton->SetActionId(IDA_BUTTON_BIRTHDAY_CLEAR);
+ pClearButton->AddActionEventListener(*this);
+
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RESET_NORMAL);
+ if (pBitmap != null)
+ {
+ pClearButton->SetNormalBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+ }
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RESET_PRESSED);
+ if (pBitmap != null)
+ {
+ pClearButton->SetPressedBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+ }
+
+ pBirthdayItem->AddControl(pClearButton);
+
+ Button *pButtonDelete = new (std::nothrow) Button();
+ pButtonDelete->Construct(Rectangle(itemWidth - H_BUTTON - W_ITEM_GAP, (H_ITEM - H_BUTTON) / 2, H_BUTTON, H_BUTTON));
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS);
+ if (pBitmap != null)
+ {
+ pButtonDelete->SetNormalBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+ }
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS_PRESSED);
+ if (pBitmap != null)
+ {
+ pButtonDelete->SetPressedBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+ }
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_NORMAL);
+ if (pBitmap != null)
+ {
+ pButtonDelete->SetNormalBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_PRESSED);
+ if (pBitmap != null)
+ {
+ pButtonDelete->SetPressedBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+
+ pButtonDelete->SetActionId(IDA_BUTTON_BIRTHDAY_DELETE);
+ pButtonDelete->AddActionEventListener(*this);
+
+ pBirthdayItem->AddControl(pButtonDelete);
+
+ pBirthdayItem->SetIndividualSelectionEnabled(pBirthday, true);
+ pBirthdayItem->SetIndividualSelectionEnabled(pClearButton, true);
+ pBirthdayItem->SetIndividualSelectionEnabled(pButtonDelete, true);
+
+ return pBirthdayItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetNoteField(int itemWidth)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (__pNoteFieldItem != null)
+ {
+ return __pNoteFieldItem;
+ }
+
+ __pNoteFieldItem = new (std::nothrow) TableViewItem();
+ __pNoteFieldItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight() + Y_EDIT_FIELD_GAP + H_EXPANDABLE_EDIT_AREA_EXTENDED), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ __pNoteFieldItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ __pNoteFieldItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+
+ Label* pNoteTitle = new (std::nothrow) Label();
+ pNoteTitle->Construct(Rectangle(0, 0, itemWidth, H_LABEL), ResourceManager::GetString(L"IDS_PB_BODY_NOTE"));
+ pNoteTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pNoteTitle->SetTextColor(COLOR_ITEM_TITLE);
+ pNoteTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
+ __pNoteFieldItem->AddControl(pNoteTitle);
+
+ ExpandableEditArea* pNoteEditArea = new (std::nothrow) ExpandableEditArea();
+ pNoteEditArea->Construct(Rectangle(Y_EDIT_FIELD_GAP, H_LABEL, itemWidth - H_EDIT_FIELD_GAP, pContactsApp->GetListItemSingleLineHeight() - H_LABEL + Y_EDIT_FIELD_GAP + H_EXPANDABLE_EDIT_AREA_EXTENDED), EXPANDABLE_EDIT_AREA_STYLE_NORMAL, EXPANDABLE_EDIT_AREA_TITLE_STYLE_NONE);
+ pNoteEditArea->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_NOTE"));
+ pNoteEditArea->SetText(__pPresentationModel->GetValue(DETAIL_PROPERTY_NOTE));
+ pNoteEditArea->AddExpandableEditAreaEventListener(*this);
+ pNoteEditArea->AddKeypadEventListener(*this);
+ pNoteEditArea->AddFocusEventListener(*this);
+ pNoteEditArea->SetTextSize(pContactsApp->GetFontSize());
+ pNoteEditArea->AddTextEventListener(*this);
+
+ __pNoteFieldItem->AddControl(pNoteEditArea);
+ __pNoteFieldItem->SetIndividualSelectionEnabled(pNoteEditArea, true);
+
+ return __pNoteFieldItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetRingtoneField(int itemWidth)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ TableViewItem* pRingtoneItem = new (std::nothrow) TableViewItem();
+ pRingtoneItem->Construct(Dimension(itemWidth, H_DOUBLE_LINE_ITEM + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pRingtoneItem->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+ pRingtoneItem->AddKeyEventListener(*this);
+
+ Panel* pGroupStyle = new (std::nothrow) Panel();
+ pGroupStyle->Construct(Rectangle(0, 0, itemWidth , H_DOUBLE_LINE_ITEM + pContactsApp->GetFontHeightOffset()), GROUP_STYLE_NONE);
+ pGroupStyle->SetName(GROUP_STYLE_PANEL);
+ pGroupStyle->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+ pGroupStyle->AddTouchEventListener(*this);
+ pRingtoneItem->AddControl(pGroupStyle);
+
+ Label* pLabelTitle = new (std::nothrow) Label();
+ pLabelTitle->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP, itemWidth, H_GROUP_RINGTONE_TITLE_LABEL), ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE"));
+ pLabelTitle->SetName(GROUP_LABEL_TITLE);
+ pLabelTitle->AddTouchEventListener(*this);
+ pLabelTitle->SetTextConfig(FONT_SIZE_TITLE_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+ pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ pGroupStyle->AddControl(pLabelTitle);
+
+ String ringtoneName = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
+ String trimmedPath;
+ int index = 0;
+
+ ringtoneName.LastIndexOf(L"/", ringtoneName.GetLength() - 1, index);
+
+ if (index != 0)
+ {
+ ringtoneName.SubString(index + 1, trimmedPath);
+ }
+
+ Label* pLabelRingToneName = new (std::nothrow) Label();
+ pLabelRingToneName->Construct(Rectangle(0, H_GROUP_RINGTONE_TITLE_GAP + H_GROUP_RINGTONE_TITLE_LABEL, itemWidth - H_GROUP_RINGTONE_TITLE_GAP - H_ICON_BUTTON, H_GROUP_RINGTONE_VALUE_LABEL + pContactsApp->GetFontHeightOffset()), trimmedPath);
+ pLabelRingToneName->SetName(GROUP_LABEL_VALUE);
+ pLabelRingToneName->AddTouchEventListener(*this);
+ pLabelRingToneName->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+ pLabelRingToneName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pGroupStyle->AddControl(pLabelRingToneName);
+
+ Button* pClearButton = new (std::nothrow) Button();
+ pClearButton->Construct(Rectangle(itemWidth - X_REFRESH_BUTTON_MARGIN, (pRingtoneItem->GetHeight() - H_ICON_BUTTON) / 2, H_ICON_BUTTON, H_ICON_BUTTON));
+ pClearButton->SetActionId(IDA_BUTTON_RINGTONE_CLEAR);
+ pClearButton->AddActionEventListener(*this);
+
+ Bitmap* pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_NORMAL);
+ if (pReset != null)
+ {
+ pClearButton->SetNormalBitmap(Point(0, 0), *pReset);
+ delete pReset;
+ }
+ pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_PRESSED);
+ if (pReset != null)
+ {
+ pClearButton->SetPressedBitmap(Point(0, 0), *pReset);
+ delete pReset;
+ }
+
+ pRingtoneItem->AddControl(pClearButton);
+ pRingtoneItem->SetIndividualSelectionEnabled(pClearButton, true);
+
+ return pRingtoneItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetMoreInformationField(int itemWidth)
+{
+ TableViewItem* pMoreInformationItem = new (std::nothrow) TableViewItem();
+ pMoreInformationItem->Construct(Dimension(itemWidth, H_DESCRIPTION_CONTAINER));
+ pMoreInformationItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pMoreInformationItem->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Panel* pPanel = new (std::nothrow) Panel();
+ pPanel->Construct(Rectangle(X_MORE_INFO_PANEL_GAP, X_MORE_INFO_PANEL_GAP, itemWidth - H_MORE_INFO_PANEL_GAP, H_DESCRIPTION_CONTAINER - H_MORE_INFO_PANEL_GAP));
+ pPanel->SetBackgroundColor(Color(COLOR_TABLE_VIEW_BG));
+
+ pMoreInformationItem->AddControl(pPanel);
+
+ Button* pButtonMoreInformation = new (std::nothrow) Button();
+ pButtonMoreInformation->Construct(Rectangle(X_MORE_INFORMATION_BUTTON, Y_MORE_INFORMATION_BUTTON, itemWidth - (X_MORE_INFORMATION_BUTTON * 2), H_BUTTON));
+ pButtonMoreInformation->SetText(ResourceManager::GetString(L"IDS_KA_BODY_MORE_INFORMATION"));
+ pButtonMoreInformation->SetActionId(IDA_BUTTON_MORE_INFO);
+ pButtonMoreInformation->AddActionEventListener(*this);
+
+ pPanel->AddControl(pButtonMoreInformation);
+
+ return pMoreInformationItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+ContactEditorForm::GetDefaultPhoneNumberItem(int itemWidth)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ TableViewItem* pDefaultPhoneNumberItem = new (std::nothrow) TableViewItem();
+ pDefaultPhoneNumberItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()));
+ pDefaultPhoneNumberItem->SetBackgroundColor(Color(0), TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ Button* pButtonDefaultNumber = new (std::nothrow) Button();
+ pButtonDefaultNumber->Construct(Rectangle(X_MORE_INFORMATION_BUTTON, Y_DEFAULT_NUMBER_BUTTON, itemWidth - (X_MORE_INFORMATION_BUTTON * 2), H_BUTTON));
+ pButtonDefaultNumber->SetText(ResourceManager::GetString(L"IDS_PB_BODY_MARK_AS_DEFAULT_NUMBER"));
+ pButtonDefaultNumber->SetActionId(IDA_BUTTON_DEFAULT_PHONE_NUMBER);
+ pButtonDefaultNumber->AddActionEventListener(*this);
+
+ pDefaultPhoneNumberItem->AddControl(pButtonDefaultNumber);
+ pDefaultPhoneNumberItem->SetIndividualSelectionEnabled(pButtonDefaultNumber, true);
+
+ return pDefaultPhoneNumberItem;
+}
+
+result
+ContactEditorForm::DeleteInputField(int groupIndex, int itemIndex, int isUpdating)
+{
+ result r = E_SUCCESS;
+ ArrayList* pFieldList = null;
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
+ {
+ pFieldList = __pPhoneNumberFieldItem;
+ __pPresentationModel->SetPhoneNumber(DETAIL_PHONENUMBER_TYPE_NONE, L"", itemIndex); //phoneNumberType doesn't matter
+ }
+ break;
+ case TABLE_VIEW_EMAIL_FIELD_INDEX:
+ {
+ pFieldList = __pEmailFieldItem;
+ __pPresentationModel->SetEmail(DETAIL_EMAIL_TYPE_NONE, L"", itemIndex);
+ }
+ break;
+ case TABLE_VIEW_ADDRESS_FIELD_INDEX:
+ {
+ pFieldList = __pAddressFieldItem;
+ __pPresentationModel->SetAddress(DETAIL_ADDRESS_TYPE_NONE, L"", itemIndex);
+ }
+ break;
+ case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
+ {
+ pFieldList = __pImAddressFieldItem;
+ __pPresentationModel->SetImAddress(DETAIL_IM_ADDRESS_TYPE_NONE, L"", itemIndex);
+ }
+ break;
+ case TABLE_VIEW_URL_FIELD_INDEX:
+ {
+ pFieldList = __pUrlFieldItem;
+ __pPresentationModel->SetUrl(DETAIL_URL_TYPE_NONE, L"", itemIndex);
+ }
+ break;
+ default:
+ break;
+ }
+
+ TryReturn(pFieldList != null, E_FAILURE, "[E_FAILURE] Unable to delete the item.")
+
+ __pDeletedItemList->Add(pFieldList->GetAt(itemIndex));
+
+ r = pFieldList->RemoveAt(itemIndex, false);
+
+ if (__previousGroupIndex == groupIndex && __previousItemIndex == itemIndex)
+ {
+ __previousGroupIndex = -1;
+ __previousItemIndex = -1;
+ }
+ if (isUpdating == false)
+ {
+ __pTableView->RefreshItem(groupIndex, itemIndex, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+
+ Rectangle clientBounds = GetClientAreaBounds();
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+
+ for (int i = itemIndex; i < pFieldList->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(pFieldList->GetAt(i));
+ if (pItem == null)
+ {
+ return E_FAILURE;
+ }
+
+ int parsedIndex;
+ EditField* pInputField = static_cast<EditField*>(pItem->GetControl(0));
+ if (pInputField == null)
+ {
+ return E_FAILURE;
+ }
+
+ result r = Integer::Decode(pInputField->GetName(), parsedIndex);
+ if (r == E_NUM_FORMAT)
+ {
+ return E_FAILURE;
+ }
+ pInputField->SetName(Integer::ToString(parsedIndex - 1));
+
+ Button* pTypeButton = static_cast<Button*>(pItem->GetControl(1));
+ if (pTypeButton == null)
+ {
+ return E_FAILURE;
+ }
+
+ r = Integer::Decode(pTypeButton->GetName(), parsedIndex);
+ if (r == E_NUM_FORMAT)
+ {
+ return E_FAILURE;
+ }
+ pTypeButton->SetName(Integer::ToString(parsedIndex - 1));
+
+ Button* pDeleteButton = static_cast<Button *>(pItem->GetControl(2));
+ if (pDeleteButton == null)
+ {
+ return E_FAILURE;
+ }
+ pDeleteButton->SetActionId(pDeleteButton->GetActionId() - 1);
+ }
+
+ SaveContactData(false);
+ SetSaveButtonEnabled(IsSaveContactValid());
+
+ if (groupIndex == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
+ {
+ if (itemIndex == __pPresentationModel->GetDefaultNumberIndex())
+ {
+ SetAsDefaultPhoneNumber(0);
+ }
+ else if (itemIndex < __pPresentationModel->GetDefaultNumberIndex())
+ {
+ SetAsDefaultPhoneNumber(__pPresentationModel->GetDefaultNumberIndex() - 1);
+ }
+ }
+
+ if (__isDefaultPhoneNumberButtonEnabled == true && __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) < 2)
+ {
+ if (isUpdating == false)
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, __pTableView->GetItemCountAt(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX) - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ __isDefaultPhoneNumberButtonEnabled = false;
+ }
+
+ return r;
+}
+
+void
+ContactEditorForm::SetThumbnailControls(Tizen::Ui::Controls::TableViewItem& item, bool isUpdated)
+{
+ Label* pLabelThumbnail = null;
+ Button* pButtonAdd = null;
+ Button* pButtonDelete = null;
+
+ if (isUpdated == false)
+ {
+ int itemWidth = GetBounds().width;
+
+ pLabelThumbnail = new (std::nothrow) Label();
+ pLabelThumbnail->Construct(Rectangle((itemWidth - W_THUMBNAIL) / 2, H_THUMBNAIL_DELETE_BUTTON_GAP + Y_EDIT_FIELD_GAP, W_THUMBNAIL, W_THUMBNAIL), L"");
+
+ item.AddControl(pLabelThumbnail);
+
+ Bitmap* pBitmapItem = null;
+ Bitmap* pBitmapItemPressed = null;
+
+ pButtonAdd = new (std::nothrow) Button();
+ pButtonAdd->Construct(Rectangle(pLabelThumbnail->GetX() + ((pLabelThumbnail->GetWidth() - H_BUTTON) / 2), pLabelThumbnail->GetY() + ((pLabelThumbnail->GetHeight() - H_BUTTON) / 2), H_BUTTON, H_BUTTON));
+ pButtonAdd->SetActionId(IDA_BUTTON_THUMBNAIL_ADD);
+ pButtonAdd->AddActionEventListener(*this);
+
+ pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_ADD);
+ pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_ADD_PRESSED);
+
+ if (pBitmapItem != null)
+ {
+ pButtonAdd->SetNormalBackgroundBitmap(*pBitmapItem);
+ delete pBitmapItem;
+ }
+ if (pBitmapItemPressed != null)
+ {
+ pButtonAdd->SetPressedBackgroundBitmap(*pBitmapItemPressed);
+ delete pBitmapItemPressed;
+ }
+ item.AddControl(pButtonAdd);
+ item.SetIndividualSelectionEnabled(pButtonAdd, true);
+
+ pButtonDelete = new (std::nothrow) Button();
+ pButtonDelete->Construct(Rectangle(pLabelThumbnail->GetX() - H_THUMBNAIL_DELETE_BUTTON_GAP, pLabelThumbnail->GetY() - H_THUMBNAIL_DELETE_BUTTON_GAP + Y_EDIT_FIELD_GAP, H_BUTTON, H_BUTTON));
+ pButtonDelete->SetActionId(IDA_BUTTON_THUMBNAIL_DELETE);
+ pButtonDelete->AddActionEventListener(*this);
+
+ pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS);
+ pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_MINUS_PRESSED);
+
+ if (pBitmapItem != null)
+ {
+ pButtonDelete->SetNormalBitmap(Point(0, 0), *pBitmapItem);
+ delete pBitmapItem;
+ }
+ if (pBitmapItemPressed != null)
+ {
+ pButtonDelete->SetPressedBitmap(Point(0, 0), *pBitmapItemPressed);
+ delete pBitmapItemPressed;
+ }
+
+ pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_NORMAL);
+ pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_DELETE_PRESSED);
+
+ if (pBitmapItem != null)
+ {
+ pButtonDelete->SetNormalBackgroundBitmap(*pBitmapItem);
+ delete pBitmapItem;
+ }
+ if (pBitmapItemPressed != null)
+ {
+ pButtonDelete->SetPressedBackgroundBitmap(*pBitmapItemPressed);
+ delete pBitmapItemPressed;
+ }
+ item.AddControl(pButtonDelete);
+ item.SetIndividualSelectionEnabled(pButtonDelete, true);
+
+ Button* pButtonCamera = new (std::nothrow) Button();
+ pButtonCamera->Construct(Rectangle(pLabelThumbnail->GetX() + pLabelThumbnail->GetWidth(), pLabelThumbnail->GetY() + pLabelThumbnail->GetHeight() - H_BUTTON, H_BUTTON, H_BUTTON));
+ pButtonCamera->SetActionId(IDA_BUTTON_CAMERA);
+ pButtonCamera->AddActionEventListener(*this);
+
+ pBitmapItem = ResourceManager::GetBitmapN(IDB_BUTTON_CAMERA);
+ pBitmapItemPressed = ResourceManager::GetBitmapN(IDB_BUTTON_CAMERA_PRESSED);
+ if (pBitmapItem != null)
+ {
+ pButtonCamera->SetNormalBackgroundBitmap(*pBitmapItem);
+ delete pBitmapItem;
+ }
+ if (pBitmapItemPressed != null)
+ {
+ pButtonCamera->SetPressedBackgroundBitmap(*pBitmapItemPressed);
+ delete pBitmapItemPressed;
+ }
+
+ item.AddControl(pButtonCamera);
+ item.SetIndividualSelectionEnabled(pButtonCamera, true);
+ }
+ else
+ {
+ pLabelThumbnail = static_cast<Label*>(item.GetControl(0));
+ TryReturnVoid(pLabelThumbnail != null, "[E_FAILURE] Unable to get a thumbnail control.");
+
+ pButtonAdd = static_cast<Button*>(item.GetControl(1));
+ TryReturnVoid(pButtonAdd != null, "[E_FAILURE] Unable to get a button.");
+
+ pButtonDelete = static_cast<Button*>(item.GetControl(2));
+ TryReturnVoid(pButtonDelete != null, "[E_FAILURE] Unable to get a button.");
+ }
+
+ Bitmap* pThumbnail = null;
+ String thumbnailPath = __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL);
+
+ if (thumbnailPath.IsEmpty() == false)
+ {
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(thumbnailPath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE);
+ }
+ if (pThumbnail != null)
+ {
+ pThumbnail->SetScalingQuality(BITMAP_SCALING_QUALITY_HIGH);
+ pThumbnail->Scale(Dimension(W_THUMBNAIL, W_THUMBNAIL));
+ pLabelThumbnail->SetBackgroundBitmap(*pThumbnail);
+ }
+ pButtonAdd->SetShowState(false);
+ pButtonAdd->SetEnabled(false);
+ pButtonDelete->SetShowState(true);
+ }
+ else
+ {
+ pThumbnail = ResourceManager::GetBitmapN(IDB_THUMBNAIL_BACKGROUND);
+ if (pThumbnail != null)
+ {
+ pLabelThumbnail->SetBackgroundBitmap(*pThumbnail);
+ pButtonAdd->SetShowState(true);
+ pButtonAdd->SetEnabled(true);
+ pButtonDelete->SetShowState(false);
+ }
+ }
+
+ delete pThumbnail;
+}
+
+void
+ContactEditorForm::AddHorizontalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionY, int width)
+{
+ Label* pDivider = new (std::nothrow) Label();
+ pDivider->Construct(Rectangle(0, positionY, width, H_DIVIDER), L"");
+ pDivider->SetBackgroundColor(Color(COLOR_DIVIDER));
+ pDivider->SetEnabled(false);
+
+ pItem->AddControl(pDivider);
+}
+
+void
+ContactEditorForm::AddVerticalDivider(Tizen::Ui::Controls::TableViewItem* pItem, int positionX, int positionY)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ Label* pDivider = new (std::nothrow) Label();
+ pDivider->Construct(Rectangle(positionX, positionY, W_DIVIDER, pContactsApp->GetListItemSingleLineHeight()), L"");
+ pDivider->SetBackgroundColor(Color(COLOR_DIVIDER));
+ pDivider->SetEnabled(false);
+
+ pItem->AddControl(pDivider);
+}
+
+result
+ContactEditorForm::SetAsDefaultPhoneNumber(int index, bool scrollToItem)
+{
+ result r = E_SUCCESS;
+ TableViewItem* pItem = null;
+ EditField* pEditField = null;
+
+ pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(index));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ goto CATCH;
+ }
+
+ pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ goto CATCH;
+ }
+
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER, L"", index);
+
+ if (pEditField->IsVisible() == false && scrollToItem == true)
+ {
+ __pTableView->ScrollToItem(TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX, index);
+ }
+ pEditField->Invalidate(true);
+
+CATCH:
+ return r;
+}
+
+result
+ContactEditorForm::ChangeNameFieldStatus(void)
+{
+ result r = E_SUCCESS;
+
+ r = SaveNameFields();
+
+ __isExpandable = (__isExpandable == true) ? false : true;
+
+ return r;
+}
+
+result
+ContactEditorForm::SaveContactData(bool isSaved)
+{
+ result r = E_SUCCESS;
+
+ if (isSaved == true)
+ {
+ if (CommonUtil::isMemoryAvailable() == false)
+ {
+ CommonUtil::showMemoryFullMessageBox();
+ return E_FAILURE;
+ }
+ }
+
+ r = SaveNameFields();
+
+ for (int i = 0; i < __pPhoneNumberFieldItem->GetCount(); i++)
+ {
+ r = E_SUCCESS;
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pPhoneNumberFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String phoneNumberString(pEditField->GetText());
+ String phoneNumberTypeString(pItem->GetName());
+ int phoneNumberType;
+ phoneNumberString.Trim();
+ wchar_t ch;
+
+ for (int i = 0; i < phoneNumberString.GetLength(); i++)
+ {
+ phoneNumberString.GetCharAt(i, ch);
+
+ if(ch == '+' && i == 0)
+ {
+ continue;
+ }
+ if((ch == ',' || ch == ';' || ch == 'p') && i == 0)
+ {
+ r = E_FAILURE;
+ break;
+ }
+ else if ((ch < '0' || ch > '9') && (ch != '*') && (ch != '#') && (ch != ',') && (ch != ';') && (ch != 'p'))
+ {
+ r = E_FAILURE;
+ break;
+ }
+ else
+ {
+ r = E_SUCCESS;
+ }
+ }
+
+ if (isSaved == true && phoneNumberString.GetLength() > 0 && r != E_SUCCESS)
+ {
+ int modalResult;
+ MessageBox invalidNumberMessage;
+ invalidNumberMessage.Construct(L"", ResourceManager::GetString(L"IDS_PB_BODY_INVALID_NUMBER"), MSGBOX_STYLE_OK, MESSAGE_BOX_TIMEOUT_MS);
+ invalidNumberMessage.ShowAndWait(modalResult);
+
+ return E_FAILURE;
+ }
+
+ Integer::Parse(phoneNumberTypeString, phoneNumberType);
+
+ __pPresentationModel->SetPhoneNumber((DetailPhoneNumberType)phoneNumberType, phoneNumberString, i);
+ }
+
+ for (int i = 0; i < __pEmailFieldItem->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pEmailFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String emailString(pEditField->GetText());
+ String remainingString;
+ String emailTypeString(pItem->GetName());
+ int emailType;
+
+ emailString.Trim();
+ Integer::Parse(emailTypeString, emailType);
+
+ r = __pPresentationModel->SetEmail((DetailEmailType)emailType, emailString, i);
+
+ if (isSaved == true && r == E_SUCCESS)
+ {
+ if(emailString.GetLength() > 0)
+ {
+ bool isValidEmail = ValidateEmailAddress(emailString);
+ if (isValidEmail != true)
+ {
+ int modalResult;
+ MessageBox invalidEmailMessage;
+ invalidEmailMessage.Construct(L"", ResourceManager::GetString(L"IDS_PB_POP_INVALID_EMAIL_ADDRESS"), MSGBOX_STYLE_OK, MESSAGE_BOX_TIMEOUT_MS);
+ invalidEmailMessage.ShowAndWait(modalResult);
+ pEditField->ShowKeypad();
+
+ return E_FAILURE;
+ }
+ }
+ }
+ }
+
+ for (int i = 0; i < __pAddressFieldItem->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pAddressFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String addressString(pEditField->GetText());
+ String addressTypeString(pItem->GetName());
+ int addressType;
+
+ addressString.Trim();
+ Integer::Parse(addressTypeString, addressType);
+
+ __pPresentationModel->SetAddress((DetailAddressType)addressType, addressString, i);
+ }
+
+ for (int i = 0; i < __pImAddressFieldItem->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pImAddressFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String addressString(pEditField->GetText());
+ String addressTypeString(pItem->GetName());
+ int addressType;
+
+ addressString.Trim();
+ Integer::Parse(addressTypeString, addressType);
+
+ __pPresentationModel->SetImAddress((DetailImAddressType)addressType, addressString, i);
+ }
+
+ for (int i = 0; i < __pUrlFieldItem->GetCount(); i++)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem *>(__pUrlFieldItem->GetAt(i));
+ if (pItem == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ EditField* pEditField = static_cast<EditField *>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String urlString(pEditField->GetText());
+ String urlTypeString(pItem->GetName());
+ int urlType;
+
+ urlString.Trim();
+ Integer::Parse(urlTypeString, urlType);
+
+ __pPresentationModel->SetUrl((DetailUrlType)urlType, urlString, i);
+ }
+
+ if (__pNoteFieldItem != null)
+ {
+ String noteString;
+ ExpandableEditArea* pNoteEditArea = static_cast<ExpandableEditArea *>(__pNoteFieldItem->GetControl(1));
+ if (pNoteEditArea != null)
+ {
+ noteString.Append(pNoteEditArea->GetText());
+ }
+
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_NOTE, noteString);
+ }
+
+ if (isSaved == true)
+ {
+ r = __pPresentationModel->AddAddressBook();
+ }
+ return r;
+}
+
+result
+ContactEditorForm::SaveNameFields(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pNameFieldItem == null)
+ {
+ return E_FAILURE;
+ }
+
+ if (__isExpandable == true)
+ {
+ EditField* pFirstName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME"), false));
+ if (pFirstName == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_FIRST_NAME, pFirstName->GetText());
+
+ EditField* pLastName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME"), false));
+ if (pLastName == null)
+ {
+ return E_FAILURE;
+ }
+
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_LAST_NAME, pLastName->GetText());
+
+ EditField* pMiddleName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_MIDDLE_NAME"), false));
+ if (pMiddleName == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_MIDDLE_NAME, pMiddleName->GetText());
+
+ EditField* pSuffix = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_SUFFIX"), false));
+ if (pSuffix == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_NAME_SUFFIX, pSuffix->GetText());
+
+ EditField* pNickName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_NICKNAME"), false));
+ if (pNickName == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_NICK_NAME, pNickName->GetText());
+
+ EditField* pCompanyName = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_COMPANY"), false));
+ if (pCompanyName == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_COMPANY, pCompanyName->GetText());
+
+ if (__isJobTitleEnabled == true)
+ {
+ EditField* pJobTitle = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"), false));
+ if (pJobTitle == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_JOB_TITLE, pJobTitle->GetText());
+ }
+
+ if (__isDepartmentEnabled == true)
+ {
+ EditField* pDepartment = static_cast<EditField *>(__pNameFieldItem->GetControl(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"), false));
+ if (pDepartment == null)
+ {
+ return E_FAILURE;
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_DEPARTMENT, pDepartment->GetText());
+ }
+ }
+ else
+ {
+ EditField* pName = static_cast<EditField *>(__pNameFieldItem->GetControl(Integer::ToString(IDA_INPUT_FIELD_DISPLAY_NAME), false));
+ if (pName == null)
+ {
+ return E_FAILURE;
+ }
+
+ String firstName = L"";
+ String lastName = L"";
+ String middleName = L"";
+ String suffix = L"";
+
+ int delimeterIndex = -1;
+ int delimcommaIndex = -1;
+
+ String displayName(pName->GetText());
+ if (displayName != __fullName)
+ {
+ displayName.Trim();
+ if (!displayName.IsEmpty())
+ {
+ displayName.IndexOf(DELIMITER_COMMA, 0, delimcommaIndex);
+ if (delimcommaIndex >= 0)
+ {
+ displayName.SubString(delimcommaIndex + 1, displayName.GetLength() - (delimcommaIndex + 1), suffix);
+ displayName.SetLength(delimcommaIndex);
+ displayName.Trim();
+ }
+
+ if (!displayName.IsEmpty())
+ {
+ delimeterIndex = -1;
+ displayName.IndexOf(CHARACTER_SPACE, 0, delimeterIndex);
+ if (delimeterIndex < 0)
+ {
+ firstName.Append(displayName);
+ }
+ else
+ {
+ displayName.SubString(0, delimeterIndex++, firstName);
+ displayName.SubString(delimeterIndex, displayName.GetLength() - delimeterIndex, displayName);
+
+ delimeterIndex = -1;
+ displayName.Trim();
+
+ if (!displayName.IsEmpty())
+ {
+ displayName.IndexOf(CHARACTER_SPACE, 0, delimeterIndex);
+ if (delimeterIndex < 0)
+ {
+ lastName.Append(displayName);
+ }
+ else
+ {
+ displayName.SubString(0, delimeterIndex, middleName);
+ displayName.SubString(delimeterIndex + 1, displayName.GetLength() - (delimeterIndex + 1), lastName);
+ }
+ }
+ }
+ }
+ }
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_FIRST_NAME, firstName);
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_MIDDLE_NAME, middleName);
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_LAST_NAME, lastName);
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_NAME_SUFFIX, suffix);
+ }
+ else if (displayName.IsEmpty() == true)
+ {
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_FIRST_NAME, firstName);
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_MIDDLE_NAME, middleName);
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_LAST_NAME, lastName);
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_NAME_SUFFIX, suffix);
+ }
+ }
+
+ return r;
+}
+
+bool
+ContactEditorForm::IsSaveContactValid(void)
+{
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_FIRST_NAME).IsEmpty() == false)
+ {
+ return true;
+ }
+
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_LAST_NAME).IsEmpty() == false)
+ {
+ return true;
+ }
+
+ for (int i = 0; i < __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER); i++)
+ {
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i).IsEmpty() == false)
+ {
+ return true;
+ }
+ }
+
+ for (int i = 0; i < __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_EMAIL); i++)
+ {
+ if (__pPresentationModel->GetValue(DETAIL_PROPERTY_EMAIL, i).IsEmpty() == false)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+void
+ContactEditorForm::SetSaveButtonEnabled(bool enable)
+{
+ Footer* pFooter = GetFooter();
+
+ if (enable)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+
+ pFooter->Invalidate(true);
+}
+
+bool
+ContactEditorForm::IsMoreInformationButtonVisible(void)
+{
+ if (__isJobTitleEnabled == false)
+ {
+ return true;
+ }
+
+ if (__isDepartmentEnabled == false)
+ {
+ return true;
+ }
+
+ if (__pImAddressFieldItem->GetCount() == 0)
+ {
+ return true;
+ }
+
+ if (__pUrlFieldItem->GetCount() == 0)
+ {
+ return true;
+ }
+
+ DateTime birthday;
+ if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
+ {
+ return true;
+ }
+
+ if (__pNoteFieldItem == null)
+ {
+ return true;
+ }
+
+ return false;
+}
+
+void
+ContactEditorForm::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ TableViewItem* pTableViewItem = static_cast<TableViewItem *>(source.GetParent());
+
+ __isContactModified = true;
+
+ if (pTableViewItem == null)
+ {
+ return;
+ }
+
+ SaveContactData(false);
+ SetSaveButtonEnabled(IsSaveContactValid());
+
+ if (__pNameFieldItem == pTableViewItem)
+ {
+ return;
+ }
+
+ EditField* pEditField = const_cast<EditField *>(static_cast<const EditField *>(&source));
+ if (pEditField == null)
+ {
+ return;
+ }
+
+ Control* pDeleteButton = pTableViewItem->GetControl(2);
+ if (pDeleteButton == null)
+ {
+ return;
+ }
+
+ int index = 0;
+ int groupIndex = 0;
+ int inputFlag = 0;
+ int itemCount = 0;
+
+ Integer::Decode(pEditField->GetName(), index);
+ groupIndex = (index & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
+ inputFlag = (index & TABLE_VIEW_INPUT_FIELD_INDEX_MASK) >> TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ int itemIndex = (index & TABLE_VIEW_ITEM_INDEX_MASK);
+ itemCount = __pTableView->GetItemCountAt(groupIndex);
+
+ String trimmedString = pEditField->GetText();
+ trimmedString.Trim();
+
+ if (trimmedString.IsEmpty())
+ {
+ pDeleteButton->SetShowState(false);
+
+ int Itemcount = __pTableView->GetItemCountAt(groupIndex);
+ if (itemIndex == Itemcount - 1)
+ {
+
+ }
+ else
+ {
+ __previousItemIndex = itemIndex; //if the entered text is empty store the index of the field for deletion
+ __previousGroupIndex = groupIndex;
+ }
+ }
+ else if (pDeleteButton->GetShowState() == false)
+ {
+ __previousItemIndex = -1;
+ __previousGroupIndex = -1;
+ pDeleteButton->SetShowState(true);
+ if (inputFlag <= 0)
+ {
+ index |= (1 << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT);
+ pEditField->SetName(Integer::ToString(index));
+
+ if (groupIndex == TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX)
+ {
+ if (__isDefaultPhoneNumberButtonEnabled == false && __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) > 1)
+ {
+ __isDefaultPhoneNumberButtonEnabled = true;
+ __pTableView->RefreshItem(groupIndex, __pTableView->GetItemCountAt(groupIndex), TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+ }
+ else if (itemCount > 1)
+ {
+ itemCount--;
+ }
+ }
+
+ ArrayList* pFieldList = null;
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
+ {
+ pFieldList = __pPhoneNumberFieldItem;
+ }
+ break;
+ case TABLE_VIEW_EMAIL_FIELD_INDEX:
+ {
+ pFieldList = __pEmailFieldItem;
+ }
+ break;
+ case TABLE_VIEW_ADDRESS_FIELD_INDEX:
+ {
+ pFieldList = __pAddressFieldItem;
+ }
+ break;
+ case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
+ {
+ pFieldList = __pImAddressFieldItem;
+ }
+ break;
+ case TABLE_VIEW_URL_FIELD_INDEX:
+ {
+ pFieldList = __pUrlFieldItem;
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (pFieldList != null)
+ {
+ TableViewItem* pItem = static_cast<TableViewItem*>(pFieldList->GetAt(pFieldList->GetCount() - 1));
+ if (pItem != null)
+ {
+ EditField* pInputField = static_cast<EditField*>(pItem->GetControl(0));
+
+ if (pInputField != null && pInputField->GetTextLength() != 0)
+ {
+ __pTableView->RefreshItem(groupIndex, itemCount, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ __previousItemIndex = -1;
+ __previousGroupIndex = -1;
+ }
+ if(__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) <= 1 && __isDefaultPhoneNumberButtonEnabled == true)
+ {
+ __isDefaultPhoneNumberButtonEnabled = false;
+ __pTableView->RefreshItem(groupIndex, __pTableView->GetItemCountAt(groupIndex) - 1, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ else if(__pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER) > 1 && __isDefaultPhoneNumberButtonEnabled == false)
+ {
+ __isDefaultPhoneNumberButtonEnabled = true;
+ __pTableView->RefreshItem(groupIndex, __pTableView->GetItemCountAt(groupIndex), TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+ }
+}
+
+void
+ContactEditorForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+result
+ContactEditorForm::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
+{
+ result r = E_SUCCESS;
+
+ if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
+ {
+ return E_FAILURE;
+ }
+
+ int delimiterIndex;
+
+ argument.IndexOf(DELIMITER, 0, delimiterIndex);
+ argument.SubString(0, delimiterIndex++, type);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
+ argument.SubString(delimiterIndex, argument.GetLength() - delimiterIndex, content);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
+
+ return r;
+}
+
+void
+ContactEditorForm::OnFocusGained(const Tizen::Ui::Control& source)
+{
+ __pCurrentFocusedItem = source.GetParent();
+
+ if (__previousItemIndex != -1 && __previousGroupIndex != -1)
+ {
+ const EditField* pEditField = static_cast<const EditField*>(&source);
+ if (pEditField == null)
+ {
+ return;
+ }
+
+ int groupIndex;
+ int itemIndex;
+ int index;
+
+ Integer::Decode(pEditField->GetName(), index);
+ groupIndex = (index & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
+ itemIndex = (index & TABLE_VIEW_ITEM_INDEX_MASK);
+
+ if (groupIndex == __previousGroupIndex && itemIndex == __previousItemIndex)
+ {
+ //Same item is focused. Hence not deleting it
+ }
+ else
+ {
+ DeleteInputField(__previousGroupIndex, __previousItemIndex);
+ }
+ }
+}
+
+void
+ContactEditorForm::OnFocusLost(const Tizen::Ui::Control& source)
+{
+ if (__pCurrentFocusedItem == __pNameFieldItem)
+ {
+ SaveNameFields();
+ }
+
+ __pCurrentFocusedItem = null;
+}
+
+void
+ContactEditorForm::ShowDefaultPhoneNumberContextMenu(const Tizen::Graphics::Point& position)
+{
+ if (__pDefaultPhoneNumberContextMenu != null)
+ {
+ delete __pDefaultPhoneNumberContextMenu;
+ __pDefaultPhoneNumberContextMenu = null;
+ }
+
+ __pDefaultPhoneNumberContextMenu = new (std::nothrow) ContextMenu();
+ __pDefaultPhoneNumberContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST);
+ __pDefaultPhoneNumberContextMenu->AddActionEventListener(*this);
+ __pDefaultPhoneNumberContextMenu->SetFocusable(true);
+
+ int count = __pPresentationModel->GetMultiValuesCount(DETAIL_PROPERTY_PHONE_NUMBER);
+ int defaultPhoneNumberIndex = __pPresentationModel->GetDefaultNumberIndex();
+
+ for (int i = 0; i < count; i++)
+ {
+ String phoneNumber(__pPresentationModel->GetValue(DETAIL_PROPERTY_PHONE_NUMBER, i));
+
+ if (i != defaultPhoneNumberIndex)
+ {
+ phoneNumber.Insert(__pPresentationModel->GetType(DETAIL_PROPERTY_PHONE_NUMBER, i) + CHARACTER_SPACE, 0);
+ __pDefaultPhoneNumberContextMenu->AddItem(phoneNumber, i);
+ }
+ }
+
+ if (__pDefaultPhoneNumberContextMenu->GetItemCount() > 0)
+ {
+ __pDefaultPhoneNumberContextMenu->Show();
+ }
+}
+
+void
+ContactEditorForm::ShowMoreInformationContextMenu(const Tizen::Graphics::Point& position)
+{
+ if (__pMoreInformationContextMenu != null)
+ {
+ delete __pMoreInformationContextMenu;
+ __pMoreInformationContextMenu = null;
+ }
+
+ __pMoreInformationContextMenu = new (std::nothrow) ContextMenu();
+ __pMoreInformationContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST);
+
+ __pMoreInformationContextMenu->SetMaxVisibleItemsCount(6);
+ __pMoreInformationContextMenu->AddActionEventListener(*this);
+ __pMoreInformationContextMenu->SetFocusable(true);
+
+ if (__isJobTitleEnabled == false)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_JOB_TITLE"), IDA_CONTEXT_MENU_ITEM_JOB_TITLE);
+ }
+
+ if (__isDepartmentEnabled == false)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_DEPARTMENT"), IDA_CONTEXT_MENU_ITEM_DEPARTMENT);
+ }
+
+ if (__pImAddressFieldItem->GetCount() == 0)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_HEADER_INSTANT_MESSENGER_ABB"), IDA_CONTEXT_MENU_ITEM_INSTANT_MESSENGER);
+ }
+
+ if (__pUrlFieldItem->GetCount() == 0)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_URL"), IDA_CONTEXT_MENU_ITEM_URL);
+ }
+
+ DateTime birthday;
+ if (__pPresentationModel->GetBirthday(birthday) != E_SUCCESS)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_BIRTHDAY"), IDA_CONTEXT_MENU_ITEM_BIRTHDAY);
+ }
+
+ if (__pNoteFieldItem == null)
+ {
+ __pMoreInformationContextMenu->AddItem(ResourceManager::GetString(L"IDS_PB_BODY_NOTE"), IDA_CONTEXT_MENU_ITEM_NOTE);
+ }
+
+ if (__isMoreInformationContextMenuShowing == false)
+ {
+ __pMoreInformationContextMenu->Show();
+ }
+}
+
+void
+ContactEditorForm::ShowTypeContextMenu(int currentType, const Tizen::Graphics::Point& position, int itemTag)
+{
+ int groupIndex = (itemTag & TABLE_VIEW_GROUP_INDEX_MASK) >> TABLE_VIEW_GROUP_INDEX_SHIFT;
+
+ __groupIndex = groupIndex;
+ __itemIndex = itemTag;
+
+ if (__isKeypadOpened)
+ {
+ __isTypeContextMenuShowing = true;
+ }
+
+ if (__pTypeContextMenu != null)
+ {
+ delete __pTypeContextMenu;
+ __pTypeContextMenu = null;
+ }
+
+ __pTypeContextMenu = new (std::nothrow) ContextMenu();
+ __pTypeContextMenu->Construct(position, CONTEXT_MENU_STYLE_LIST, CONTEXT_MENU_ANCHOR_DIRECTION_LEFTWARD);
+ __pTypeContextMenu->AddActionEventListener(*this);
+ __pTypeContextMenu->SetFocusable(true);
+
+ switch (groupIndex)
+ {
+ case TABLE_VIEW_PHONE_NUMBER_FIELD_INDEX:
+ {
+ __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_PHONENUMBER_TYPE_OTHER + 1);
+ for (int i = 0; i <= DETAIL_PHONENUMBER_TYPE_OTHER; i++)
+ {
+ int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ __pTypeContextMenu->AddItem(__pPresentationModel->GetPhoneNumberTypeString((DetailPhoneNumberType)i), itemTag | index);
+ }
+ }
+ break;
+ case TABLE_VIEW_EMAIL_FIELD_INDEX:
+ {
+ __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_EMAIL_TYPE_OTHER + 1);
+ for (int i = 0; i <= DETAIL_EMAIL_TYPE_OTHER; i++)
+ {
+ int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ __pTypeContextMenu->AddItem(__pPresentationModel->GetAddressTypeString((DetailAddressType)i), itemTag | index);
+ }
+ }
+ break;
+ case TABLE_VIEW_ADDRESS_FIELD_INDEX:
+ {
+ __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_ADDRESS_TYPE_OTHER + 1);
+ for (int i = 0; i <= DETAIL_ADDRESS_TYPE_OTHER; i++)
+ {
+ int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ __pTypeContextMenu->AddItem(__pPresentationModel->GetAddressTypeString((DetailAddressType)i), itemTag | index);
+ }
+ }
+ break;
+ case TABLE_VIEW_IM_ADDRESS_FIELD_INDEX:
+ {
+ __pTypeContextMenu->SetMaxVisibleItemsCount(7); // Temporary the code due to limit max count(8) by UI framework.
+ for (int i = 0; i <= DETAIL_IM_ADDRESS_TYPE_OTHER; i++)
+ {
+ int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ __pTypeContextMenu->AddItem(__pPresentationModel->GetImAddressTypeString((DetailImAddressType)i), itemTag | index);
+ }
+ }
+ break;
+ case TABLE_VIEW_URL_FIELD_INDEX:
+ {
+ __pTypeContextMenu->SetMaxVisibleItemsCount(DETAIL_URL_TYPE_OTHER + 1);
+ for (int i = 0; i <= DETAIL_URL_TYPE_OTHER; i++)
+ {
+ int index = i << TABLE_VIEW_INPUT_FIELD_INDEX_SHIFT;
+ __pTypeContextMenu->AddItem(__pPresentationModel->GetUrlTypeString((DetailUrlType)i), itemTag | index);
+ }
+ }
+ break;
+ default:
+ {
+ __isTypeContextMenuShowing = false;
+ __groupIndex = -1;
+ __itemIndex = -1;
+ delete __pTypeContextMenu;
+ __pTypeContextMenu = null;
+ }
+ break;
+ }
+
+ if (__pTypeContextMenu != null)
+ {
+ __pTypeContextMenu->RemoveItemAt(currentType);
+ __pTypeContextMenu->Show();
+ }
+}
+
+void
+ContactEditorForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ __isScrollOccurred = false;
+
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(GROUP_LABEL_TITLE, true) || source.GetName().Equals(GROUP_LABEL_VALUE, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent());
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_PRESSED);
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(GROUP_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_PRESSED));
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(GROUP_LABEL_TITLE, true));
+ pLabelTitle->SetTextColor(COLOR_ITEM_PRESSED);
+
+ pPanel->Invalidate(true);
+ }
+}
+
+void
+ContactEditorForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(GROUP_LABEL_TITLE, true) || source.GetName().Equals(GROUP_LABEL_VALUE, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent());
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(GROUP_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(GROUP_LABEL_TITLE, true));
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+
+ pPanel->Invalidate(true);
+ }
+
+ if (__isScrollOccurred || source.Contains(currentPosition) == false)
+ {
+ return;
+ }
+}
+
+void
+ContactEditorForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(GROUP_LABEL_TITLE, true) || source.GetName().Equals(GROUP_LABEL_VALUE, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent());
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(GROUP_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(GROUP_LABEL_TITLE, true));
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+
+ pPanel->Invalidate(true);
+ }
+}
+
+void
+ContactEditorForm::OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+ if (keyCode == KEY_ENTER )
+ {
+ TableViewItem* pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ String valueString;
+ Panel* pPanel = static_cast<Panel*>(pItem->GetControl(0));
+
+ if (pPanel == null)
+ {
+ return;
+ }
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(1));
+
+ if (pLabelValue == null)
+ {
+ return;
+ }
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(0));
+
+ if (pLabelTitle == null)
+ {
+ return;
+ }
+
+ pPanel->SetBackgroundColor(COLOR_PRESSED);
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_PRESSED));
+ pLabelTitle->SetTextColor(COLOR_ITEM_PRESSED);
+ pPanel->Invalidate(true);
+ }
+}
+
+void
+ContactEditorForm::OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+ if (keyCode == KEY_ENTER )
+ {
+
+ TableViewItem* pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ String valueString;
+ Panel* pPanel = static_cast<Panel*>(pItem->GetControl(0));
+
+ if (pPanel == null)
+ {
+ return;
+ }
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(1));
+
+ if (pLabelValue == null)
+ {
+ return;
+ }
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(0));
+
+ if (pLabelTitle == null)
+ {
+ return;
+ }
+
+ pPanel->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+ pPanel->Invalidate(true);
+ }
+}
+
+void
+ContactEditorForm::OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+
+}
+
+void
+ContactEditorForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactEditorForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactEditorForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(GROUP_LABEL_TITLE, true) || source.GetName().Equals(GROUP_LABEL_VALUE, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent());
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_THUMBNAIL_BACKGROUND);
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(GROUP_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(GROUP_LABEL_TITLE, true));
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+
+ pPanel->Invalidate(true);
+ }
+
+ if (__isScrollOccurred || source.Contains(currentPosition) == false)
+ {
+ return;
+ }
+}
+
+void
+ContactEditorForm::OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type)
+{
+}
+
+void
+ContactEditorForm::OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos)
+{
+ int scrollDif = scrollPos - __scrolledDistance;
+ if (__isTypeContextMenuShowing)
+ {
+ Point anchorPosition = __pTypeContextMenu->GetAnchorPosition();
+
+ anchorPosition.y -= scrollDif;
+ __pTypeContextMenu->SetAnchorPosition(anchorPosition);
+ __pTypeContextMenu->Show();
+
+ __isTypeContextMenuShowing = false;
+ __groupIndex = -1;
+ __itemIndex = -1;
+ }
+ if (__pDefaultPhoneNumberContextMenu != null)
+ {
+ Point anchorPosition = __pDefaultPhoneNumberContextMenu->GetAnchorPosition();
+
+ anchorPosition.y -= scrollDif;
+ __pDefaultPhoneNumberContextMenu->SetAnchorPosition(anchorPosition);
+ __pDefaultPhoneNumberContextMenu->Show();
+ }
+
+ __scrolledDistance = scrollPos;
+ __origScrolledDistance = scrollPos;
+
+ if (__isScrollOccurred == false)
+ {
+ __isScrollOccurred = true;
+ }
+}
+
+void
+ContactEditorForm::OnScrollStopped (Tizen::Ui::Control &source)
+{
+}
+
+void
+ContactEditorForm::OnExpandableEditAreaLineAdded (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount)
+{
+ __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+}
+
+void
+ContactEditorForm::OnExpandableEditAreaLineRemoved (Tizen::Ui::Controls::ExpandableEditArea &source, int newLineCount)
+{
+ __pTableView->RefreshItem(TABLE_VIEW_NOTE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+}
+
+void
+ContactEditorForm::OnDateChanged(const Tizen::Ui::Control& source, int year, int month, int day)
+{
+ DateTime changedDate;
+
+ changedDate.SetValue(year, month, day);
+ __pPresentationModel->SetBirthday(changedDate);
+ __isContactModified = true;
+}
+
+void
+ContactEditorForm::OnDateChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactEditorForm::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
+{
+ AppLogDebug("ENTER");
+
+ if (__pAppControl != null)
+ {
+ delete __pAppControl;
+ __pAppControl = null;
+ }
+
+ TryReturnVoid(appControlResult == APP_CTRL_RESULT_SUCCEEDED, "[E_FAILURE] The result of an appcontrol is not succeeded.");
+ TryReturnVoid(pExtraData != null, "[E_FAILURE] The extra data is null.");
+
+ const String *pResultString = null;
+ const ArrayList* pResultList = dynamic_cast<const ArrayList*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
+ if (pResultList != null)
+ {
+ pResultString = static_cast<const String*>(pResultList->GetAt(0));
+ }
+ else
+ {
+ pResultString = static_cast<const String*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
+ }
+ TryReturnVoid(pResultString != null, "[E_FAILURE] Unable to get file path.");
+
+ if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
+ {
+ __pPresentationModel->SetThumbnail(*pResultString);
+ __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__pFileEventManager == null)
+ {
+ __pFileEventManager = new (std::nothrow) FileEventManager();
+ __pFileEventManager->Construct(*this);
+ }
+ __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
+ __isContactModified = true;
+ }
+ else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ int width = 0;
+ int height = 0;
+ ImageFormat imageFormat;
+ result r = ImageBuffer::GetImageInfo(*pResultString, imageFormat, width, height);
+
+ if (appControlResult == APP_CTRL_RESULT_FAILED || r != E_SUCCESS)
+ {
+ int modalResult = 0;
+ MessageBox unsupportedMessageBox;
+ unsupportedMessageBox.Construct(L"", ResourceManager::GetString(L"IDS_MP_POP_INVALID_FILE"), MSGBOX_STYLE_NONE, 3000);
+ unsupportedMessageBox.ShowAndWait(modalResult);
+
+ return;
+ }
+
+ __pPresentationModel->SetThumbnail(*pResultString);
+ AppLogDebug("pResultString is %ls", pResultString->GetPointer());
+ __isContactModified = true;
+ __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__pFileEventManager == null)
+ {
+ __pFileEventManager = new (std::nothrow) FileEventManager();
+ __pFileEventManager->Construct(*this);
+ }
+ __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
+ }
+ else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ __pPresentationModel->SetValue(DETAIL_PROPERTY_RINGTONE, *pResultString);
+ __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__pFileEventManager == null)
+ {
+ __pFileEventManager = new (std::nothrow) FileEventManager();
+ __pFileEventManager->Construct(*this);
+ }
+ __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
+
+ __isContactModified = true;
+ }
+ AppLogDebug("EXIT");
+}
+
+result
+ContactEditorForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId)
+{
+ result r = E_SUCCESS;
+
+ String uri;
+ String mimeType;
+ HashMap extraData;
+ extraData.Construct();
+
+ if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
+ {
+ mimeType.Append(INPUT_MIME_TYPE_CAMERA);
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_ALLOW_SWITCH), new (std::nothrow) String(INPUT_VALUE_FALSE));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ mimeType.Append(INPUT_MIME_TYPE_GALLERY);
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_IMAGEVIEWER_MODE), new (std::nothrow) String(INPUT_VALUE_IMAGEVIEWER_TYPE));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ mimeType.Append(INPUT_MIME_TYPE_AUDIO);
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
+ }
+
+ __pAppControl = AppManager::FindAppControlN(appId, operationId);
+
+ if (__pAppControl != null)
+ {
+ r = __pAppControl->Start(&uri, &mimeType, &extraData, this);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to launch app control.", GetErrorMessage(r));
+
+ SetEnabled(false);
+ Invalidate(true);
+ }
+ extraData.RemoveAll(true);
+
+ return r;
+
+CATCH:
+ extraData.RemoveAll(true);
+ delete __pAppControl;
+ __pAppControl = null;
+
+ return r;
+}
+
+void
+ContactEditorForm::OnContactsChanged(void)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (__isSaved == false)
+ {
+ if (__pPresentationModel->IsContactRemoved())
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_VIEW)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+ else
+ {
+ if (__pAppControl != null)
+ {
+ __pAppControl->Stop();
+ }
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ }
+ }
+
+ return;
+ }
+
+ SetFocus();
+
+ if (__isAppControl)
+ {
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_ITEM_ID), new (std::nothrow) String(Integer::ToString(__pPresentationModel->GetContactId())));
+
+ result r = pAppManager->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ UiApp::GetInstance()->Terminate();
+ }
+ else
+ {
+ ArrayList* pArg = null;
+
+ if (__pPresentationModel->GetVcfPath().IsEmpty() == false)
+ {
+ pArg = new (std::nothrow) ArrayList();
+ pArg->Construct();
+
+ String* pViewType = new (std::nothrow) String();
+ String* pValueType = new (std::nothrow) String();
+
+ pViewType->Append(VIEW_TYPE);
+ pViewType->Append(DELIMITER);
+ pViewType->Append(VIEW_TYPE_VALUE_CONTACT);
+
+ pValueType->Append(VIEW_TYPE_CONTACT_ID);
+ pValueType->Append(DELIMITER);
+ pValueType->Append(Integer::ToString(__pPresentationModel->GetContactId()));
+
+ pArg->Add(pViewType);
+ pArg->Add(pValueType);
+ }
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), pArg);
+ }
+
+ __isSaved = false;
+}
+
+void
+ContactEditorForm::OnCategoriesChanged(void)
+{
+ __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+}
+
+void
+ContactEditorForm::OnForeground(void)
+{
+}
+
+void
+ContactEditorForm::OnBackground(void)
+{
+ if (__previousItemIndex != -1 && __previousGroupIndex != -1)
+ {
+ DeleteInputField(__previousGroupIndex, __previousItemIndex);
+ }
+ if (IsEnabled() == false)
+ {
+ result r = SetEnabled(true);
+ AppLogDebug("Form Enabled = %s", GetErrorMessage(r));
+ Invalidate(true);
+ }
+}
+
+void
+ContactEditorForm::OnFileEventOccured(const unsigned long events, const Tizen::Base::String &path, const unsigned int eventId)
+{
+ String thumbnailPath = __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL);
+ if (thumbnailPath.Equals(path, false) == true)
+ {
+ __pPresentationModel->SetThumbnail(L"");
+ __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ else
+ {
+ String ringtonePath = __pPresentationModel->GetValue(DETAIL_PROPERTY_RINGTONE);
+ if (ringtonePath.Equals(ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT"), false) == true )
+ {
+ __pTableView->RefreshItem(TABLE_VIEW_GROUP_RINGTONE_FIELD_INDEX, 2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ }
+}
+
+void
+ContactEditorForm::OnDeviceStateChanged(Tizen::System::DeviceType deviceType, const Tizen::Base::String &state)
+{
+ if (deviceType != DEVICE_TYPE_STORAGE_CARD || __pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL).IsEmpty())
+ {
+ return;
+ }
+
+ if (state.Equals(SD_CARD_UNMOUNTED, false) && File::IsFileExist(__pPresentationModel->GetValue(DETAIL_PROPERTY_THUMBNAIL)) == false)
+ {
+ __pPresentationModel->SetThumbnail(L"");
+ __pTableView->RefreshItem(TABLE_VIEW_THUMBNAIL_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+}
+
+bool ContactEditorForm::ValidateEmailAddress(const Tizen::Base::String& emailAddress)
+{
+ int count = 0;
+ int index = 0;
+ const wchar_t* tmpChar;
+ const wchar_t* tmpDomain;
+ String splChars = L"([<@,;\\:\">])";
+
+ for (tmpChar = emailAddress.GetPointer(), index=0; index < emailAddress.GetLength(); tmpChar++, index++)
+ {
+ if (*tmpChar == '\"' && (tmpChar == emailAddress.GetPointer() || *(tmpChar-1) == '.' || *(tmpChar-1) == '\"'))
+ {
+ while (*++tmpChar)
+ {
+ if (*tmpChar == '\"')
+ {
+ break;
+ }
+ if (*tmpChar == '\\' && (*++tmpChar == ' '))
+ {
+ continue;
+ }
+ if (*tmpChar <= ' ' || *tmpChar >= 127)
+ {
+ return false;
+ }
+ }
+ if (!*tmpChar++)
+ {
+ return false;
+ }
+ if (*tmpChar == '@')
+ {
+ break;
+ }
+ if (*tmpChar != '.')
+ {
+ return false;
+ }
+ continue;
+ }
+ if (*tmpChar == '@')
+ {
+ break;
+ }
+ if (*tmpChar <= ' ' || *tmpChar >= 127)
+ {
+ return false;
+ }
+ if (splChars.IndexOf(*tmpChar, 0, index) != E_OBJ_NOT_FOUND)
+ {
+ return false;
+ }
+ }
+ if (tmpChar == emailAddress.GetPointer() || *(tmpChar-1) == '.')
+ {
+ return false;
+ }
+
+ if (!*(tmpDomain = ++tmpChar))
+ {
+ return false;
+ }
+ do
+ {
+ if (*tmpChar == '.')
+ {
+ if (tmpChar == tmpDomain || *(tmpChar-1) == '.')
+ {
+ return false;
+ }
+ count++;
+ }
+ if (*tmpChar <= ' ' || *tmpChar >= 127)
+ {
+ return false;
+ }
+ if (splChars.IndexOf(*tmpChar, 0, index) != E_OBJ_NOT_FOUND)
+ {
+ return false;
+ }
+ } while (*++tmpChar);
+
+ if (*(tmpChar-1) == '.')
+ {
+ return false;
+ }
+
+ if (count >= 1)
+ {
+ return true;
+ }
+
+ return false;
+}
+
+void
+ContactEditorForm::OnSettingChanged(Tizen::Base::String &key)
+{
+ if(key == L"http://tizen.org/setting/locale.date_time")
+ {
+ DateTime bday;
+ __pPresentationModel->GetBirthday(bday);
+
+ DateTime currentDate;
+ Tizen::System::SystemTime::GetCurrentTime(currentDate);
+
+ __pTableView->RefreshItem(TABLE_VIEW_BIRTHDAY_FIELD_INDEX, 0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+}
+
+bool
+ContactEditorForm::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+ContactEditorForm::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ if (keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
+ {
+ if (__pDiscardChangesPopup && __pDiscardChangesPopup->GetShowState() == true)
+ {
+ HideDiscardChangesPopup();
+ return true;
+ }
+ }
+ return false;
+}
+
+bool
+ContactEditorForm::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+ContactEditorForm::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+void
+ContactEditorForm::ShowDiscardChangesPopup(void)
+{
+ if (__pDiscardChangesPopup == null)
+ {
+ __pDiscardChangesPopup = new (std::nothrow) Popup();
+ __pDiscardChangesPopup->Construct(false, Dimension(W_SAVE_POPUP, H_SAVE_POPUP));
+ __pDiscardChangesPopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pDiscardChangesPopup->GetClientAreaBounds();
+
+ Label* pLabel = new (std::nothrow) Label();
+ pLabel->Construct(Rectangle(X_SAVE_LABEL, Y_SAVE_LABEL, W_SAVE_LABEL, H_SAVE_LABEL), ResourceManager::GetString(L"IDS_PB_POP_DISCARD_CHANGES_Q"));
+ pLabel->SetTextConfig(FONT_SIZE_SAVE_CONFIRM, LABEL_TEXT_STYLE_NORMAL);
+ pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ Button* pSaveButton = new (std::nothrow) Button();
+ pSaveButton->Construct(Rectangle(X_SAVE_LABEL + W_SAVE_BUTTON + W_POPUP_ITEM_GAP, Y_SAVE_BUTTON, W_SAVE_BUTTON, H_SAVE_BUTTON), ResourceManager::GetString(L"IDS_COM_SK_OK"));
+ pSaveButton->SetTextSize(FONT_SIZE_SAVE_BUTTON);
+ pSaveButton->SetActionId(IDA_POPUP_DISCARD_CHANGES_OK);
+ pSaveButton->AddActionEventListener(*this);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle(X_SAVE_LABEL, Y_SAVE_BUTTON, W_SAVE_BUTTON, H_SAVE_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pCancelButton->SetTextSize(FONT_SIZE_SAVE_BUTTON);
+ pCancelButton->SetActionId(IDA_POPUP_DISCARD_CHANGES_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pDiscardChangesPopup->AddControl(pLabel);
+ __pDiscardChangesPopup->AddControl(pSaveButton);
+ __pDiscardChangesPopup->AddControl(pCancelButton);
+ }
+
+ __pDiscardChangesPopup->SetShowState(true);
+ __pDiscardChangesPopup->Show();
+}
+
+void
+ContactEditorForm::HideDiscardChangesPopup(void)
+{
+ __pDiscardChangesPopup->SetShowState(false);
+ Invalidate(true);
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactEntry.cpp
+ * @brief This is the implementation file for the Contacts application entry.
+ */
+
+#include "CtContactsApp.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif // __cplusplus
+
+_EXPORT_ int OspMain(int argc, char *pArgv[]);
+#ifdef _PROFILE
+extern void start_profile (void);
+extern void end_profile (void);
+#else
+#define start_profile()
+#define end_profile()
+#endif
+
+
+/**
+ * The entry function of Tizen application called by the operating system.
+ */
+int
+OspMain(int argc, char *pArgv[])
+{
+ result r = E_SUCCESS;
+
+ AppLog("Contact Application started.");
+ ArrayList* pArgs = new ArrayList();
+ pArgs->Construct();
+ for (int i = 0; i < argc; i++)
+ pArgs->Add(*(new String(pArgv[i])));
+
+ start_profile();
+ r = Tizen::App::UiApp::Execute(ContactsApp::CreateInstance, pArgs);
+ if (IsFailed(r))
+ {
+ AppLogException("Contact Application execution failed-[%s].", GetErrorMessage(r));
+ r &= 0x0000FFFF;
+ }
+ end_profile();
+
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ AppLog("Contact Application finished.");
+
+ return static_cast<int>(r);
+}
+#ifdef __cplusplus
+}
+#endif // __cplusplus
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactListEditorPanel.cpp
+ * @brief This is the implementation file for the ContactListEditorPanel class.
+ */
+
+#include <FSocial.h>
+#include "CtContactListEditorPanel.h"
+#include "CtContactListItem.h"
+#include "CtContactListPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtSearchListItem.h"
+#include "CtSearchListEventListener.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_CHECK_SELECT_ALL_CHECKED = 20;
+static const int IDA_CHECK_SELECT_ALL_UNCHECKED = 21;
+static const int IDA_FOOTER_DELETE = 30;
+static const int IDA_FOOTER_CANCEL = 31;
+static const int IDA_FOOTER_DONE = 32;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 40;
+static const int IDA_POPUP_DELETE_OK = 41;
+static const int IDA_POPUP_DELETE_CANCEL = 42;
+static const int IDA_POPUP_DELETE_PROGRESS_CANCEL = 43;
+
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int W_INITIAL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int H_SELECT_ALL = 112;
+static const int H_SEARCHBAR = 86;
+static const int H_BOTTOM_LABEL = 48;
+static const int H_GROUP_ITEM = 76;
+static const int W_CONTACT_VALUE_POPUP = 688;
+static const int H_CONTACT_VALUE_POPUP = 532;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 338;
+static const int H_CLOSE_BUTTON = 74;
+static const int Y_CLOSE_BUTTON = 358;
+static const int W_CLOSE_BUTTON = 394;
+static const int H_DELETE_PROGRESS_POPUP = 308;
+static const int Y_DELETE_POPUP_TITLE = 20;
+static const int H_DELETE_POPUP_ELEMENT = 60;
+static const int H_DELETE_POPUP_PROGRESS = 34;
+static const int Y_DELETE_POPUP_CANCEL_BUTTON = 214;
+static const int H_DELETE_POPUP_CANCEL_BUTTON = 74;
+static const int W_DELETE_POPUP_CANCEL_BUTTON = 394;
+static const int X_LIST_ITEM_TEXT_MARGIN = 32;
+static const int H_CHECK_LABEL = 72;
+static const int Y_CHECK_LABEL = 20;
+
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+static const int FONT_SIZE_BOTTOM_LABEL = 32;
+static const int FONT_SIZE_DELETE_POPUP_TEXT = 36;
+
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_BG = Color32<68, 68, 68>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_FONT = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_DELETE_POPUP_TEXT = Color32<128, 128, 128>::Value;
+static const unsigned int COLOR_CHECK_LABEL_BG = Color32<220, 218, 211>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_NORMAL = Color32<213, 82, 82>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_PRESSED = Color32<194, 71, 71>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_TEXT = Color32<248, 246, 239>::Value;
+
+static const int LIST_VIEW_GROUP_INDEX_SHIFT = 16;
+static const int LIST_VIEW_MASK = 0xFFFF;
+
+static const wchar_t* IDB_NO_CONTENTS = L"00_Nocontents_text.png";
+
+ContactListEditorPanel::ContactListEditorPanel(void)
+: __pTempContactValueHashMap(null)
+, __pSelectAll(null)
+, __pListView(null)
+, __pSearchListView(null)
+, __pSearchBar(null)
+, __pCheckLabel(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pBottomLabel(null)
+, __pMultipleContactValuePopup(null)
+, __pDeleteProgressPopup(null)
+, __pDeleteConfirmationPopup(null)
+, __pContactValueListEvent(null)
+, __pPresentationModel(null)
+, __pSearchListEvent(null)
+, __isContactRemoved(false)
+, __selectedIndex(-1)
+, __selectedSearchIndex(-1)
+, __deleteGroupIndex(0)
+, __deleteItemIndex(0)
+{
+ __deleteContactTimer.Construct(*this);
+}
+
+ContactListEditorPanel::~ContactListEditorPanel(void)
+{
+}
+
+void
+ContactListEditorPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITIAL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+ContactListEditorPanel::OnInitializing(void)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ FloatRectangle clientBounds = pForm->GetClientAreaBoundsF();
+ SetBounds(FloatRectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = ContactListPresentationModel::GetInstance();
+
+ __pCheckLabel = new (std::nothrow) Label();
+ __pCheckLabel->Construct(Rectangle(0, H_SEARCHBAR + Y_CHECK_LABEL, clientBounds.width, H_CHECK_LABEL), L"");
+ __pCheckLabel->SetBackgroundColor(COLOR_CHECK_LABEL_BG);
+
+ AddControl(__pCheckLabel);
+
+ __pSelectAll = new (std::nothrow) CheckButton();
+ __pSelectAll->Construct(Rectangle(0, H_SEARCHBAR, clientBounds.width, H_SELECT_ALL), CHECK_BUTTON_STYLE_MARK, BACKGROUND_STYLE_NONE);
+ __pSelectAll->SetText(ResourceManager::GetString(L"IDS_COM_BODY_SELECT_ALL"));
+ __pSelectAll->SetActionId(IDA_CHECK_SELECT_ALL_CHECKED, IDA_CHECK_SELECT_ALL_UNCHECKED);
+ __pSelectAll->AddActionEventListener(*this);
+
+ AddControl(__pSelectAll);
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, H_SEARCHBAR + H_SELECT_ALL, clientBounds.width, clientBounds.height - H_SEARCHBAR - H_SELECT_ALL - H_BOTTOM_LABEL), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true);
+ __pListView->SetItemProvider(*this);
+ __pListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pListView->AddFastScrollListener(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+ __pListView->AddTouchEventListener(*this);
+
+ AddControl(__pListView);
+
+ __pSearchBar = new (std::nothrow) SearchBar();
+ __pSearchBar->Construct(Rectangle(0, 0, clientBounds.width, H_SEARCHBAR));
+ __pSearchBar->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_SEARCH"));
+ __pSearchBar->AddSearchBarEventListener(*this);
+ __pSearchBar->AddTextEventListener(*this);
+ __pSearchBar->AddKeypadEventListener(*this);
+ __pSearchBar->SetContentAreaSize(Dimension(0, 0));
+
+ __pSearchListEvent = new (std::nothrow) SearchListEventListener(LIST_ANNEX_STYLE_MARK, __pPresentationModel);
+
+ AddControl(__pSearchBar);
+
+ __pSearchListView = new (std::nothrow) GroupedListView();
+ __pSearchListView->Construct(Rectangle(0, H_SEARCHBAR, clientBounds.width, clientBounds.height - H_SEARCHBAR - H_BOTTOM_LABEL), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pSearchListView->SetItemProvider(*__pSearchListEvent);
+ __pSearchListView->AddGroupedListViewItemEventListener(*this);
+ __pSearchListView->AddTouchEventListener(*this);
+ __pSearchListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pSearchListView->SetShowState(false);
+
+ AddControl(__pSearchListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_CONTENTS);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, clientBounds.width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(__pEmptyCommentLabel);
+
+ __pBottomLabel = new (std::nothrow) Label();
+ __pBottomLabel->Construct(FloatRectangle(0, clientBounds.height - H_BOTTOM_LABEL, clientBounds.width, H_BOTTOM_LABEL),
+ ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + INITIAL_SELECTED_COUNT);
+ __pBottomLabel->SetBackgroundColor(Color(COLOR_BOTTOM_LABEL_BG));
+ __pBottomLabel->SetTextColor(Color(COLOR_BOTTOM_LABEL_FONT));
+ __pBottomLabel->SetTextConfig(FONT_SIZE_BOTTOM_LABEL, LABEL_TEXT_STYLE_BOLD);
+ __pBottomLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ __pBottomLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ AddControl(__pBottomLabel);
+
+ __pTempContactValueHashMap = new (std::nothrow) HashMap();
+ __pTempContactValueHashMap->Construct();
+
+ return E_SUCCESS;
+}
+
+result
+ContactListEditorPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+
+ delete __pSearchListEvent;
+
+ __pTempContactValueHashMap->RemoveAll(true);
+ delete __pTempContactValueHashMap;
+
+ delete __pDeleteProgressPopup;
+ delete __pDeleteConfirmationPopup;
+ delete __pMultipleContactValuePopup;
+
+ return r;
+}
+
+void
+ContactListEditorPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK && pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST_EDITOR));
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_CHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ int index = 0;
+ index |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ index |= itemIndex;
+ Integer hashMapIndex(index);
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ if (__pTempContactValueHashMap->GetValue(hashMapIndex) == null)
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(index)), *(new (std::nothrow) String(phoneNumber)));
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ if (__pTempContactValueHashMap->GetValue(hashMapIndex) == null)
+ {
+ String email = __pPresentationModel->GetDefaultEmail(groupIndex, itemIndex);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(index)), *(new (std::nothrow) String(email)));
+ }
+ }
+ }
+ }
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_UNCHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+ __pTempContactValueHashMap->RemoveAll(true);
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_FOOTER_DELETE:
+ {
+ ShowDeleteConfirmationPopup();
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ ReturnMultipleValues();
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ case IDA_POPUP_DELETE_OK:
+ {
+ ShowDeleteProgressPopup();
+ }
+ break;
+ case IDA_POPUP_DELETE_CANCEL:
+ {
+ HideDeleteConfirmationPopup();
+ }
+ break;
+ case IDA_POPUP_DELETE_PROGRESS_CANCEL:
+ {
+ __deleteContactTimer.Cancel();
+ HideDeleteProgressPopup();
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactListEditorPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ pForm->SetFormMenuEventListener(null);
+
+ __pPresentationModel->InitializeContactList();
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ pFooter->SetShowState(true);
+
+ FooterItem footerItemDone;
+ footerItemDone.Construct(IDA_FOOTER_DONE);
+ footerItemDone.SetText(ResourceManager::GetString(L"IDS_COM_SK_DONE"));
+ pFooter->AddItem(footerItemDone);
+
+ if (__pPresentationModel->GetContactCount() == 0)
+ {
+ pFooter->SetItemEnabled(0, false);
+
+ __pSearchBar->SetShowState(false);
+ __pCheckLabel->SetShowState(false);
+ __pSelectAll->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ __pBottomLabel->SetShowState(false);
+
+ }
+ else
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+
+ pFooter->SetItemEnabled(0, false);
+
+ __pSearchBar->SetShowState(true);
+ __pCheckLabel->SetShowState(true);
+ __pSelectAll->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+
+ __pSelectAll->SetSelected(false);
+ }
+ }
+ else
+ {
+ __pSelectAll->SetSelected(false);
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+
+ FooterItem footerDelete;
+ footerDelete.Construct(IDA_FOOTER_DELETE);
+ footerDelete.SetText(ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+
+ FooterItem footerCancel;
+ footerCancel.Construct(IDA_FOOTER_CANCEL);
+ footerCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pFooter->AddItem(footerCancel);
+ pFooter->AddItem(footerDelete);
+ pFooter->SetItemEnabled(1, false);
+ }
+
+ __pPresentationModel->AddContactChangeListener(*this);
+ pFooter->AddActionEventListener(*this);
+ UpdateBottomLabel();
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+void
+ContactListEditorPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ if (pForm->IsFooterVisible() == false)
+ {
+ pForm->SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+ }
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+
+ __pPresentationModel->RemoveContactChangeListener(*this);
+}
+
+result
+ContactListEditorPanel::RemoveContactList(void)
+{
+ result r = E_FAILURE;
+
+ for (int groupIndex = __deleteGroupIndex; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = __deleteItemIndex; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ r = __pPresentationModel->RemoveContact(groupIndex, itemIndex, false);
+
+ __deleteGroupIndex = groupIndex;
+ __deleteItemIndex = ++itemIndex;
+
+ return r;
+ }
+ }
+ __deleteItemIndex = 0;
+ }
+
+ __deleteGroupIndex = 0;
+ __deleteItemIndex = 0;
+
+ return r;
+}
+
+int
+ContactListEditorPanel::GetCheckedContactCounts(void)
+{
+ int contactCount = 0;
+
+ for (int groupIndex = __deleteGroupIndex; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = __deleteItemIndex; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ contactCount++;
+ }
+ }
+ }
+
+ return contactCount;
+}
+
+Tizen::Ui::Controls::ListItemBase*
+ContactListEditorPanel::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ Bitmap* pThumbnail = null;
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()), LIST_ANNEX_STYLE_MARK);
+
+ __pPresentationModel->GetContactItemInfoN(groupIndex, itemIndex, name, pThumbnail);
+
+ ContactListItem* pCustomElement = new (std::nothrow) ContactListItem(name, pThumbnail);
+ pItem->AddElement(Rectangle(0, 0, itemWidth - (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN), pContactsApp->GetListItemSingleLineHeight()), 0, *(static_cast<ICustomElement *>(pCustomElement)));
+
+ return pItem;
+}
+
+bool
+ContactListEditorPanel::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+int
+ContactListEditorPanel::GetItemCount(int groupIndex)
+{
+ return __pPresentationModel->GetContactCount(groupIndex);
+}
+
+int
+ContactListEditorPanel::GetGroupCount(void)
+{
+ return __pPresentationModel->GetKeyCount();
+}
+
+Tizen::Ui::Controls::GroupItem*
+ContactListEditorPanel::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(__pPresentationModel->GetKey(groupIndex), null);
+
+ return pItem;
+}
+
+bool
+ContactListEditorPanel::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+ContactListEditorPanel::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode)
+{
+ if (mode == SEARCH_BAR_MODE_NORMAL)
+ {
+ int count = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pListView->SetShowState(true);
+ __pListView->Invalidate(true);
+ __pCheckLabel->SetShowState(true);
+ __pSelectAll->SetShowState(true);
+ __pSelectAll->SetSelected(isChecked);
+ __pSearchListView->SetShowState(false);
+ __pPresentationModel->ResetSearchedContactList();
+ __pSearchListView->UpdateList();
+ }
+}
+
+void
+ContactListEditorPanel::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+ContactListEditorPanel::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int mainGroupIndex = groupIndex;
+ int mainItemIndex = itemIndex;
+
+ if (listView.Equals(*__pSearchListView) == true)
+ {
+ __selectedSearchIndex = 0;
+ __selectedSearchIndex |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ __selectedSearchIndex |= itemIndex;
+
+ __pPresentationModel->GetItemMainIndex(itemIndex, mainGroupIndex, mainItemIndex);
+ }
+
+ __selectedIndex = 0;
+ __selectedIndex |= mainGroupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ __selectedIndex |= mainItemIndex;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ IList* pList = null;
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(mainGroupIndex, mainItemIndex);
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ listView.SetItemChecked(groupIndex, itemIndex, false);
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(mainGroupIndex, mainItemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(mainGroupIndex, mainItemIndex);
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ listView.SetItemChecked(groupIndex, itemIndex, false);
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(mainGroupIndex, mainItemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ delete pList;
+ }
+ }
+ }
+ }
+ else
+ {
+ Integer keyIndex(__selectedIndex);
+ __pTempContactValueHashMap->Remove(keyIndex, true);
+ }
+ }
+
+ if (listView.Equals(*__pListView) == true)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ bool isChecked = true;
+ for (int groupIndex = 0; groupIndex < listView.GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = listView.GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+ __pSelectAll->SetSelected(isChecked);
+ }
+ else if (listView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ __pSelectAll->SetSelected(false);
+ }
+ }
+ else if (listView.Equals(*__pSearchListView) == true)
+ {
+ int count = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+ContactListEditorPanel::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+ContactListEditorPanel::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+ContactListEditorPanel::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int groupIndex = (__selectedIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __selectedIndex & LIST_VIEW_MASK;
+
+ IList* pList = null;
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+ }
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(index));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ }
+ delete pList;
+
+ HideContactValuePopup();
+
+ if (__pListView->GetShowState() == true)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ bool isChecked = true;
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAll->SetSelected(isChecked);
+ }
+ else
+ {
+ groupIndex = (__selectedSearchIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ itemIndex = __selectedSearchIndex & LIST_VIEW_MASK;
+ __pSearchListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < count; index++)
+ {
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+ContactListEditorPanel::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+ContactListEditorPanel::OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index)
+{
+ __pListView->ScrollToItem(__pPresentationModel->GetKeyIndex(index), -1);
+ __pListView->Invalidate(false);
+}
+
+void
+ContactListEditorPanel::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+
+ if (searchText.GetLength() != 0)
+ {
+ __pCheckLabel->SetShowState(false);
+ __pSelectAll->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pSearchListView->SetShowState(true);
+
+ __pSearchListView->UpdateList();
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pSearchListView->SetItemChecked(0, index, __pListView->IsItemChecked(groupIndex, itemIndex));
+ }
+
+ __pSearchListView->Invalidate(true);
+ }
+ else
+ {
+ __pCheckLabel->SetShowState(true);
+ __pSelectAll->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAll->SetSelected(isChecked);
+ __pListView->Invalidate(true);
+ }
+}
+
+void
+ContactListEditorPanel::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactListEditorPanel::OnContactsChanged(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ HideContactValuePopup();
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveAllItems();
+
+ FooterItem footerItemDone;
+ footerItemDone.Construct(IDA_FOOTER_DONE);
+ footerItemDone.SetText(ResourceManager::GetString(L"IDS_COM_SK_DONE"));
+ pFooter->AddItem(footerItemDone);
+
+ __pPresentationModel->InitializeContactList();
+
+ if (__pPresentationModel->GetContactCount() == 0)
+ {
+ pFooter->SetItemEnabled(0, false);
+
+ __pSearchBar->SetShowState(false);
+ __pCheckLabel->SetShowState(false);
+ __pSelectAll->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ __pBottomLabel->SetShowState(false);
+ }
+ else
+ {
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ pForm->SetFocus();
+ }
+
+ __pListView->SetShowState(true);
+ __pSelectAll->SetShowState(true);
+ __pCheckLabel->SetShowState(true);
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+ }
+
+ pFooter->SetItemEnabled(0, false);
+
+ __pSearchBar->SetShowState(true);
+ __pSelectAll->SetSelected(false);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ UpdateBottomLabel();
+
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+ }
+ }
+ else if (__isContactRemoved == false)
+ {
+ __pPresentationModel->InitializeContactList();
+ if( __pPresentationModel->GetContactCount() == 0)
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ return;
+ }
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ pForm->SetFocus();
+ }
+ __pSelectAll->SetSelected(false);
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+ }
+ UpdateBottomLabel();
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+ }
+}
+
+void
+ContactListEditorPanel::OnCategoriesChanged(void)
+{
+}
+
+result
+ContactListEditorPanel::UpdateBottomLabel(void)
+{
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ int selectedCount = 0;
+ int fotterItemIndex = 1;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ fotterItemIndex = 0;
+ }
+
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ selectedCount++;
+ }
+ }
+ }
+
+ String selected = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ selected.Append(L" (");
+ selected.Append(selectedCount);
+ selected.Append(L")");
+ __pBottomLabel->SetText(selected);
+ __pBottomLabel->SetPosition(FloatPoint(0, pForm->GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(false);
+
+ Footer* pFooter = pForm->GetFooter();
+
+ if (selectedCount > 0 && __pBottomLabel->GetShowState() == false)
+ {
+ __pBottomLabel->SetShowState(true);
+ __pListView->SetSize(__pListView->GetSize().width, __pListView->GetSize().height - H_BOTTOM_LABEL);
+ __pSearchListView->SetSize(__pSearchListView->GetSize().width, __pSearchListView->GetSize().height - H_BOTTOM_LABEL);
+ pFooter->SetItemEnabled(fotterItemIndex, true);
+ }
+ else if (selectedCount == 0 && __pBottomLabel->GetShowState() == true)
+ {
+ __pBottomLabel->SetShowState(false);
+ __pListView->SetSize(__pListView->GetSize().width, __pListView->GetSize().height + H_BOTTOM_LABEL);
+ __pSearchListView->SetSize(__pSearchListView->GetSize().width, __pSearchListView->GetSize().height + H_BOTTOM_LABEL);
+ pFooter->SetItemEnabled(fotterItemIndex, false);
+ }
+
+ pFooter->Invalidate(true);
+
+ return E_SUCCESS;
+}
+
+void
+ContactListEditorPanel::ShowContactValuePopup(int groupIndex, int itemIndex)
+{
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pMultipleContactValuePopup->SetTitleText(__pPresentationModel->GetName(groupIndex, itemIndex));
+ __pMultipleContactValuePopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListEvent);
+ pListView->AddListViewItemEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+ContactListEditorPanel::HideContactValuePopup(void)
+{
+ if (__pMultipleContactValuePopup != null)
+ {
+ __pMultipleContactValuePopup->SetShowState(false);
+ Invalidate(true);
+ }
+}
+
+void
+ContactListEditorPanel::ShowDeleteConfirmationPopup(void)
+{
+ if (__pDeleteConfirmationPopup == null)
+ {
+ __pDeleteConfirmationPopup = new (std::nothrow) Popup();
+ __pDeleteConfirmationPopup->Construct(false, Dimension(W_DELETE_POPUP, H_DELETE_POPUP));
+ __pDeleteConfirmationPopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pDeleteConfirmationPopup->GetClientAreaBounds();
+
+ Label* pLabel = new (std::nothrow) Label();
+ pLabel->Construct(Rectangle(X_DELETE_LABEL, Y_DELETE_LABEL, W_DELETE_LABEL, H_DELETE_LABEL), ResourceManager::GetString(L"IDS_COM_POP_DELETE_Q"));
+ pLabel->SetTextConfig(FONT_SIZE_DELETE_CONFIRM, LABEL_TEXT_STYLE_NORMAL);
+ pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ Button* pDeleteButton = new (std::nothrow) Button();
+ pDeleteButton->Construct(Rectangle(X_DELETE_LABEL + W_DELETE_BUTTON + W_POPUP_ITEM_GAP, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+ pDeleteButton->SetColor(BUTTON_STATUS_NORMAL, COLOR_DELETE_BUTTON_NORMAL);
+ pDeleteButton->SetColor(BUTTON_STATUS_PRESSED, COLOR_DELETE_BUTTON_PRESSED);
+ pDeleteButton->SetTextColor(COLOR_DELETE_BUTTON_TEXT);
+ pDeleteButton->SetTextSize(FONT_SIZE_DELETE_BUTTON);
+ pDeleteButton->SetActionId(IDA_POPUP_DELETE_OK);
+ pDeleteButton->AddActionEventListener(*this);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle(X_DELETE_LABEL, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pCancelButton->SetTextSize(FONT_SIZE_DELETE_BUTTON);
+ pCancelButton->SetActionId(IDA_POPUP_DELETE_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pDeleteConfirmationPopup->AddControl(pLabel);
+ __pDeleteConfirmationPopup->AddControl(pDeleteButton);
+ __pDeleteConfirmationPopup->AddControl(pCancelButton);
+ }
+
+ __pDeleteConfirmationPopup->SetShowState(true);
+ __pDeleteConfirmationPopup->Show();
+}
+
+void
+ContactListEditorPanel::HideDeleteConfirmationPopup(void)
+{
+ if (__pDeleteConfirmationPopup != null)
+ {
+ __pDeleteConfirmationPopup->SetShowState(false);
+ Invalidate(true);
+ }
+}
+
+void
+ContactListEditorPanel::ShowDeleteProgressPopup(void)
+{
+ if (__pDeleteProgressPopup != null)
+ {
+ delete __pDeleteProgressPopup;
+ }
+
+ __pDeleteProgressPopup = new (std::nothrow) Popup();
+ __pDeleteProgressPopup->Construct(false, Dimension(W_DELETE_POPUP, H_DELETE_PROGRESS_POPUP));
+ __pDeleteProgressPopup->AddWindowEventListener(*this);
+
+ Rectangle clientBounds = __pDeleteProgressPopup->GetClientAreaBounds();
+
+ Label* pLabelTitle = new (std::nothrow) Label();
+ pLabelTitle->Construct(Rectangle(0, Y_DELETE_POPUP_TITLE, clientBounds.width, H_DELETE_POPUP_ELEMENT), ResourceManager::GetString(L"IDS_PB_POP_DELETING_CONTACTS_ING"));
+ pLabelTitle->SetTextColor(COLOR_DELETE_POPUP_TEXT);
+ pLabelTitle->SetTextConfig(FONT_SIZE_DELETE_POPUP_TEXT, LABEL_TEXT_STYLE_BOLD);
+ pLabelTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ __pDeleteProgressPopup->AddControl(pLabelTitle);
+
+ Progress* pProgress = new (std::nothrow) Progress();
+ pProgress->Construct(Rectangle(0, Y_DELETE_POPUP_TITLE + H_DELETE_POPUP_ELEMENT, clientBounds.width, H_DELETE_POPUP_PROGRESS), 0, GetCheckedContactCounts());
+
+ __pDeleteProgressPopup->AddControl(pProgress);
+
+ Label* pLabelPercentage = new (std::nothrow) Label();
+ pLabelPercentage->Construct(Rectangle(0, pProgress->GetY() + pProgress->GetHeight(), clientBounds.width / 2, H_DELETE_POPUP_ELEMENT), Integer::ToString(pProgress->GetPercentComplete()) + L"%");
+ pLabelPercentage->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pLabelPercentage->SetTextColor(COLOR_DELETE_POPUP_TEXT);
+ pLabelPercentage->SetTextConfig(FONT_SIZE_DELETE_POPUP_TEXT, LABEL_TEXT_STYLE_NORMAL);
+
+ __pDeleteProgressPopup->AddControl(pLabelPercentage);
+
+ String currentOfTotal(Integer::ToString(pProgress->GetValue()) + L" / " + Integer::ToString(GetCheckedContactCounts()));
+ Label* pLabelTotal = new (std::nothrow) Label();
+ pLabelTotal->Construct(Rectangle(clientBounds.width / 2, pLabelPercentage->GetY(), clientBounds.width / 2, H_DELETE_POPUP_ELEMENT), currentOfTotal);
+ pLabelTotal->SetTextHorizontalAlignment(ALIGNMENT_RIGHT);
+ pLabelTotal->SetTextColor(COLOR_DELETE_POPUP_TEXT);
+ pLabelTotal->SetTextConfig(FONT_SIZE_DELETE_POPUP_TEXT, LABEL_TEXT_STYLE_NORMAL);
+
+ __pDeleteProgressPopup->AddControl(pLabelTotal);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((clientBounds.width - W_DELETE_POPUP_CANCEL_BUTTON) / 2, Y_DELETE_POPUP_CANCEL_BUTTON, W_DELETE_POPUP_CANCEL_BUTTON, H_DELETE_POPUP_CANCEL_BUTTON));
+ pCancelButton->SetText(ResourceManager::GetString("IDS_PB_SK_CANCEL"));
+ pCancelButton->SetActionId(IDA_POPUP_DELETE_PROGRESS_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pDeleteProgressPopup->AddControl(pCancelButton);
+ __pDeleteProgressPopup->Show();
+
+ __isContactRemoved = true;
+}
+
+void
+ContactListEditorPanel::HideDeleteProgressPopup(void)
+{
+ if (__pDeleteProgressPopup != null)
+ {
+ delete __pDeleteProgressPopup;
+ __pDeleteProgressPopup = null;
+ }
+ __isContactRemoved = false;
+
+ __pListView->UpdateList();
+ Invalidate(true);
+}
+
+void
+ContactListEditorPanel::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+ result r = pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+ AppLogDebug("[%s] The return result from SendAppControlResult(), AppCtrlResult value : %d.", GetErrorMessage(r), appCtrlResult);
+
+ UiApp::GetInstance()->Terminate();
+}
+
+void
+ContactListEditorPanel::ReturnMultipleValues(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ pValueList->Add(new (std::nothrow) String(*pValue));
+ }
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_PHONE), pValueList);
+
+ delete pMapEnum;
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ pValueList->Add(new (std::nothrow) String(*pValue));
+ }
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_EMAIL), pValueList);
+
+ delete pMapEnum;
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_ITEM_ID)
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ String contactId;
+ contactId.Append(__pPresentationModel->GetContactId(groupIndex, itemIndex));
+ pValueList->Add(new (std::nothrow) String(contactId));
+ }
+ }
+ }
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_ITEM_ID), pValueList);
+ }
+ else
+ {
+ delete pValueList;
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ }
+}
+
+void
+ContactListEditorPanel::ReturnResultFailed(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, null);
+}
+
+void
+ContactListEditorPanel::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactListEditorPanel::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, pForm->GetClientAreaBounds().width, pForm->GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL));
+ __pBottomLabel->SetPosition(FloatPoint(0, pForm->GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(true);
+ }
+ else
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, pForm->GetClientAreaBounds().width, pForm->GetClientAreaBounds().height - H_SEARCHBAR));
+ }
+}
+
+void
+ContactListEditorPanel::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, pForm->GetClientAreaBounds().width, pForm->GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL));
+ __pBottomLabel->SetPosition(FloatPoint(0, pForm->GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(true);
+ if (SceneManager::GetInstance()->GetCurrentSceneId() == IDSCN_CONTACT_LIST_EDITOR)
+ {
+ UpdateBottomLabel();
+ }
+ }
+ else
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, pForm->GetClientAreaBounds().width, pForm->GetClientAreaBounds().height - H_SEARCHBAR));
+ }
+}
+
+void
+ContactListEditorPanel::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
+{
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, pForm->GetClientAreaBounds().width, pForm->GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL));
+ __pBottomLabel->SetPosition(FloatPoint(0, pForm->GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(true);
+ }
+ else
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, pForm->GetClientAreaBounds().width, pForm->GetClientAreaBounds().height - H_SEARCHBAR));
+ }
+}
+
+void
+ContactListEditorPanel::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+ if (keypadAction == KEYPAD_ACTION_SEARCH)
+ {
+ __pSearchBar->HideKeypad();
+ }
+}
+
+void
+ContactListEditorPanel::OnWindowActivated (const Tizen::Ui::Window &source)
+{
+ __deleteContactTimer.Start(1);
+}
+
+void
+ContactListEditorPanel::OnWindowDeactivated (const Tizen::Ui::Window &source)
+{
+}
+
+void
+ContactListEditorPanel::OnTimerExpired(Tizen::Base::Runtime::Timer &timer)
+{
+ Progress* pProgress = static_cast<Progress *>(__pDeleteProgressPopup->GetControl(1));
+
+ pProgress->SetValue(pProgress->GetValue() + 1);
+ pProgress->Invalidate(false);
+
+ Label* pLabelPercentage = static_cast<Label *>(__pDeleteProgressPopup->GetControl(2));
+
+ pLabelPercentage->SetText(Integer::ToString(pProgress->GetPercentComplete()) + L"%");
+ pLabelPercentage->Invalidate(false);
+
+ Label* pLabelTotal = static_cast<Label *>(__pDeleteProgressPopup->GetControl(3));
+
+ String currentOfTotal = pLabelTotal->GetText();
+ currentOfTotal.Remove(0, Integer::ToString(pProgress->GetValue() - 1).GetLength());
+ currentOfTotal.Insert(Integer::ToString(pProgress->GetValue()), 0);
+ pLabelTotal->SetText(currentOfTotal);
+ pLabelTotal->Invalidate(false);
+
+ if (RemoveContactList() == E_SUCCESS)
+ {
+ __deleteContactTimer.Start(1);
+ }
+ else
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+}
+
+void
+ContactListEditorPanel::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ GroupedListView* pList = static_cast<GroupedListView*>(&const_cast<Control&>(source));
+ if (pList != null)
+ {
+ pList->SetFocus();
+ }
+}
+
+void
+ContactListEditorPanel::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListEditorPanel::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListEditorPanel::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListEditorPanel::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+bool
+ContactListEditorPanel::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+ContactListEditorPanel::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ if (keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
+ {
+ if (__pDeleteConfirmationPopup && __pDeleteConfirmationPopup->GetShowState() == true)
+ {
+ HideDeleteConfirmationPopup();
+ return true;
+ }
+ if (__pMultipleContactValuePopup && __pMultipleContactValuePopup->GetShowState() == true)
+ {
+ HideContactValuePopup();
+ return true;
+ }
+ }
+ return false;
+}
+
+bool
+ContactListEditorPanel::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+ContactListEditorPanel::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactListItem.cpp
+ * @brief This is the implementation file for the ContactListItem class.
+ */
+
+#include "CtContactListItem.h"
+#include "CtContactsApp.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+using namespace Tizen::Ui::Controls;
+
+static const int W_THUMBNAIL_AREA = 134;
+static const int W_THUMBNAIL = 108;
+static const int H_THUMBNAIL = 108;
+static const int X_TEXT = 26;
+static const int Y_TEXT = 16;
+static const int H_TEXT = 80;
+
+static const unsigned int COLOR_ITEM_NORMAL = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_ITEM_PRESSED = Color32<255, 255, 255>::Value;
+
+ContactListItem::ContactListItem(const Tizen::Base::String name, Tizen::Graphics::Bitmap* pThumbnail)
+: __name(name)
+, __pThumbnail(pThumbnail)
+{
+}
+
+ContactListItem::~ContactListItem(void)
+{
+ delete __pThumbnail;
+}
+
+bool
+ContactListItem::OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus)
+{
+ result r = E_SUCCESS;
+ bool ret = true;
+ TextElement* pNameElement = null;
+ EnrichedText* pEnrichedText = null;
+ Font font;
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ font.Construct(FONT_STYLE_PLAIN, pContactsApp->GetFontSize());
+ canvas.SetFont(font);
+
+ if (__name.IsEmpty())
+ {
+ return false;
+ }
+
+ pNameElement = new (std::nothrow) TextElement();
+ pNameElement->Construct(__name);
+ pNameElement->SetFont(font);
+
+ if (itemStatus == LIST_ITEM_DRAWING_STATUS_NORMAL)
+ {
+ pNameElement->SetTextColor(COLOR_ITEM_NORMAL);
+ }
+ else if (itemStatus == LIST_ITEM_DRAWING_STATUS_PRESSED)
+ {
+ pNameElement->SetTextColor(COLOR_ITEM_PRESSED);
+ }
+
+ pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(Dimension(rect.width - (rect.x + X_TEXT + W_THUMBNAIL_AREA), H_TEXT + pContactsApp->GetFontHeightOffset()));
+ pEnrichedText->SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ pEnrichedText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
+ pEnrichedText->SetTextAbbreviationEnabled(true);
+ pEnrichedText->Add(*pNameElement);
+
+ r = canvas.DrawText(Point(rect.x + X_TEXT, Y_TEXT), *pEnrichedText);
+ TryCatch(r == E_SUCCESS, ret = false, "Unable to draw text.");
+
+ if (__pThumbnail != null)
+ {
+ r = canvas.DrawBitmap(Rectangle(rect.width - (W_THUMBNAIL_AREA), (pContactsApp->GetListItemSingleLineHeight() - H_THUMBNAIL)/2, W_THUMBNAIL, H_THUMBNAIL), *__pThumbnail);
+ TryCatch(r == E_SUCCESS, ret = false, "Unable to draw a thumbnail.");
+ }
+
+CATCH:
+
+ pEnrichedText->RemoveAllTextElements(true);
+ delete pEnrichedText;
+
+ return ret;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactListPanel.cpp
+ * @brief This is the implementation file for the ContactListPanel class.
+ */
+
+#include <FSocial.h>
+#include "CtAccountListItemProvider.h"
+#include "CtContactListItem.h"
+#include "CtContactListPanel.h"
+#include "CtContactListPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtSearchListEventListener.h"
+#include "CtSearchListItem.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+
+
+static const int IDA_FOOTER_CREATE = 1;
+static const int IDA_MORE_DELETE = 2;
+static const int IDA_MORE_SETTING = 3;
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_POPUP_DELETE_OK = 30;
+static const int IDA_POPUP_DELETE_CANCEL = 31;
+static const int IDA_POPUP_VIEW_OK = 32;
+static const int IDA_POPUP_VIEW_CANCEL = 33;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 34;
+static const int IDA_LIST_ELEMENT_DELETE = 40;
+static const int IDA_LIST_ELEMENT_CALL = 41;
+static const int IDA_LIST_ELEMENT_MESSAGE = 42;
+static const int IDA_LIST_ELEMENT_VIDEO_CALL = 43;
+
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int H_GROUP_ITEM = 76;
+static const int W_INITIAL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int H_SEARCHBAR = 86;
+static const int W_ACCOUNT_POPUP = 600;
+static const int H_ACCOUNT_POPUP = 700;
+static const int H_ACCOUNT_POPUP_BUTTON = 80;
+static const int W_CONTACT_VALUE_POPUP = 688;
+static const int H_CONTACT_VALUE_POPUP = 532;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 338;
+static const int H_CLOSE_BUTTON = 74;
+static const int Y_CLOSE_BUTTON = 358;
+static const int W_CLOSE_BUTTON = 394;
+
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_NORMAL = Color32<213, 82, 82>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_PRESSED = Color32<194, 71, 71>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_TEXT = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_DELETE_ELEMENT_NORMAL = Color32<208, 82, 82>::Value;
+static const unsigned int COLOR_DELETE_ELEMENT_PRESSED = Color32<194, 71, 71>::Value;
+static const unsigned int COLOR_DELETE_ELEMENT_TEXT = Color32<248, 246, 239>::Value;
+
+static const int LIST_VIEW_GROUP_INDEX_SHIFT = 16;
+static const int LIST_VIEW_MASK = 0xFFFF;
+
+static const wchar_t* IDB_NO_CONTENTS = L"00_Nocontents_text.png";
+
+static const wchar_t* INPUT_KEY_MESSAGE_TYPE = L"http://tizen.org/appcontrol/data/message/type";
+static const wchar_t* INPUT_KEY_CALL_TYPE = L"http://tizen.org/appcontrol/data/call/type";
+static const wchar_t* INPUT_KEY_MESSAGE_TO = L"http://tizen.org/appcontrol/data/to";
+static const wchar_t* INPUT_TYPE_VIDEO = L"video";
+static const wchar_t* INPUT_TYPE_VOICE = L"voice";
+static const wchar_t* INPUT_TYPE_SMS = L"sms";
+static const wchar_t* INPUT_URI_TEL = L"tel:";
+
+ContactListPanel::ContactListPanel(void)
+: __pAppControl(null)
+, __pArgList(null)
+, __pListView(null)
+, __pSearchListView(null)
+, __pAccountPopup(null)
+, __pDeletePopup(null)
+, __pMultipleContactValuePopup(null)
+, __pSearchBar(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pOptionMenu(null)
+, __pAccountListEvent(null)
+, __pPresentationModel(null)
+, __pContactValueListEvent(null)
+, __pSearchListEvent(null)
+, __sweptItemIndex(0)
+, __selectedIndex(-1)
+{
+}
+
+ContactListPanel::~ContactListPanel(void)
+{
+}
+
+void
+ContactListPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITIAL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+ContactListPanel::OnInitializing(void)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Rectangle clientBounds = pForm->GetClientAreaBounds();
+ SetBounds(Rectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = ContactListPresentationModel::GetInstance();
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, H_SEARCHBAR, clientBounds.width, clientBounds.height - H_SEARCHBAR), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true);
+ __pListView->SetItemProvider(*this);
+ __pListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pListView->AddFastScrollListener(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+ __pListView->AddTouchEventListener(*this);
+
+ AddControl(__pListView);
+
+ __pSearchBar = new (std::nothrow) SearchBar();
+ __pSearchBar->Construct(Rectangle(0, 0, clientBounds.width, H_SEARCHBAR));
+ __pSearchBar->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_SEARCH"));
+ __pSearchBar->AddSearchBarEventListener(*this);
+ __pSearchBar->AddFocusEventListener(*this);
+ __pSearchBar->AddTextEventListener(*this);
+ __pSearchBar->AddKeypadEventListener(*this);
+ __pSearchBar->SetContentAreaSize(Dimension(0, 0));
+
+ __pSearchListEvent = new (std::nothrow) SearchListEventListener(LIST_ANNEX_STYLE_NORMAL, __pPresentationModel);
+
+ AddControl(__pSearchBar);
+
+ __pSearchListView = new (std::nothrow) GroupedListView();
+ __pSearchListView->Construct(Rectangle(0, H_SEARCHBAR, clientBounds.width, clientBounds.height - H_SEARCHBAR), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pSearchListView->SetItemProvider(*__pSearchListEvent);
+ __pSearchListView->AddGroupedListViewItemEventListener(*this);
+ __pSearchListView->AddTouchEventListener(*this);
+ __pSearchListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pSearchListView->SetShowState(false);
+ AddControl(__pSearchListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_CONTENTS);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, clientBounds.width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(__pEmptyCommentLabel);
+
+ __pOptionMenu = new (std::nothrow) OptionMenu();
+ __pOptionMenu->Construct();
+ __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_COM_SK_DELETE"), IDA_MORE_DELETE);
+ __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_SETTINGS"), IDA_MORE_SETTING);
+ __pOptionMenu->AddActionEventListener(*this);
+ __pOptionMenu->SetShowState(false);
+ return E_SUCCESS;
+}
+
+result
+ContactListPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+
+ if (__pArgList != null)
+ {
+ __pArgList->RemoveAll(true);
+ delete __pArgList;
+ }
+ if (__pDeletePopup != null)
+ {
+ delete __pDeletePopup;
+ }
+ delete __pAppControl;
+ delete __pAccountPopup;
+ delete __pSearchListEvent;
+ delete __pAccountListEvent;
+ delete __pOptionMenu;
+ delete __pMultipleContactValuePopup;
+
+ return r;
+}
+
+void
+ContactListPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ if (__pListView->IsEnabled() == false)
+ {
+ __pListView->SetEnabled(true);
+ }
+
+ if (__pSearchListView->IsEnabled() == false)
+ {
+ __pSearchListView->SetEnabled(true);
+ }
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ if (__pListView->IsEnabled() == false)
+ {
+ __pListView->SetEnabled(true);
+ }
+
+ if (__pSearchListView->IsEnabled() == false)
+ {
+ __pSearchListView->SetEnabled(true);
+ }
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ }
+ break;
+ case IDA_FOOTER_CREATE:
+ {
+ if (__pListView->IsEnabled() == false)
+ {
+ __pListView->SetEnabled(true);
+ }
+
+ if (__pSearchListView->IsEnabled() == false)
+ {
+ __pSearchListView->SetEnabled(true);
+ }
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ }
+ break;
+ case IDA_MORE_DELETE:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST_EDITOR));
+ }
+ break;
+ case IDA_MORE_SETTING:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_SETTINGS, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ }
+ break;
+ case IDA_POPUP_DELETE_OK:
+ {
+ int groupIndex = (__sweptItemIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __sweptItemIndex & LIST_VIEW_MASK;
+
+ __pPresentationModel->RemoveContact(groupIndex, itemIndex);
+ HideDeletePopup();
+ }
+ break;
+ case IDA_POPUP_DELETE_CANCEL:
+ {
+ HideDeletePopup();
+ }
+ break;
+ case IDA_POPUP_VIEW_OK:
+ {
+
+ }
+ break;
+ case IDA_POPUP_VIEW_CANCEL:
+ {
+ HideAccountPopup();
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactListPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Form *pEventForm = const_cast<Form*>(pForm);
+ pEventForm->SetFormMenuEventListener(this);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->AddActionEventListener(*this);
+ pForm->SetFormMenuEventListener(null);
+
+ __pPresentationModel->InitializeContactList();
+
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK || pContactsApp->GetOperationId() == OPERATION_ID_EDIT)
+ {
+ pFooter->SetShowState(false);
+ SetBounds(Rectangle(0, 0, pForm->GetClientAreaBounds().width, pForm->GetClientAreaBounds().height));
+ __pListView->SetSize(__pListView->GetWidth(), pForm->GetClientAreaBounds().height - __pSearchBar->GetHeight());
+ __pSearchListView->SetSize(__pSearchListView->GetWidth(), pForm->GetClientAreaBounds().height - __pSearchBar->GetHeight());
+ Invalidate(true);
+
+ if (__pPresentationModel->GetContactCount() == 0)
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ else
+ {
+ __pSearchBar->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ }
+
+ if (pArgs != null)
+ {
+ __pArgList = new (std::nothrow) ArrayList();
+ __pArgList->Construct();
+
+ for (int i = 0; i < pArgs->GetCount(); i++)
+ {
+ __pArgList->Add(new (std::nothrow) String(*static_cast<String*>(pArgs->GetAt(i))));
+ }
+ }
+ }
+ else
+ {
+ FooterItem footerItemCreate;
+ footerItemCreate.Construct(IDA_FOOTER_CREATE);
+ footerItemCreate.SetText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+
+ int count = pFooter->GetItemCount();
+ if (count == 0)
+ {
+ pFooter->AddItem(footerItemCreate);
+ }
+ else if (count == 1)
+ {
+ pFooter->SetItemAt(0, footerItemCreate);
+ }
+ else
+ {
+ pFooter->SetItemAt(0, footerItemCreate);
+ pFooter->RemoveItemAt(1);
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ }
+ pFooter->SetItemEnabled(0,true);
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ pForm->SetFormMenuEventListener(this);
+ __pSearchBar->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT && __pSearchBar->GetTextLength() != 0)
+ {
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+ __pSearchListView->UpdateList();
+ __pListView->SetShowState(false);
+ __pSearchListView->SetShowState(true);
+ }
+ else
+ {
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+ }
+ }
+ else
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pSearchListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+ }
+
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ SettingInfo::AddSettingEventListener(*this);
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+void
+ContactListPanel::OnSettingChanged(Tizen::Base::String &key)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TryReturnVoid(pContactsApp != null, "Unable to get ContactsApp instance.");
+
+ if (key.Equals(SETTING_KEY_NAME_ORDER, false) == true)
+ {
+ __pPresentationModel->InitializeContactList();
+
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ if (searchText.IsEmpty() == false)
+ {
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+ __pSearchListView->UpdateList();
+ }
+ }
+ }
+}
+
+void
+ContactListPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Form *pEventForm = const_cast<Form*>(pForm);
+ pEventForm->SetFormMenuEventListener(null);
+
+ if (pForm->IsFooterVisible() == false)
+ {
+ pForm->SetActionBarsVisible(FORM_ACTION_BAR_FOOTER, true);
+ }
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+ SettingInfo::RemoveSettingEventListener(*this);
+
+ delete __pAppControl;
+ __pAppControl = null;
+}
+
+int
+ContactListPanel::GetGroupCount(void)
+{
+ return __pPresentationModel->GetKeyCount();
+}
+
+int
+ContactListPanel::GetItemCount(int groupIndex)
+{
+ return __pPresentationModel->GetContactCount(groupIndex);
+}
+
+Tizen::Ui::Controls::ListItemBase*
+ContactListPanel::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ Bitmap* pThumbnail = null;
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()), LIST_ANNEX_STYLE_NORMAL);
+
+ __pPresentationModel->GetContactItemInfoN(groupIndex, itemIndex, name, pThumbnail);
+
+ ContactListItem* pCustomElement = new (std::nothrow) ContactListItem(name, pThumbnail);
+ pItem->AddElement(Rectangle(0, 0, itemWidth, pContactsApp->GetListItemSingleLineHeight()), 0, *(static_cast<ICustomElement *>(pCustomElement)));
+
+ if (pContactsApp->GetOperationId().IsEmpty() == false)
+ {
+ return pItem;
+ }
+
+ bool isCallEnabled = true;
+ bool isMessageEnabled = true;
+ if (__pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex).IsEmpty())
+ {
+ isCallEnabled = false;
+ }
+
+ if ((__pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex).IsEmpty()) && (__pPresentationModel->GetDefaultEmail(groupIndex, itemIndex).IsEmpty()))
+ {
+ isMessageEnabled = false;
+ }
+
+ ListContextItem* pItemContext = new (std::nothrow) ListContextItem();
+ pItemContext->Construct();
+ pItemContext->AddElement(IDA_LIST_ELEMENT_CALL, ResourceManager::GetString(L"IDS_COM_BODY_CALL"), isCallEnabled);
+ pItemContext->AddElement(IDA_LIST_ELEMENT_MESSAGE, ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), isMessageEnabled);
+#if __SUPPORT_VIDEO_CALL
+ pItemContext->AddElement(IDA_LIST_ELEMENT_VIDEO_CALL, ResourceManager::GetString(L"IDS_COM_BODY_VIDEO_CALL"), isCallEnabled);
+#endif
+ pItemContext->AddElement(IDA_LIST_ELEMENT_DELETE, ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+ pItemContext->SetElementBackgroundColor(IDA_LIST_ELEMENT_DELETE, LIST_CONTEXT_ITEM_ELEMENT_STATUS_NORMAL, COLOR_DELETE_ELEMENT_NORMAL);
+ pItemContext->SetElementBackgroundColor(IDA_LIST_ELEMENT_DELETE, LIST_CONTEXT_ITEM_ELEMENT_STATUS_PRESSED, COLOR_DELETE_ELEMENT_PRESSED);
+ pItemContext->SetElementTextColor(IDA_LIST_ELEMENT_DELETE, LIST_CONTEXT_ITEM_ELEMENT_STATUS_NORMAL, COLOR_DELETE_ELEMENT_TEXT);
+
+ pItem->SetContextItem(pItemContext);
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+ContactListPanel::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(__pPresentationModel->GetKey(groupIndex), null);
+
+ return pItem;
+}
+
+bool
+ContactListPanel::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ CustomItem* pCustomItem = static_cast<CustomItem *>(pItem);
+ pCustomItem->RemoveAllElements();
+
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+ContactListPanel::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+ContactListPanel::OnContactsChanged(void)
+{
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ HideContactValuePopup();
+ HideDeletePopup();
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ pForm->SetFocus();
+ }
+
+ __pPresentationModel->InitializeContactList();
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ int groupIndex;
+ int itemIndex;
+
+ pForm->SetFormMenuEventListener(this);
+ __pSearchBar->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+
+ __pListView->GetTopDrawnItemIndex(groupIndex, itemIndex);
+ __pListView->UpdateList();
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->Invalidate(true);
+ __pListView->ScrollToItem(groupIndex, itemIndex);
+ }
+ else
+ {
+ pForm->SetFormMenuEventListener(null);
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+}
+
+void
+ContactListPanel::OnCategoriesChanged(void)
+{
+}
+
+void
+ContactListPanel::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode)
+{
+ if (mode == SEARCH_BAR_MODE_NORMAL)
+ {
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+ __pPresentationModel->ResetSearchedContactList();
+ __pSearchListView->UpdateList();
+ __pListView->UpdateList();
+ }
+ else
+ {
+ //[TODO] to restore swept item.
+ // need to be fixed with better idea..
+ Rectangle bounds = __pListView->GetBounds();
+ __pListView->SetBounds(bounds.x, bounds.y, bounds.width, bounds.height + 1);
+ __pListView->Invalidate(true);
+ __pListView->SetBounds(bounds);
+ }
+}
+
+void
+ContactListPanel::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+ int index = 0;
+
+ if (listView.Equals(*__pSearchListView) == true)
+ {
+ __pPresentationModel->GetItemMainIndex(itemIndex, groupIndex, itemIndex);
+ }
+
+ index |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ index |= itemIndex;
+
+ __sweptItemIndex = index;
+
+ switch (elementId)
+ {
+ case IDA_LIST_ELEMENT_DELETE:
+ {
+ ShowDeletePopup();
+ }
+ break;
+ case IDA_LIST_ELEMENT_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VOICE);
+ }
+ break;
+ case IDA_LIST_ELEMENT_MESSAGE:
+ {
+ if (!(__pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex).IsEmpty()))
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ int index = -1;
+ phoneNumber.IndexOf(DELIMITER_SEMICOLON, 0, index);
+ if (index >= 0)
+ {
+ phoneNumber.SubString(0, index, phoneNumber);
+ }
+ index = -1;
+ phoneNumber.IndexOf(DELIMITER_COMMA, 0, index);
+ if (index >= 0)
+ {
+ phoneNumber.SubString(0, index, phoneNumber);
+ }
+ LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, phoneNumber, INPUT_TYPE_SMS);
+ }
+ else if (!(__pPresentationModel->GetDefaultEmail(groupIndex, itemIndex).IsEmpty()))
+ {
+ String emailId = __pPresentationModel->GetDefaultEmail(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, emailId, null);
+ }
+ }
+ break;
+ case IDA_LIST_ELEMENT_VIDEO_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VIDEO);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactListPanel::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (listView.Equals(*__pSearchListView) == true)
+ {
+ __pPresentationModel->GetItemMainIndex(itemIndex, groupIndex, itemIndex);
+ }
+
+ __selectedIndex = 0;
+ __selectedIndex |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ __selectedIndex |= itemIndex;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ IList* pList = null;
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+
+ if (pList == null)
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(groupIndex, itemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ AddContactValueOnList(pList, CONTACT_KEY_PHONE, 0, pReturnValue);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+
+ if (pList == null)
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(groupIndex, itemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ AddContactValueOnList(pList, CONTACT_KEY_EMAIL, 0, pReturnValue);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_ITEM_ID)
+ {
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+ RecordId contactId = __pPresentationModel->GetContactId(groupIndex, itemIndex);
+ if (contactId == INVALID_RECORD_ID)
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ String contactId;
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ contactId.Append(__pPresentationModel->GetContactId(groupIndex, itemIndex));
+ pValueList->Add(new (std::nothrow) String(contactId));
+
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_ITEM_ID), pValueList);
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_VCARD)
+ {
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+ String vCardPath = __pPresentationModel->ExportToVcard(groupIndex, itemIndex);
+
+ if (vCardPath.IsEmpty())
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_PATH), new (std::nothrow) String(vCardPath));
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+ }
+
+ delete pReturnValue;
+ }
+ else if (pContactsApp->GetOperationId() == OPERATION_ID_EDIT)
+ {
+ ArrayList* pArgList = null;
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (__pArgList != null)
+ {
+ pArgList = new (std::nothrow) ArrayList();
+ pArgList->Construct();
+
+ for (int i = 0; i < __pArgList->GetCount(); i++)
+ {
+ pArgList->Add(new (std::nothrow) String(*static_cast<String*>(__pArgList->GetAt(i))));
+ }
+
+ String* pContactId = new (std::nothrow) String(RETURN_TYPE_ITEM_ID);
+ pContactId->Append(DELIMITER);
+ pContactId->Append(__pPresentationModel->GetContactId(groupIndex, itemIndex));
+ pArgList->InsertAt(pContactId, 0);
+
+ __pArgList->RemoveAll(true);
+ }
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pArgList);
+ }
+ else
+ {
+ ArrayList* pContactId = new (std::nothrow) ArrayList();
+ pContactId->Construct();
+
+ pContactId->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId(groupIndex, itemIndex))));
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_DETAILS, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pContactId);
+ }
+}
+
+void
+ContactListPanel::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+ContactListPanel::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+
+}
+
+void
+ContactListPanel::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ IList* pList = null;
+ int groupIndex = (__selectedIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __selectedIndex & LIST_VIEW_MASK;
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+ if (pList == null)
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ AddContactValueOnList(pList, CONTACT_KEY_PHONE, index, pReturnValue);
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+ if (pList == null)
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ AddContactValueOnList(pList, CONTACT_KEY_EMAIL, index, pReturnValue);
+ }
+ }
+ delete pList;
+
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+}
+
+void
+ContactListPanel::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+
+}
+
+void
+ContactListPanel::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+
+ if (searchText.GetLength() != 0)
+ {
+ __pSearchListView->SetShowState(true);
+ __pListView->SetShowState(false);
+ }
+ else
+ {
+ __pSearchListView->SetShowState(false);
+ __pListView->SetShowState(true);
+ }
+
+ __pSearchListView->UpdateList();
+}
+
+void
+ContactListPanel::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactListPanel::ShowDeletePopup(void)
+{
+ if (__pDeletePopup == null)
+ {
+ __pDeletePopup = new (std::nothrow) Popup();
+ __pDeletePopup->Construct(false, Dimension(W_DELETE_POPUP, H_DELETE_POPUP));
+ __pDeletePopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pDeletePopup->GetClientAreaBounds();
+
+ Label* pLabel = new (std::nothrow) Label();
+ pLabel->Construct(Rectangle(X_DELETE_LABEL, Y_DELETE_LABEL, W_DELETE_LABEL, H_DELETE_LABEL), ResourceManager::GetString(L"IDS_COM_POP_DELETE_Q"));
+ pLabel->SetTextConfig(FONT_SIZE_DELETE_CONFIRM, LABEL_TEXT_STYLE_NORMAL);
+ pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ Button* pDeleteButton = new (std::nothrow) Button();
+ pDeleteButton->Construct(Rectangle(X_DELETE_LABEL + W_DELETE_BUTTON + W_POPUP_ITEM_GAP, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+ pDeleteButton->SetColor(BUTTON_STATUS_NORMAL, COLOR_DELETE_BUTTON_NORMAL);
+ pDeleteButton->SetColor(BUTTON_STATUS_PRESSED, COLOR_DELETE_BUTTON_PRESSED);
+ pDeleteButton->SetTextColor(COLOR_DELETE_BUTTON_TEXT);
+ pDeleteButton->SetTextSize(FONT_SIZE_DELETE_BUTTON);
+ pDeleteButton->SetActionId(IDA_POPUP_DELETE_OK);
+ pDeleteButton->AddActionEventListener(*this);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle(X_DELETE_LABEL, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pCancelButton->SetTextSize(FONT_SIZE_DELETE_BUTTON);
+ pCancelButton->SetActionId(IDA_POPUP_DELETE_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pDeletePopup->AddControl(pLabel);
+ __pDeletePopup->AddControl(pDeleteButton);
+ __pDeletePopup->AddControl(pCancelButton);
+ }
+
+ __pDeletePopup->SetShowState(true);
+ __pDeletePopup->Show();
+}
+
+void
+ContactListPanel::HideDeletePopup(void)
+{
+ if (__pDeletePopup != null)
+ {
+ __pDeletePopup->SetShowState(false);
+ Invalidate(true);
+ }
+}
+
+void
+ContactListPanel::ShowAccountPopup(void)
+{
+ if (__pAccountListEvent != null)
+ {
+ delete __pAccountListEvent;
+ __pAccountListEvent = null;
+ }
+
+ if (__pAccountPopup != null)
+ {
+ delete __pAccountPopup;
+ __pAccountPopup = null;
+ }
+
+ if (__pAccountPopup == null)
+ {
+ __pAccountPopup = new (std::nothrow) Popup();
+ __pAccountPopup->Construct(true, Dimension(W_ACCOUNT_POPUP, H_ACCOUNT_POPUP));
+ __pAccountPopup->SetTitleText(ResourceManager::GetString(L"IDS_PB_OPT_VIEW"));
+
+ Rectangle popupClientBounds = __pAccountPopup->GetClientAreaBounds();
+
+ ListView* pAccountListView = new (std::nothrow) ListView();
+ pAccountListView->Construct(Rectangle(0, 0, popupClientBounds.width, popupClientBounds.height - H_ACCOUNT_POPUP_BUTTON));
+
+ __pAccountListEvent = new (std::nothrow) AccountListItemProvider(pAccountListView, __pPresentationModel);
+
+ pAccountListView->SetItemProvider(*__pAccountListEvent);
+
+ __pAccountPopup->AddControl(pAccountListView);
+
+ Button* pViewButton = new (std::nothrow) Button();
+ pViewButton->Construct(Rectangle(0, popupClientBounds.height - H_ACCOUNT_POPUP_BUTTON, popupClientBounds.width / 2 - W_POPUP_ITEM_GAP, H_ACCOUNT_POPUP_BUTTON),
+ ResourceManager::GetString(L"IDS_PB_OPT_VIEW"));
+ pViewButton->SetActionId(IDA_POPUP_VIEW_OK);
+ pViewButton->AddActionEventListener(*this);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle(popupClientBounds.width / 2 + W_POPUP_ITEM_GAP, popupClientBounds.height - H_ACCOUNT_POPUP_BUTTON,
+ popupClientBounds.width / 2 - W_POPUP_ITEM_GAP, H_ACCOUNT_POPUP_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pCancelButton->SetActionId(IDA_POPUP_VIEW_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pAccountPopup->AddControl(pViewButton);
+ __pAccountPopup->AddControl(pCancelButton);
+ }
+
+ __pAccountPopup->SetShowState(true);
+ __pAccountPopup->Show();
+}
+
+void
+ContactListPanel::HideAccountPopup(void)
+{
+ delete __pAccountPopup;
+ __pAccountPopup = null;
+
+ Invalidate(true);
+}
+
+void
+ContactListPanel::OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index)
+{
+ __pListView->ScrollToItem(__pPresentationModel->GetKeyIndex(index), -1);
+ __pListView->Invalidate(false);
+}
+
+void
+ContactListPanel::OnFocusGained(const Tizen::Ui::Control& source)
+{
+ if (source.Equals(*__pSearchBar))
+ {
+ if (__pListView->GetShowState() == true )
+ {
+ int groupCount = __pPresentationModel->GetKeyCount();
+ bool isContextItemOpenend = false;
+
+ for (int i = 0; i < groupCount; i++)
+ {
+ int contactCount = __pPresentationModel->GetContactCount(i);
+ for (int j = 0; j < contactCount; j++)
+ {
+ if (__pListView->IsContextItemOpened(i, j) == true)
+ {
+ isContextItemOpenend = true;
+ break;
+ }
+ }
+ }
+
+ if (isContextItemOpenend == true)
+ {
+ __pListView->UpdateList();
+ }
+ }
+ else if (__pSearchListView->GetShowState() == true )
+ {
+ int groupCount = 0;
+ bool isContextItemOpenend = false;
+
+ if (__pSearchListEvent == null)
+ {
+ return;
+ }
+ groupCount = __pSearchListEvent->GetGroupCount();
+ for (int i = 0; i < groupCount; i++)
+ {
+ int contactCount = __pSearchListEvent->GetItemCount(i);
+ for (int j = 0; j < contactCount; j++)
+ {
+ if (__pSearchListView->IsContextItemOpened(i, j) == true)
+ {
+ isContextItemOpenend = true;
+ break;
+ }
+ }
+ }
+
+ if (isContextItemOpenend == true)
+ {
+ __pSearchListView->UpdateList();
+ }
+ }
+ }
+}
+
+void
+ContactListPanel::OnFocusLost(const Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactListPanel::ShowContactValuePopup(int groupIndex, int itemIndex)
+{
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pMultipleContactValuePopup->SetTitleText(__pPresentationModel->GetName(groupIndex, itemIndex));
+ __pMultipleContactValuePopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListEvent);
+ pListView->AddListViewItemEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+ContactListPanel::HideContactValuePopup(void)
+{
+ if (__pMultipleContactValuePopup != null)
+ {
+ __pMultipleContactValuePopup->SetShowState(false);
+ Invalidate(true);
+ }
+}
+
+void
+ContactListPanel::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+ result r = pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+ AppLogDebug("[%s] The return result from SendAppControlResult(), AppCtrlResult value : %d.", GetErrorMessage(r), appCtrlResult);
+
+ UiApp::GetInstance()->Terminate();
+}
+
+void
+ContactListPanel::AddContactValueOnList(const Tizen::Base::Collection::IList* pList, const Tizen::Base::String& keyType, int index, Tizen::Base::Collection::HashMap* pReturnValue)
+{
+ int blankIndex = 0;
+
+ String value(*(static_cast<const String *>(pList->GetAt(index))));
+ value.LastIndexOf(CHARACTER_SPACE, value.GetLength()-1, blankIndex);
+ value.Remove(0, blankIndex + 1);
+
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+ pValueList->Add(new (std::nothrow) String(value));
+
+ pReturnValue->Add(new (std::nothrow) String(keyType), pValueList);
+}
+
+result
+ContactListPanel::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type)
+{
+ result r = E_SUCCESS;
+
+ if (__pAppControl != null)
+ {
+ return E_FAILURE;
+ }
+
+ String uri;
+ HashMap extraData;
+ extraData.Construct();
+
+ if (appId.Equals(String(PROVIDER_ID_PHONE)))
+ {
+ uri.Append(INPUT_URI_TEL);
+ uri.Append(argument);
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_CALL_TYPE), new (std::nothrow) String(type));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_MESSAGE)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TO), new (std::nothrow) String(argument));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TYPE), new (std::nothrow) String(type));
+ }
+
+ __pAppControl = AppManager::FindAppControlN(appId, operationId);
+ if (__pAppControl != null)
+ {
+ r = __pAppControl->Start(&uri, null, &extraData, null);
+ if (IsFailed(r))
+ {
+ AppLogDebug("[%s] Unable to launch app control", GetErrorMessage(r));
+ }
+ else
+ {
+ if (__pListView->GetShowState() == true)
+ {
+ __pListView->SetEnabled(false);
+ }
+
+ if (__pSearchListView->GetShowState() == true)
+ {
+ __pSearchListView->SetEnabled(false);
+ }
+ }
+ }
+
+ extraData.RemoveAll(true);
+
+ return r;
+}
+
+void
+ContactListPanel::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactListPanel::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Rectangle clientBounds = pForm->GetClientAreaBounds();
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, clientBounds.width, clientBounds.height - H_SEARCHBAR));
+}
+
+void
+ContactListPanel::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Rectangle clientBounds = pForm->GetClientAreaBounds();
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, clientBounds.width, clientBounds.height - H_SEARCHBAR));
+}
+
+void
+ContactListPanel::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Rectangle clientBounds = pForm->GetClientAreaBounds();
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, clientBounds.width, clientBounds.height - H_SEARCHBAR));
+}
+
+void
+ContactListPanel::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+ if (keypadAction == KEYPAD_ACTION_SEARCH)
+ {
+ __pSearchBar->HideKeypad();
+ }
+}
+
+void
+ContactListPanel::OnFormMenuRequested(Tizen::Ui::Controls::Form& source)
+{
+ if (__pListView->GetShowState() == true)
+ {
+ __pListView->SetFocus();
+ }
+ else if (__pSearchListView->GetShowState() == true)
+ {
+ __pSearchListView->SetFocus();
+ }
+
+ if(__pPresentationModel->GetContactCount() > 0)
+ {
+ __pOptionMenu->SetShowState(true);
+ __pOptionMenu->Show();
+ }
+}
+
+void
+ContactListPanel::OnForeground(void)
+{
+ AppLogDebug("OnForeground");
+ delete __pAppControl;
+ __pAppControl = null;
+
+ if (__pListView->IsEnabled() == false)
+ {
+ __pListView->SetEnabled(true);
+ }
+
+ if (__pSearchListView->IsEnabled() == false)
+ {
+ __pSearchListView->SetEnabled(true);
+ }
+}
+
+void
+ContactListPanel::OnBackground(void)
+{
+}
+
+void
+ContactListPanel::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ if (source.Equals(*__pListView))
+ {
+ __pListView->SetFocus();
+ }
+ else if (source.Equals(*__pSearchListView))
+ {
+ __pSearchListView->SetFocus();
+ }
+}
+
+void
+ContactListPanel::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListPanel::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListPanel::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactListPanel::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+bool
+ContactListPanel::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+ContactListPanel::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ if (keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
+ {
+ if (__pDeletePopup && __pDeletePopup->GetShowState() == true)
+ {
+ HideDeletePopup();
+ return true;
+ }
+ else if (__pMultipleContactValuePopup && __pMultipleContactValuePopup->GetShowState() == true)
+ {
+ HideContactValuePopup();
+ return true;
+ }
+ }
+ return false;
+}
+
+bool
+ContactListPanel::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+ContactListPanel::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactListPresentationModel.cpp
+ * @brief This is the implementation file for the ContactListPresentationModel class.
+ */
+
+#include <FApp.h>
+#include <FGraphics.h>
+#include <FMedia.h>
+#include <FSocial.h>
+#include "CtContactListPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtIContactEventListener.h"
+#include "CtResourceManager.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+
+static const int VCARD_STRING_LENGTH = 26;
+
+static const wchar_t* VCARD_PATH_FORMAT = L"data/Ct%04d%02d%02d%02d%02d%02d.vcf";
+static const wchar_t* KEY_SHARP = L"#";
+
+ContactListPresentationModel* ContactListPresentationModel::__pInstance = null;
+
+ContactListPresentationModel*
+ContactListPresentationModel::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+
+ return __pInstance;
+}
+
+void
+ContactListPresentationModel::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) ContactListPresentationModel();
+ result r = __pInstance->Construct();
+ TryCatch(r == E_SUCCESS, , "[%s] Construction failed", GetErrorMessage(r));
+
+ std::atexit(DestroyInstance);
+ return;
+
+CATCH:
+ delete __pInstance;
+ __pInstance = null;
+}
+
+void
+ContactListPresentationModel::DestroyInstance(void)
+{
+ delete __pInstance;
+}
+
+ContactListPresentationModel::ContactListPresentationModel(void)
+ : _pContactList(null)
+ , _pContactChangeListenerList(null)
+ , _pGroupIndexList(null)
+ , _pAddressbook(null)
+ , __pSearchedContactList(null)
+ , __pExcludedContactIdList(null)
+ , __searchedText()
+ , __isContactChanged(true)
+{
+}
+
+ContactListPresentationModel::~ContactListPresentationModel(void)
+{
+ if (_pContactList != null)
+ {
+ _pContactList->RemoveAll(true);
+ delete _pContactList;
+ }
+
+ if (__pSearchedContactList != null)
+ {
+ __pSearchedContactList->RemoveAll(true);
+ delete __pSearchedContactList;
+ }
+
+ if (__pExcludedContactIdList != null)
+ {
+ __pExcludedContactIdList->RemoveAll(true);
+ delete __pExcludedContactIdList;
+ }
+
+ if (_pContactChangeListenerList != null)
+ {
+ _pContactChangeListenerList->RemoveAll(false);
+ delete _pContactChangeListenerList;
+ }
+
+ delete _pAddressbook;
+ delete _pGroupIndexList;
+}
+
+result
+ContactListPresentationModel::Construct(void)
+{
+ if (_pAddressbook != null)
+ {
+ AppLogDebug("ContactListPresentationModel is already constructed.");
+ return E_SUCCESS;
+ }
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ _pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ TryReturn(_pAddressbook != null, E_FAILURE, "No address book")
+
+ _pAddressbook->SetAddressbookChangeEventListener(this);
+
+ _pContactChangeListenerList = new (std::nothrow) ArrayList();
+ _pContactChangeListenerList->Construct();
+
+ return E_SUCCESS;
+}
+
+result
+ContactListPresentationModel::InitializeContactList(Tizen::Base::Collection::IList* pContactIdList)
+{
+ if (__pExcludedContactIdList != null)
+ {
+ delete __pExcludedContactIdList;
+ }
+ __pExcludedContactIdList = pContactIdList;
+
+ return CreateContactList();
+}
+
+result
+ContactListPresentationModel::CreateContactList(void)
+{
+ result r = E_SUCCESS;
+
+ if (_pContactList == null)
+ {
+ _pContactList = new (std::nothrow) MultiHashMap();
+ _pContactList->Construct();
+ }
+ else
+ {
+ _pContactList->RemoveAll(true);
+ }
+
+ if (_pGroupIndexList == null)
+ {
+ _pGroupIndexList = new (std::nothrow) ArrayList();
+ _pGroupIndexList->Construct();
+ }
+ else
+ {
+ _pGroupIndexList->RemoveAll(false);
+ }
+
+ IList* pContactList = AddressbookManager::GetInstance()->GetAllPersonsN();
+ TryReturn(pContactList != null, E_FAILURE, "[E_FAILURE] Unable to get persons.");
+
+ if (__pExcludedContactIdList != null)
+ {
+ IBidirectionalEnumerator* pIdEnum = __pExcludedContactIdList->GetBidirectionalEnumeratorN();
+ pIdEnum->ResetLast();
+ while (pIdEnum->MovePrevious() == E_SUCCESS)
+ {
+ Integer* pPersonId = static_cast<Integer*>(pIdEnum->GetCurrent());
+
+ for (int index = pContactList->GetCount() - 1; index >= 0; index--)
+ {
+ Person* pPerson = static_cast<Person *>(pContactList->GetAt(index));
+ if (pPerson != null && pPersonId != null &&
+ pPerson->GetId() == pPersonId->ToInt())
+ {
+ pContactList->RemoveAt(index, true);
+ break;
+ }
+ }
+ }
+
+ delete pIdEnum;
+ }
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ TrimListForAppControl(pContactList);
+ }
+
+ IEnumerator* pEnum = pContactList->GetEnumeratorN();
+ TryReturn(pEnum, E_FAILURE, "No contact");
+
+ bool isNotUsedSharpKey = true;
+ String* pKey = null;
+ String* pSharpKey = new (std::nothrow) String(KEY_SHARP);
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Person* pPerson = static_cast<Person*>(pEnum->GetCurrent());
+ if (pPerson == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String displayName = pPerson->GetDisplayName();
+ String firstCharacter;
+
+ displayName.SubString(0, 1, firstCharacter);
+ firstCharacter.ToUpper();
+
+ if (pKey == null || firstCharacter.CompareTo(*pKey) != 0)
+ {
+ if (firstCharacter[0] >= L'A' && firstCharacter[0] <= L'Z')
+ {
+ if (_pGroupIndexList->Contains(firstCharacter))
+ {
+ int index;
+
+ _pGroupIndexList->IndexOf(firstCharacter, index);
+ pKey = static_cast<String *>(_pGroupIndexList->GetAt(index));
+ if (pKey == null)
+ {
+ break;
+ }
+ }
+ else
+ {
+ pKey = new (std::nothrow) String(firstCharacter);
+ _pGroupIndexList->Add(*pKey);
+ }
+ }
+ else
+ {
+ isNotUsedSharpKey = false;
+ pKey = pSharpKey;
+
+ if (_pGroupIndexList->Contains(*pKey) == false)
+ {
+ _pGroupIndexList->Add(*pKey);
+ }
+ }
+ }
+ _pContactList->Add(*pKey, *pPerson);
+ }
+
+ _pGroupIndexList->Sort(StringComparer());
+
+ delete pEnum;
+ delete pContactList;
+
+ if (isNotUsedSharpKey)
+ {
+ delete pSharpKey;
+ }
+
+ return r;
+}
+
+result
+ContactListPresentationModel::TrimListForAppControl(Tizen::Base::Collection::IList*& pContactList)
+{
+ TryReturn(pContactList != null, E_INVALID_ARG, "Invalid argument");
+
+ IList* pSelectedList = null;
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "Unable to get the list contained phone number");
+
+ pContactList->RemoveAll(true);
+ pContactList->AddItems(*pSelectedList);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "Unable to get the list contained email");
+
+ pContactList->RemoveAll(true);
+ pContactList->AddItems(*pSelectedList);
+ }
+
+ return E_SUCCESS;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetKey(int groupIndex)
+{
+ String* key = static_cast<String *>(_pGroupIndexList->GetAt(groupIndex));
+
+ if (key == null)
+ {
+ return String();
+ }
+
+ return *key;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetAllKeys(void)
+{
+ String allKeys;
+ IEnumerator* pEnum = _pGroupIndexList->GetEnumeratorN();
+
+ if (pEnum == null)
+ {
+ return String();
+ }
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pKey = static_cast<String *>(pEnum->GetCurrent());
+
+ allKeys.Append(*pKey);
+ }
+
+ delete pEnum;
+
+ return allKeys;
+}
+
+int
+ContactListPresentationModel::GetKeyCount(void)
+{
+ return _pGroupIndexList->GetCount();
+}
+
+int
+ContactListPresentationModel::GetKeyIndex(const Tizen::Base::String& key)
+{
+ int index;
+
+ _pGroupIndexList->IndexOf(key, index);
+
+ return index;
+}
+
+Tizen::Social::Person*
+ContactListPresentationModel::GetPersonAt(int groupIndex, int itemIndex)
+{
+ int count = 0;
+ Person* pPerson = null;
+ IEnumerator* pEnum = _pContactList->GetValuesN(GetKey(groupIndex));
+
+ if (pEnum == null)
+ {
+ return null;
+ }
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ if (itemIndex == count++)
+ {
+ pPerson = static_cast<Person *>(pEnum->GetCurrent());
+ break;
+ }
+ }
+
+ delete pEnum;
+
+ return pPerson;
+}
+
+result
+ContactListPresentationModel::GetContactItemInfoN(int groupIndex, int itemIndex, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail)
+{
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ name = pPerson->GetDisplayName();
+ if (name.IsEmpty())
+ {
+ Email email = pPerson->GetPrimaryEmail();
+ name.Append(email.GetEmail());
+ }
+ String thumbnailPath = pPerson->GetThumbnailPath();
+
+ if (thumbnailPath.IsEmpty() == false)
+ {
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(thumbnailPath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_NONE);
+ }
+ }
+
+ return E_SUCCESS;
+}
+
+int
+ContactListPresentationModel::GetContactCount(void)
+{
+ return _pContactList->GetCount();
+}
+
+int
+ContactListPresentationModel::GetContactCount(int groupIndex)
+{
+ int count = 0;
+
+ _pContactList->GetCount(GetKey(groupIndex), count);
+
+ return count;
+}
+
+result
+ContactListPresentationModel::RemoveContact(int groupIndex, int itemIndex, bool isUpdated)
+{
+ __isContactChanged = isUpdated;
+
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ return AddressbookManager::GetInstance()->RemovePerson(pPerson->GetId());
+}
+
+Tizen::Social::RecordId
+ContactListPresentationModel::GetContactId(int groupIndex, int itemIndex)
+{
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return INVALID_RECORD_ID;
+ }
+
+ IList* pContactList = AddressbookManager::GetInstance()->GetContactsByPersonN(pPerson->GetId());
+ if (pContactList == null)
+ {
+ return INVALID_RECORD_ID;
+ }
+
+ Contact* pContact = static_cast<Contact *>(pContactList->GetAt(0));
+ if (pContact == null)
+ {
+ return INVALID_RECORD_ID;
+ }
+
+ RecordId contactId = pContact->GetRecordId();
+
+ pContactList->RemoveAll(true);
+ delete pContactList;
+ pContactList = null;
+
+ return contactId;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetName(int groupIndex, int itemIndex)
+{
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return null;
+ }
+
+ return pPerson->GetDisplayName();
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetDefaultPhoneNumber(int groupIndex, int itemIndex)
+{
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+ if (pPerson == null)
+ {
+ return String();
+ }
+
+ PhoneNumber phoneNumber = pPerson->GetPrimaryPhoneNumber();
+
+ return phoneNumber.GetPhoneNumber();
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetDefaultEmail(int groupIndex, int itemIndex)
+{
+ String emailString;
+
+ Contact* pContact = _pAddressbook->GetContactN(GetContactId(groupIndex, itemIndex));
+ if (pContact == null)
+ {
+ return emailString;
+ }
+
+ //[TODO] should change to default email or rename this function
+ IList* pEmailList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ if (pEmailList == null)
+ {
+ delete pContact;
+
+ return emailString;
+ }
+
+ Email* pEmail = static_cast<Email*>(pEmailList->GetAt(0));
+ if (pEmail == null)
+ {
+ pEmailList->RemoveAll(true);
+ delete pEmailList;
+ delete pContact;
+
+ return emailString;
+ }
+
+ emailString = pEmail->GetEmail();
+
+ pEmailList->RemoveAll(true);
+ delete pEmailList;
+ delete pContact;
+
+ return emailString;
+}
+
+Tizen::Base::Collection::IList*
+ContactListPresentationModel::GetAllPhoneNumbersN(int groupIndex, int itemIndex)
+{
+ Contact* pContact = _pAddressbook->GetContactN(GetContactId(groupIndex, itemIndex));
+ if (pContact == null)
+ {
+ return null;
+ }
+ IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pPhoneNumberList == null)
+ {
+ delete pContact;
+ return null;
+ }
+
+ ArrayList* pPhoneNumberInfoList = new (std::nothrow) ArrayList();
+ pPhoneNumberInfoList->Construct();
+ PhoneNumber* pPhoneNumber = null;
+
+ IEnumerator* pEnum = pPhoneNumberList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pPhoneNumber = static_cast<PhoneNumber *>(pEnum->GetCurrent());
+ if (pPhoneNumber != null)
+ {
+ String phoneNumbersInfo(L"");
+
+ switch (pPhoneNumber->GetType())
+ {
+ case PHONENUMBER_TYPE_HOME:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case PHONENUMBER_TYPE_MOBILE:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_MOBILE"));
+ break;
+ case PHONENUMBER_TYPE_HOME_FAX:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HHOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK_FAX:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HWORK"));
+ break;
+ case PHONENUMBER_TYPE_PAGER:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_PAGER"));
+ break;
+ case PHONENUMBER_TYPE_OTHER:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ phoneNumbersInfo.Append(CHARACTER_SPACE);
+ phoneNumbersInfo.Append(pPhoneNumber->GetPhoneNumber());
+
+ pPhoneNumberInfoList->Add(*(new (std::nothrow) String(phoneNumbersInfo)));
+ }
+ }
+
+ delete pEnum;
+ delete pContact;
+ pPhoneNumberList->RemoveAll(true);
+ delete pPhoneNumberList;
+
+ return pPhoneNumberInfoList;
+}
+
+Tizen::Base::Collection::IList*
+ContactListPresentationModel::GetAllEmailsN(int groupIndex, int itemIndex)
+{
+ Contact* pContact = _pAddressbook->GetContactN(GetContactId(groupIndex, itemIndex));
+ if (pContact == null)
+ {
+ return null;
+ }
+ IList* pEmailList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ if (pEmailList == null)
+ {
+ delete pContact;
+ return null;
+ }
+
+ ArrayList* pEmailInfoList = new (std::nothrow) ArrayList();
+ pEmailInfoList->Construct();
+ Email* pEmail = null;
+
+ IEnumerator* pEnum = pEmailList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pEmail = static_cast<Email *>(pEnum->GetCurrent());
+ if (pEmail != null)
+ {
+ String EmailsInfo(L"");
+
+ switch (pEmail->GetType())
+ {
+ case EMAIL_TYPE_PERSONAL:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case EMAIL_TYPE_WORK:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case EMAIL_TYPE_OTHER:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ EmailsInfo.Append(CHARACTER_SPACE);
+ EmailsInfo.Append(pEmail->GetEmail());
+
+ pEmailInfoList->Add(*(new (std::nothrow) String(EmailsInfo)));
+ }
+ }
+
+ delete pEnum;
+ delete pContact;
+ pEmailList->RemoveAll(true);
+ delete pEmailList;
+
+ return pEmailInfoList;
+}
+
+result
+ContactListPresentationModel::SetSearchText(const Tizen::Base::String& searchText, SearchType searchType)
+{
+ result r = E_SUCCESS;
+
+ if (__pSearchedContactList != null)
+ {
+ __pSearchedContactList->RemoveAll(true);
+ delete __pSearchedContactList;
+ __pSearchedContactList = null;
+ }
+
+ __pSearchedContactList = GetSearchedContactListN(searchText, searchType);
+
+ if (__pSearchedContactList != null)
+ {
+ r = searchText.ToLowerCase(__searchedText);
+ }
+
+ return r;
+}
+
+result
+ContactListPresentationModel::GetSearchedContactItemInfo(int index, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail)
+{
+ if (__pSearchedContactList == null)
+ {
+ return E_FAILURE;
+ }
+ Person* pPerson = static_cast<Person *>(__pSearchedContactList->GetAt(index));
+ if (pPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ name = pPerson->GetDisplayName();
+ String thumbnailPath = pPerson->GetThumbnailPath();
+
+ if (thumbnailPath.IsEmpty() == false)
+ {
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(pPerson->GetThumbnailPath());
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_NONE);
+ }
+ }
+
+ return E_SUCCESS;
+}
+
+Tizen::Base::Collection::IList*
+ContactListPresentationModel::GetSearchedContactListN(const Tizen::Base::String& searchText, SearchType searchType)
+{
+ if (searchText.GetLength() == 0)
+ {
+ return null;
+ }
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ int phoneNumber;
+ IList* pSearchedList = null;
+
+ if (searchType != SEARCH_TYPE_HAS_EMAIL_ONLY)
+ {
+ IList* pSearchingPhoneNumberList = null;
+ AddressbookFilter phoneNumberFilter(AB_FI_TYPE_PHONE_CONTACT);
+ phoneNumberFilter.AppendString(FI_CONJ_OP_NONE, PHONE_CONTACT_FI_PR_PHONE, FI_STR_OP_CONTAIN, searchText);
+ phoneNumberFilter.AppendString(FI_CONJ_OP_OR, PHONE_CONTACT_FI_PR_DISPLAY_NAME, FI_STR_OP_CONTAIN, searchText);
+
+ pSearchingPhoneNumberList = pAddressbookManager->SearchN(phoneNumberFilter);
+ if (pSearchingPhoneNumberList == null)
+ {
+ return null;
+ }
+
+ IEnumerator* pEnum = pSearchingPhoneNumberList->GetEnumeratorN();
+ if (pEnum == null)
+ {
+ pSearchingPhoneNumberList->RemoveAll(true);
+ delete pSearchingPhoneNumberList;
+
+ return null;
+ }
+
+ ArrayList* pSearchedPersonsList = new (std::nothrow) ArrayList();
+ pSearchedPersonsList->Construct();
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ PhoneNumberContact* pPhoneNumberContact = static_cast<PhoneNumberContact *>(pEnum->GetCurrent());
+ Person* pPerson = pAddressbookManager->GetPersonN(pPhoneNumberContact->GetPersonId());
+
+ if (pPerson != null && pSearchedPersonsList->Contains(*pPerson) == false)
+ {
+ pSearchedPersonsList->Add(*pPerson);
+ }
+ }
+
+ pSearchingPhoneNumberList->RemoveAll(true);
+ delete pSearchingPhoneNumberList;
+ delete pEnum;
+
+ pSearchedList = pSearchedPersonsList;
+
+ if (searchType != SEARCH_TYPE_HAS_PHONE_ONLY)
+ {
+ IList* pDisplayNameSearchedList = null;
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ mainFilter.AppendString(FI_CONJ_OP_NONE, PERSON_FI_PR_DISPLAY_NAME, FI_STR_OP_CONTAIN, searchText);
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, false);
+
+ pDisplayNameSearchedList = pAddressbookManager->SearchN(mainFilter);
+ pSearchedList->InsertItemsFrom(*pDisplayNameSearchedList, 0);
+ }
+ }
+ else
+ {
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ mainFilter.AppendString(FI_CONJ_OP_NONE, PERSON_FI_PR_DISPLAY_NAME, FI_STR_OP_CONTAIN, searchText);
+
+ if (searchType == SEARCH_TYPE_HAS_PHONE_ONLY)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ }
+ else if (searchType == SEARCH_TYPE_HAS_EMAIL_ONLY)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ }
+
+ pSearchedList = pAddressbookManager->SearchN(mainFilter);
+ }
+
+ for (int index = pSearchedList->GetCount() - 1; index >= 0; index--)
+ {
+ Person* pPerson = static_cast<Person *>(pSearchedList->GetAt(index));
+ if (__pExcludedContactIdList != null && pPerson != null)
+ {
+ for (int idIndex = __pExcludedContactIdList->GetCount() - 1; idIndex >= 0; idIndex--)
+ {
+ Integer* pPersonId = static_cast<Integer*>(__pExcludedContactIdList->GetAt(idIndex));
+ if (pPersonId != null && pPersonId->ToInt() == pPerson->GetId())
+ {
+ pSearchedList->RemoveAt(index, true);
+ break;
+ }
+ }
+ }
+ }
+
+ return pSearchedList;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetSearchText(void)
+{
+ return __searchedText;
+}
+
+void
+ContactListPresentationModel::ResetSearchedContactList(void)
+{
+ if (__pSearchedContactList != null)
+ {
+ __pSearchedContactList->RemoveAll(true);
+ delete __pSearchedContactList;
+ __pSearchedContactList = null;
+ }
+}
+
+int
+ContactListPresentationModel::GetSearchedContactCount(void)
+{
+ if (__pSearchedContactList != null)
+ {
+ return __pSearchedContactList->GetCount();
+ }
+
+ return 0;
+}
+
+result
+ContactListPresentationModel::GetItemMainIndex(int searchedItemIndex, int& groupIndex, int& itemIndex)
+{
+ Person* pSearchedPerson = static_cast<Person *>(__pSearchedContactList->GetAt(searchedItemIndex));
+
+ if (pSearchedPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ int count = 0;
+ String firstCharacter;
+ String displayName = pSearchedPerson->GetDisplayName();
+ displayName.ToUpper();
+
+ if (displayName[0] >= L'A' && displayName[0] <= L'Z')
+ {
+ displayName.SubString(0, 1, firstCharacter);
+ }
+ else
+ {
+ firstCharacter.Append(KEY_SHARP);
+ }
+
+ IEnumerator* pEnum = _pContactList->GetValuesN(firstCharacter);
+ if (pEnum == null)
+ {
+ return E_FAILURE;
+ }
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Person* pPerson = static_cast<Person *>(pEnum->GetCurrent());
+ if (pPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ if (pSearchedPerson->GetId() == pPerson->GetId())
+ {
+ _pGroupIndexList->IndexOf(firstCharacter, groupIndex);
+ itemIndex = count;
+ break;
+ }
+
+ count++;
+ }
+
+ delete pEnum;
+
+ return E_SUCCESS;
+}
+
+int
+ContactListPresentationModel::GetAddressbookCount(void)
+{
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ IList* pAddressbookList = pAddressbookManager->GetAllAddressbooksN();
+ if (pAddressbookList == null)
+ {
+ return -1;
+ }
+
+ int count = pAddressbookList->GetCount();
+ pAddressbookList->RemoveAll(true);
+ delete pAddressbookList;
+
+ return count;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetAddressbookName(int index)
+{
+ String returnString;
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ IList* pAddressbookList = pAddressbookManager->GetAllAddressbooksN();
+ if (pAddressbookList == null)
+ {
+ return returnString;
+ }
+
+ Addressbook* pAddressbook = static_cast<Addressbook *>(pAddressbookList->GetAt(index));
+ TryCatch(pAddressbook != null, , "Unable to get addressbook form addressbook manager");
+
+ //Todo : Return AccountId temporarily.
+ if (pAddressbook->GetId() == DEFAULT_ADDRESSBOOK_ID)
+ {
+ returnString.Append(ResourceManager::GetString(L"IDS_PB_BODY_PHONE"));
+ }
+ else
+ {
+ returnString.Append(pAddressbook->GetId());
+ }
+
+CATCH:
+ pAddressbookList->RemoveAll(true);
+ delete pAddressbookList;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::GetCurrentAddressbook(void)
+{
+ String addressbookName;
+
+ if (_pAddressbook->GetId() == DEFAULT_ADDRESSBOOK_ID)
+ {
+ addressbookName.Append(ResourceManager::GetString(L"IDS_PB_BODY_PHONE"));
+ }
+ else
+ {
+ addressbookName.Append(_pAddressbook->GetId());
+ }
+
+ return addressbookName;
+}
+
+bool
+ContactListPresentationModel::IsContactInCategory(int groupIndex, int itemIndex, Tizen::Social::RecordId categoryId)
+{
+ bool isContactInCategory = false;
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return false;
+ }
+
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_PERSON_ID, FI_CMP_OP_EQUAL, pPerson->GetId());
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, categoryId);
+
+ IList* pList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+
+ if (pList == null)
+ {
+ return false;
+ }
+
+ if (pList->GetCount() > 0)
+ {
+ isContactInCategory = true;
+ }
+ else
+ {
+ isContactInCategory = false;
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return isContactInCategory;
+}
+
+bool
+ContactListPresentationModel::IsContactInCategory(int groupIndex, Tizen::Social::RecordId categoryId)
+{
+ String key = GetKey(groupIndex);
+ int count;
+
+ _pContactList->GetCount(key, count);
+
+ for (int i = 0; i < count; i++)
+ {
+ if (IsContactInCategory(groupIndex, i, categoryId) == false)
+ {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+bool
+ContactListPresentationModel::IsSearchedContactInCategory(int index, Tizen::Social::RecordId categoryId)
+{
+ bool isContactInCategory = false;
+ Person* pPerson = static_cast<Person *>(__pSearchedContactList->GetAt(index));
+
+ if (pPerson == null)
+ {
+ return false;
+ }
+
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_PERSON_ID, FI_CMP_OP_EQUAL, pPerson->GetId());
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, categoryId);
+
+ IList* pList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+
+ if (pList == null)
+ {
+ return false;
+ }
+
+ if (pList->GetCount() > 0)
+ {
+ isContactInCategory = true;
+ }
+ else
+ {
+ isContactInCategory = false;
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return isContactInCategory;
+}
+
+Tizen::Base::String
+ContactListPresentationModel::ExportToVcard(int groupIndex, int itemIndex)
+{
+ String vCardPath;
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ Contact* pContact = pAddressbookManager->GetContactN(GetContactId(groupIndex, itemIndex));
+ TryReturn(pContact != null, vCardPath, "[E_FAILURE] Unable to get the specific contact.");
+
+ DateTime currentDateTime;
+ SystemTime::GetCurrentTime(TIME_MODE_WALL, currentDateTime);
+
+ vCardPath.Format(VCARD_STRING_LENGTH, VCARD_PATH_FORMAT, currentDateTime.GetYear(), currentDateTime.GetMonth(), currentDateTime.GetDay(),
+ currentDateTime.GetHour(), currentDateTime.GetMinute(), currentDateTime.GetSecond());
+
+ vCardPath = Application::GetInstance()->GetAppSharedPath() + vCardPath;
+
+ result r = pAddressbookManager->ExportContactToVcard(*pContact, vCardPath);
+
+ if (r != E_SUCCESS)
+ {
+ vCardPath.Clear();
+ }
+
+ delete pContact;
+
+ return vCardPath;
+}
+
+void
+ContactListPresentationModel::AddContactChangeListener(const IContactEventListener& listener)
+{
+ _pContactChangeListenerList->Add(listener);
+}
+
+void
+ContactListPresentationModel::RemoveContactChangeListener(const IContactEventListener& listener)
+{
+ _pContactChangeListenerList->Remove(listener, false);
+}
+
+void
+ContactListPresentationModel::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ if (__isContactChanged == false)
+ {
+ __isContactChanged = true;
+
+ return;
+ }
+
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = _pContactChangeListenerList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnContactsChanged();
+ }
+
+ delete pEnum;
+}
+
+void
+ContactListPresentationModel::OnCategoriesChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactPresentationModel.cpp
+ * @brief This is the implementation file for the ContactPresentationModel class.
+ */
+
+#include <FGraphics.h>
+#include <FLocales.h>
+#include "CtContactPresentationModel.h"
+#include "CtIContactEventListener.h"
+#include "CtResourceManager.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Io;
+using namespace Tizen::Locales;
+using namespace Tizen::Social;
+
+static const wchar_t* IDB_ACCOUNT_ICON_ICQ = L"C02_Icon_ICQ.png";
+static const wchar_t* IDB_ACCOUNT_ICON_YAHOO = L"C02_Icon_yahoo.png";
+static const wchar_t* IDB_ACCOUNT_ICON_MSN = L"C02_Icon_windows_live.png";
+static const wchar_t* IDB_ACCOUNT_ICON_OTHERS = L"C02_Icon_others.png";
+
+static const wchar_t* CHARACTER_HYPHEN = L"-";
+static const wchar_t* CHARACTER_EMPTY = L"";
+
+ContactPresentationModel::ContactPresentationModel(void)
+: __pAssignedCategoryList(null)
+, __pContactListenerList(null)
+, __pContact(null)
+, __pAddressbook(null)
+, __defaultNumberIndex(0)
+, __lastRemovedContactIndex(-1)
+, __lastRemovedEmailIndex(-1)
+, __newMode(false)
+, __isEditing(false)
+{
+}
+
+ContactPresentationModel::~ContactPresentationModel(void)
+{
+ delete __pAddressbook;
+ delete __pContact;
+
+ if (__pContactListenerList != null)
+ {
+ __pContactListenerList->RemoveAll(true);
+ delete __pContactListenerList;
+ }
+
+ if (__pAssignedCategoryList != null)
+ {
+ __pAssignedCategoryList->RemoveAll(true);
+ delete __pAssignedCategoryList;
+ }
+}
+
+result
+ContactPresentationModel::Construct(void)
+{
+ result r = E_SUCCESS;
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (__pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ r = __pAddressbook->SetAddressbookChangeEventListener(this);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set event listener", GetErrorMessage(r));
+
+ __pContactListenerList = new (std::nothrow) ArrayList();
+ __pContactListenerList->Construct();
+
+ __pAssignedCategoryList = new (std::nothrow) ArrayList();
+ __pAssignedCategoryList->Construct();
+
+ return r;
+
+CATCH:
+ delete __pAddressbook;
+ __pAddressbook = null;
+
+ __pContactListenerList->RemoveAll();
+ delete __pContactListenerList;
+ __pContactListenerList = null;
+
+ __pAssignedCategoryList->RemoveAll();
+ delete __pAssignedCategoryList;
+ __pAssignedCategoryList = null;
+
+ return r;
+}
+
+result
+ContactPresentationModel::PrepareNewContact(void)
+{
+ __pContact = new (std::nothrow) Contact();
+
+ __newMode = true;
+
+ return E_SUCCESS;
+}
+
+result
+ContactPresentationModel::SetContactId(const Tizen::Social::RecordId contactId, bool isEditing)
+{
+ result r = E_SUCCESS;
+
+ delete __pContact;
+ __pContact = __pAddressbook->GetContactN(contactId);
+
+ r = GetLastResult();
+ TryReturn(__pContact != null && r == E_SUCCESS, r, "[%s] selected Contact is invalid", GetErrorMessage(r));
+
+ IList* pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pList == null)
+ {
+ return r;
+ }
+
+ Person* pPerson = AddressbookManager::GetInstance()->GetPersonN(__pContact->GetPersonId());
+ if (pPerson == null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+
+ return r;
+ }
+
+ PhoneNumber defaultNumber = pPerson->GetPrimaryPhoneNumber();
+
+ for (int i = 0; i < pList->GetCount(); i++)
+ {
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pList->GetAt(i));
+ if (pPhoneNumber != null && pPhoneNumber->Equals(defaultNumber))
+ {
+ __defaultNumberIndex = i;
+ break;
+ }
+ }
+
+ if (isEditing)
+ {
+ __isEditing = isEditing;
+
+ IList* pAssignedCategoriesList = __pAddressbook->GetCategoriesByContactN(__pContact->GetRecordId());
+ if (pAssignedCategoriesList == null)
+ {
+ return E_FAILURE;
+ }
+ IEnumerator* pEnum = pAssignedCategoriesList->GetEnumeratorN();
+ if (pEnum == null)
+ {
+ return E_FAILURE;
+ }
+
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ Category* pCategory = static_cast<Category *>(pEnum->GetCurrent());
+
+ if (pCategory != null)
+ {
+ AddContactToCategory(pCategory->GetRecordId());
+ }
+ }
+
+ pAssignedCategoriesList->RemoveAll(true);
+ delete pAssignedCategoriesList;
+ delete pEnum;
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+ delete pPerson;
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetVcfPath(const Tizen::Base::String& filePath, bool isNewContact)
+{
+ __vcfPath = filePath;
+ __newMode = isNewContact;
+
+ IList* pPhoneNumberList = null;
+ IList* pList = AddressbookManager::GetInstance()->ParseContactsFromVcardN(filePath);
+ result r = GetLastResult();
+ TryCatch(r == E_SUCCESS && pList != null && pList->GetCount() > 0, r = E_FAILURE, "[%s] ParseContactsFromVcardN() failed", GetErrorMessage(r));
+
+ __pContact = static_cast<Contact*>(pList->GetAt(0));
+ TryCatch(__pContact != null, r = E_FAILURE, "[E_FAILURE] Unable to cast Contact");
+
+ pPhoneNumberList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+
+ if (pPhoneNumberList != null)
+ {
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pPhoneNumberList->GetAt(0));
+ if (pPhoneNumber != null)
+ {
+ Person* pPerson = AddressbookManager::GetInstance()->GetPersonN(__pContact->GetPersonId());
+ if (pPerson != null)
+ {
+ pPerson->SetAsPrimaryPhoneNumber(*pPhoneNumber);
+ }
+
+ delete pPerson;
+ }
+ delete pPhoneNumberList;
+ }
+
+CATCH:
+ delete pList;
+
+ return r;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetVcfPath(void)
+{
+ return __vcfPath;
+}
+
+RecordId
+ContactPresentationModel::GetContactId(void)
+{
+ return __pContact->GetRecordId();
+}
+
+result
+ContactPresentationModel::AddContactToCategory(Tizen::Social::RecordId categoryId)
+{
+ result r = E_SUCCESS;
+
+ if (__newMode || __isEditing)
+ {
+ String* pCategoryStringId = new (std::nothrow) String();
+
+ pCategoryStringId->Append(categoryId);
+
+ r = __pAssignedCategoryList->Add(*pCategoryStringId);
+ }
+ else
+ {
+ r = AddressbookManager::GetInstance()->AddMemberToCategory(categoryId, __pContact->GetRecordId());
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::RemoveContactFromAllCategories(void)
+{
+ result r = E_SUCCESS;
+
+ if (__newMode || __isEditing)
+ {
+ if (__pAssignedCategoryList != null)
+ {
+ __pAssignedCategoryList->RemoveAll(true);
+ }
+ }
+ else
+ {
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ IList* pCategoryList = __pAddressbook->GetCategoriesByContactN(__pContact->GetRecordId());
+ TryReturn(pCategoryList != null, E_FAILURE, "Unable to get category list");
+
+ IEnumerator* pEnum = pCategoryList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Category* pCategory = static_cast<Category*>(pEnum->GetCurrent());
+ if (pCategory != null)
+ {
+ AddressbookManager::GetInstance()->RemoveMemberFromCategory(pCategory->GetRecordId(), __pContact->GetRecordId());
+ }
+ }
+
+ delete pEnum;
+ pCategoryList->RemoveAll(true);
+ delete pCategoryList;
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::RemoveContact(void)
+{
+ return __pAddressbook->RemoveContact(__pContact->GetRecordId());
+}
+
+bool
+ContactPresentationModel::IsContactRemoved(void)
+{
+ return (__pContact ? false : true);
+}
+
+result
+ContactPresentationModel::AddContact(void)
+{
+ return __pAddressbook->AddContact(*__pContact);
+}
+
+result
+ContactPresentationModel::UpdateContact(void)
+{
+ return __pAddressbook->UpdateContact(*__pContact);
+}
+
+String
+ContactPresentationModel::GetValue(DetailProperty id, int index)
+{
+ String returnString;
+ IList* pList = null;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_GROUP:
+ returnString = GetCategory();
+ break;
+ case DETAIL_PROPERTY_RINGTONE:
+ returnString = GetRingtone();
+ break;
+ case DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER:
+ {
+ DetailPhoneNumberType type;
+ returnString = GetDefaultNumber(type);
+ }
+ break;
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ DetailPhoneNumberType type;
+ returnString = GetPhoneNumber(index, type);
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ DetailEmailType type;
+ returnString = GetEmail(index, type);
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ DetailImAddressType type;
+ returnString = GetImAddress(index, type);
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS: //fall through
+ case DETAIL_PROPERTY_ADDRESS_POSTAL_CODE: //fall through
+ case DETAIL_PROPERTY_ADDRESS_COUNTRY: //fall through
+ case DETAIL_PROPERTY_ADDRESS_PROVINCE: //fall through
+ case DETAIL_PROPERTY_ADDRESS_CITY: //fall through
+ case DETAIL_PROPERTY_ADDRESS_STREET:
+ {
+ DetailAddressType type;
+ returnString = GetAddress(id, index, type);
+ }
+ break;
+ case DETAIL_PROPERTY_BIRTHDAY:
+ {
+ returnString = GetDateTime(id);
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ DetailUrlType type;
+ returnString = GetUrl(index, type);
+ }
+ break;
+ case DETAIL_PROPERTY_NOTE:
+ {
+ IList* pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_NOTES);
+
+ if (pList == null)
+ {
+ break;
+ }
+
+ String* pNote = static_cast<String *>(pList->GetAt(0));
+ if (pNote == null)
+ {
+ break;
+ }
+
+ returnString = *pNote;
+ }
+ break;
+ case DETAIL_PROPERTY_DISPLAY_NAME:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, returnString);
+ }
+ break;
+ case DETAIL_PROPERTY_FIRST_NAME:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_FIRST_NAME, returnString);
+ }
+ break;
+ case DETAIL_PROPERTY_LAST_NAME:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_LAST_NAME, returnString);
+ }
+ break;
+ case DETAIL_PROPERTY_MIDDLE_NAME:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_MIDDLE_NAME, returnString);
+ }
+ break;
+ case DETAIL_PROPERTY_NICK_NAME:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_NICKNAMES);
+
+ if (pList == null)
+ {
+ break;
+ }
+
+ String* pNickName = static_cast<String *>(pList->GetAt(0));
+ if (pNickName == null)
+ {
+ break;
+ }
+
+ returnString = *pNickName;
+ }
+ break;
+ case DETAIL_PROPERTY_NAME_SUFFIX:
+ {
+ __pContact->GetValue(CONTACT_PROPERTY_ID_NAME_SUFFIX, returnString);
+ }
+ break;
+ case DETAIL_PROPERTY_JOB_TITLE:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ORGANIZATIONS);
+
+ if (pList == null)
+ {
+ break;
+ }
+
+ Organization* pOrganization = static_cast<Organization *>(pList->GetAt(0));
+ if (pOrganization == null)
+ {
+ break;
+ }
+
+ returnString = pOrganization->GetJobTitle();
+ }
+ break;
+ case DETAIL_PROPERTY_DEPARTMENT:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ORGANIZATIONS);
+
+ if (pList == null)
+ {
+ break;
+ }
+
+ Organization* pOrganization = static_cast<Organization *>(pList->GetAt(0));
+ if (pOrganization == null)
+ {
+ break;
+ }
+
+ returnString = pOrganization->GetDepartment();
+ }
+ break;
+ case DETAIL_PROPERTY_COMPANY:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ORGANIZATIONS);
+
+ if (pList == null)
+ {
+ break;
+ }
+
+ Organization* pOrganization = static_cast<Organization *>(pList->GetAt(0));
+ if (pOrganization == null)
+ {
+ break;
+ }
+
+ returnString = pOrganization->GetName();
+ }
+ break;
+ case DETAIL_PROPERTY_THUMBNAIL:
+ {
+ returnString = __pContact->GetThumbnailPath();
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (pList != null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+ }
+
+ return returnString;
+}
+
+result
+ContactPresentationModel::GetDisplayName(Tizen::Base::String& name)
+{
+ result r = E_SUCCESS;
+ name.Clear();
+
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ if (__vcfPath.IsEmpty() == true)
+ {
+ Person* pPerson = AddressbookManager::GetInstance()->GetPersonN(__pContact->GetPersonId());
+ TryReturn(pPerson != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ name = pPerson->GetDisplayName();
+ }
+ else
+ {
+ String firstName = GetValue(DETAIL_PROPERTY_FIRST_NAME);
+ String middleName = GetValue(DETAIL_PROPERTY_MIDDLE_NAME);
+ String lastName = GetValue(DETAIL_PROPERTY_LAST_NAME);
+ String suffix = GetValue(DETAIL_PROPERTY_NAME_SUFFIX);
+
+ if (firstName.IsEmpty() == false)
+ {
+ name = (firstName);
+ }
+ if (middleName.IsEmpty() == false)
+ {
+ if (name.IsEmpty() == false)
+ {
+ name += CHARACTER_SPACE;
+ }
+ name += (middleName);
+ }
+ if (lastName.IsEmpty() == false)
+ {
+ if (name.IsEmpty() == false)
+ {
+ name += CHARACTER_SPACE;
+ }
+ name += (lastName);
+ }
+ if (suffix.IsEmpty() == false)
+ {
+ if (name.IsEmpty() == false)
+ {
+ name += DELIMITER_COMMA;
+ name += CHARACTER_SPACE;
+ }
+ name += suffix;
+ }
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::GetBirthday(Tizen::Base::DateTime& value)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ IList* pEventList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_EVENTS);
+ if (pEventList == null)
+ {
+ return E_FAILURE;
+ }
+
+ ContactEvent* pBirthday = static_cast<ContactEvent *>(pEventList->GetAt(0));
+ if (pBirthday == null)
+ {
+ return E_FAILURE;
+ }
+
+ value = pBirthday->GetDate();
+
+ pEventList->RemoveAll(true);
+ delete pEventList;
+
+ return r;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetType(DetailProperty id, int index)
+{
+ String returnString;
+ String value;
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER:
+ {
+ DetailPhoneNumberType type;
+
+ value = GetDefaultNumber(type);
+ returnString = GetPhoneNumberTypeString(type);
+ }
+ break;
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ DetailPhoneNumberType type;
+
+ value = GetPhoneNumber(index, type);
+ returnString = GetPhoneNumberTypeString(type);
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ DetailEmailType type;
+
+ value = GetEmail(index, type);
+ returnString = GetEmailTypeString(type);
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ DetailImAddressType type;
+
+ value = GetImAddress(index, type);
+ returnString = GetImAddressTypeString(type);
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ {
+ DetailAddressType type;
+
+ value = GetAddress(id, index, type);
+ returnString = GetAddressTypeString(type);
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ DetailUrlType type;
+
+ value = GetUrl(index, type);
+ returnString = GetUrlTypeString(type);
+
+ }
+ break;
+ default:
+ break;
+ }
+ return returnString;
+}
+
+Tizen::Graphics::Bitmap*
+ContactPresentationModel::GetThumbnailN(void)
+{
+ TryReturn(__pContact != null, null, "[E_FAILURE] The contact is invalid.");
+
+ return __pContact->GetThumbnailN();
+}
+
+Tizen::Graphics::Bitmap*
+ContactPresentationModel::GetAccountIconN(const Tizen::Base::String& account)
+{
+ if (account.Equals(IM_ADDRESS_YAHOO, true))
+ {
+ return ResourceManager::GetBitmapN(IDB_ACCOUNT_ICON_YAHOO);
+ }
+ else if (account.Equals(IM_ADDRESS_MSN, true))
+ {
+ return ResourceManager::GetBitmapN(IDB_ACCOUNT_ICON_MSN);
+ }
+ else if (account.Equals(IM_ADDRESS_ICQ, true))
+ {
+ return ResourceManager::GetBitmapN(IDB_ACCOUNT_ICON_ICQ);
+ }
+// else if (account.Equals(IM_ADDRESS_AIM, true))
+// {
+// //[TODO]
+// }
+// else if (account.Equals(IM_ADDRESS_SKYPE, true))
+// {
+// //[TODO]
+// }
+// else if (account.Equals(IM_ADDRESS_QQ, true))
+// {
+// //[TODO]
+// }
+// else if (account.Equals(IM_ADDRESS_GOOGLE_TALK, true))
+// {
+// //[TODO]
+// }
+// else if (account.Equals(IM_ADDRESS_JABBER, true))
+// {
+// //[TODO]
+// }
+ else
+ {
+ return ResourceManager::GetBitmapN(IDB_ACCOUNT_ICON_OTHERS);
+ }
+
+ return null;
+}
+
+int
+ContactPresentationModel::GetMultiValuesCount(DetailProperty id)
+{
+ int returnValue = 0;
+ IList* pList = null;
+
+ TryReturn(__pContact != null, returnValue, "[E_FAILURE] The contact is invalid.");
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pList != null)
+ {
+ returnValue = pList->GetCount();
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ if (pList != null)
+ {
+ returnValue = pList->GetCount();
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_IMADDRESSES);
+ if (pList != null)
+ {
+ returnValue = pList->GetCount();
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ADDRESSES);
+ if (pList != null)
+ {
+ returnValue = pList->GetCount();
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_URLS);
+ if (pList != null)
+ {
+ returnValue = pList->GetCount();
+ }
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (pList != null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+ }
+
+ return returnValue;
+}
+
+int
+ContactPresentationModel::GetCategoryCount(void)
+{
+ return __pAddressbook->GetCategoryCount();
+}
+
+Tizen::Base::Collection::IList*
+ContactPresentationModel::GetAssignedCategoryIdListN(void)
+{
+ IEnumerator* pEnum = null;
+ ArrayList* pCategoryList = new (std::nothrow) ArrayList();
+ pCategoryList->Construct();
+
+ if (__newMode || __isEditing)
+ {
+ pEnum = __pAssignedCategoryList->GetEnumeratorN();
+
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ String* pCategoryStringId = static_cast<String *>(pEnum->GetCurrent());
+
+ if (pCategoryStringId != null)
+ {
+ String* pRetrunCategoryStringId = new (std::nothrow) String(*pCategoryStringId);
+
+ pCategoryList->Add(*pRetrunCategoryStringId);
+ }
+ }
+
+ delete pEnum;
+
+ return pCategoryList;
+ }
+ else
+ {
+ IList* pList = __pAddressbook->GetCategoriesByContactN(__pContact->GetRecordId());
+
+ if (pList != null)
+ {
+ pEnum = pList->GetEnumeratorN();
+
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ Category* pCategory = static_cast<Category *>(pEnum->GetCurrent());
+
+ if (pCategory != null)
+ {
+ String* pRetrunCategoryStringId = new (std::nothrow) String();
+
+ pRetrunCategoryStringId->Append(pCategory->GetRecordId());
+ pCategoryList->Add(*pRetrunCategoryStringId);
+ }
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+ delete pEnum;
+ }
+
+ return pCategoryList;
+ }
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetCategory(void)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ if (__newMode || __isEditing)
+ {
+ IEnumerator* pEnum = __pAssignedCategoryList->GetEnumeratorN();
+ Category* pCategory = null;
+ String* pCategoryStringId = null;
+ RecordId categoryId;
+
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ pCategoryStringId = static_cast<String*>(pEnum->GetCurrent());
+
+ if (pCategoryStringId != null)
+ {
+ Integer::Parse(*pCategoryStringId, categoryId);
+ pCategory = __pAddressbook->GetCategoryN(categoryId);
+
+ String categoryName;
+ if (pCategory != null)
+ {
+ categoryName = pCategory->GetName();
+
+ if (index == 0)
+ {
+ returnString = categoryName;
+ }
+ else if (index > 0)
+ {
+ returnString += L", ";
+ returnString += categoryName;
+ }
+ }
+ delete pCategory;
+ }
+ }
+ delete pEnum;
+ }
+ else
+ {
+ Category* pCategory = null;
+ IList* pCategoryList = __pAddressbook->GetCategoriesByContactN(__pContact->GetRecordId());
+ if (pCategoryList == null)
+ {
+ return returnString;
+ }
+
+ IEnumerator* pEnum = pCategoryList->GetEnumeratorN();
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ pCategory = static_cast<Category*>(pEnum->GetCurrent());
+
+ String categoryName;
+ if (pCategory != null)
+ {
+ categoryName = pCategory->GetName();
+
+ if (index == 0)
+ {
+ returnString = categoryName;
+ }
+ else if (index > 0)
+ {
+ returnString += L", ";
+ returnString += categoryName;
+ }
+ }
+ }
+
+ delete pEnum;
+ pCategoryList->RemoveAll(true);
+ delete pCategoryList;
+ }
+
+ return returnString;
+}
+
+result
+ContactPresentationModel::GetDefaultCategoryName(Tizen::Base::String& categoryName)
+{
+ if (categoryName.Equals(DEFAULT_GROUP_FAMILY, true))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_FAMILY");
+ }
+ else if (categoryName.Equals(DEFAULT_GROUP_FRIENDS, true))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT_GROUP_FRIENDS");
+ }
+ else if (categoryName.Equals(DEFAULT_GROUP_COWORKERS, true))
+ {
+ categoryName.Clear();
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_CO_WORKERS");
+ }
+
+ return E_SUCCESS;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetRingtone(void)
+{
+ String returnString;
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ result r = __pContact->GetValue(CONTACT_PROPERTY_ID_RINGTONE, returnString);
+ TryReturn(r == E_SUCCESS, String(), "[E_FAILURE] Unable to get value");
+
+ if (returnString.IsEmpty())
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT");
+ }
+ else
+ {
+ File file;
+ bool isFileExisting;
+ isFileExisting = file.IsFileExist(returnString);
+ if(!isFileExisting)
+ {
+ SetValue(DETAIL_PROPERTY_RINGTONE, String());
+ UpdateContact();
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT");
+ }
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetDefaultNumber(DetailPhoneNumberType& type)
+{
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ String returnString;
+
+ IList* pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ TryReturn(pList != null, String(), "[E_FAILURE] The contact doesn't have a phone number at least.");
+
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pList->GetAt(__defaultNumberIndex));
+ if (pPhoneNumber != null)
+ {
+ returnString = pPhoneNumber->GetPhoneNumber();
+ if (returnString.Contains(CHARACTER_HYPHEN))
+ {
+ returnString.Replace(CHARACTER_HYPHEN, CHARACTER_EMPTY);
+ }
+ type = (DetailPhoneNumberType)pPhoneNumber->GetType();
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return returnString;
+}
+
+int
+ContactPresentationModel::GetDefaultNumberIndex(void)
+{
+ return __defaultNumberIndex;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetPhoneNumber(int index, DetailPhoneNumberType& type)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ if (index == -1)
+ {
+ return returnString;
+ }
+
+ IList* pPhoneNumberList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ AppAssert(pPhoneNumberList);
+
+ PhoneNumber* pNumber = static_cast<PhoneNumber *>(pPhoneNumberList->GetAt(index));
+ if (pNumber != null)
+ {
+ returnString = pNumber->GetPhoneNumber();
+
+ if (returnString.Contains(CHARACTER_HYPHEN))
+ {
+ returnString.Replace(CHARACTER_HYPHEN, CHARACTER_EMPTY);
+ }
+ type = (DetailPhoneNumberType)pNumber->GetType();
+ }
+
+ pPhoneNumberList->RemoveAll(true);
+ delete pPhoneNumberList;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetEmail(int index, DetailEmailType& type)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ if (index == -1)
+ {
+ return returnString;
+ }
+
+ IList* pEmailList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ AppAssert(pEmailList);
+
+ Email* pEmail = static_cast<Email *>(pEmailList->GetAt(index));
+ if (pEmail != null)
+ {
+ returnString = pEmail->GetEmail();
+ type = (DetailEmailType)pEmail->GetType();
+ }
+
+ pEmailList->RemoveAll(true);
+ delete pEmailList;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetImAddress(int index, DetailImAddressType& type)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ if (index == -1)
+ {
+ return returnString;
+ }
+
+ IList* pImAddressList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_IMADDRESSES);
+ AppAssert(pImAddressList);
+
+ ImAddress* pImAddress = static_cast<ImAddress *>(pImAddressList->GetAt(index));
+ if (pImAddress != null)
+ {
+ returnString = pImAddress->GetImAddress();
+
+ String typeString = pImAddress->GetServiceProviderName();
+
+ if (typeString.Equals(IM_ADDRESS_AIM, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_AIM;
+ }
+ else if (typeString.Equals(IM_ADDRESS_MSN, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_MSN;
+ }
+ else if (typeString.Equals(IM_ADDRESS_YAHOO, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_YAHOO;
+ }
+ else if (typeString.Equals(IM_ADDRESS_SKYPE, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_SKYPE;
+ }
+ else if (typeString.Equals(IM_ADDRESS_QQ, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_QQ;
+ }
+ else if (typeString.Equals(IM_ADDRESS_GOOGLE_TALK, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_GOOGLE_TALK;
+ }
+ else if (typeString.Equals(IM_ADDRESS_ICQ, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_ICQ;
+ }
+ else if (typeString.Equals(IM_ADDRESS_JABBER, true))
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_JABBER;
+ }
+ else
+ {
+ type = DETAIL_IM_ADDRESS_TYPE_OTHER;
+ }
+ }
+
+ pImAddressList->RemoveAll(true);
+ delete pImAddressList;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetAddress(DetailProperty id, int index, DetailAddressType& type)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ if (index == -1)
+ {
+ return returnString;
+ }
+
+ IList* pAddressList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ADDRESSES);
+ AppAssert(pAddressList);
+
+ Address* pAddress = static_cast<Address *>(pAddressList->GetAt(index));
+ if (pAddress != null)
+ {
+ String street = pAddress->GetStreet();
+ String city = pAddress->GetCity();
+ String state = pAddress->GetState();
+ String country = pAddress->GetCountry();
+ String postalCode = pAddress->GetPostalCode();
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_ADDRESS_POSTAL_CODE:
+ returnString = postalCode;
+ break;
+ case DETAIL_PROPERTY_ADDRESS_COUNTRY:
+ returnString = country;
+ break;
+ case DETAIL_PROPERTY_ADDRESS_PROVINCE:
+ returnString = state;
+ break;
+ case DETAIL_PROPERTY_ADDRESS_CITY:
+ returnString = city;
+ break;
+ case DETAIL_PROPERTY_ADDRESS_STREET:
+ returnString = street;
+ break;
+ case DETAIL_PROPERTY_ADDRESS:
+ if (postalCode.IsEmpty() == false)
+ {
+ returnString.Append(postalCode);
+ returnString.Append(CHARACTER_SPACE);
+ }
+ if (country.IsEmpty() == false)
+ {
+ returnString.Append(country);
+ returnString.Append(CHARACTER_SPACE);
+ }
+ if (state.IsEmpty() == false)
+ {
+ returnString.Append(state);
+ returnString.Append(CHARACTER_SPACE);
+ }
+ if (city.IsEmpty() == false)
+ {
+ returnString.Append(city);
+ returnString.Append(CHARACTER_SPACE);
+ }
+ if (street.IsEmpty() == false)
+ {
+ returnString.Append(street);
+ }
+ break;
+ default:
+ break;
+ }
+
+ type = (DetailAddressType)pAddress->GetType();
+ }
+
+ pAddressList->RemoveAll(true);
+ delete pAddressList;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetDateTime(DetailProperty id)
+{
+ result r = E_SUCCESS;
+ String returnString;
+ int day = 0;
+ int year = 0;
+ String month;
+ DateTimeSymbols dateTimeSymbols;
+
+ r = dateTimeSymbols.Construct(CALENDAR_GREGORIAN);
+ TryReturn(r == E_SUCCESS, String(), "[E_FAILURE] Given locale is not supported.");
+ const IList* pMonthList = dateTimeSymbols.GetShortMonths();
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ DateTime* pDateTime = new (std::nothrow) DateTime();
+
+ if (id == DETAIL_PROPERTY_BIRTHDAY)
+ {
+ const Object* pGettingMonth = null;
+
+ r = GetBirthday(*pDateTime);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to get value", GetErrorMessage(r));
+
+ day = pDateTime->GetDay();
+ year = pDateTime->GetYear();
+
+ pGettingMonth = pMonthList->GetAt(pDateTime->GetMonth() - 1);
+ TryCatch(pGettingMonth != null, , "[E_FAILURE] Unable to get a month", GetErrorMessage(r));
+
+ month.Append(*static_cast<String*>(const_cast<Object*>(pGettingMonth)));
+
+ returnString.Append(day);
+ returnString.Append(CHARACTER_SPACE);
+ returnString.Append(month);
+ returnString.Append(CHARACTER_SPACE);
+ returnString.Append(year);
+ }
+
+CATCH:
+ delete pDateTime;
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetUrl(int index, DetailUrlType& type)
+{
+ String returnString;
+
+ TryReturn(__pContact != null, String(), "[E_FAILURE] The contact is invalid.");
+
+ IList* pUrlList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_URLS);
+ if (pUrlList == null)
+ {
+ return returnString;
+ }
+
+ Url* pUrl = static_cast<Url*>(pUrlList->GetAt(index));
+ if (pUrl != null)
+ {
+ returnString = pUrl->GetUrl();
+ type = (DetailUrlType)pUrl->GetType();
+ }
+
+ pUrlList->RemoveAll(true);
+ delete pUrlList;
+
+ return returnString;
+}
+
+void
+ContactPresentationModel::AddContactChangeListener(const IContactEventListener& listener)
+{
+ __pContactListenerList->Add(listener);
+}
+
+void
+ContactPresentationModel::RemoveContactChangeListener(const IContactEventListener& listener)
+{
+ __pContactListenerList->Remove(listener, false);
+}
+
+void
+ContactPresentationModel::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ if (__newMode == false && __isEditing == false)
+ {
+ if (__pContact != null)
+ {
+ SetContactId(__pContact->GetRecordId());
+ }
+ }
+ else if (__isEditing)
+ {
+ IEnumerator* pEnum = contactChangeInfoList.GetEnumeratorN();
+
+ if (pEnum != null && __pContact != null)
+ {
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ const ContactChangeInfo* pChangeInfo = static_cast<const ContactChangeInfo *>(pEnum->GetCurrent());
+
+ if (pChangeInfo != null && pChangeInfo->GetChangeType() == RECORD_CHANGE_TYPE_REMOVED && __pContact->GetRecordId() == pChangeInfo->GetContactId())
+ {
+ SetContactId(INVALID_RECORD_ID);
+ break;
+ }
+ }
+ delete pEnum;
+ }
+ }
+
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pContactListenerList->GetEnumeratorN();
+ while(pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnContactsChanged();
+ }
+
+ delete pEnum;
+}
+
+void
+ContactPresentationModel::OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList)
+{
+ IEnumerator* pEnumCategory = categoryChangeInfoList.GetEnumeratorN();
+
+ if (pEnumCategory != null && __pContact != null && __pAssignedCategoryList != null)
+ {
+ while (pEnumCategory->MoveNext() == E_SUCCESS)
+ {
+ const CategoryChangeInfo* pChangeInfo = static_cast<const CategoryChangeInfo *>(pEnumCategory->GetCurrent());
+
+ if (pChangeInfo != null && pChangeInfo->GetChangeType() == RECORD_CHANGE_TYPE_REMOVED)
+ {
+ RecordId id = pChangeInfo->GetCategoryId();
+
+ String* pcurCategoryStringId = new (std::nothrow) String();
+
+ pcurCategoryStringId->Append(id);
+
+ IEnumerator* pEnum = __pAssignedCategoryList->GetEnumeratorN();
+
+ for (int index = 0; pEnum->MoveNext() == E_SUCCESS; index++)
+ {
+ String* pCategoryStringId = static_cast<String*>(pEnum->GetCurrent());
+
+ if (pCategoryStringId != null)
+ {
+ if (pcurCategoryStringId->Equals(*pCategoryStringId, false) == true)
+ {
+ __pAssignedCategoryList->Remove(*pCategoryStringId, true);
+ }
+ }
+ }
+
+ delete pEnum;
+ }
+ }
+
+ delete pEnumCategory;
+ }
+
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pContactListenerList->GetEnumeratorN();
+ while(pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnCategoriesChanged();
+ }
+
+ delete pEnum;
+}
+
+result
+ContactPresentationModel::SetValue(DetailProperty id, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ String trimmedString(value);
+ trimmedString.Trim();
+
+ Email email = Email();
+ ImAddress imAddress = ImAddress();
+ Url url = Url();
+ PhoneNumber phoneNumber = PhoneNumber();
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_RINGTONE:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_RINGTONE, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_DEFAULT_PHONE_NUMBER:
+ {
+ __defaultNumberIndex = index;
+ }
+ break;
+ case DETAIL_PROPERTY_PHONE_NUMBER:
+ {
+ r = SetPhoneNumber(DETAIL_PHONENUMBER_TYPE_MOBILE, trimmedString, index);
+ }
+ break;
+ case DETAIL_PROPERTY_EMAIL:
+ {
+ r = SetEmail(DETAIL_EMAIL_TYPE_HOME, trimmedString, index);
+ }
+ break;
+ case DETAIL_PROPERTY_IM_ADDRESS:
+ {
+ r = SetImAddress(DETAIL_IM_ADDRESS_TYPE_MSN, trimmedString, index);
+ }
+ break;
+ case DETAIL_PROPERTY_ADDRESS: //fall through
+ case DETAIL_PROPERTY_ADDRESS_POSTAL_CODE: //fall through
+ case DETAIL_PROPERTY_ADDRESS_COUNTRY: //fall through
+ case DETAIL_PROPERTY_ADDRESS_PROVINCE: //fall through
+ case DETAIL_PROPERTY_ADDRESS_CITY: //fall through
+ case DETAIL_PROPERTY_ADDRESS_STREET:
+ {
+ SetAddress(id, trimmedString);
+ __pContact->RemoveAt(CONTACT_MPROPERTY_ID_ADDRESSES, index);
+ r = __pContact->SetAddressAt(index, __address);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddAddress(__address);
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_URL:
+ {
+ SetUrl(DETAIL_URL_TYPE_HOME, trimmedString, index);
+ }
+ break;
+ case DETAIL_PROPERTY_NOTE:
+ {
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_NOTES, index);
+
+ return r;
+ }
+
+ r = __pContact->SetNoteAt(index, value);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddNote(value);
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_DISPLAY_NAME:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_DISPLAY_NAME, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_FIRST_NAME:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_FIRST_NAME, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_LAST_NAME:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_LAST_NAME, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_MIDDLE_NAME:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_MIDDLE_NAME, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_NICK_NAME:
+ {
+ if (trimmedString.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_NICKNAMES, index);
+
+ return r;
+ }
+
+ r = __pContact->SetNicknameAt(index, trimmedString);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddNickname(trimmedString);
+ }
+ }
+ break;
+ case DETAIL_PROPERTY_NAME_SUFFIX:
+ {
+ r = __pContact->SetValue(CONTACT_PROPERTY_ID_NAME_SUFFIX, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_JOB_TITLE:
+ {
+ r = SetOrganization(DETAIL_PROPERTY_JOB_TITLE, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_DEPARTMENT:
+ {
+ r = SetOrganization(DETAIL_PROPERTY_DEPARTMENT, trimmedString);
+ }
+ break;
+ case DETAIL_PROPERTY_COMPANY:
+ {
+ r = SetOrganization(DETAIL_PROPERTY_COMPANY, trimmedString);
+ }
+ break;
+ default:
+ break;
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::AddAddressBook(void)
+{
+ result r = E_SUCCESS;
+
+ if (__newMode == true)
+ {
+ r = AddContact();
+
+ RecordId newPersonId;
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ IList* pList = pAddressbookManager->GetContactsByPersonN(__pContact->GetPersonId());
+
+ if (pList != null && pList->GetCount() > 1)
+ {
+ r = pAddressbookManager->UnlinkContact(__pContact->GetPersonId(), __pContact->GetRecordId(), newPersonId);
+ }
+
+ delete pList;
+ }
+ else
+ {
+ r = UpdateContact();
+ }
+
+ if (r == E_SUCCESS)
+ {
+ IList* pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ TryReturn(pList != null, r, "[E_FAILURE] The contact doesn't have a phone number at least.");
+
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pList->GetAt(__defaultNumberIndex));
+ if (pPhoneNumber != null)
+ {
+ Person* pPerson = AddressbookManager::GetInstance()->GetPersonN(__pContact->GetPersonId());
+ if (pPerson != null)
+ {
+ pPerson->SetAsPrimaryPhoneNumber(*pPhoneNumber);
+ UpdateContact();
+ }
+ delete pPerson;
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+ }
+
+ if (__newMode || __isEditing)
+ {
+ if (__isEditing == true)
+ {
+ __isEditing = false;
+ RemoveContactFromAllCategories();
+ __isEditing = true;
+ }
+
+ IEnumerator* pEnum = __pAssignedCategoryList->GetEnumeratorN();
+ String* pCategoryStringId = null;
+ RecordId categoryId;
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategoryStringId = static_cast<String*>(pEnum->GetCurrent());
+
+ if (pCategoryStringId != null)
+ {
+ Integer::Parse(*pCategoryStringId, categoryId);
+ r = __pAddressbook->AddMemberToCategory(categoryId, __pContact->GetRecordId());
+ }
+ }
+ delete pEnum;
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetAddress(DetailProperty id, const Tizen::Base::String& value)
+{
+ result r = E_SUCCESS;
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_ADDRESS_POSTAL_CODE:
+ r = __address.SetPostalCode(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_COUNTRY:
+ r = __address.SetCountry(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_PROVINCE:
+ r = __address.SetState(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_CITY:
+ r = __address.SetCity(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_STREET:
+ r = __address.SetStreet(value);
+ break;
+ default:
+ break;
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetBirthday(const Tizen::Base::DateTime& value)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ ContactEvent birthday;
+ birthday.SetDate(value);
+
+ r = __pContact->SetEventAt(0, birthday);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddEvent(birthday);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::RemoveBirthday(void)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_EVENTS, 0);
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetPhoneNumber(DetailPhoneNumberType type, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ if(index==0)
+ {
+ __lastRemovedContactIndex=-1;
+ }
+
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_PHONE_NUMBERS, index);
+ __lastRemovedContactIndex=index;
+
+ return r;
+ }
+
+ PhoneNumber phoneNumber;
+ phoneNumber.SetPhoneNumber(value);
+ phoneNumber.SetType((PhoneNumberType)type);
+
+ if(__lastRemovedContactIndex!=-1 && index>__lastRemovedContactIndex)
+ {
+ r = __pContact->SetPhoneNumberAt(index-1, phoneNumber);
+ }
+ else
+ {
+ r = __pContact->SetPhoneNumberAt(index, phoneNumber);
+ }
+
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddPhoneNumber(phoneNumber);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetEmail(DetailEmailType type, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ if (index==0)
+ {
+ __lastRemovedEmailIndex = -1;
+ }
+
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_EMAILS, index);
+ __lastRemovedEmailIndex = index;
+
+ return r;
+ }
+
+ Email email;
+ email.SetEmail(value);
+ email.SetType((EmailType)type);
+
+
+ if (__lastRemovedEmailIndex >= 0 && __lastRemovedEmailIndex < index)
+ {
+ r = __pContact->SetEmailAt(index - 1, email);
+ }
+ else
+ {
+ r = __pContact->SetEmailAt(index, email);
+ }
+
+
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddEmail(email);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetAddress(DetailAddressType type, const Tizen::Base::String& value, int index, DetailProperty property)
+{
+ result r = E_SUCCESS;
+
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_ADDRESSES, index);
+
+ return r;
+ }
+
+ Address address;
+ address.SetType((AddressType)type);
+
+ switch (property)
+ {
+ case DETAIL_PROPERTY_ADDRESS_POSTAL_CODE:
+ address.SetPostalCode(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_COUNTRY:
+ address.SetCountry(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_PROVINCE:
+ address.SetState(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_CITY:
+ address.SetCity(value);
+ break;
+ case DETAIL_PROPERTY_ADDRESS_STREET:
+ address.SetStreet(value);
+ break;
+ default:
+ break;
+ }
+
+
+ r = __pContact->SetAddressAt(index, address);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddAddress(address);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetUrl(DetailUrlType type, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_URLS, index);
+
+ return r;
+ }
+
+ Url url;
+ url.SetType(UrlType(type));
+ url.SetUrl(value);
+
+ r = __pContact->SetUrlAt(index, url);
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddUrl(url);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetImAddress(DetailImAddressType type, const Tizen::Base::String& value, int index)
+{
+ result r = E_SUCCESS;
+
+ if (value.IsEmpty() == true)
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_IMADDRESSES, index);
+
+ return r;
+ }
+
+ ImAddress imAddress;
+ imAddress.SetImAddress(value);
+ imAddress.SetServiceProviderName(GetImAddressTypeString(type));
+ r = __pContact->SetImAddressAt(index, imAddress);
+
+ if (r != E_SUCCESS)
+ {
+ r = __pContact->AddImAddress(imAddress);
+ }
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetThumbnail(const Tizen::Base::String& filePath)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(__pContact != null, E_FAILURE, "[E_FAILURE] The contact is invalid.");
+
+ r = __pContact->SetThumbnail(filePath);
+
+ return r;
+}
+
+result
+ContactPresentationModel::SetOrganization(DetailProperty id, const Tizen::Base::String& value)
+{
+ TryReturn((id >= DETAIL_PROPERTY_JOB_TITLE && id <= DETAIL_PROPERTY_COMPANY), E_FAILURE, "[E_FAILURE] Unable to set the specific id");
+
+ result r = E_SUCCESS;
+
+ IList* pList = __pContact->GetValuesN(CONTACT_MPROPERTY_ID_ORGANIZATIONS);
+
+ if (pList == null)
+ {
+ return E_FAILURE;
+ }
+
+ if (pList->GetCount() == 0)
+ {
+ if (value.IsEmpty())
+ {
+ return E_SUCCESS;
+ }
+
+ Organization organization;
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_JOB_TITLE:
+ {
+ organization.SetJobTitle(value);
+ }
+ break;
+ case DETAIL_PROPERTY_DEPARTMENT:
+ {
+ organization.SetDepartment(value);
+ }
+ break;
+ case DETAIL_PROPERTY_COMPANY:
+ {
+ organization.SetName(value);
+ }
+ break;
+ }
+
+ r = __pContact->AddOrganization(organization);
+ }
+ else
+ {
+ Organization* pOrganization = static_cast<Organization *>(pList->GetAt(0));
+ if (pOrganization == null)
+ {
+ return E_FAILURE;
+ }
+
+ switch (id)
+ {
+ case DETAIL_PROPERTY_JOB_TITLE:
+ {
+ pOrganization->SetJobTitle(value);
+ }
+ break;
+ case DETAIL_PROPERTY_DEPARTMENT:
+ {
+ pOrganization->SetDepartment(value);
+ }
+ break;
+ case DETAIL_PROPERTY_COMPANY:
+ {
+ pOrganization->SetName(value);
+ }
+ break;
+ }
+
+ if (pOrganization->GetJobTitle().IsEmpty() && pOrganization->GetDepartment().IsEmpty() && pOrganization->GetName().IsEmpty())
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_ORGANIZATIONS, 0);
+ }
+ else
+ {
+ if (value.IsEmpty())
+ {
+ r = __pContact->RemoveAt(CONTACT_MPROPERTY_ID_ORGANIZATIONS, 0);
+
+ if (r == E_SUCCESS)
+ {
+ r = __pContact->AddOrganization(*pOrganization);
+ }
+ }
+ else
+ {
+ r = __pContact->SetOrganizationAt(0, *pOrganization);
+ }
+ }
+ }
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return r;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetPhoneNumberTypeString(DetailPhoneNumberType type)
+{
+ String returnString;
+
+ switch (type)
+ {
+ case DETAIL_PHONENUMBER_TYPE_HOME:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_HOME");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_WORK:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_WORK");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_MOBILE:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_MOBILE");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_HOME_FAX:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_FAX_HHOME");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_WORK_FAX:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_FAX_HWORK");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_PAGER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_PAGER");
+ }
+ break;
+ case DETAIL_PHONENUMBER_TYPE_OTHER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_OTHER");
+ }
+ break;
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetEmailTypeString(DetailEmailType type)
+{
+ String returnString;
+
+ switch (type)
+ {
+ case DETAIL_EMAIL_TYPE_HOME:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_HOME");
+ }
+ break;
+ case DETAIL_EMAIL_TYPE_WORK:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_WORK");
+ }
+ break;
+ case DETAIL_EMAIL_TYPE_OTHER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_OTHER");
+ }
+ break;
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetAddressTypeString(DetailAddressType type)
+{
+ String returnString;
+
+ switch (type)
+ {
+ case DETAIL_ADDRESS_TYPE_HOME:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_HOME");
+ }
+ break;
+ case DETAIL_ADDRESS_TYPE_WORK:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_WORK");
+ }
+ break;
+ case DETAIL_ADDRESS_TYPE_OTHER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_OTHER");
+ }
+ break;
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetUrlTypeString(DetailUrlType type)
+{
+ String returnString;
+
+ switch (type)
+ {
+ case DETAIL_URL_TYPE_HOME:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_HOME");
+ }
+ break;
+ case DETAIL_URL_TYPE_WORK:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_WORK");
+ }
+ break;
+ case DETAIL_URL_TYPE_OTHER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_OTHER");
+ }
+ break;
+ }
+
+ return returnString;
+}
+
+Tizen::Base::String
+ContactPresentationModel::GetImAddressTypeString(DetailImAddressType type)
+{
+ String returnString;
+
+ switch (type)
+ {
+ case DETAIL_IM_ADDRESS_TYPE_AIM:
+ {
+ returnString = IM_ADDRESS_AIM;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_MSN:
+ {
+ returnString = IM_ADDRESS_MSN;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_YAHOO:
+ {
+ returnString = IM_ADDRESS_YAHOO;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_SKYPE:
+ {
+ returnString = IM_ADDRESS_SKYPE;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_QQ:
+ {
+ returnString = IM_ADDRESS_QQ;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_GOOGLE_TALK:
+ {
+ returnString = IM_ADDRESS_GOOGLE_TALK;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_ICQ:
+ {
+ returnString = IM_ADDRESS_ICQ;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_JABBER:
+ {
+ returnString = IM_ADDRESS_JABBER;
+ }
+ break;
+ case DETAIL_IM_ADDRESS_TYPE_OTHER:
+ {
+ returnString = ResourceManager::GetString(L"IDS_PB_BODY_OTHER");
+ }
+ break;
+ }
+
+ return returnString;
+}
+
+DetailPhoneNumberType
+ContactPresentationModel::GetPhoneNumberType(int index)
+{
+ DetailPhoneNumberType type;
+ String value;
+
+ value = GetPhoneNumber(index, type);
+
+ return type;
+}
+
+DetailEmailType
+ContactPresentationModel::GetEmailType(int index)
+{
+ DetailEmailType type;
+ String value;
+
+ value = GetEmail(index, type);
+
+ return type;
+}
+
+DetailAddressType
+ContactPresentationModel::GetAddressType(DetailProperty id, int index)
+{
+ DetailAddressType type;
+ String value;
+
+ value = GetAddress(id, index, type);
+
+ return type;
+}
+
+DetailUrlType
+ContactPresentationModel::GetUrlType(int index)
+{
+ DetailUrlType type;
+ String value;
+
+ value = GetUrl(index, type);
+
+ return type;
+}
+
+DetailImAddressType
+ContactPresentationModel::GetImAddressType(int index)
+{
+ DetailImAddressType type;
+ String value;
+
+ value = GetImAddress(index, type);
+
+ return type;
+}
+
+void
+ContactPresentationModel::SetAsFavorite(bool isFavorite)
+{
+ AddressbookManager::GetInstance()->SetPersonAsFavorite(__pContact->GetPersonId(), isFavorite);
+}
+
+bool
+ContactPresentationModel::IsFavorite(void)
+{
+ bool isFavorite = false;
+ PersonId personId = __pContact->GetPersonId();
+
+ Person* pPerson = AddressbookManager::GetInstance()->GetPersonN(personId);
+ if (pPerson == null)
+ {
+ return false;
+ }
+
+ isFavorite = pPerson->IsFavorite();
+
+ delete pPerson;
+
+ return isFavorite;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactSelectorForm.cpp
+ * @brief This is the implementation file for the ContactSelectorForm class.
+ */
+
+#include <FApp.h>
+#include <FSocial.h>
+#include "CtContactsApp.h"
+#include "CtContactSelectorForm.h"
+#include "CtContactListItem.h"
+#include "CtContactListPresentationModel.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtSearchListEventListener.h"
+#include "CtSearchListItem.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_FOOTER_DONE = 0;
+static const int IDA_FOOTER_CANCEL = 1;
+static const int IDA_CHECK_SELECT_ALL_CHECKED = 10;
+static const int IDA_CHECK_SELECT_ALL_UNCHECKED = 11;
+
+static const int H_SEARCHBAR = 86;
+static const int H_SELECT_ALL = 112;
+static const int H_GROUP_ITEM = 76;
+static const int H_BOTTOM_LABEL = 48;
+static const int X_LIST_ITEM_TEXT_MARGIN = 32;
+static const int H_CHECK_LABEL = 72;
+static const int Y_CHECK_LABEL = 20;
+
+static const int FONT_SIZE_BOTTOM_LABEL = 32;
+
+static const unsigned int COLOR_BOTTOM_LABEL_BG = Color32<68, 68, 68>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_FONT = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_CHECK_LABEL_BG = Color32<220, 218, 211>::Value;
+
+ContactSelectorForm::ContactSelectorForm(void)
+: __pPresentationModel(null)
+, __pSelectAll(null)
+, __pListView(null)
+, __pSearchListView(null)
+, __pCheckLabel(null)
+, __pBottomLabel(null)
+, __pSearchBar(null)
+, __pSearchListEvent(null)
+{
+}
+
+ContactSelectorForm::~ContactSelectorForm(void)
+{
+}
+
+void
+ContactSelectorForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+ContactSelectorForm::OnInitializing(void)
+{
+ Header* pHeader = GetHeader();
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_PB_HEADER_SELECT_CONTACTS"));
+
+ SetFormBackEventListener(this);
+
+ CreateFooterButton();
+
+ __pPresentationModel = ContactListPresentationModel::GetInstance();
+
+ __pCheckLabel = new (std::nothrow) Label();
+ __pCheckLabel->Construct(Rectangle(0, H_SEARCHBAR + Y_CHECK_LABEL, GetClientAreaBounds().width, H_CHECK_LABEL), L"");
+ __pCheckLabel->SetBackgroundColor(COLOR_CHECK_LABEL_BG);
+ AddControl(__pCheckLabel);
+
+ __pSelectAll = new (std::nothrow) CheckButton();
+ __pSelectAll->Construct(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, H_SELECT_ALL), CHECK_BUTTON_STYLE_MARK, BACKGROUND_STYLE_NONE);
+ __pSelectAll->SetText(ResourceManager::GetString(L"IDS_COM_BODY_SELECT_ALL"));
+ __pSelectAll->SetActionId(IDA_CHECK_SELECT_ALL_CHECKED, IDA_CHECK_SELECT_ALL_UNCHECKED);
+ __pSelectAll->AddActionEventListener(*this);
+ AddControl(__pSelectAll);
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, H_SELECT_ALL + H_SEARCHBAR, GetClientAreaBounds().width,
+ GetClientAreaBounds().height - (H_SEARCHBAR + H_SELECT_ALL + H_BOTTOM_LABEL)), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true);
+ __pListView->SetItemProvider(*this);
+ __pListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pListView->AddFastScrollListener(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+ __pListView->AddTouchEventListener(*this);
+ AddControl(__pListView);
+
+ __pSearchBar = new (std::nothrow) SearchBar();
+ __pSearchBar->Construct(Rectangle(0, 0, GetClientAreaBounds().width, H_SEARCHBAR));
+ __pSearchBar->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_SEARCH"));
+ __pSearchBar->AddSearchBarEventListener(*this);
+ __pSearchBar->AddTextEventListener(*this);
+ __pSearchBar->AddKeypadEventListener(*this);
+ __pSearchBar->SetContentAreaSize(Dimension(0, 0));
+
+ __pSearchListEvent = new (std::nothrow) SearchListEventListener(LIST_ANNEX_STYLE_MARK, __pPresentationModel);
+ AddControl(__pSearchBar);
+
+ __pSearchListView = new (std::nothrow) GroupedListView();
+ __pSearchListView->Construct(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pSearchListView->SetItemProvider(*__pSearchListEvent);
+ __pSearchListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pSearchListView->AddGroupedListViewItemEventListener(*this);
+ __pSearchListView->AddTouchEventListener(*this);
+ __pSearchListView->SetShowState(false);
+ AddControl(__pSearchListView);
+
+ __pBottomLabel = new (std::nothrow) Label();
+ __pBottomLabel->Construct(FloatRectangle(0, GetClientAreaBoundsF().height - H_BOTTOM_LABEL, GetClientAreaBoundsF().width, H_BOTTOM_LABEL),
+ ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + INITIAL_SELECTED_COUNT);
+ __pBottomLabel->SetBackgroundColor(Color(COLOR_BOTTOM_LABEL_BG));
+ __pBottomLabel->SetTextColor(Color(COLOR_BOTTOM_LABEL_FONT));
+ __pBottomLabel->SetTextConfig(FONT_SIZE_BOTTOM_LABEL, LABEL_TEXT_STYLE_BOLD);
+ __pBottomLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ __pBottomLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ AddControl(__pBottomLabel);
+
+ return E_SUCCESS;
+}
+
+result
+ContactSelectorForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+
+ if (__pSearchListEvent != null)
+ {
+ delete __pSearchListEvent;
+ }
+ return r;
+}
+
+void
+ContactSelectorForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ SceneManager *pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+}
+
+void
+ContactSelectorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ result r = E_SUCCESS;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (actionId)
+ {
+ case IDA_CHECK_SELECT_ALL_CHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < __pListView->GetItemCountAt(groupIndex); itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, true);
+ }
+ }
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_UNCHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < __pListView->GetItemCountAt(groupIndex); itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ ArrayList* contactIdList = new (std::nothrow) ArrayList();
+ contactIdList->Construct();
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < __pListView->GetItemCountAt(groupIndex); itemIndex++)
+ {
+ bool isChecked = false;
+ isChecked = __pListView->IsItemChecked(groupIndex, itemIndex);
+ if (isChecked == true)
+ {
+ RecordId contactId = __pPresentationModel->GetContactId(groupIndex, itemIndex);
+ contactIdList->Add(*(new (std::nothrow) Integer(contactId)));
+ }
+ }
+ }
+
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), contactIdList);
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+ContactSelectorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ if (pArgs != null)
+ {
+ __pPresentationModel->InitializeContactList(pArgs);
+
+ String fastScrollIndex;
+ for (int i = 0; i < __pPresentationModel->GetContactCount(); i++)
+ {
+ fastScrollIndex.Append(__pPresentationModel->GetKey(i));
+ }
+
+ __pListView->SetFastScrollIndex(fastScrollIndex, false);
+
+ Footer* pFooter = GetFooter();
+ pFooter->SetItemEnabled(1, false);
+ }
+
+ UpdateBottomLabel();
+ __pPresentationModel->AddContactChangeListener(*this);
+}
+
+void
+ContactSelectorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ __pPresentationModel->RemoveContactChangeListener(*this);
+}
+
+void
+ContactSelectorForm::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode)
+{
+ if (mode == SEARCH_BAR_MODE_NORMAL)
+ {
+ int count = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int i = 0; i < count; i++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(i, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, i));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pListView->SetShowState(true);
+ __pListView->Invalidate(true);
+ __pCheckLabel->SetShowState(true);
+ __pSelectAll->SetShowState(true);
+ __pSelectAll->SetSelected(isChecked);
+ __pSearchListView->SetShowState(false);
+ __pPresentationModel->ResetSearchedContactList();
+ __pSearchListView->UpdateList();
+
+ UpdateBottomLabel();
+ }
+}
+
+void
+ContactSelectorForm::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+
+ if (searchText.GetLength() != 0)
+ {
+ __pCheckLabel->SetShowState(false);
+ __pSelectAll->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pSearchListView->SetShowState(true);
+
+ __pSearchListView->UpdateList();
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pSearchListView->SetItemChecked(0, index, __pListView->IsItemChecked(groupIndex, itemIndex));
+ }
+
+ __pSearchListView->Invalidate(true);
+ }
+ else
+ {
+ __pCheckLabel->SetShowState(true);
+ __pSelectAll->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAll->SetSelected(isChecked);
+ __pListView->Invalidate(true);
+ }
+ UpdateBottomLabel();
+}
+
+void
+ContactSelectorForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+int
+ContactSelectorForm::GetGroupCount(void)
+{
+ return __pPresentationModel->GetKeyCount();
+}
+
+int
+ContactSelectorForm::GetItemCount(int groupIndex)
+{
+ int contactCount = __pPresentationModel->GetContactCount(groupIndex);
+ if (contactCount == 0)
+ {
+ contactCount = -1;
+ }
+
+ return contactCount;
+}
+
+Tizen::Ui::Controls::ListItemBase*
+ContactSelectorForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ Bitmap* pThumbnail = null;
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()), LIST_ANNEX_STYLE_MARK);
+
+ __pPresentationModel->GetContactItemInfoN(groupIndex, itemIndex, name, pThumbnail);
+ ContactListItem* pCustomElement = new (std::nothrow) ContactListItem(name, pThumbnail);
+ pItem->AddElement(Rectangle(0, 0, itemWidth - (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN), pContactsApp->GetListItemSingleLineHeight()), 0, *(static_cast<ICustomElement *>(pCustomElement)));
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+ContactSelectorForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(__pPresentationModel->GetKey(groupIndex), null);
+
+ return pItem;
+}
+
+bool
+ContactSelectorForm::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ CustomItem* pCustomItem = static_cast<CustomItem *>(pItem);
+ pCustomItem->RemoveAllElements();
+
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+ContactSelectorForm::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+ContactSelectorForm::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+ContactSelectorForm::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state)
+{
+ if (&listView == __pListView)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ bool isChecked = true;
+ for (int groupIndex = 0; groupIndex < listView.GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < listView.GetItemCountAt(groupIndex); itemIndex++)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAll->SetSelected(isChecked);
+ }
+ else
+ {
+ __pSelectAll->SetSelected(false);
+ }
+ }
+ else if (&listView == __pSearchListView)
+ {
+ int count = __pPresentationModel->GetSearchedContactCount();
+
+ for (int i = 0; i < count; i++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(i, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, i));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+ContactSelectorForm::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+ContactSelectorForm::OnContactsChanged(void)
+{
+ result r = E_SUCCESS;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+}
+
+void
+ContactSelectorForm::OnCategoriesChanged(void)
+{
+}
+
+result
+ContactSelectorForm::CreateFooterButton()
+{
+ result r = E_SUCCESS;
+
+ Footer* pFooter = GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->AddActionEventListener(*this);
+
+ FooterItem footerItemCancel;
+ FooterItem footerItemDone;
+
+ footerItemCancel.Construct(IDA_FOOTER_CANCEL);
+ footerItemDone.Construct(IDA_FOOTER_DONE);
+
+ footerItemCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ footerItemDone.SetText(ResourceManager::GetString(L"IDS_COM_SK_DONE"));
+
+ pFooter->AddItem(footerItemCancel);
+ pFooter->AddItem(footerItemDone);
+
+ return r;
+}
+
+void
+ContactSelectorForm::UpdateBottomLabel(void)
+{
+ int selectedCount = 0;
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < __pListView->GetItemCountAt(groupIndex); itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ selectedCount++;
+ }
+ }
+ }
+
+ String string = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ string.Append(L" (");
+ string.Append(selectedCount);
+ string.Append(L")");
+ __pBottomLabel->SetText(string);
+ __pBottomLabel->SetPosition(FloatPoint(0, GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(false);
+
+ Footer* pFooter = GetFooter();
+ if (selectedCount > 0 && __pBottomLabel->GetShowState() == false)
+ {
+ __pBottomLabel->SetShowState(true);
+ __pListView->SetSize(__pListView->GetSize().width, __pListView->GetSize().height - H_BOTTOM_LABEL);
+ __pSearchListView->SetSize(__pSearchListView->GetSize().width, __pSearchListView->GetSize().height - H_BOTTOM_LABEL);
+ pFooter->SetItemEnabled(1, true);
+ }
+ else if (selectedCount == 0 && __pBottomLabel->GetShowState() == true)
+ {
+ __pBottomLabel->SetShowState(false);
+ __pListView->SetSize(__pListView->GetSize().width, __pListView->GetSize().height + H_BOTTOM_LABEL);
+ __pSearchListView->SetSize(__pSearchListView->GetSize().width, __pSearchListView->GetSize().height + H_BOTTOM_LABEL);
+ pFooter->SetItemEnabled(1, false);
+ }
+
+ pFooter->Invalidate(true);
+}
+
+void
+ContactSelectorForm::OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index)
+{
+ __pListView->ScrollToItem(__pPresentationModel->GetKeyIndex(index), -1);
+ __pListView->Invalidate(false);
+}
+
+void
+ContactSelectorForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+}
+
+void
+ContactSelectorForm::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL));
+ __pBottomLabel->SetPosition(FloatPoint(0, GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(true);
+ }
+ else
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR));
+ }
+}
+
+void
+ContactSelectorForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL));
+ __pBottomLabel->SetPosition(FloatPoint(0, GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(true);
+
+ UpdateBottomLabel();
+ }
+ else
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR));
+ }
+}
+
+void
+ContactSelectorForm::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
+{
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL));
+ __pBottomLabel->SetPosition(FloatPoint(0, GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(true);
+ }
+ else
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR));
+ }
+}
+
+void
+ContactSelectorForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+ if (keypadAction == KEYPAD_ACTION_SEARCH)
+ {
+ __pSearchBar->HideKeypad();
+ }
+}
+
+void
+ContactSelectorForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ GroupedListView* pList = static_cast<GroupedListView*>(&const_cast<Control&>(source));
+ if (pList != null)
+ {
+ pList->SetFocus();
+ }
+}
+
+void
+ContactSelectorForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactSelectorForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactSelectorForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+ContactSelectorForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactValueListItemProvider.cpp
+ * @brief This is the implementation file for the ContactValueListItemProvider class.
+ */
+
+#include "CtContactValueListItemProvider.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+static const int H_ITEM = 112;
+
+ContactValueListItemProvider::ContactValueListItemProvider(Tizen::Base::Collection::IList* pContactValueList)
+: __pContactValueList(pContactValueList)
+{
+}
+
+ContactValueListItemProvider::~ContactValueListItemProvider(void)
+{
+ if (__pContactValueList != null)
+ {
+ __pContactValueList->RemoveAll(true);
+ delete __pContactValueList;
+ }
+}
+
+Tizen::Ui::Controls::ListItemBase*
+ContactValueListItemProvider::CreateItem(int index, int itemWidth)
+{
+ SimpleItem* pItem = new (std::nothrow) SimpleItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM), LIST_ANNEX_STYLE_NORMAL);
+ pItem->SetElement(*static_cast<String *>(__pContactValueList->GetAt(index)));
+
+ return pItem;
+}
+
+bool
+ContactValueListItemProvider::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+
+ return true;
+}
+
+int
+ContactValueListItemProvider::GetItemCount(void)
+{
+ return __pContactValueList->GetCount();
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtContactsApp.cpp
+ * @brief This is the implementation file for the ContactsApp class.
+ */
+
+#include <FIo.h>
+#include "CtContactsApp.h"
+#include "CtContactListPresentationModel.h"
+#include "CtGroupContactListPresentationModel.h"
+#include "CtGroupListPresentationModel.h"
+#include "CtIContactsAppStateChangeEventListener.h"
+#include "CtMainFrame.h"
+#include "CtResourceManager.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Io;
+using namespace Tizen::System;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+
+static const wchar_t* SELECTION_MODE = L"selectionMode";
+static const wchar_t* SELECTION_MODE_SINGLE = L"single";
+static const wchar_t* SELECTION_MODE_MULTIPLE = L"multiple";
+static const wchar_t* RETURN_TYPE = L"returnType";
+static const wchar_t* PHONE = L"phone";
+static const wchar_t* EMAIL = L"email";
+static const wchar_t* URL = L"url";
+static const wchar_t* VIEW_TYPE = L"viewType";
+static const wchar_t* CONTACT_ID = L"contactId";
+static const wchar_t* PATH = L"path";
+static const wchar_t* VALUE_VIEW_TYPE_CONTACT = L"contact";
+static const wchar_t* VALUE_VIEW_TYPE_VCF = L"vcf";
+static const wchar_t* VIEW_MIME_TYPE_VCF = L"text/vcard";
+static const wchar_t* VIEW_URI_VCF_PREFIX = L"file:///";
+
+static const wchar_t* FONT_SIZE_STR_NORMAL = L"medium";
+
+static const int LIST_ITEM_SINGLE_LINE_NORMAL_HEIGHT = 112;
+static const int FONT_SIZE_NORMAL = 44;
+
+ContactsApp::ContactsApp(void)
+ : __initialSceneId(IDSCN_CONTACT_LIST)
+ , __pArgs(null)
+ , __operationId(L"")
+ , __selectionMode(APP_CONTROL_SELECTION_MODE_NONE)
+ , __returnType(APP_CONTROL_RETURN_TYPE_NONE)
+ , __requestId(0)
+{
+ __listenerList.Construct();
+}
+
+ContactsApp::~ContactsApp(void)
+{
+}
+
+UiApp*
+ContactsApp::CreateInstance(void)
+{
+ static ContactsApp* pContactsAppInstance = null;
+ if (pContactsAppInstance == null)
+ {
+ pContactsAppInstance = new (std::nothrow) ContactsApp();
+ }
+
+ return pContactsAppInstance;
+}
+
+bool
+ContactsApp::OnAppInitializing(Tizen::App::AppRegistry& appRegistry)
+{
+ AppControlProviderManager* pProviderManager = AppControlProviderManager::GetInstance();
+ result r = pProviderManager->SetAppControlProviderEventListener(this);
+ TryReturn(r == E_SUCCESS, false, "[%s] Failed to set AppControlProviderEventListener", GetErrorMessage(r));
+
+ r = SettingInfo::AddSettingEventListener(*this);
+ if (IsFailed(r))
+ {
+ AppLogDebug("[%s] Failed to add SettingEventListener", GetErrorMessage(r));
+ }
+
+ return true;
+}
+
+bool
+ContactsApp::OnAppInitialized(void)
+{
+ InitializeFontSize();
+
+ MainFrame* pContactFrame = new (std::nothrow) MainFrame();
+ pContactFrame->Construct();
+ pContactFrame->SetName(ResourceManager::GetString(L"IDS_COM_BODY_CONTACTS"));
+ AddFrame(*pContactFrame);
+
+ return true;
+}
+
+bool
+ContactsApp::OnAppWillTerminate(void)
+{
+ return true;
+}
+
+bool
+ContactsApp::OnAppTerminating(Tizen::App::AppRegistry& appRegistry, bool forcedTermination)
+{
+ result r = SettingInfo::RemoveSettingEventListener(*this);
+ if (IsFailed(r))
+ {
+ AppLogDebug("[%s] Failed to remove SettingEventListener", GetErrorMessage(r));
+ }
+
+ return true;
+}
+
+void
+ContactsApp::OnForeground(void)
+{
+ IEnumerator* pEnum = __listenerList.GetEnumeratorN();
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ IContactsAppStateChangeEventListener* pInterface = static_cast<IContactsAppStateChangeEventListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+
+ return;
+ }
+ pInterface->OnForeground();
+ }
+ delete pEnum;
+}
+
+void
+ContactsApp::OnBackground(void)
+{
+ IEnumerator* pEnum = __listenerList.GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ IContactsAppStateChangeEventListener* pInterface = static_cast<IContactsAppStateChangeEventListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+
+ return;
+ }
+ pInterface->OnBackground();
+ }
+ delete pEnum;
+}
+
+void
+ContactsApp::OnLowMemory(void)
+{
+}
+
+void
+ContactsApp::OnBatteryLevelChanged(Tizen::System::BatteryLevel batteryLevel)
+{
+}
+
+void
+ContactsApp::OnScreenOn(void)
+{
+}
+
+void
+ContactsApp::OnScreenOff(void)
+{
+}
+
+void
+ContactsApp::OnAppCheckpointing(Tizen::App::AppRegistry& appRegistry)
+{
+}
+
+void
+ContactsApp::OnSettingChanged(Tizen::Base::String& key)
+{
+ if (key.Equals(SETTING_KEY_LANGUAGE, false) == true || key.Equals(SETTING_KEY_COUNTRY, false) == true || key.Equals(SETTING_KEY_FONTSIZE, false) == true)
+ {
+ if (__operationId.Equals(OPERATION_ID_PICK, true))
+ {
+ result r = AppControlProviderManager::GetInstance()->SendAppControlResult(__requestId, APP_CTRL_RESULT_TERMINATED, null);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to return result.", GetErrorMessage(r));
+ }
+ Terminate();
+ }
+}
+
+void
+ContactsApp::OnAppControlRequestReceived(RequestId reqId, const Tizen::Base::String& operationId, const Tizen::Base::String* pUriData,
+ const Tizen::Base::String* pMimeType, const Tizen::Base::Collection::IMap* pExtraData)
+{
+ AppLogDebug("reqId : %ld, operationId : %ls", reqId, operationId.GetPointer());
+
+ if (pExtraData != null)
+ {
+ IMapEnumerator* pEnum = pExtraData->GetMapEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pKey = static_cast<String*>(pEnum->GetKey());
+ String* pValue = static_cast<String*>(pEnum->GetValue());
+
+ AppLogDebug("extraData : %ls:%ls", pKey->GetPointer(), pValue->GetPointer());
+ }
+ delete pEnum;
+ }
+
+ result r = E_SUCCESS;
+
+ ArrayList* pArgs = new (std::nothrow) ArrayList();
+ pArgs->Construct();
+
+ if (operationId.Equals(CONTACT_OPERATION_ID_MAIN, true))
+ {
+ __operationId = L"";
+ }
+ else if (operationId.Equals(CONTACT_OPERATION_ID_PICK, true))
+ {
+ if (pExtraData == null)
+ {
+ AppLogDebug("To launch AppControl by the pick operation, the (key,value) pairs should be input.");
+ r = AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ Terminate();
+
+ return;
+ }
+
+ const String* pItemType = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_ITEM_TYPE)));
+ if (pItemType == null || pItemType->Equals(ITEM_TYPE_PERSON, true) == false)
+ {
+ AppLogDebug("To launch AppControl by the pick operation, the item type should be input.");
+ r = AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ Terminate();
+
+ return;
+ }
+
+ const String* pValue = null;
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_SELECTION_MODE)));
+ if (pValue == null || pValue->GetPointer() == null)
+ {
+ AppLogDebug("To launch AppControl by the pick operation, the selection mode should be input.");
+ r = AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ Terminate();
+
+ return;
+ }
+
+ String* pSelectionMode = new (std::nothrow) String(SELECTION_MODE);
+ pSelectionMode->Append(DELIMITER);
+ pSelectionMode->Append(*pValue);
+ pArgs->Add(pSelectionMode);
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_RESULT_TYPE)));
+ if (pValue == null || pValue->GetPointer() == null)
+ {
+ AppLogDebug("To launch AppControl by the pick operation, the selection mode should be input.");
+ r = AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+ Terminate();
+
+ return;
+ }
+
+ String* pReturnType = new (std::nothrow) String(RETURN_TYPE);
+ pReturnType->Append(DELIMITER);
+ pReturnType->Append(*pValue);
+ pArgs->Add(pReturnType);
+
+ r = InitializeAppControl(pArgs);
+ if (IsFailed(r))
+ {
+ AppLogDebug("[%s] initializing app control failed", GetErrorMessage(r));
+ r = AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ Terminate();
+
+ return;
+ }
+
+ if (__selectionMode == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ __initialSceneId = IDSCN_CONTACT_LIST;
+ }
+ else if (__selectionMode == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ __initialSceneId = IDSCN_CONTACT_LIST_EDITOR;
+ }
+ __operationId = OPERATION_ID_PICK;
+ }
+ else if (operationId.Equals(CONTACT_OPERATION_ID_ADD, true))
+ {
+ if (pExtraData == null)
+ {
+ AppLogDebug("To launch AppControl by the add operation, the (key,value) pairs should be input.");
+ r = AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ Terminate();
+
+ return;
+ }
+
+ const String* pItemType = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_ITEM_TYPE)));
+ if (pItemType == null || pItemType->Equals(ITEM_TYPE_CONTACT, true) == false)
+ {
+ AppLogDebug("To launch AppControl by the add operation, the item type should be input.");
+ r = AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ Terminate();
+
+ return;
+ }
+
+ String* pKey = null;
+ const String* pValue = null;
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_PHONE)));
+ if (pValue && pValue->GetPointer())
+ {
+ pKey = new (std::nothrow) String(PHONE);
+ pKey->Append(DELIMITER);
+ pKey->Append(*pValue);
+ pArgs->Add(pKey);
+ }
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_EMAIL)));
+ if (pValue && pValue->GetPointer())
+ {
+ pKey = new (std::nothrow) String(EMAIL);
+ pKey->Append(DELIMITER);
+ pKey->Append(*pValue);
+ pArgs->Add(pKey);
+ }
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_URL)));
+ if (pValue && pValue->GetPointer())
+ {
+ pKey = new (std::nothrow) String(URL);
+ pKey->Append(DELIMITER);
+ pKey->Append(*pValue);
+ pArgs->Add(pKey);
+ }
+
+ __initialSceneId = IDSCN_CONTACT_EDITOR;
+ __operationId = OPERATION_ID_ADD;
+ }
+ else if (operationId.Equals(CONTACT_OPERATION_ID_EDIT, true))
+ {
+ if (pExtraData == null)
+ {
+ AppLogDebug("To launch AppControl by the edit operation, the (key,value) pairs should be input.");
+ Terminate();
+
+ return;
+ }
+
+ const String* pItemType = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_ITEM_TYPE)));
+ if (pItemType == null || pItemType->Equals(ITEM_TYPE_PERSON, true) == false)
+ {
+ AppLogDebug("To launch AppControl by the edit operation, the item type should be input.");
+ r = AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ Terminate();
+
+ return;
+ }
+
+ String* pKey = null;
+ const String* pValue = null;
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_ITEM_ID)));
+ if (pValue == null || pValue->GetPointer() == null)
+ {
+ AppLogDebug("To launch AppControl by the edit operation, the item_id should be input.");
+ r = AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ Terminate();
+
+ return;
+ }
+
+ pKey = new (std::nothrow) String(RETURN_TYPE_ITEM_ID);
+ pKey->Append(DELIMITER);
+ pKey->Append(*pValue);
+ pArgs->Add(pKey);
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_PHONE)));
+ if (pValue && pValue->GetPointer())
+ {
+ pKey = new (std::nothrow) String(PHONE);
+ pKey->Append(DELIMITER);
+ pKey->Append(*pValue);
+ pArgs->Add(pKey);
+ }
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_EMAIL)));
+ if (pValue && pValue->GetPointer())
+ {
+ pKey = new (std::nothrow) String(EMAIL);
+ pKey->Append(DELIMITER);
+ pKey->Append(*pValue);
+ pArgs->Add(pKey);
+ }
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_URL)));
+ if (pValue && pValue->GetPointer())
+ {
+ pKey = new (std::nothrow) String(URL);
+ pKey->Append(DELIMITER);
+ pKey->Append(*pValue);
+ pArgs->Add(pKey);
+ }
+
+ __initialSceneId = IDSCN_CONTACT_EDITOR;
+ __operationId = OPERATION_ID_EDIT;
+ }
+ else if (operationId.Equals(CONTACT_OPERATION_ID_CHOOSE, true))
+ {
+ if (pExtraData == null)
+ {
+ AppLogDebug("To launch AppControl by the choose operation, the (key,value) pairs should be input.");
+ Terminate();
+
+ return;
+ }
+
+ const String* pItemType = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_ITEM_TYPE)));
+ if (pItemType == null || pItemType->Equals(ITEM_TYPE_PERSON, true) == false)
+ {
+ AppLogDebug("To launch AppControl by the edit operation, the item type should be input.");
+ r = AppControlProviderManager::GetInstance()->SendAppControlResult(reqId, APP_CTRL_RESULT_FAILED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+
+ Terminate();
+
+ return;
+ }
+
+ String* pKey = null;
+ const String* pValue = null;
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_PHONE)));
+ if (pValue && pValue->GetPointer())
+ {
+ pKey = new (std::nothrow) String(PHONE);
+ pKey->Append(DELIMITER);
+ pKey->Append(*pValue);
+ pArgs->Add(pKey);
+ }
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_EMAIL)));
+ if (pValue && pValue->GetPointer())
+ {
+ pKey = new (std::nothrow) String(EMAIL);
+ pKey->Append(DELIMITER);
+ pKey->Append(*pValue);
+ pArgs->Add(pKey);
+ }
+
+ pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_URL)));
+ if (pValue && pValue->GetPointer())
+ {
+ pKey = new (std::nothrow) String(URL);
+ pKey->Append(DELIMITER);
+ pKey->Append(*pValue);
+ pArgs->Add(pKey);
+ }
+
+ __initialSceneId = IDSCN_CONTACT_LIST;
+ __operationId = OPERATION_ID_EDIT;
+ }
+ else if (operationId.Equals(CONTACT_OPERATION_ID_VIEW, true))
+ {
+ String* pErrorType = null;
+ if (pExtraData == null)
+ {
+ AppLogDebug("To launch AppControl by the view operation, the (key,value) pairs should be input.");
+ Terminate();
+
+ return;
+ }
+
+ const String* pItemType = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_ITEM_TYPE)));
+ if (pItemType == null || pItemType->Equals(ITEM_TYPE_PERSON, true) == false)
+ {
+ AppLogDebug("To launch AppControl by the view operation, the item type should be input.");
+ pErrorType = new (std::nothrow) String(ResourceManager::GetString(L"IDS_RSSR_BODY_INVALID_FORMAT"));
+ }
+
+ String* pViewType = new (std::nothrow) String(VIEW_TYPE);
+ pViewType->Append(DELIMITER);
+ pViewType->Append(VALUE_VIEW_TYPE_CONTACT);
+ pArgs->Add(pViewType);
+
+ const String* pValue = static_cast<const String*>(pExtraData->GetValue(String(CONTACT_KEY_ITEM_ID)));
+ if (pValue == null || pValue->GetPointer() == null)
+ {
+ AppLogDebug("To launch AppControl by the view operation, the itemId should be input.");
+ if (pErrorType == null)
+ {
+ pErrorType = new (std::nothrow) String(ResourceManager::GetString(L"IDS_RSSR_BODY_INVALID_FORMAT"));
+ }
+ }
+
+ String* pKey = new (std::nothrow) String(CONTACT_ID);
+ pKey->Append(DELIMITER);
+ if (pValue != null)
+ {
+ pKey->Append(*pValue);
+ }
+ pArgs->Add(pKey);
+ pArgs->Add(pErrorType);
+
+ __initialSceneId = IDSCN_CONTACT_DETAILS;
+ __operationId = OPERATION_ID_VIEW;
+ }
+ else if (operationId.Equals(OPERATION_ID_VIEW, true))
+ {
+ String* pErrorType = null;
+ String vcfPrefix(VIEW_URI_VCF_PREFIX);
+ String path;
+ String mimeType;
+
+ if (pUriData == null)
+ {
+ AppLogDebug("To launch AppControl by the view operation, the uri data should be input.");
+ pErrorType = new (std::nothrow) String(ResourceManager::GetString(L"IDS_RSSR_BODY_INVALID_FORMAT"));
+ }
+ else
+ {
+ if (pMimeType != null)
+ {
+ mimeType.Append(*pMimeType);
+ }
+
+ if (pUriData->StartsWith(vcfPrefix, 0))
+ {
+ pUriData->SubString(vcfPrefix.GetLength() - 1, pUriData->GetLength() - vcfPrefix.GetLength() + 1, path);
+ mimeType.Clear();
+ mimeType.Append(VIEW_MIME_TYPE_VCF);
+ }
+ else
+ {
+ path.Append(*pUriData);
+ }
+
+ if (mimeType.Equals(VIEW_MIME_TYPE_VCF, true) == false)
+ {
+ AppLogDebug("The MIME type is wrong.");
+ pErrorType = new (std::nothrow) String(ResourceManager::GetString(L"IDS_RSSR_BODY_INVALID_FORMAT"));
+ }
+ else if (File::IsFileExist(path) == false)
+ {
+ AppLogDebug("The vcf file does not exist.");
+ pErrorType = new (std::nothrow) String(ResourceManager::GetString(L"IDS_MP_POP_INVALID_FILE"));
+ }
+ }
+
+ String* pViewType = new (std::nothrow) String(VIEW_TYPE);
+ pViewType->Append(DELIMITER);
+ pViewType->Append(VALUE_VIEW_TYPE_VCF);
+
+ pArgs->Add(pViewType);
+
+ String* pKey = new (std::nothrow) String(PATH);
+ pKey->Append(DELIMITER);
+ pKey->Append(path);
+
+ pArgs->Add(pKey);
+
+ pArgs->Add(pErrorType);
+
+ __initialSceneId = IDSCN_CONTACT_DETAILS;
+ __operationId = OPERATION_ID_VIEW;
+ }
+ else if (operationId.Equals(OPERATION_ID_CONFIGURE, true))
+ {
+ __initialSceneId = IDSCN_SETTINGS;
+ __operationId = OPERATION_ID_CONFIGURE;
+ }
+ else
+ {
+ AppLogDebug("Invalid OperationId");
+ __operationId = L"";
+ }
+
+ __pArgs = pArgs;
+ __requestId = reqId;
+}
+
+result
+ContactsApp::InitializeAppControl(Tizen::Base::Collection::IList* pArgs)
+{
+ TryReturn(pArgs != null, E_INVALID_ARG, "[E_INVALID_ARG] app control argument is invalid");
+
+ String key;
+ String value;
+ String* pArgString = static_cast<String*>(pArgs->GetAt(0));
+ TryReturn(pArgString, E_FAILURE, "[E_FAILURE] Unable to cast argument string");
+ result r = ParseAppControlArgument(*pArgString, key, value);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to parse the argument", GetErrorMessage(r));
+
+ if (key.Equals(SELECTION_MODE, true))
+ {
+ if (value.Equals(SELECTION_MODE_SINGLE, true))
+ {
+ __selectionMode = APP_CONTROL_SELECTION_MODE_SINGLE;
+ }
+ else if (value.Equals(SELECTION_MODE_MULTIPLE, true))
+ {
+ __selectionMode = APP_CONTROL_SELECTION_MODE_MULTI;
+ }
+ else
+ {
+ AppLogDebug("selectionMode of AppControl[PICK] should be either single or multiple. [%ls] has been input", value.GetPointer());
+ return E_FAILURE;
+ }
+ }
+
+ pArgString = static_cast<String*>(pArgs->GetAt(1));
+ TryReturn(pArgString, E_FAILURE, "[E_FAILURE] Unable to cast argument string");
+ r = ParseAppControlArgument(*pArgString, key, value);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to parse the argument", GetErrorMessage(r));
+
+ if (key.Equals(RETURN_TYPE, true))
+ {
+ if (value.Equals(RETURN_TYPE_PHONE, true))
+ {
+ __returnType = APP_CONTROL_RETURN_TYPE_PHONE;
+ }
+ else if (value.Equals(RETURN_TYPE_EMAIL, true))
+ {
+ __returnType = APP_CONTROL_RETURN_TYPE_EMAIL;
+ }
+ else if (value.Equals(RETURN_TYPE_ITEM_ID, true))
+ {
+ __returnType = APP_CONTROL_RETURN_TYPE_ITEM_ID;
+ }
+ else if (value.Equals(RETURN_TYPE_VCARD, true))
+ {
+ __returnType = APP_CONTROL_RETURN_TYPE_VCARD;
+ }
+ else
+ {
+ AppLogDebug("returnType of AppControl[PICK] should be one of {phone, email, contactId, and vcard}. [%ls] has been input", value.GetPointer());
+ return E_FAILURE;
+ }
+ }
+
+ if (__returnType == APP_CONTROL_RETURN_TYPE_VCARD && __selectionMode == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ return E_FAILURE;
+ }
+
+ return E_SUCCESS;
+}
+
+result
+ContactsApp::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
+{
+ result r = E_SUCCESS;
+
+ if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
+ {
+ return E_FAILURE;
+ }
+
+ StringTokenizer stringToken(argument, DELIMITER);
+
+ r = stringToken.GetNextToken(type);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
+
+ r = stringToken.GetNextToken(content);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get content", GetErrorMessage(r));
+
+ return r;
+}
+
+Tizen::Base::String
+ContactsApp::GetOperationId(void)
+{
+ return __operationId;
+}
+
+AppControlSelectionMode
+ContactsApp::GetSelectionMode(void)
+{
+ return __selectionMode;
+}
+
+AppControlReturnType
+ContactsApp::GetReturnType(void)
+{
+ return __returnType;
+}
+
+RequestId
+ContactsApp::GetRequestId(void)
+{
+ return __requestId;
+}
+
+Tizen::Ui::Scenes::SceneId
+ContactsApp::GetInitialSceneId(void)
+{
+ return __initialSceneId;
+}
+
+Tizen::Base::Collection::IList*
+ContactsApp::GetArguments(void)
+{
+ return __pArgs;
+}
+
+void
+ContactsApp::InitializeFontSize(void)
+{
+ String fontSizeStr = "";
+ SettingInfo::GetValue("http://tizen.org/setting/font.size", fontSizeStr);
+ __fontSize = Tizen::Ui::UiConfiguration::GetFontSize(fontSizeStr);
+ if (__fontSize <= 0)
+ {
+ __fontSize = FONT_SIZE_NORMAL;
+ }
+ AppLogDebug("__fontSize = %d", __fontSize);
+}
+
+int
+ContactsApp::GetFontSize(void)
+{
+ return __fontSize;
+}
+
+int
+ContactsApp::GetListItemSingleLineHeight(void)
+{
+ int listItemHeight = LIST_ITEM_SINGLE_LINE_NORMAL_HEIGHT;
+ listItemHeight += (__fontSize - Tizen::Ui::UiConfiguration::GetFontSize(FONT_SIZE_STR_NORMAL));
+ return listItemHeight;
+}
+
+int
+ContactsApp::GetFontHeightOffset(void)
+{
+ return (__fontSize - Tizen::Ui::UiConfiguration::GetFontSize(FONT_SIZE_STR_NORMAL));
+}
+
+
+void
+ContactsApp::AddContactsAppChangeEventListener(const IContactsAppStateChangeEventListener& listener)
+{
+ __listenerList.Add(listener);
+}
+
+void
+ContactsApp::RemoveContactsAppChangeEventListener(const IContactsAppStateChangeEventListener& listener)
+{
+ __listenerList.Remove(listener);
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtFavoriteListEditorPanel.cpp
+ * @brief This is the implementation file for the FavoriteListEditorPanel class.
+ */
+
+#include "CtContactsApp.h"
+#include "CtCommonUtil.h"
+#include "CtFavoriteListEditorPanel.h"
+#include "CtFavoriteListPresentationModel.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const int IDA_FOOTER_REMOVE_FAVORITE = 0;
+static const int IDA_FOOTER_CANCEL = 1;
+static const int IDA_FOOTER_DONE = 2;
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 20;
+
+static const int W_INITAIL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int W_ICONLISTVIEW_LEFT_MARGIN = 14;
+static const int W_ICONLISTVIEW_RIGHT_MARGIN = 10;
+static const int W_ICONLISTVIEW_ITEM = 216;
+static const int H_ICONLISTVIEW_ITEM = 216;
+static const int H_TEXT_BACKGROUND = 64;
+static const int H_TEXT_SPACE = 96;
+static const int W_ITEM_SPACE = 24;
+static const int H_ITEM_SPACE = 24;
+static const int W_CONTACT_VALUE_POPUP = 688;
+static const int H_CONTACT_VALUE_POPUP = 532;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 338;
+static const int Y_CLOSE_BUTTON = 358;
+static const int W_CLOSE_BUTTON = 394;
+static const int H_CLOSE_BUTTON = 74;
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int H_BOTTOM_LABEL = 48;
+static const int W_NAME_TEXT_MARGIN = 10;
+
+static const int FONT_SIZE_WITH_THUMBNAIL = 24;
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+static const int FONT_SIZE = 40;
+static const int FONT_SIZE_BOTTOM_LABEL = 32;
+
+static const wchar_t* IDB_NO_FAVORITES = L"00_Nocontents_picture.png";
+
+static const unsigned int COLOR_ITEM_BACKGROUND = Color32<201, 201, 201>::Value;
+static const unsigned int COLOR_ITEM_TEXT_BACKGROUND = Color32<0, 0, 0, 89>::Value;
+static const unsigned int COLOR_TEXT_WITH_THUMBNAIL = Color32<249, 249, 249>::Value;
+static const unsigned int COLOR_TEXT = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_LINE = Color32<225, 225, 225, 26>::Value;
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_BG = Color32<68, 68, 68>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_FONT = Color32<255, 255, 255>::Value;
+
+FavoriteListEditorPanel::FavoriteListEditorPanel(void)
+: __pFavoriteListView(null)
+, __pMultipleContactValuePopup(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pBottomLabel(null)
+, __pTempContactValueHashMap(null)
+, __pPresentationModel(null)
+, __pContactValueListProvider(null)
+{
+}
+
+FavoriteListEditorPanel::~FavoriteListEditorPanel(void)
+{
+}
+
+void
+FavoriteListEditorPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITAIL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+FavoriteListEditorPanel::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ FloatRectangle clientBounds = ((MainForm*)pForm)->GetClientBounds();
+
+ SetBounds(FloatRectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = FavoriteListPresentationModel::GetInstance();
+
+ __pFavoriteListView = new (std::nothrow) IconListView();
+ __pFavoriteListView->Construct(Rectangle(0, 0, clientBounds.width, clientBounds.height - H_BOTTOM_LABEL), Dimension(W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM), ICON_LIST_VIEW_STYLE_MARK);
+ __pFavoriteListView->SetItemProvider(*this);
+ __pFavoriteListView->AddIconListViewItemEventListener(*this);
+ __pFavoriteListView->SetItemLayoutHorizontalAlignment(ALIGNMENT_LEFT);
+ __pFavoriteListView->SetItemLayoutVerticalAlignment(ALIGNMENT_TOP);
+ __pFavoriteListView->SetItemSpacing(W_ITEM_SPACE, H_ITEM_SPACE);
+ __pFavoriteListView->SetMargin(MARGIN_TYPE_LEFT, W_ICONLISTVIEW_LEFT_MARGIN);
+ __pFavoriteListView->SetMargin(MARGIN_TYPE_RIGHT, W_ICONLISTVIEW_RIGHT_MARGIN);
+ __pFavoriteListView->SetCheckBoxPosition(ICON_LIST_VIEW_CHECK_BOX_POSITION_TOP_LEFT);
+ __pFavoriteListView->SetTouchAnimationEnabled(false);
+
+ AddControl(__pFavoriteListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_FAVORITES);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, clientBounds.width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_FAVOURITES"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(__pEmptyCommentLabel);
+
+ __pBottomLabel = new (std::nothrow) Label();
+ __pBottomLabel->Construct(FloatRectangle(0, clientBounds.height - H_BOTTOM_LABEL, clientBounds.width, H_BOTTOM_LABEL),
+ ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + INITIAL_SELECTED_COUNT);
+ __pBottomLabel->SetBackgroundColor(Color(COLOR_BOTTOM_LABEL_BG));
+ __pBottomLabel->SetTextColor(Color(COLOR_BOTTOM_LABEL_FONT));
+ __pBottomLabel->SetTextConfig(FONT_SIZE_BOTTOM_LABEL, LABEL_TEXT_STYLE_BOLD);
+ __pBottomLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ __pBottomLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ AddControl(__pBottomLabel);
+
+ __pTempContactValueHashMap = new (std::nothrow) HashMap();
+ __pTempContactValueHashMap->Construct();
+
+ return r;
+}
+
+result
+FavoriteListEditorPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+
+ if (__pTempContactValueHashMap != null)
+ {
+ __pTempContactValueHashMap->RemoveAll(true);
+ delete __pTempContactValueHashMap;
+ }
+
+ delete __pMultipleContactValuePopup;
+
+ return r;
+}
+
+void
+FavoriteListEditorPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ }
+ break;
+ case IDA_FOOTER_REMOVE_FAVORITE:
+ {
+ RemoveFavorites();
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ ReturnMultipleValues();
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+FavoriteListEditorPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveAllButtons();
+ pFooter->AddActionEventListener(*this);
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ FloatRectangle clientBounds = ((MainForm*)pForm)->GetClientBounds();
+
+ SetBounds(FloatRectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ pFooter->SetShowState(true);
+
+ __pPresentationModel->InitializeFavoriteList(pContactsApp->GetReturnType());
+ __pFavoriteListView->UpdateList();
+
+ FooterItem footerItemDone;
+ footerItemDone.Construct(IDA_FOOTER_DONE);
+ footerItemDone.SetText(ResourceManager::GetString(L"IDS_COM_SK_DONE"));
+ pFooter->AddItem(footerItemDone);
+
+ if (__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ for (int index = 0; index < __pPresentationModel->GetFavoriteCount(); index++)
+ {
+ __pFavoriteListView->SetItemChecked(index, false);
+ }
+
+ pFooter->SetItemEnabled(0, false);
+
+ __pFavoriteListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ __pFavoriteListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ __pBottomLabel->SetShowState(false);
+ }
+ }
+ else
+ {
+ for (int index = 0; index < __pPresentationModel->GetFavoriteCount(); index++)
+ {
+ __pFavoriteListView->SetItemChecked(index, false);
+ }
+
+ __pPresentationModel->InitializeFavoriteList();
+ __pFavoriteListView->UpdateList();
+
+ if (__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ __pFavoriteListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ }
+ else
+ {
+ __pFavoriteListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+
+ FooterItem footerItemCancel;
+ footerItemCancel.Construct(IDA_FOOTER_CANCEL);
+ footerItemCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pFooter->AddItem(footerItemCancel);
+
+ FooterItem footerItemRemove;
+ footerItemRemove.Construct(IDA_FOOTER_REMOVE_FAVORITE);
+ footerItemRemove.SetText(ResourceManager::GetString(L"IDS_COM_BODY_REMOVE"));
+ pFooter->AddItem(footerItemRemove);
+ pFooter->SetItemEnabled(1, false);
+ }
+
+ UpdateBottomLabel();
+
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ delete pArgs;
+}
+
+void
+FavoriteListEditorPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+
+ __pPresentationModel->RemoveContactChangeListener(*this);
+}
+
+void
+FavoriteListEditorPanel::OnContactsChanged(void)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ HideContactValuePopup();
+
+ Footer* pFooter = pForm->GetFooter();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ int favoriteCount = __pPresentationModel->GetFavoriteCount();
+ for (int index = 0; index < favoriteCount; index++)
+ {
+ __pFavoriteListView->SetItemChecked(index, false);
+ }
+
+ __pPresentationModel->InitializeFavoriteList(pContactsApp->GetReturnType());
+
+ if (__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ pFooter->SetItemEnabled(0, false);
+ pFooter->Invalidate(true);
+
+ __pFavoriteListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ __pBottomLabel->SetShowState(true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+
+ __pFavoriteListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ __pBottomLabel->SetShowState(false);
+ }
+ }
+ else
+ {
+ for (int index = 0; index < __pPresentationModel->GetFavoriteCount(); index++)
+ {
+ __pFavoriteListView->SetItemChecked(index, false);
+ }
+
+ __pPresentationModel->InitializeFavoriteList();
+
+ if (__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ pFooter->SetItemEnabled(1, false);
+ pFooter->Invalidate(true);
+
+ __pFavoriteListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ __pBottomLabel->SetShowState(true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(1, false);
+ __pFavoriteListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ __pBottomLabel->SetShowState(false);
+ }
+ }
+
+ __pFavoriteListView->UpdateList();
+
+ UpdateBottomLabel();
+}
+
+void
+FavoriteListEditorPanel::OnCategoriesChanged(void)
+{
+}
+
+void
+FavoriteListEditorPanel::OnIconListViewItemReordered(Tizen::Ui::Controls::IconListView &iconListView, int indexFrom, int indexTo)
+{
+}
+
+void
+FavoriteListEditorPanel::OnIconListViewItemStateChanged(Tizen::Ui::Controls::IconListView &iconListView, int index, Tizen::Ui::Controls::IconListViewItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE ||
+ pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ IList* pList = __pPresentationModel->GetMultiValuesN(pContactsApp->GetReturnType(), index);
+ if (pList == null)
+ {
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ if (iconListView.IsItemChecked(index) == true)
+ {
+ if (pList->GetCount() > 1)
+ {
+ iconListView.SetItemChecked(index, false);
+ __pContactValueListProvider = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(index);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pReturnValue = static_cast<String*>(pList->GetAt(0));
+ int blankIndex = 0;
+ pReturnValue->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pReturnValue->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(index)), *(new (std::nothrow) String(*pReturnValue)));
+ delete pList;
+ }
+
+ }
+ else
+ {
+ __pTempContactValueHashMap->Remove(Integer(index), true);
+ }
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+FavoriteListEditorPanel::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+FavoriteListEditorPanel::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int selectedIndex = -1;
+ Integer::Parse(listView.GetName(), selectedIndex);
+
+ IList* pList = __pPresentationModel->GetMultiValuesN(pContactsApp->GetReturnType(), selectedIndex);
+ if (pList == null)
+ {
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ String* pReturnValueInfo = static_cast<String*>(pList->GetAt(index));
+ int blankIndex = 0;
+ pReturnValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pReturnValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(selectedIndex)), *(new (std::nothrow) String(*pReturnValueInfo)));
+
+ delete pList;
+
+ __pFavoriteListView->SetItemChecked(selectedIndex, true);
+ HideContactValuePopup();
+ UpdateBottomLabel();
+}
+
+void
+FavoriteListEditorPanel::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+Tizen::Ui::Controls::IconListViewItem*
+FavoriteListEditorPanel::CreateItem(int index)
+{
+ Bitmap* pThumbnail = null;
+ String name;
+ Font textFont;
+ Color textColor;
+ int textHeight;
+ int textY;
+ TextHorizontalAlignment alignment = TEXT_ALIGNMENT_LEFT;
+
+ if (__pPresentationModel->GetFavoriteItemInfo(index, name, pThumbnail) != E_SUCCESS)
+ {
+ return null;
+ }
+
+ Canvas* pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0, 0, W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM));
+ pCanvas->Clear();
+
+ if (pThumbnail != null)
+ {
+ textFont.Construct(FONT_STYLE_BOLD , FONT_SIZE_WITH_THUMBNAIL);
+ textY = H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND;
+ textHeight = H_TEXT_BACKGROUND;
+ textColor = Color(COLOR_TEXT_WITH_THUMBNAIL);
+
+ pCanvas->DrawBitmap(pCanvas->GetBounds(), *pThumbnail, Rectangle(0, 0, pThumbnail->GetWidth(), pThumbnail->GetHeight()));
+ pCanvas->SetForegroundColor(Color(COLOR_LINE));
+ pCanvas->DrawLine(Point(0, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND), Point(W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND));
+ pCanvas->FillRectangle(Color(COLOR_ITEM_TEXT_BACKGROUND), Rectangle(0, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND, W_ICONLISTVIEW_ITEM, H_TEXT_BACKGROUND));
+ }
+ else
+ {
+ textFont.Construct(FONT_STYLE_BOLD , FONT_SIZE);
+ textY = (H_ICONLISTVIEW_ITEM / 2) - (H_TEXT_SPACE / 2);
+ textHeight = H_TEXT_SPACE;
+ textColor = Color(COLOR_TEXT);
+ alignment = TEXT_ALIGNMENT_CENTER;
+
+ pCanvas->FillRectangle(Color(COLOR_ITEM_BACKGROUND), pCanvas->GetBounds());
+ }
+
+ EnrichedText* pEnrichedTextName = new (std::nothrow) EnrichedText();
+ pEnrichedTextName->Construct(Dimension(W_ICONLISTVIEW_ITEM - (W_NAME_TEXT_MARGIN * 2), textHeight));
+ pEnrichedTextName->SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ pEnrichedTextName->SetHorizontalAlignment(alignment);
+ pEnrichedTextName->SetTextWrapStyle(TEXT_WRAP_WORD_WRAP);
+ pEnrichedTextName->SetTextAbbreviationEnabled(true);
+
+ TextElement* pTextElementName = new (std::nothrow) TextElement();
+ pTextElementName->Construct(name);
+ pTextElementName->SetFont(textFont);
+ pTextElementName->SetTextColor(textColor);
+
+ pEnrichedTextName->Add(*pTextElementName);
+
+ pCanvas->DrawText(Point(W_NAME_TEXT_MARGIN, textY), *pEnrichedTextName);
+
+ Bitmap* pBitmapItem = new (std::nothrow) Bitmap();
+ pBitmapItem->Construct(*pCanvas, Rectangle(0, 0, W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM));
+
+ IconListViewItem* pFavoriteItem = new (std::nothrow) IconListViewItem();
+ pFavoriteItem->Construct(*pBitmapItem);
+
+ delete pThumbnail;
+ delete pCanvas;
+ delete pBitmapItem;
+ delete pEnrichedTextName;
+ delete pTextElementName;
+
+ return pFavoriteItem;
+}
+
+bool
+FavoriteListEditorPanel::DeleteItem(int index, Tizen::Ui::Controls::IconListViewItem *pItem)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+int
+FavoriteListEditorPanel::GetItemCount(void)
+{
+ return __pPresentationModel->GetFavoriteCount();
+}
+
+void
+FavoriteListEditorPanel::RemoveFavorites(void)
+{
+ result r = E_SUCCESS;
+
+ for (int i = 0; i < __pPresentationModel->GetFavoriteCount(); i++)
+ {
+ if (__pFavoriteListView->IsItemChecked(i))
+ {
+ r = __pPresentationModel->SetAsFavorite(__pPresentationModel->GetContactId(i), false);
+
+ if (r == E_STORAGE_FULL)
+ {
+ CommonUtil::showMemoryFullMessageBox();
+ break;
+ }
+ }
+ }
+}
+
+void
+FavoriteListEditorPanel::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+
+ result r = pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+ AppLogDebug("[%s] The return result from SendAppControlResult(), AppCtrlResult value : %d.", GetErrorMessage(r), appCtrlResult);
+
+ UiApp::GetInstance()->Terminate();
+}
+
+void
+FavoriteListEditorPanel::ReturnMultipleValues(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ String keyType;
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_ITEM_ID)
+ {
+ for (int index = 0; index < __pPresentationModel->GetFavoriteCount(); index++)
+ {
+ if (__pFavoriteListView->IsItemChecked(index))
+ {
+ int contactId = __pPresentationModel->GetContactId(index);
+ pValueList->Add(new (std::nothrow) String(Integer::ToString(contactId)));
+ }
+ }
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_ITEM_ID), pValueList);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+
+ return;
+ }
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ keyType.Append(CONTACT_KEY_PHONE);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ keyType.Append(CONTACT_KEY_EMAIL);
+ }
+ else
+ {
+ delete pValueList;
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ pValueList->Add(new (std::nothrow) String(*pValue));
+ }
+ delete pMapEnum;
+
+ pReturnValue->Add(new (std::nothrow) String(keyType), pValueList);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ }
+}
+
+void
+FavoriteListEditorPanel::ShowContactValuePopup(int index)
+{
+ String name;
+ Bitmap* pEmpty = null;
+
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pPresentationModel->GetFavoriteItemInfo(index, name, pEmpty);
+ __pMultipleContactValuePopup->SetTitleText(name);
+ __pMultipleContactValuePopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListProvider);
+ pListView->AddListViewItemEventListener(*this);
+ pListView->SetName(String(Integer::ToString(index)));
+
+ __pMultipleContactValuePopup->AddControl(pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+FavoriteListEditorPanel::HideContactValuePopup(void)
+{
+ if (__pMultipleContactValuePopup)
+ {
+ __pMultipleContactValuePopup->SetShowState(false);
+ Invalidate(true);
+ }
+}
+
+void
+FavoriteListEditorPanel::UpdateBottomLabel(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int selectedCount = 0;
+ int favoriteCount = __pPresentationModel->GetFavoriteCount();
+ int fotterItemIndex = 1;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ fotterItemIndex = 0;
+ }
+
+ for (int index = 0; index < favoriteCount; index++)
+ {
+ if (__pFavoriteListView->IsItemChecked(index))
+ {
+ selectedCount++;
+ }
+ }
+
+ String string = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ string.Append(L" (");
+ string.Append(selectedCount);
+ string.Append(L")");
+ __pBottomLabel->SetText(string);
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ FloatRectangle clientBounds = ((MainForm*)pForm)->GetClientBounds();
+
+ Footer* pFooter = pForm->GetFooter();
+
+ if (selectedCount > 0)
+ {
+ if(__pBottomLabel->GetShowState() == false)
+ {
+ __pBottomLabel->SetShowState(true);
+ __pFavoriteListView->SetSize(__pFavoriteListView->GetSizeF().width, clientBounds.height - H_BOTTOM_LABEL);
+ }
+ pFooter->SetItemEnabled(fotterItemIndex, true);
+ }
+ else if (selectedCount == 0)
+ {
+ if(__pBottomLabel->GetShowState() == true)
+ {
+ __pBottomLabel->SetShowState(false);
+ __pFavoriteListView->SetSize(__pFavoriteListView->GetSizeF().width, clientBounds.height);
+ }
+ pFooter->SetItemEnabled(fotterItemIndex, false);
+ }
+ __pBottomLabel->Invalidate(true);
+ pFooter->Invalidate(true);
+}
+
+bool
+FavoriteListEditorPanel::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+FavoriteListEditorPanel::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ if (keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
+ {
+ if (__pMultipleContactValuePopup && __pMultipleContactValuePopup->GetShowState() == true)
+ {
+ HideContactValuePopup();
+ return true;
+ }
+ }
+ return false;
+}
+
+bool
+FavoriteListEditorPanel::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+FavoriteListEditorPanel::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtFavoriteListPanel.cpp
+ * @brief This is the implementation file for the FavoriteListPanel class.
+ */
+
+#include <FApp.h>
+#include "CtContactsApp.h"
+#include "CtContactValueListItemProvider.h"
+#include "CtFavoriteListPanel.h"
+#include "CtFavoriteListPresentationModel.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+#include "CtCommonUtil.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const int IDA_FOOTER_ADD_FAVORITE = 1;
+static const int IDA_MORE_EDIT_FAVORITE = 2;
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 20;
+static const int IDA_FAVORITE_QUICK_MENU = 21;
+static const int IDA_CONTEXTMENU_CALL = 30;
+static const int IDA_CONTEXTMENU_MESSAGE = 31;
+static const int IDA_CONTEXTMENU_VIDEO_CALL = 32;
+static const int IDA_CONTEXTMENU_REMOVE = 33;
+
+static const wchar_t* IDB_NO_FAVORITES = L"00_Nocontents_picture.png";
+static const wchar_t* IDB_QUICK_MENU = L"00_button_expand_closed_press.png";
+
+static const int W_INITAIL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int W_ICONLISTVIEW_ITEM = 239;
+static const int H_ICONLISTVIEW_ITEM = 239;
+static const int H_TEXT_BACKGROUND = 64;
+static const int H_TEXT_SPACE = 96;
+static const int W_CONTACT_VALUE_POPUP = 688;
+static const int H_CONTACT_VALUE_POPUP = 532;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 338;
+static const int Y_CLOSE_BUTTON = 358;
+static const int W_CLOSE_BUTTON = 394;
+static const int H_CLOSE_BUTTON = 74;
+static const int W_QUICK_MENU_BUTTON = 74;
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int W_ITEM_SPACE = 1;
+static const int H_ITEM_SPACE = 1;
+static const int W_NAME_TEXT_MARGIN = 10;
+
+static const int FONT_SIZE_WITH_THUMBNAIL = 24;
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+static const int FONT_SIZE = 40;
+
+static const unsigned int COLOR_ITEM_BACKGROUND = Color32<201, 201, 201>::Value;
+static const unsigned int COLOR_ITEM_TEXT_BACKGROUND = Color32<0, 0, 0, 89>::Value;
+static const unsigned int COLOR_TEXT_WITH_THUMBNAIL = Color32<249, 249, 249>::Value;
+static const unsigned int COLOR_TEXT = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_LINE = Color32<225, 225, 225, 26>::Value;
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+
+static const wchar_t* INPUT_KEY_CALL_TYPE = L"http://tizen.org/appcontrol/data/call/type";
+static const wchar_t* INPUT_KEY_MESSAGE_TYPE = L"http://tizen.org/appcontrol/data/message/type";
+static const wchar_t* INPUT_KEY_MESSAGE_TO = L"http://tizen.org/appcontrol/data/to";
+static const wchar_t* INPUT_TYPE_VIDEO = L"video";
+static const wchar_t* INPUT_TYPE_VOICE = L"voice";
+static const wchar_t* INPUT_TYPE_SMS = L"sms";
+static const wchar_t* INPUT_URI_TEL = L"tel:";
+
+FavoriteListPanel::FavoriteListPanel(void)
+: __isAppControlLaunching(false)
+, __scrolledDistance(0)
+, __selectedItemIndex(0)
+, __pAppControl(null)
+, __pContextMenuAction(null)
+, __pOptionMenu(null)
+, __pFavoriteListView(null)
+, __pMultipleContactValuePopup(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pPresentationModel(null)
+, __pContactValueListProvider(null)
+{
+}
+
+FavoriteListPanel::~FavoriteListPanel(void)
+{
+}
+
+void
+FavoriteListPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITAIL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+FavoriteListPanel::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ FloatRectangle clientBounds = ((MainForm*)pForm)->GetClientBounds();
+ SetBounds(Rectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = FavoriteListPresentationModel::GetInstance();
+
+ __pFavoriteListView = new (std::nothrow) IconListView();
+ __pFavoriteListView->Construct(Rectangle(0, 0, clientBounds.width, clientBounds.height), Dimension(W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM));
+ __pFavoriteListView->SetItemProvider(*this);
+ __pFavoriteListView->AddIconListViewItemEventListener(*this);
+ __pFavoriteListView->AddScrollEventListener(*this);
+ __pFavoriteListView->SetItemLayoutHorizontalAlignment(ALIGNMENT_LEFT);
+ __pFavoriteListView->SetItemLayoutVerticalAlignment(ALIGNMENT_TOP);
+ __pFavoriteListView->SetItemSpacing(W_ITEM_SPACE, H_ITEM_SPACE);
+ __pFavoriteListView->SetMargin(MARGIN_TYPE_LEFT, 0);
+ __pFavoriteListView->SetMargin(MARGIN_TYPE_RIGHT, 0);
+ __pFavoriteListView->SetTouchAnimationEnabled(false);
+
+ AddControl(__pFavoriteListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_FAVORITES);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, clientBounds.width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_FAVOURITES"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(__pEmptyCommentLabel);
+
+ __pOptionMenu = new (std::nothrow) OptionMenu();
+ __pOptionMenu->Construct();
+ __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_COM_SK_EDIT"), IDA_MORE_EDIT_FAVORITE);
+ __pOptionMenu->AddActionEventListener(*this);
+ __pOptionMenu->SetShowState(false);
+
+ return r;
+}
+
+result
+FavoriteListPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+
+ delete __pAppControl;
+ delete __pContextMenuAction;
+ delete __pMultipleContactValuePopup;
+
+ return r;
+}
+
+void
+FavoriteListPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ break;
+ case IDA_FOOTER_ADD_FAVORITE:
+ {
+ if (CommonUtil::isMemoryAvailable() == false)
+ {
+ CommonUtil::showMemoryFullMessageBox();
+ return;
+ }
+
+ ArrayList* pArgList = new (std::nothrow) ArrayList();
+ pArgList->Construct();
+
+ for (int i = 0; i < __pPresentationModel->GetFavoriteCount(); i++)
+ {
+ pArgList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId(i))));
+ }
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pArgList);
+ }
+ break;
+ case IDA_MORE_EDIT_FAVORITE:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST_EDITOR));
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ case IDA_CONTEXTMENU_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(__selectedItemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VOICE);
+ }
+ break;
+ case IDA_CONTEXTMENU_MESSAGE:
+ {
+ if (!(__pPresentationModel->GetDefaultPhoneNumber(__selectedItemIndex).IsEmpty()))
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(__selectedItemIndex);
+ LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, phoneNumber, INPUT_TYPE_SMS);
+ }
+ else if (!(__pPresentationModel->GetDefaultEmail(__selectedItemIndex).IsEmpty()))
+ {
+ String emailId = __pPresentationModel->GetDefaultEmail(__selectedItemIndex);
+ LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, emailId, null);
+ }
+ }
+ break;
+ case IDA_CONTEXTMENU_VIDEO_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(__selectedItemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VIDEO);
+ }
+ break;
+ case IDA_CONTEXTMENU_REMOVE:
+ {
+ __pPresentationModel->SetAsFavorite(__pPresentationModel->GetContactId(__selectedItemIndex), false);
+ __pPresentationModel->InitializeFavoriteList();
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+ Footer* pFooter = pForm->GetFooter();
+ if (__pPresentationModel->GetContactCount() > __pPresentationModel->GetFavoriteCount())
+ {
+ pFooter->SetItemEnabled(0, true);
+ pFooter->Invalidate(true);
+ }
+
+ if (__pPresentationModel->GetFavoriteCount() == 0)
+ {
+ __pFavoriteListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ }
+
+ __pFavoriteListView->UpdateList();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+FavoriteListPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ __isAppControlLaunching = false;
+
+ if (previousSceneId.Equals(IDSCN_CONTACT_SELECTOR, true) && pArgs != null)
+ {
+ Integer* pContactId = null;
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pContactId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pContactId != null)
+ {
+ __pPresentationModel->SetAsFavorite(pContactId->ToInt(), true);
+ }
+ }
+ delete pEnum;
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Form *pEventForm = const_cast<Form*>(pForm);
+ pEventForm->SetFormMenuEventListener(this);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->AddActionEventListener(*this);
+
+ FloatRectangle clientBounds = ((MainForm*)pForm)->GetClientBounds();
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ pFooter->SetShowState(false);
+
+ SetBounds(Rectangle(0, 0, clientBounds.width, clientBounds.height + pFooter->GetHeight()));
+ __pFavoriteListView->SetSize(__pFavoriteListView->GetWidthF(), clientBounds.height + pFooter->GetHeight());
+
+ Invalidate(true);
+
+ pEventForm->SetFormMenuEventListener(null);
+ __pPresentationModel->InitializeFavoriteList(pContactsApp->GetReturnType());
+ }
+ else
+ {
+ __pPresentationModel->InitializeFavoriteList();
+
+ FooterItem footerItemAdd;
+ footerItemAdd.Construct(IDA_FOOTER_ADD_FAVORITE);
+ footerItemAdd.SetText(ResourceManager::GetString(L"IDS_PB_OPT_ADD_TO_FAVORITES"));
+ int count = pFooter->GetItemCount();
+ if (count == 0)
+ {
+ pFooter->AddItem(footerItemAdd);
+ }
+ else if (count == 1)
+ {
+ pFooter->SetItemAt(0, footerItemAdd);
+ }
+ else
+ {
+ pFooter->SetItemAt(0, footerItemAdd);
+ pFooter->RemoveItemAt(1);
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ }
+
+ if (__pPresentationModel->GetContactCount() <= __pPresentationModel->GetFavoriteCount())
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+
+ if (__pPresentationModel->GetFavoriteCount() > 0 )
+ {
+ pForm->SetFormMenuEventListener(this);
+ }
+ else
+ {
+ pForm->SetFormMenuEventListener(null);
+ }
+
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+ }
+
+ if (__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ __pFavoriteListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+
+ __pFavoriteListView->UpdateList();
+ }
+ else
+ {
+ __pFavoriteListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+
+ __pPresentationModel->AddContactChangeListener(*this);
+}
+
+void
+FavoriteListPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Form *pEventForm = const_cast<Form*>(pForm);
+ pEventForm->SetFormMenuEventListener(null);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+
+ __pPresentationModel->RemoveContactChangeListener(*this);
+
+ delete __pAppControl;
+ __pAppControl = null;
+}
+
+void
+FavoriteListPanel::OnIconListViewItemReordered(Tizen::Ui::Controls::IconListView &iconListView, int indexFrom, int indexTo)
+{
+}
+
+void
+FavoriteListPanel::OnIconListViewItemStateChanged(Tizen::Ui::Controls::IconListView &iconListView, int index, Tizen::Ui::Controls::IconListViewItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_ITEM_ID)
+ {
+ String contactId;
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ contactId.Append(__pPresentationModel->GetContactId(index));
+ pValueList->Add(new (std::nothrow) String(contactId));
+
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_ITEM_ID), pValueList);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+
+ return;
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_VCARD)
+ {
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+ String vCardPath = __pPresentationModel->ExportToVcard(index);
+
+ if (vCardPath.IsEmpty())
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_PATH), new (std::nothrow) String(vCardPath));
+ }
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+
+ return;
+ }
+
+ IList* pList = __pPresentationModel->GetMultiValuesN(pContactsApp->GetReturnType(), index);
+ if (pList == null)
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ if (pList->GetCount() > 1)
+ {
+ __pContactValueListProvider = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(index);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String keyType;
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ keyType.Append(CONTACT_KEY_PHONE);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ keyType.Append(CONTACT_KEY_EMAIL);
+ }
+ else
+ {
+ return;
+ }
+
+ String* pReturnInfo = static_cast<String*>(pList->GetAt(0));
+ int blankIndex = 0;
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ pReturnInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pReturnInfo->Remove(0, blankIndex + 1);
+
+ pValueList->Add(new (std::nothrow) String(*pReturnInfo));
+ pReturnValue->Add(new (std::nothrow) String(keyType), pValueList);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ delete pList;
+ }
+
+ delete pReturnValue;
+ }
+ else
+ {
+ if (__isAppControlLaunching == true)
+ {
+ return;
+ }
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ ArrayList* pContactId = new (std::nothrow) ArrayList();
+ pContactId->Construct();
+
+ pContactId->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId(index))));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_DETAILS, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pContactId);
+ }
+}
+
+void
+FavoriteListPanel::OnIconListViewOverlayBitmapSelected(Tizen::Ui::Controls::IconListView& iconListView, int index, int overlayBitmapId)
+{
+ if(__isAppControlLaunching == true)
+ {
+ return;
+ }
+ if (__pContextMenuAction != null)
+ {
+ delete __pContextMenuAction;
+ }
+
+ if (overlayBitmapId == IDA_FAVORITE_QUICK_MENU)
+ {
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Point itemPosition(W_ICONLISTVIEW_ITEM * (index % iconListView.GetItemCountPerAxis() + 1) - (W_QUICK_MENU_BUTTON / 2), pForm->GetClientAreaBounds().y + H_ICONLISTVIEW_ITEM * (index / iconListView.GetItemCountPerAxis() + 1) - __scrolledDistance);
+
+ __pContextMenuAction = new (std::nothrow) ContextMenu();
+ __pContextMenuAction->Construct(itemPosition, CONTEXT_MENU_STYLE_GRID, CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD);
+
+ if (__pPresentationModel->GetDefaultPhoneNumber(index).IsEmpty() == false)
+ {
+ __pContextMenuAction->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_CALL"), IDA_CONTEXTMENU_CALL);
+#if __SUPPORT_VIDEO_CALL
+ __pContextMenuAction->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_VIDEO_CALL"), IDA_CONTEXTMENU_VIDEO_CALL);
+#endif
+ }
+ if ((__pPresentationModel->GetDefaultPhoneNumber(index).IsEmpty() == false)||(__pPresentationModel->GetDefaultEmail(index).IsEmpty() == false))
+ {
+ __pContextMenuAction->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), IDA_CONTEXTMENU_MESSAGE);
+ }
+ __pContextMenuAction->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_REMOVE"), IDA_CONTEXTMENU_REMOVE);
+ __pContextMenuAction->AddActionEventListener(*this);
+ __pContextMenuAction->SetFocusable(true);
+ __pContextMenuAction->Show();
+ __selectedItemIndex = index;
+ }
+}
+
+void
+FavoriteListPanel::OnFormMenuRequested(Tizen::Ui::Controls::Form& source)
+{
+ if(__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ __pOptionMenu->SetShowState(true);
+ __pOptionMenu->Show();
+ }
+}
+
+Tizen::Ui::Controls::IconListViewItem*
+FavoriteListPanel::CreateItem(int index)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ Bitmap* pThumbnail = null;
+ Bitmap* pBitmapQuickMenu = null;
+ String name;
+ Font textFont;
+ Color textColor;
+ int textY;
+ int textHeight;
+ int textWidth = W_ICONLISTVIEW_ITEM - (W_NAME_TEXT_MARGIN * 2);
+ TextHorizontalAlignment alignment = TEXT_ALIGNMENT_LEFT;
+
+ if (__pPresentationModel->GetFavoriteItemInfo(index, name, pThumbnail) != E_SUCCESS)
+ {
+ return null;
+ }
+
+ Canvas* pCanvas = new (std::nothrow) Canvas();
+ pCanvas->Construct(Rectangle(0, 0, W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM));
+ pCanvas->Clear();
+
+ if (pThumbnail != null)
+ {
+ textFont.Construct(FONT_STYLE_BOLD , FONT_SIZE_WITH_THUMBNAIL);
+ textY = H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND;
+ textHeight = H_TEXT_BACKGROUND;
+ textColor = Color(COLOR_TEXT_WITH_THUMBNAIL);
+
+ if (pContactsApp->GetOperationId() != OPERATION_ID_PICK)
+ {
+ textWidth = W_ICONLISTVIEW_ITEM - W_QUICK_MENU_BUTTON - W_NAME_TEXT_MARGIN;
+ }
+
+ pCanvas->DrawBitmap(pCanvas->GetBounds(), *pThumbnail, Rectangle(0, 0, pThumbnail->GetWidth(), pThumbnail->GetHeight()));
+ pCanvas->SetForegroundColor(Color(COLOR_LINE));
+ pCanvas->DrawLine(Point(0, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND), Point(W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND));
+ pCanvas->FillRectangle(Color(COLOR_ITEM_TEXT_BACKGROUND), Rectangle(0, H_ICONLISTVIEW_ITEM - H_TEXT_BACKGROUND, W_ICONLISTVIEW_ITEM, H_TEXT_BACKGROUND));
+ }
+ else
+ {
+ textFont.Construct(FONT_STYLE_BOLD , FONT_SIZE);
+ textY = (H_ICONLISTVIEW_ITEM / 2) - (H_TEXT_SPACE / 2);
+ textHeight = H_TEXT_SPACE;
+ textColor = Color(COLOR_TEXT);
+ alignment = TEXT_ALIGNMENT_CENTER;
+
+ pCanvas->FillRectangle(Color(COLOR_ITEM_BACKGROUND), pCanvas->GetBounds());
+ }
+
+ EnrichedText* pEnrichedTextName = new (std::nothrow) EnrichedText();
+ pEnrichedTextName->Construct(Dimension(textWidth, textHeight));
+ pEnrichedTextName->SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ pEnrichedTextName->SetHorizontalAlignment(alignment);
+ pEnrichedTextName->SetTextWrapStyle(TEXT_WRAP_WORD_WRAP);
+ pEnrichedTextName->SetTextAbbreviationEnabled(true);
+
+ TextElement* pTextElementName = new (std::nothrow) TextElement();
+ pTextElementName->Construct(name);
+ pTextElementName->SetFont(textFont);
+ pTextElementName->SetTextColor(textColor);
+
+ pEnrichedTextName->Add(*pTextElementName);
+
+ pCanvas->DrawText(Point(W_NAME_TEXT_MARGIN, textY), *pEnrichedTextName);
+
+ Bitmap* pBitmapItem = new (std::nothrow) Bitmap();
+ pBitmapItem->Construct(*pCanvas, Rectangle(0, 0, W_ICONLISTVIEW_ITEM, H_ICONLISTVIEW_ITEM));
+
+ IconListViewItem* pFavoriteItem = new (std::nothrow) IconListViewItem();
+ pFavoriteItem->Construct(*pBitmapItem);
+
+ if (pContactsApp->GetOperationId() != OPERATION_ID_PICK)
+ {
+ pBitmapQuickMenu = ResourceManager::GetBitmapN(IDB_QUICK_MENU);
+
+ if (pBitmapQuickMenu != null)
+ {
+ pFavoriteItem->SetOverlayBitmap(IDA_FAVORITE_QUICK_MENU, pBitmapQuickMenu, ALIGNMENT_RIGHT, ALIGNMENT_BOTTOM);
+ }
+ }
+
+ delete pThumbnail;
+ delete pBitmapQuickMenu;
+ delete pCanvas;
+ delete pBitmapItem;
+ delete pEnrichedTextName;
+ delete pTextElementName;
+
+ return pFavoriteItem;
+}
+
+bool
+FavoriteListPanel::DeleteItem(int index, Tizen::Ui::Controls::IconListViewItem *pItem)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+int
+FavoriteListPanel::GetItemCount(void)
+{
+ return __pPresentationModel->GetFavoriteCount();
+}
+
+void
+FavoriteListPanel::OnContactsChanged(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ HideContactValuePopup();
+ if (__pContextMenuAction != null)
+ {
+ delete __pContextMenuAction;
+ __pContextMenuAction = null;
+ }
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ __pPresentationModel->InitializeFavoriteList(pContactsApp->GetReturnType());
+ }
+ else
+ {
+ __pPresentationModel->InitializeFavoriteList();
+ }
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Footer* pFooter = pForm->GetFooter();
+
+ if (__pPresentationModel->GetContactCount() <= __pPresentationModel->GetFavoriteCount())
+ {
+ pFooter->SetItemEnabled(0, false);
+ pFooter->Invalidate(true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, true);
+ pFooter->Invalidate(true);
+ }
+
+ if (__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ pForm->SetFormMenuEventListener(this);
+ }
+ else
+ {
+ pForm->SetFormMenuEventListener(null);
+ }
+
+ if (__pPresentationModel->GetFavoriteCount() > 0)
+ {
+ __pFavoriteListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ }
+ else
+ {
+ __pFavoriteListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ __pFavoriteListView->UpdateList();
+}
+
+void
+FavoriteListPanel::OnCategoriesChanged(void)
+{
+}
+
+void
+FavoriteListPanel::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+FavoriteListPanel::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ String keyType;
+ int selectedIndex = -1;
+ Integer::Parse(listView.GetName(), selectedIndex);
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ keyType.Append(CONTACT_KEY_PHONE);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ keyType.Append(CONTACT_KEY_EMAIL);
+ }
+ else
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ IList* pList = __pPresentationModel->GetMultiValuesN(pContactsApp->GetReturnType(), selectedIndex);
+ String* pReturnInfo = static_cast<String *>(pList->GetAt(index));
+ int blankIndex = 0;
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ pReturnInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pReturnInfo->Remove(0, blankIndex + 1);
+ pValueList->Add(new (std::nothrow) String(*pReturnInfo));
+ pReturnValue->Add(new (std::nothrow) String(keyType), pValueList);
+
+ delete pList;
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+}
+
+void
+FavoriteListPanel::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+FavoriteListPanel::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+
+ result r = pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+ AppLogDebug("[%s] The return result from SendAppControlResult(), AppCtrlResult value : %d.", GetErrorMessage(r), appCtrlResult);
+
+ UiApp::GetInstance()->Terminate();
+}
+
+void
+FavoriteListPanel::ShowContactValuePopup(int index)
+{
+ String name;
+ Bitmap* pEmpty = null;
+
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pPresentationModel->GetFavoriteItemInfo(index, name, pEmpty);
+ __pMultipleContactValuePopup->SetTitleText(name);
+ __pMultipleContactValuePopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListProvider);
+ pListView->AddListViewItemEventListener(*this);
+ pListView->SetName(String(Integer::ToString(index)));
+
+ __pMultipleContactValuePopup->AddControl(pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+FavoriteListPanel::HideContactValuePopup(void)
+{
+ if (__pMultipleContactValuePopup)
+ {
+ __pMultipleContactValuePopup->SetShowState(false);
+ Invalidate(true);
+ }
+}
+
+void
+FavoriteListPanel::OnScrollEndReached (Tizen::Ui::Control &source, Tizen::Ui::Controls::ScrollEndEvent type)
+{
+ if (type == SCROLL_END_EVENT_END_BOTTOM)
+ {
+ if (type == SCROLL_END_EVENT_END_BOTTOM)
+ {
+ IconListView* iconListView = static_cast<IconListView*>(&source);
+
+ int listViewHeight = iconListView->GetHeight();
+ int ItemHeight = H_ICONLISTVIEW_ITEM;
+ int noOfItems = __pPresentationModel->GetFavoriteCount();
+
+ int NoOfRows = noOfItems/iconListView->GetItemCountPerAxis();
+ if(noOfItems%iconListView->GetItemCountPerAxis() != 0)
+ {
+ NoOfRows = NoOfRows + 1;
+ }
+
+ int TotalHeight = NoOfRows * ItemHeight;
+
+ __scrolledDistance = TotalHeight - listViewHeight;
+ }
+ }
+ else if (type == SCROLL_END_EVENT_END_TOP)
+ {
+ __scrolledDistance = 0;
+ }
+}
+
+void
+FavoriteListPanel::OnScrollPositionChanged (Tizen::Ui::Control &source, int scrollPos)
+{
+ __scrolledDistance = scrollPos;
+}
+
+void
+FavoriteListPanel::OnScrollStopped (Tizen::Ui::Control &source)
+{
+}
+
+result
+FavoriteListPanel::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type)
+{
+ result r = E_SUCCESS;
+
+ if (__pAppControl != null)
+ {
+ return E_FAILURE;
+ }
+
+ String uri;
+ HashMap extraData;
+ extraData.Construct();
+
+ if (appId.Equals(String(PROVIDER_ID_PHONE)))
+ {
+ uri.Append(INPUT_URI_TEL);
+ uri.Append(argument);
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_CALL_TYPE), new (std::nothrow) String(type));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_MESSAGE)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TO), new (std::nothrow) String(argument));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TYPE), new (std::nothrow) String(INPUT_TYPE_SMS));
+ }
+
+ __pAppControl = AppManager::FindAppControlN(appId, operationId);
+ if (__pAppControl != null)
+ {
+ r = __pAppControl->Start(&uri, null, &extraData, null);
+ if (IsFailed(r))
+ {
+ AppLogDebug("[%s] Unable to launch app control", GetErrorMessage(r));
+ }
+ else
+ {
+ __isAppControlLaunching = true;
+ }
+ }
+
+ extraData.RemoveAll(true);
+
+ return r;
+}
+
+void
+FavoriteListPanel::OnForeground(void)
+{
+ __pFavoriteListView->SetEnabled(true);
+ __pFavoriteListView->UpdateList();
+
+ delete __pAppControl;
+ __pAppControl = null;
+
+ __isAppControlLaunching = false;
+}
+
+void
+FavoriteListPanel::OnBackground(void)
+{
+}
+
+bool
+FavoriteListPanel::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+FavoriteListPanel::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ if (keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
+ {
+ if (__pMultipleContactValuePopup && __pMultipleContactValuePopup->GetShowState() == true)
+ {
+ HideContactValuePopup();
+ return true;
+ }
+ }
+ return false;
+}
+
+bool
+FavoriteListPanel::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+FavoriteListPanel::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtFavoriteListPresentationModel.cpp
+ * @brief This is the implementation file for the FavoriteListPresentationModel class.
+ */
+
+#include <FApp.h>
+#include <FMedia.h>
+#include "CtFavoriteListPresentationModel.h"
+#include "CtIContactEventListener.h"
+#include "CtResourceManager.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+
+static const int VCARD_STRING_LENGTH = 26;
+
+static const wchar_t* VCARD_PATH_FORMAT = L"data/Ct%04d%02d%02d%02d%02d%02d.vcf";
+
+FavoriteListPresentationModel* FavoriteListPresentationModel::__pInstance = null;
+
+FavoriteListPresentationModel*
+FavoriteListPresentationModel::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+
+ return __pInstance;
+}
+
+void
+FavoriteListPresentationModel::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) FavoriteListPresentationModel();
+ result r = __pInstance->Construct();
+ TryCatch(r == E_SUCCESS, , "[%s] Construction Failed", GetErrorMessage(r));
+
+ std::atexit(DestroyInstance);
+ return;
+
+CATCH:
+ delete __pInstance;
+ __pInstance = null;
+}
+
+void
+FavoriteListPresentationModel::DestroyInstance(void)
+{
+ delete __pInstance;
+}
+
+FavoriteListPresentationModel::FavoriteListPresentationModel(void)
+: __pFavoriteList(null)
+,__pContactListenerList(null)
+,__pAddressbook(null)
+{
+
+}
+FavoriteListPresentationModel::~FavoriteListPresentationModel(void)
+{
+ delete __pAddressbook;
+
+ if (__pContactListenerList != null)
+ {
+ __pContactListenerList->RemoveAll(true);
+ delete __pContactListenerList;
+ }
+
+ if (__pFavoriteList != null)
+ {
+ __pFavoriteList->RemoveAll(true);
+ delete __pFavoriteList;
+ }
+}
+
+result
+FavoriteListPresentationModel::Construct(void)
+{
+ result r = E_SUCCESS;
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (__pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ r = __pAddressbook->SetAddressbookChangeEventListener(this);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set event listener", GetErrorMessage(r));
+
+ __pContactListenerList = new (std::nothrow) ArrayList();
+ __pContactListenerList->Construct();
+
+ if (__pFavoriteList != null)
+ {
+ AppLogDebug("FavoriteListPresentationModel is already constructed.");
+
+ return E_SUCCESS;
+ }
+
+ r = InitializeFavoriteList();
+
+ return r;
+
+CATCH:
+ delete __pAddressbook;
+ __pAddressbook = null;
+
+ __pContactListenerList->RemoveAll();
+ delete __pContactListenerList;
+ __pContactListenerList = null;
+
+ return r;
+}
+
+int
+FavoriteListPresentationModel::GetFavoriteCount(void)
+{
+ return __pFavoriteList->GetCount();
+}
+
+int
+FavoriteListPresentationModel::GetContactCount(void)
+{
+ int contactCount = 0;
+ IList* pList = AddressbookManager::GetInstance()->GetAllContactsN();
+ if (pList != null)
+ {
+ contactCount = pList->GetCount();
+ delete pList;
+ }
+
+ return contactCount;
+}
+
+result
+FavoriteListPresentationModel::GetFavoriteItemInfo(int index, Tizen::Base::String& name, Tizen::Graphics::Bitmap*& pThumbnail)
+{
+ Person* pPerson = static_cast<Person *>(__pFavoriteList->GetAt(index));
+ if (pPerson == null)
+ {
+ return E_FAILURE;
+ }
+
+ name = pPerson->GetDisplayName();
+ String thumbnailPath = pPerson->GetThumbnailPath();
+
+ if (thumbnailPath.IsEmpty() == false)
+ {
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(thumbnailPath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_NONE);
+ }
+ }
+
+ return E_SUCCESS;
+}
+
+Tizen::Base::Collection::IList*
+FavoriteListPresentationModel::GetMultiValuesN(AppControlReturnType returnType, int index)
+{
+ Person* pPerson = static_cast<Person*>(__pFavoriteList->GetAt(index));
+ IList* pContactList = null;
+ if (pPerson != null)
+ {
+ pContactList = AddressbookManager::GetInstance()->GetContactsByPersonN(pPerson->GetId());
+ }
+
+ if (pContactList == null)
+ {
+ return null;
+ }
+
+ Contact* pContact = static_cast<Contact*>(pContactList->GetAt(0));
+ if (pContact == null)
+ {
+ delete pContactList;
+ return null;
+ }
+
+ ArrayList* pReturnList = new (std::nothrow) ArrayList();
+ pReturnList->Construct();
+
+ IList* pMultiValues = null;
+ IEnumerator* pEnum = null;
+ if (returnType == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pMultiValues = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pMultiValues != null)
+ {
+ pEnum = pMultiValues->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ PhoneNumber* pPhoneNumber = static_cast<PhoneNumber*>(pEnum->GetCurrent());
+ if (pPhoneNumber != null)
+ {
+ String phoneNumberInfo;
+ switch(pPhoneNumber->GetType())
+ {
+ case PHONENUMBER_TYPE_HOME:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case PHONENUMBER_TYPE_MOBILE:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_MOBILE"));
+ break;
+ case PHONENUMBER_TYPE_HOME_FAX:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HHOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK_FAX:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HWORK"));
+ break;
+ case PHONENUMBER_TYPE_PAGER:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_PAGER"));
+ break;
+ case PHONENUMBER_TYPE_OTHER:
+ phoneNumberInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ phoneNumberInfo.Append(CHARACTER_SPACE);
+ phoneNumberInfo.Append(pPhoneNumber->GetPhoneNumber());
+
+ pReturnList->Add(*(new (std::nothrow) String(phoneNumberInfo)));
+ }
+ }
+ }
+ }
+ else if (returnType == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pMultiValues = pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ if (pMultiValues != null)
+ {
+ pEnum = pMultiValues->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Email* pEmail = static_cast<Email*>(pEnum->GetCurrent());
+ if (pEmail != null)
+ {
+ String emailInfo;
+ switch(pEmail->GetType())
+ {
+ case EMAIL_TYPE_PERSONAL:
+ emailInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case EMAIL_TYPE_WORK:
+ emailInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case EMAIL_TYPE_OTHER:
+ emailInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ emailInfo.Append(CHARACTER_SPACE);
+ emailInfo.Append(pEmail->GetEmail());
+
+ pReturnList->Add(*(new (std::nothrow) String(emailInfo)));
+ }
+ }
+ }
+ }
+
+ delete pEnum;
+ delete pMultiValues;
+ delete pContactList;
+
+ return pReturnList;
+}
+
+Tizen::Social::RecordId
+FavoriteListPresentationModel::GetContactId(int index)
+{
+ Person* pPerson = static_cast<Person *>(__pFavoriteList->GetAt(index));
+ if (pPerson == null)
+ {
+ return INVALID_RECORD_ID;
+ }
+
+ IList* pList = AddressbookManager::GetInstance()->GetContactsByPersonN(pPerson->GetId());
+ if (pList == null)
+ {
+ return INVALID_RECORD_ID;
+ }
+
+ Contact* pContact = static_cast<Contact *>(pList->GetAt(0));
+ if (pContact == null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+
+ return INVALID_RECORD_ID;
+ }
+
+ RecordId contactId = pContact->GetRecordId();
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return contactId;
+}
+
+result
+FavoriteListPresentationModel::SetAsFavorite(Tizen::Social::RecordId contactId, bool isFavorite)
+{
+ result r = E_SUCCESS;
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ Contact* pContact = pAddressbookManager->GetContactN(contactId);
+ if (pContact == null)
+ {
+ return E_FAILURE;
+ }
+
+ r = pAddressbookManager->SetPersonAsFavorite(pContact->GetPersonId(), isFavorite);
+
+ return r;
+}
+
+result
+FavoriteListPresentationModel::InitializeFavoriteList(AppControlReturnType returnType)
+{
+ result r = E_SUCCESS;
+
+ if (__pFavoriteList != null)
+ {
+ __pFavoriteList->RemoveAll(true);
+ __pFavoriteList = null;
+ }
+
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ if (returnType == APP_CONTROL_RETURN_TYPE_NONE || returnType == APP_CONTROL_RETURN_TYPE_ITEM_ID || returnType == APP_CONTROL_RETURN_TYPE_VCARD)
+ {
+ __pFavoriteList = AddressbookManager::GetInstance()->GetFavoritePersonsN();
+ }
+ else if (returnType == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_IS_FAVORITE, FI_CMP_OP_EQUAL, true);
+ __pFavoriteList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+ }
+ else if (returnType == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_IS_FAVORITE, FI_CMP_OP_EQUAL, true);
+ __pFavoriteList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+ }
+
+ if (__pFavoriteList == null)
+ {
+ r = E_FAILURE;
+ }
+
+ return r;
+}
+
+Tizen::Base::String
+FavoriteListPresentationModel::GetDefaultEmail(int index)
+{
+ Person* pPerson = static_cast<Person *>(__pFavoriteList->GetAt(index));
+ if (pPerson == null)
+ {
+ return String();
+ }
+
+ Email email = pPerson->GetPrimaryEmail();
+ return email.GetEmail();
+}
+
+
+Tizen::Base::String
+FavoriteListPresentationModel::GetDefaultPhoneNumber(int index)
+{
+ Person* pPerson = static_cast<Person *>(__pFavoriteList->GetAt(index));
+ if (pPerson == null)
+ {
+ return String();
+ }
+
+ PhoneNumber phoneNumber = pPerson->GetPrimaryPhoneNumber();
+ return phoneNumber.GetPhoneNumber();
+}
+
+Tizen::Base::String
+FavoriteListPresentationModel::ExportToVcard(int index)
+{
+ String vCardPath;
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ Contact* pContact = pAddressbookManager->GetContactN(GetContactId(index));
+ TryReturn(pContact != null, vCardPath, "[E_FAILURE] Unable to get the specific contact.");
+
+ DateTime currentDateTime;
+ SystemTime::GetCurrentTime(TIME_MODE_WALL, currentDateTime);
+
+ vCardPath.Format(VCARD_STRING_LENGTH, VCARD_PATH_FORMAT, currentDateTime.GetYear(), currentDateTime.GetMonth(), currentDateTime.GetDay(),
+ currentDateTime.GetHour(), currentDateTime.GetMinute(), currentDateTime.GetSecond());
+
+ vCardPath = Application::GetInstance()->GetAppSharedPath() + vCardPath;
+
+ result r = pAddressbookManager->ExportContactToVcard(*pContact, vCardPath);
+
+ if (r != E_SUCCESS)
+ {
+ vCardPath.Clear();
+ }
+
+ delete pContact;
+
+ return vCardPath;
+}
+
+void
+FavoriteListPresentationModel::AddContactChangeListener(const IContactEventListener& listener)
+{
+ __pContactListenerList->Add(listener);
+}
+
+void
+FavoriteListPresentationModel::RemoveContactChangeListener(const IContactEventListener& listener)
+{
+ __pContactListenerList->Remove(listener, false);
+}
+
+void
+FavoriteListPresentationModel::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pContactListenerList->GetEnumeratorN();
+ while(pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnContactsChanged();
+ }
+
+ delete pEnum;
+}
+void
+FavoriteListPresentationModel::OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList)
+{
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pContactListenerList->GetEnumeratorN();
+ while(pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener*>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnCategoriesChanged();
+ }
+
+ delete pEnum;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtFormFactory.cpp
+ * @brief This is the implementation file for the FormFactory class.
+ */
+
+#include "CtContactDetailsForm.h"
+#include "CtContactEditorForm.h"
+#include "CtContactSelectorForm.h"
+#include "CtFormFactory.h"
+#include "CtGroupContactListEditorForm.h"
+#include "CtGroupContactListForm.h"
+#include "CtGroupEditorForm.h"
+#include "CtGroupSelectorForm.h"
+#include "CtMainForm.h"
+#include "CtSettingsForm.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+FormFactory::FormFactory(void)
+{
+}
+
+FormFactory::~FormFactory(void)
+{
+}
+
+Tizen::Ui::Controls::Form*
+FormFactory::CreateFormN(const Tizen::Base::String& formId, const Tizen::Ui::Scenes::SceneId& sceneId)
+{
+ result r = E_SUCCESS;
+
+ Form* pNewForm = null;
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (formId == IDC_FORM_MAIN)
+ {
+ MainForm* pForm = new (std::nothrow) MainForm();
+ pForm->Initialize();
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_CONTACT_SELECTOR)
+ {
+ ContactSelectorForm* pForm = new (std::nothrow) ContactSelectorForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_CONTACT_DETAILS)
+ {
+ ContactDetailsForm* pForm = new (std::nothrow) ContactDetailsForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_CONTACT_EDITOR)
+ {
+ ContactEditorForm* pForm = new (std::nothrow) ContactEditorForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_GROUP_SELECTOR)
+ {
+ GroupSelectorForm* pForm = new (std::nothrow) GroupSelectorForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_GROUP_EDITOR)
+ {
+ GroupEditorForm* pForm = new (std::nothrow) GroupEditorForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_SETTINGS)
+ {
+ SettingsForm* pForm = new (std::nothrow) SettingsForm();
+ pForm->Initialize();
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_GROUP_CONTACT_LIST)
+ {
+ GroupContactListForm* pForm = new (std::nothrow) GroupContactListForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+ else if (formId == IDC_FORM_GROUP_CONTACT_LIST_EDITOR)
+ {
+ GroupContactListEditorForm* pForm = new (std::nothrow) GroupContactListEditorForm();
+ pForm->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pForm);
+ TryCatch(r == E_SUCCESS, delete pForm, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewForm = pForm;
+ }
+
+ return pNewForm;
+
+CATCH:
+ return null;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupContactListEditorForm.cpp
+ * @brief This is the implementation file for the GroupContactListEditorForm class.
+ */
+
+#include "CtContactListItem.h"
+#include "CtContactsApp.h"
+#include "CtGroupContactListEditorForm.h"
+#include "CtGroupContactListPresentationModel.h"
+#include "CtResourceManager.h"
+#include "CtSearchListEventListener.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const int IDA_FOOTER_REMOVE = 0;
+static const int IDA_FOOTER_CANCEL = 1;
+static const int IDA_FOOTER_DONE = 2;
+static const int IDA_CHECK_SELECT_ALL_CHECKED = 10;
+static const int IDA_CHECK_SELECT_ALL_UNCHECKED = 11;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 20;
+
+static const wchar_t* IDB_NO_CONTENTS = L"00_Nocontents_text.png";
+
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int H_GROUP_ITEM = 76;
+static const int H_LIST_ITEM = 112;
+static const int H_SELECT_ALL = 112;
+static const int H_SEARCHBAR = 86;
+static const int H_BOTTOM_LABEL = 48;
+static const int W_CONTACT_VALUE_POPUP = 688;
+static const int H_CONTACT_VALUE_POPUP = 532;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 338;
+static const int Y_CLOSE_BUTTON = 358;
+static const int H_CLOSE_BUTTON = 74;
+static const int W_CLOSE_BUTTON = 394;
+static const int X_LIST_ITEM_TEXT_MARGIN = 32;
+static const int H_CHECK_LABEL = 72;
+static const int Y_CHECK_LABEL = 20;
+
+static const int FONT_SIZE_BOTTOM_LABEL = 32;
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+
+static const unsigned int COLOR_BOTTOM_LABEL_BG = Color32<68, 68, 68>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_FONT = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+static const unsigned int COLOR_CHECK_LABEL_BG = Color32<220, 218, 211>::Value;
+
+static const int LIST_VIEW_GROUP_INDEX_SHIFT = 16;
+static const int LIST_VIEW_MASK = 0xFFFF;
+
+static const wchar_t* INPUT_KEY_MESSAGE_TYPE = L"http://tizen.org/appcontrol/data/message/type";
+static const wchar_t* INPUT_KEY_TO = L"http://tizen.org/appcontrol/data/to";
+static const wchar_t* INPUT_TYPE_SMS = L"sms";
+
+GroupContactListEditorForm::GroupContactListEditorForm(void)
+: __pContactValueListEvent(null)
+, __pPresentationModel(null)
+, __pSearchListEvent(null)
+, __pAppControl(null)
+, __pTempContactValueHashMap(null)
+, __pSearchBar(null)
+, __pSelectAllButton(null)
+, __pListView(null)
+, __pSearchListView(null)
+, __pCheckLabel(null)
+, __pBottomLabel(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pMultipleContactValuePopup(null)
+, __launchType(0)
+, __selectedIndex(-1)
+, __selectedSearchIndex(-1)
+{
+}
+
+GroupContactListEditorForm::~GroupContactListEditorForm(void)
+{
+}
+
+void
+GroupContactListEditorForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+GroupContactListEditorForm::OnInitializing(void)
+{
+ SetFormBackEventListener(this);
+
+ __pPresentationModel = GroupContactListPresentationModel::GetInstance();
+
+ __pCheckLabel = new (std::nothrow) Label();
+ __pCheckLabel->Construct(Rectangle(0, H_SEARCHBAR + Y_CHECK_LABEL, GetClientAreaBounds().width, H_CHECK_LABEL), L"");
+ __pCheckLabel->SetBackgroundColor(COLOR_CHECK_LABEL_BG);
+ AddControl(__pCheckLabel);
+
+ __pSelectAllButton = new (std::nothrow) CheckButton();
+ __pSelectAllButton->Construct(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, H_SELECT_ALL), CHECK_BUTTON_STYLE_MARK, BACKGROUND_STYLE_NONE);
+ __pSelectAllButton->SetText(ResourceManager::GetString(L"IDS_COM_BODY_SELECT_ALL"));
+ __pSelectAllButton->SetActionId(IDA_CHECK_SELECT_ALL_CHECKED, IDA_CHECK_SELECT_ALL_UNCHECKED);
+ __pSelectAllButton->AddActionEventListener(*this);
+ AddControl(__pSelectAllButton);
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, H_SEARCHBAR + H_SELECT_ALL, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR - H_SELECT_ALL - H_BOTTOM_LABEL), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true);
+ __pListView->SetItemProvider(*this);
+ __pListView->AddFastScrollListener(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+ __pListView->AddTouchEventListener(*this);
+ AddControl(__pListView);
+
+ __pSearchBar = new (std::nothrow) SearchBar();
+ __pSearchBar->Construct(Rectangle(0, 0, GetClientAreaBounds().width, H_SEARCHBAR));
+ __pSearchBar->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_SEARCH"));
+ __pSearchBar->AddSearchBarEventListener(*this);
+ __pSearchBar->AddTextEventListener(*this);
+ __pSearchBar->AddKeypadEventListener(*this);
+ __pSearchBar->SetContentAreaSize(Dimension(0, 0));
+
+ __pSearchListEvent = new (std::nothrow) SearchListEventListener(LIST_ANNEX_STYLE_MARK, __pPresentationModel);
+ AddControl(__pSearchBar);
+
+ __pSearchListView = new (std::nothrow) GroupedListView();
+ __pSearchListView->Construct(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pSearchListView->SetItemProvider(*__pSearchListEvent);
+ __pSearchListView->AddGroupedListViewItemEventListener(*this);
+ __pSearchListView->AddTouchEventListener(*this);
+ __pSearchListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pSearchListView->SetShowState(false);
+ AddControl(__pSearchListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_CONTENTS);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, GetClientAreaBounds().width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(__pEmptyCommentLabel);
+
+ __pBottomLabel = new (std::nothrow) Label();
+ __pBottomLabel->Construct(FloatRectangle(0, GetClientAreaBoundsF().height - H_BOTTOM_LABEL, GetClientAreaBoundsF().width, H_BOTTOM_LABEL),
+ ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + INITIAL_SELECTED_COUNT);
+ __pBottomLabel->SetBackgroundColor(Color(COLOR_BOTTOM_LABEL_BG));
+ __pBottomLabel->SetTextColor(Color(COLOR_BOTTOM_LABEL_FONT));
+ __pBottomLabel->SetTextConfig(FONT_SIZE_BOTTOM_LABEL, LABEL_TEXT_STYLE_BOLD);
+ __pBottomLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ __pBottomLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ AddControl(__pBottomLabel);
+
+ __pTempContactValueHashMap = new (std::nothrow) HashMap();
+ __pTempContactValueHashMap->Construct();
+
+ return E_SUCCESS;
+}
+
+result
+GroupContactListEditorForm::OnTerminating(void)
+{
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+ if (__pContactValueListEvent)
+ {
+ delete __pContactValueListEvent;
+ }
+
+ delete __pAppControl;
+ __pTempContactValueHashMap->RemoveAll(true);
+ delete __pTempContactValueHashMap;
+ delete __pSearchListEvent;
+ delete __pMultipleContactValuePopup;
+
+ return E_SUCCESS;
+}
+
+void
+GroupContactListEditorForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST, SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+}
+
+void
+GroupContactListEditorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (actionId)
+ {
+ case IDA_FOOTER_REMOVE:
+ {
+ RemoveSelectedContacts();
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_CONTACT_LIST));
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_CONTACT_LIST));
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_CHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ int index = 0;
+ index |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ index |= itemIndex;
+ Integer hashMapIndex(index);
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE || __launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ if (__pTempContactValueHashMap->GetValue(hashMapIndex) == null)
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(index)), *(new (std::nothrow) String(phoneNumber)));
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL || __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ if (__pTempContactValueHashMap->GetValue(hashMapIndex) == null)
+ {
+ String email = __pPresentationModel->GetDefaultEmail(groupIndex, itemIndex);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(index)), *(new (std::nothrow) String(email)));
+ }
+ }
+ }
+ }
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_UNCHECKED:
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+ __pTempContactValueHashMap->RemoveAll(true);
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ if (__launchType == ID_GROUP_CONTACT_SELECT_MESSAGE ||
+ __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ LaunchAppControl();
+ }
+ else
+ {
+ ReturnMultipleValues();
+ }
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupContactListEditorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList *pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pArgs != null)
+ {
+ Integer* pCategoryId = null;
+
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ if (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategoryId = static_cast<Integer*>(pEnum->GetCurrent());
+ }
+ if (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Integer* pItemTypeForLaunchAppControl = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pItemTypeForLaunchAppControl != null)
+ {
+ __launchType = pItemTypeForLaunchAppControl->ToInt();
+ }
+ }
+
+ if (pCategoryId != null)
+ {
+ Header* pHeader = GetHeader();
+ if (pCategoryId->ToInt() == ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ if (__launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID, GROUP_CONTACT_LAUNCH_TYPE_MESSAGE);
+ }
+ else if (__launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID, GROUP_CONTACT_LAUNCH_TYPE_EMAIL);
+ }
+ else
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID);
+ }
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED"));
+ }
+ else
+ {
+ if (__launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ __pPresentationModel->InitializeGroupContactList(pCategoryId->ToInt(), GROUP_CONTACT_LAUNCH_TYPE_MESSAGE);
+ }
+ else if (__launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ __pPresentationModel->InitializeGroupContactList(pCategoryId->ToInt(), GROUP_CONTACT_LAUNCH_TYPE_EMAIL);
+ }
+ else
+ {
+ __pPresentationModel->InitializeGroupContactList(pCategoryId->ToInt());
+ }
+ pHeader->SetTitleText(__pPresentationModel->GetCategoryName());
+ }
+
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ }
+ delete pEnum;
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+
+ Footer* pFooter = GetFooter();
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK || __launchType != 0)
+ {
+ AppLogDebug("kamesh: OPERATION_ID_PICK || __launchType != 0");
+ pFooter->SetShowState(true);
+
+ FooterItem footerItemDone;
+ footerItemDone.Construct(IDA_FOOTER_DONE);
+ footerItemDone.SetText(ResourceManager::GetString(L"IDS_COM_SK_DONE"));
+ pFooter->AddItem(footerItemDone);
+ pFooter->SetItemEnabled(0, false);
+
+ if (__pPresentationModel->GetContactCount() == 0)
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pCheckLabel->SetShowState(false);
+ __pSelectAllButton->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ __pBottomLabel->SetShowState(false);
+ }
+ }
+ else
+ {
+ FooterItem footerItemCancel;
+ footerItemCancel.Construct(IDA_FOOTER_CANCEL);
+ footerItemCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+
+ FooterItem footerItemRemove;
+ footerItemRemove.Construct(IDA_FOOTER_REMOVE);
+ footerItemRemove.SetText(ResourceManager::GetString(L"IDS_COM_BODY_REMOVE"));
+
+ pFooter->AddItem(footerItemCancel);
+ pFooter->AddItem(footerItemRemove);
+ pFooter->SetItemEnabled(1, false);
+ }
+
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+ UpdateBottomLabel();
+
+ __pPresentationModel->AddContactChangeListener(*this);
+ pFooter->AddActionEventListener(*this);
+}
+
+void
+GroupContactListEditorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (__launchType != 0)
+ {
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+
+ delete __pAppControl;
+ __pAppControl = null;
+ }
+ else
+ {
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+ }
+
+ __pPresentationModel->RemoveContactChangeListener(*this);
+}
+
+void
+GroupContactListEditorForm::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, Tizen::Ui::Controls::SearchBarMode mode)
+{
+ if (mode == SEARCH_BAR_MODE_NORMAL)
+ {
+ int searchedCount = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int index = 0; index < searchedCount; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pListView->SetShowState(true);
+ __pListView->Invalidate(true);
+ __pCheckLabel->SetShowState(true);
+ __pSelectAllButton->SetShowState(true);
+ __pSelectAllButton->SetSelected(isChecked);
+ __pSearchListView->SetShowState(false);
+ __pPresentationModel->ResetSearchedContactList();
+ __pSearchListView->UpdateList();
+
+ UpdateBottomLabel();
+ }
+}
+
+void
+GroupContactListEditorForm::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE || __launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL || __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+
+ if (searchText.GetLength() != 0)
+ {
+ __pCheckLabel->SetShowState(false);
+ __pSelectAllButton->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pSearchListView->SetShowState(true);
+
+ __pSearchListView->UpdateList();
+
+ int searchedCount = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < searchedCount; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pSearchListView->SetItemChecked(0, index, __pListView->IsItemChecked(groupIndex, itemIndex));
+ }
+
+ __pSearchListView->Invalidate(true);
+ }
+ else
+ {
+ __pCheckLabel->SetShowState(true);
+ __pSelectAllButton->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+
+ int count = __pPresentationModel->GetSearchedContactCount();
+ bool isChecked = true;
+
+ for (int index = 0; index < count; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAllButton->SetSelected(isChecked);
+ __pListView->Invalidate(true);
+ }
+}
+
+void
+GroupContactListEditorForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+int
+GroupContactListEditorForm::GetGroupCount(void)
+{
+ return __pPresentationModel->GetKeyCount();
+}
+
+int
+GroupContactListEditorForm::GetItemCount(int groupIndex)
+{
+ return __pPresentationModel->GetContactCount(groupIndex);
+}
+
+Tizen::Ui::Controls::ListItemBase*
+GroupContactListEditorForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ Bitmap* pThumbnail = null;
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_LIST_ITEM + pContactsApp->GetFontHeightOffset()), LIST_ANNEX_STYLE_MARK);
+
+ __pPresentationModel->GetContactItemInfoN(groupIndex, itemIndex, name, pThumbnail);
+
+ ContactListItem* pCustomElement = new (std::nothrow) ContactListItem(name, pThumbnail);
+ pItem->AddElement(Rectangle(0, 0, itemWidth - (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN), H_LIST_ITEM + pContactsApp->GetFontHeightOffset()), 0, *(static_cast<ICustomElement*>(pCustomElement)));
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+GroupContactListEditorForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(__pPresentationModel->GetKey(groupIndex), null);
+
+ return pItem;
+}
+
+bool
+GroupContactListEditorForm::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ CustomItem* pCustomItem = static_cast<CustomItem *>(pItem);
+ pCustomItem->RemoveAllElements();
+
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+GroupContactListEditorForm::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+GroupContactListEditorForm::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+GroupContactListEditorForm::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int mainGroupIndex = groupIndex;
+ int mainItemIndex = itemIndex;
+
+ if (listView.Equals(*__pSearchListView) == true)
+ {
+ __selectedSearchIndex = 0;
+ __selectedSearchIndex |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ __selectedSearchIndex |= itemIndex;
+
+ __pPresentationModel->GetItemMainIndex(itemIndex, mainGroupIndex, mainItemIndex);
+ }
+
+ __selectedIndex = 0;
+ __selectedIndex |= mainGroupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ __selectedIndex |= mainItemIndex;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK ||
+ __launchType == ID_GROUP_CONTACT_SELECT_MESSAGE ||
+ __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ IList* pList = null;
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE ||
+ __launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(mainGroupIndex, mainItemIndex);
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ listView.SetItemChecked(groupIndex, itemIndex, false);
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(mainGroupIndex, mainItemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ pList->RemoveAll(true);
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL ||
+ __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(mainGroupIndex, mainItemIndex);
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ listView.SetItemChecked(groupIndex, itemIndex, false);
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(mainGroupIndex, mainItemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ pList->RemoveAll(true);
+ delete pList;
+ }
+ }
+ }
+ }
+ else
+ {
+ Integer keyIndex(__selectedIndex);
+ __pTempContactValueHashMap->Remove(keyIndex, true);
+ }
+ }
+
+ if (listView.Equals(*__pListView) == true)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ bool isChecked = true;
+ for (int groupIndex = 0; groupIndex < listView.GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = listView.GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (listView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAllButton->SetSelected(isChecked);
+ }
+ else if (listView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ __pSelectAllButton->SetSelected(false);
+ }
+ }
+ else if (listView.Equals(*__pSearchListView) == true)
+ {
+ int searchedCount = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < searchedCount; index++)
+ {
+ int groupIndex = 0;
+ int itemIndex = 0;
+
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+GroupContactListEditorForm::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+GroupContactListEditorForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+GroupContactListEditorForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int groupIndex = (__selectedIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __selectedIndex & LIST_VIEW_MASK;
+
+ IList* pList = null;
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE ||
+ __launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL ||
+ __launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+ }
+
+ if (pList == null)
+ {
+ ReturnResultFailed();
+ }
+ else
+ {
+ String* pContactValueInfo = static_cast<String *>(pList->GetAt(index));
+ int blankIndex = 0;
+ pContactValueInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pContactValueInfo->Remove(0, blankIndex + 1);
+ __pTempContactValueHashMap->Add(*(new (std::nothrow) Integer(__selectedIndex)), *(new (std::nothrow) String(*pContactValueInfo)));
+ }
+
+ delete pList;
+
+ HideContactValuePopup();
+
+ if (__pListView->GetShowState() == true)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ bool isChecked = true;
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount() && isChecked == true; groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ }
+
+ __pSelectAllButton->SetSelected(isChecked);
+ }
+ else
+ {
+ groupIndex = (__selectedSearchIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ itemIndex = __selectedSearchIndex & LIST_VIEW_MASK;
+ __pSearchListView->SetItemChecked(groupIndex, itemIndex, true);
+
+ int searchedCount = __pPresentationModel->GetSearchedContactCount();
+
+ for (int index = 0; index < searchedCount; index++)
+ {
+ __pPresentationModel->GetItemMainIndex(index, groupIndex, itemIndex);
+
+ __pListView->SetItemChecked(groupIndex, itemIndex, __pSearchListView->IsItemChecked(0, index));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+GroupContactListEditorForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+GroupContactListEditorForm::OnFastScrollIndexSelected(Tizen::Ui::Control& source, Tizen::Base::String& index)
+{
+ __pListView->ScrollToItem(__pPresentationModel->GetKeyIndex(index), -1);
+ __pListView->Invalidate(false);
+}
+
+void
+GroupContactListEditorForm::OnContactsChanged(void)
+{
+ HideContactValuePopup();
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ SetFocus();
+ }
+ __pPresentationModel->InitializeContactList();
+ if (__pPresentationModel->GetContactCount() == 0)
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pCheckLabel->SetShowState(false);
+ __pSelectAllButton->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ __pBottomLabel->SetShowState(false);
+ }
+ else
+ {
+ __pSearchBar->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pCheckLabel->SetShowState(true);
+ __pSelectAllButton->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ __pBottomLabel->SetShowState(true);
+ }
+
+ __pSelectAllButton->SetSelected(false);
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ __pListView->SetItemChecked(groupIndex, itemIndex, false);
+ }
+ }
+ }
+ UpdateBottomLabel();
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+ Invalidate(true);
+}
+
+void
+GroupContactListEditorForm::OnCategoriesChanged(void)
+{
+ SceneManager::GetInstance()->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST,
+ SCENE_TRANSITION_ANIMATION_TYPE_NONE, SCENE_DESTROY_OPTION_DESTROY));
+}
+
+result
+GroupContactListEditorForm::RemoveSelectedContacts(void)
+{
+ for (int groupIndex = __pListView->GetGroupCount() - 1; groupIndex >= 0 ; groupIndex--)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex) - 1;
+ for (int itemIndex = itemCount; itemIndex >= 0; itemIndex--)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex))
+ {
+ __pPresentationModel->RemoveContactFromCategory(groupIndex, itemIndex);
+ }
+ }
+ }
+
+ return E_SUCCESS;
+}
+
+result
+GroupContactListEditorForm::UpdateBottomLabel(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ int selectedCount = 0;
+ int fotterItemIndex = 1;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK || __launchType != 0)
+ {
+ fotterItemIndex = 0;
+ }
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ selectedCount++;
+ }
+ }
+ }
+
+ String selected = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ selected.Append(L" (");
+ selected.Append(selectedCount);
+ selected.Append(L")");
+ __pBottomLabel->SetText(selected);
+ __pBottomLabel->SetPosition(FloatPoint(0, GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(false);
+
+ Footer* pFooter = GetFooter();
+
+ if (selectedCount > 0)
+ {
+ if(__pBottomLabel->GetShowState() == false)
+ {
+ __pBottomLabel->SetShowState(true);
+ __pListView->SetSize(__pListView->GetSize().width, __pListView->GetSize().height - H_BOTTOM_LABEL);
+ __pSearchListView->SetSize(__pSearchListView->GetSize().width, __pSearchListView->GetSize().height - H_BOTTOM_LABEL);
+ }
+ pFooter->SetItemEnabled(fotterItemIndex, true);
+ }
+ else if (selectedCount == 0)
+ {
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pBottomLabel->SetShowState(false);
+ __pListView->SetSize(__pListView->GetSize().width, __pListView->GetSize().height + H_BOTTOM_LABEL);
+ __pSearchListView->SetSize(__pSearchListView->GetSize().width, __pSearchListView->GetSize().height + H_BOTTOM_LABEL);
+ }
+ pFooter->SetItemEnabled(fotterItemIndex, false);
+ }
+
+ pFooter->Invalidate(true);
+
+ return E_SUCCESS;
+}
+
+void
+GroupContactListEditorForm::ShowContactValuePopup(int groupIndex, int itemIndex)
+{
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pMultipleContactValuePopup->SetTitleText(__pPresentationModel->GetName(groupIndex, itemIndex));
+ __pMultipleContactValuePopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListEvent);
+ pListView->AddListViewItemEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+GroupContactListEditorForm::HideContactValuePopup(void)
+{
+ if (__pMultipleContactValuePopup)
+ {
+ __pMultipleContactValuePopup->SetShowState(false);
+ Invalidate(true);
+ }
+}
+
+void
+GroupContactListEditorForm::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+
+ result r = pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+ AppLogDebug("[%s] The return result from SendAppControlResult(), AppCtrlResult value : %d.", GetErrorMessage(r), appCtrlResult);
+
+ UiApp::GetInstance()->Terminate();
+}
+
+void
+GroupContactListEditorForm::ReturnMultipleValues(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ pValueList->Add(new (std::nothrow) String(*pValue));
+ }
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_PHONE), pValueList);
+
+ delete pMapEnum;
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ pValueList->Add(new (std::nothrow) String(*pValue));
+ }
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_EMAIL), pValueList);
+
+ delete pMapEnum;
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_ITEM_ID)
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+ for (int itemIndex = 0; itemIndex < itemCount; itemIndex++)
+ {
+ if (__pListView->IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ String contactId;
+ contactId.Append(__pPresentationModel->GetContactId(groupIndex, itemIndex));
+ pValueList->Add(new (std::nothrow) String(contactId));
+ }
+ }
+ }
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_ITEM_ID), pValueList);
+ }
+ else
+ {
+ delete pValueList;
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+
+ return;
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ }
+}
+
+void
+GroupContactListEditorForm::ReturnResultFailed(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, null);
+}
+
+result
+GroupContactListEditorForm::LaunchAppControl(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pAppControl != null)
+ {
+ return E_FAILURE;
+ }
+
+ HashMap extraData;
+ extraData.Construct();
+
+ if (__launchType == ID_GROUP_CONTACT_SELECT_MESSAGE)
+ {
+ __pAppControl = AppManager::FindAppControlN(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE);
+
+ String toValue;
+
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ int index = -1;
+ pValue->IndexOf(DELIMITER_SEMICOLON, 0, index);
+ if (index >= 0)
+ {
+ pValue->SubString(0, index, *pValue);
+ }
+ index = -1;
+ pValue->IndexOf(DELIMITER_COMMA, 0, index);
+ if (index >= 0)
+ {
+ pValue->SubString(0, index, *pValue);
+ }
+
+ toValue.Append(*pValue);
+ toValue.Append(DELIMITER_COMMA);
+ }
+ delete pMapEnum;
+
+ toValue.Remove(toValue.GetLength() - 1, 1);
+
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TO), new (std::nothrow) String(toValue));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TYPE), new (std::nothrow) String(INPUT_TYPE_SMS));
+ }
+ else if (__launchType == ID_GROUP_CONTACT_SELECT_EMAIL)
+ {
+ __pAppControl = AppManager::FindAppControlN(PROVIDER_ID_EMAIL, OPERATION_ID_COMPOSE);
+
+ String toValue;
+
+ IMapEnumerator* pMapEnum = __pTempContactValueHashMap->GetMapEnumeratorN();
+ while (pMapEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pValue = static_cast<String*> (pMapEnum->GetValue());
+ toValue.Append(*pValue);
+ toValue.Append(DELIMITER_SEMICOLON);
+ }
+ delete pMapEnum;
+
+ toValue.Remove(toValue.GetLength() - 1, 1);
+
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_TO), new (std::nothrow) String(toValue));
+ }
+
+ if (__pAppControl != null)
+ {
+ r = __pAppControl->Start(null, null, &extraData, null);
+ if (IsFailed(r))
+ {
+ AppLogDebug("[%s] Unable to launch app control", GetErrorMessage(r));
+ }
+ }
+
+ extraData.RemoveAll(true);
+
+ return r;
+}
+
+void
+GroupContactListEditorForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupContactListEditorForm::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL));
+ __pBottomLabel->SetPosition(FloatPoint(0, GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(true);
+ }
+ else
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR));
+ }
+}
+
+void
+GroupContactListEditorForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL));
+ __pBottomLabel->SetPosition(FloatPoint(0, GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(true);
+
+ UpdateBottomLabel();
+ }
+ else
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR));
+ }
+}
+
+void
+GroupContactListEditorForm::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
+{
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR - H_BOTTOM_LABEL));
+ __pBottomLabel->SetPosition(FloatPoint(0, GetClientAreaBoundsF().height - H_BOTTOM_LABEL));
+ __pBottomLabel->Invalidate(true);
+ }
+ else
+ {
+ __pSearchListView->SetBounds(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR));
+ }
+}
+
+void
+GroupContactListEditorForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+ if (keypadAction == KEYPAD_ACTION_SEARCH)
+ {
+ __pSearchBar->HideKeypad();
+ }
+}
+
+void
+GroupContactListEditorForm::OnForeground(void)
+{
+ bool isContactPresent = true;
+
+ if (__pListView->GetGroupCount() > 0)
+ {
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ int itemCount = __pListView->GetItemCountAt(groupIndex);
+
+ if (itemCount == 0)
+ {
+ isContactPresent = false;
+ }
+ else
+ {
+ isContactPresent = true;
+ }
+ }
+ }
+ else
+ {
+ isContactPresent = false;
+ }
+
+ if (isContactPresent == false)
+ {
+ __pSelectAllButton->SetEnabled(false);
+ }
+ else
+ {
+ __pSelectAllButton->SetEnabled(true);
+
+ }
+
+ __pSelectAllButton->Invalidate(true);
+}
+
+void
+GroupContactListEditorForm::OnBackground(void)
+{
+ if (__pAppControl != null)
+ {
+ AppLogDebug("__pAppControl != null");
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+}
+
+void
+GroupContactListEditorForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ GroupedListView* pList = static_cast<GroupedListView*>(&const_cast<Control&>(source));
+ if (pList != null)
+ {
+ pList->SetFocus();
+ }
+}
+
+void
+GroupContactListEditorForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListEditorForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListEditorForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListEditorForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+bool
+GroupContactListEditorForm::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+GroupContactListEditorForm::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ if (keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
+ {
+ if (__pMultipleContactValuePopup && __pMultipleContactValuePopup->GetShowState() == true)
+ {
+ HideContactValuePopup();
+ return true;
+ }
+ }
+ return false;
+}
+
+bool
+GroupContactListEditorForm::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+GroupContactListEditorForm::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupContactListForm.cpp
+ * @brief This is the implementation file for the GroupContactListForm class.
+ */
+
+#include "CtContactListItem.h"
+#include "CtContactsApp.h"
+#include "CtGroupContactListForm.h"
+#include "CtGroupContactListPresentationModel.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtSearchListEventListener.h"
+#include "CtSearchListItem.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Base::Utility;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_FOOTER_ADD_MEMBER = 11;
+static const int IDA_MORE_REMOVE = 12;
+static const int IDA_LIST_ELEMENT_DELETE = 40;
+static const int IDA_LIST_ELEMENT_CALL = 41;
+static const int IDA_LIST_ELEMENT_MESSAGE = 42;
+static const int IDA_LIST_ELEMENT_VIDEO_CALL = 43;
+static const int IDA_POPUP_DELETE_YES = 30;
+static const int IDA_POPUP_DELETE_CANCEL = 31;
+static const int IDA_POPUP_CONTACT_VALUE_CLOSE = 32;
+
+static const wchar_t* IDB_NO_CONTENTS = L"00_Nocontents_text.png";
+
+static const int H_SEARCHBAR = 86;
+static const int H_GROUP_ITEM = 76;
+
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+static const int W_DELETE_BUTTON_GAP = 20;
+static const int W_CONTACT_VALUE_POPUP = 688;
+static const int H_CONTACT_VALUE_POPUP = 532;
+static const int H_CONTACT_VALUE_POPUP_LIST_VIEW = 338;
+static const int Y_CLOSE_BUTTON = 358;
+static const int H_CLOSE_BUTTON = 74;
+static const int W_CLOSE_BUTTON = 394;
+
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+
+static const RequestId REQ_ID_MOVE_TO_GROUP_LIST = 1000;
+
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_NORMAL = Color32<213, 82, 82>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_PRESSED = Color32<194, 71, 71>::Value;
+static const unsigned int COLOR_DELETE_BUTTON_TEXT = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_DELETE_ELEMENT_NORMAL = Color32<208, 82, 82>::Value;
+static const unsigned int COLOR_DELETE_ELEMENT_PRESSED = Color32<194, 71, 71>::Value;
+static const unsigned int COLOR_DELETE_ELEMENT_TEXT = Color32<248, 246, 239>::Value;
+
+static const int LIST_VIEW_GROUP_INDEX_SHIFT = 16;
+static const int LIST_VIEW_MASK = 0xFFFF;
+
+static const wchar_t* INPUT_KEY_CALL_TYPE = L"http://tizen.org/appcontrol/data/call/type";
+static const wchar_t* INPUT_KEY_MESSAGE_TYPE = L"http://tizen.org/appcontrol/data/message/type";
+static const wchar_t* INPUT_KEY_MESSAGE_TO = L"http://tizen.org/appcontrol/data/to";
+static const wchar_t* INPUT_TYPE_VIDEO = L"video";
+static const wchar_t* INPUT_TYPE_VOICE = L"voice";
+static const wchar_t* INPUT_TYPE_SMS = L"sms";
+static const wchar_t* INPUT_URI_TEL = L"tel:";
+
+GroupContactListForm::GroupContactListForm(void)
+ : __pAppControl(null)
+ , __pListView(null)
+ , __pSearchListView(null)
+ , __pSearchBar(null)
+ , __pDeletePopup(null)
+ , __pMultipleContactValuePopup(null)
+ , __pEmptyImageLabel(null)
+ , __pEmptyCommentLabel(null)
+ , __pOptionMenu(null)
+ , __categoryId(0)
+ , __pContactValueListEvent(null)
+ , __pPresentationModel(null)
+ , __pSearchListEvent(null)
+ , __isCategoryUpdating(false)
+ , __sweptItemIndex(-1)
+ , __selectedIndex(-1)
+{
+}
+
+GroupContactListForm::~GroupContactListForm(void)
+{
+}
+
+void
+GroupContactListForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+GroupContactListForm::OnInitializing(void)
+{
+ Footer* pFooter = GetFooter();
+ pFooter->AddActionEventListener(*this);
+
+ SetFormBackEventListener(this);
+ SetFormMenuEventListener(this);
+
+ __pPresentationModel = GroupContactListPresentationModel::GetInstance();
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR), GROUPED_LIST_VIEW_STYLE_INDEXED, true, true);
+ __pListView->SetItemProvider(*this);
+ __pListView->AddFastScrollListener(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+ __pListView->AddTouchEventListener(*this);
+ AddControl(__pListView);
+
+ __pSearchBar = new (std::nothrow) SearchBar();
+ __pSearchBar->Construct(Rectangle(0, 0, GetClientAreaBounds().width, H_SEARCHBAR));
+ __pSearchBar->SetGuideText(ResourceManager::GetString(L"IDS_COM_BODY_SEARCH"));
+ __pSearchBar->AddSearchBarEventListener(*this);
+ __pSearchBar->AddFocusEventListener(*this);
+ __pSearchBar->AddTextEventListener(*this);
+ __pSearchBar->AddKeypadEventListener(*this);
+ __pSearchBar->SetContentAreaSize(Dimension(0, 0));
+
+ __pSearchListEvent = new (std::nothrow) SearchListEventListener(LIST_ANNEX_STYLE_NORMAL, __pPresentationModel);
+ AddControl(__pSearchBar);
+
+ __pSearchListView = new (std::nothrow) GroupedListView();
+ __pSearchListView->Construct(Rectangle(0, H_SEARCHBAR, GetClientAreaBounds().width, GetClientAreaBounds().height - H_SEARCHBAR), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pSearchListView->SetItemProvider(*__pSearchListEvent);
+ __pSearchListView->AddGroupedListViewItemEventListener(*this);
+ __pSearchListView->AddTouchEventListener(*this);
+ __pSearchListView->SetTextOfEmptyList(ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pSearchListView->SetShowState(false);
+ __pListView->AddTouchEventListener(*this);
+ AddControl(__pSearchListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_CONTENTS);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, GetClientAreaBounds().width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_BODY_NO_CONTACTS"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(__pEmptyCommentLabel);
+
+ __pOptionMenu = new (std::nothrow) OptionMenu();
+ __pOptionMenu->Construct();
+ __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_REMOVE"), IDA_MORE_REMOVE);
+ __pOptionMenu->AddActionEventListener(*this);
+ __pOptionMenu->SetShowState(false);
+
+ return E_SUCCESS;
+}
+
+result
+GroupContactListForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ }
+ if (__pDeletePopup != null)
+ {
+ delete __pDeletePopup;
+ }
+ if (__pSearchListEvent != null)
+ {
+ delete __pSearchListEvent;
+ }
+ delete __pAppControl;
+ delete __pOptionMenu;
+ delete __pMultipleContactValuePopup;
+
+ return r;
+}
+
+void
+GroupContactListForm::OnFormMenuRequested(Tizen::Ui::Controls::Form& source)
+{
+ if (__pListView->GetShowState() == true)
+ {
+ __pListView->SetFocus();
+ }
+ else if (__pSearchListView->GetShowState() == true)
+ {
+ __pSearchListView->SetFocus();
+ }
+
+ if(__pPresentationModel->GetContactCount() > 0)
+ {
+ __pOptionMenu->SetShowState(true);
+ __pOptionMenu->Show();
+ }
+}
+
+void
+GroupContactListForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST, SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+}
+
+void
+GroupContactListForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ }
+
+ switch (actionId)
+ {
+ case IDA_FOOTER_ADD_MEMBER:
+ {
+ ArrayList* pArgList = new (std::nothrow) ArrayList();
+ pArgList->Construct();
+
+ for (int groupIndex = 0; groupIndex < __pListView->GetGroupCount(); groupIndex++)
+ {
+ for (int itemIndex = 0; itemIndex < __pListView->GetItemCountAt(groupIndex); itemIndex++)
+ {
+ pArgList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId(groupIndex, itemIndex))));
+ }
+ }
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pArgList);
+ }
+ break;
+ case IDA_MORE_REMOVE:
+ {
+ ArrayList* pArgList = new (std::nothrow) ArrayList();
+ pArgList->Construct();
+ pArgList->Add(*(new (std::nothrow) Integer(__categoryId)));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_CONTACT_LIST_EDITOR), pArgList);
+ }
+ break;
+ case IDA_POPUP_DELETE_YES:
+ {
+ int groupIndex = (__sweptItemIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __sweptItemIndex & LIST_VIEW_MASK;
+
+ __pPresentationModel->RemoveContactFromCategory(groupIndex, itemIndex);
+ HideDeletePopup();
+ }
+ break;
+ case IDA_POPUP_DELETE_CANCEL:
+ {
+ HideDeletePopup();
+ }
+ break;
+ case IDA_POPUP_CONTACT_VALUE_CLOSE:
+ {
+ HideContactValuePopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupContactListForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pArgs != null)
+ {
+ if (previousSceneId.Equals(IDSCN_GROUP_LIST, true))
+ {
+ Integer* pCategoryId = null;
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategoryId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pCategoryId != null)
+ {
+ __categoryId = pCategoryId->ToInt();
+
+ if (__categoryId == ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID);
+ GetFooter()->SetShowState(false);
+ }
+ else
+ {
+ __pPresentationModel->InitializeGroupContactList(__categoryId);
+ GetFooter()->SetShowState(true);
+ }
+ __pListView->SetSize(__pListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight());
+ __pSearchListView->SetSize(__pListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight());
+ Invalidate(true);
+ }
+ }
+ delete pEnum;
+ }
+ else if (previousSceneId.Equals(IDSCN_CONTACT_SELECTOR, true))
+ {
+ result r = __pPresentationModel->AddContactToCategory(pArgs);
+
+ if (r == E_SUCCESS)
+ {
+ __isCategoryUpdating = true;
+ }
+ }
+
+ pArgs->RemoveAll(true);
+ delete pArgs;
+
+ }
+
+ if (previousSceneId.Equals(IDSCN_CONTACT_DETAILS, true))
+ {
+ if (__categoryId == ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID);
+ }
+ else
+ {
+ result r = __pPresentationModel->InitializeGroupContactList(__categoryId);
+ if (r == E_FAILURE)
+ {
+ SendUserEvent(REQ_ID_MOVE_TO_GROUP_LIST, null);
+ return;
+ }
+ }
+ }
+
+ if (__categoryId == ID_GROUP_CONTACT_NOT_ASSIGNED && __pSearchListEvent != null)
+ {
+ __pSearchListEvent->SetShowDeleteOption(false);
+ }
+
+ if (__pPresentationModel->IsCategoryValid())
+ {
+ String groupName = __pPresentationModel->GetCategoryName();
+
+ Header* pHeader = GetHeader();
+ pHeader->SetTitleText(groupName);
+
+ Footer* pFooter = GetFooter();
+ SetFormMenuEventListener(null);
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ pFooter->SetShowState(false);
+ __pListView->SetSize(__pListView->GetWidth(), GetClientAreaBounds().height - H_SEARCHBAR );
+ __pSearchListView->SetSize(__pSearchListView->GetWidth(), GetClientAreaBounds().height - H_SEARCHBAR);
+ Invalidate(true);
+
+ if (__pPresentationModel->GetContactCount() == 0)
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ __pPresentationModel->AddContactChangeListener(*this);
+ return;
+ }
+
+ if (__categoryId != ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ if (pFooter->GetItemCount() == 0)
+ {
+ FooterItem footerItemAdd;
+ footerItemAdd.Construct(IDA_FOOTER_ADD_MEMBER);
+ footerItemAdd.SetText(ResourceManager::GetString(L"IDS_PB_SK_ADD_MEMBER"));
+ pFooter->AddItem(footerItemAdd);
+ }
+
+ if (__pPresentationModel->GetAllContactsCount() <= __pPresentationModel->GetContactCount())
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ SetFormMenuEventListener(this);
+ }
+ else
+ {
+ SetFormMenuEventListener(null);
+ }
+ }
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ __pSearchBar->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT && __pSearchBar->GetTextLength() != 0)
+ {
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+ __pSearchListView->UpdateList();
+ __pListView->SetShowState(false);
+ __pSearchListView->SetShowState(true);
+ }
+ else
+ {
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+ }
+ }
+ else
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pSearchListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ }
+ else
+ {
+ if (previousSceneId.Equals(IDSCN_CONTACT_SELECTOR, true))
+ {
+ SendUserEvent(REQ_ID_MOVE_TO_GROUP_LIST, null);
+ return;
+ }
+ }
+ __pPresentationModel->AddContactChangeListener(*this);
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+}
+
+void
+GroupContactListForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ __pPresentationModel->RemoveContactChangeListener(*this);
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+
+ delete __pAppControl;
+ __pAppControl = null;
+}
+
+void
+GroupContactListForm::OnUserEventReceivedN (RequestId requestId, Tizen::Base::Collection::IList* pArgs)
+{
+ if (requestId == REQ_ID_MOVE_TO_GROUP_LIST)
+ {
+ SceneManager::GetInstance()->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+}
+
+int
+GroupContactListForm::GetGroupCount(void)
+{
+ return __pPresentationModel->GetKeyCount();
+}
+
+int
+GroupContactListForm::GetItemCount(int groupIndex)
+{
+ return __pPresentationModel->GetContactCount(groupIndex);
+}
+
+Tizen::Ui::Controls::ListItemBase*
+GroupContactListForm::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ Bitmap* pThumbnail = null;
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()), LIST_ANNEX_STYLE_NORMAL);
+
+ __pPresentationModel->GetContactItemInfoN(groupIndex, itemIndex, name, pThumbnail);
+
+ ContactListItem* pCustomElement = new (std::nothrow) ContactListItem(name, pThumbnail);
+ pItem->AddElement(Rectangle(0, 0, itemWidth, pContactsApp->GetListItemSingleLineHeight()), 0, *(static_cast<ICustomElement*>(pCustomElement)));
+
+ if (pContactsApp->GetOperationId().IsEmpty() == false)
+ {
+ return pItem;
+ }
+
+ bool isCallEnabled = true;
+ bool isMessageEnabled = true;
+ if (__pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex).IsEmpty())
+ {
+ isCallEnabled = false;
+ }
+
+ if ((__pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex).IsEmpty()) && (__pPresentationModel->GetDefaultEmail(groupIndex, itemIndex).IsEmpty()))
+ {
+ isMessageEnabled = false;
+ }
+
+ ListContextItem* pItemContext = new (std::nothrow) ListContextItem();
+ pItemContext->Construct();
+ pItemContext->AddElement(IDA_LIST_ELEMENT_CALL, ResourceManager::GetString(L"IDS_COM_BODY_CALL"), isCallEnabled);
+ pItemContext->AddElement(IDA_LIST_ELEMENT_MESSAGE, ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), isMessageEnabled);
+#if __SUPPORT_VIDEO_CALL
+ pItemContext->AddElement(IDA_LIST_ELEMENT_VIDEO_CALL, ResourceManager::GetString(L"IDS_COM_BODY_VIDEO_CALL"), isEnabled);
+#endif
+ if (__categoryId != ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ pItemContext->AddElement(IDA_LIST_ELEMENT_DELETE, ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+ }
+ pItemContext->SetElementBackgroundColor(IDA_LIST_ELEMENT_DELETE, LIST_CONTEXT_ITEM_ELEMENT_STATUS_NORMAL, COLOR_DELETE_ELEMENT_NORMAL);
+ pItemContext->SetElementBackgroundColor(IDA_LIST_ELEMENT_DELETE, LIST_CONTEXT_ITEM_ELEMENT_STATUS_PRESSED, COLOR_DELETE_ELEMENT_PRESSED);
+ pItemContext->SetElementTextColor(IDA_LIST_ELEMENT_DELETE, LIST_CONTEXT_ITEM_ELEMENT_STATUS_NORMAL, COLOR_DELETE_ELEMENT_TEXT);
+
+ pItem->SetContextItem(pItemContext);
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+GroupContactListForm::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(__pPresentationModel->GetKey(groupIndex), null);
+
+ return pItem;
+}
+
+bool
+GroupContactListForm::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ CustomItem* pCustomItem = static_cast<CustomItem *>(pItem);
+ pCustomItem->RemoveAllElements();
+
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+GroupContactListForm::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+GroupContactListForm::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+ int index = 0;
+
+ if (listView.Equals(*__pSearchListView) == true)
+ {
+ __pPresentationModel->GetItemMainIndex(itemIndex, groupIndex, itemIndex);
+ }
+
+ index |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ index |= itemIndex;
+
+ __sweptItemIndex = index;
+
+ switch (elementId)
+ {
+ case IDA_LIST_ELEMENT_DELETE:
+ {
+ ShowDeletePopup();
+ }
+ break;
+ case IDA_LIST_ELEMENT_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VOICE);
+ }
+ break;
+ case IDA_LIST_ELEMENT_MESSAGE:
+ {
+ if (!(__pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex).IsEmpty()))
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, phoneNumber, INPUT_TYPE_SMS);
+ }
+ else if (!(__pPresentationModel->GetDefaultEmail(groupIndex, itemIndex).IsEmpty()))
+ {
+ String emailId = __pPresentationModel->GetDefaultEmail(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_MESSAGE, OPERATION_ID_COMPOSE, emailId, null);
+ }
+ }
+ break;
+ case IDA_LIST_ELEMENT_VIDEO_CALL:
+ {
+ String phoneNumber = __pPresentationModel->GetDefaultPhoneNumber(groupIndex, itemIndex);
+ LaunchAppControl(PROVIDER_ID_PHONE, OPERATION_ID_CALL, phoneNumber, INPUT_TYPE_VIDEO);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupContactListForm::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (listView.Equals(*__pSearchListView) == true)
+ {
+ __pPresentationModel->GetItemMainIndex(itemIndex, groupIndex, itemIndex);
+ }
+
+ int index = 0;
+
+ index |= groupIndex << LIST_VIEW_GROUP_INDEX_SHIFT;
+ index |= itemIndex;
+
+ __selectedIndex = index;
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ IList* pList = null;
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+
+ if (pList == null)
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(groupIndex, itemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pPhoneNumberInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ pPhoneNumberInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pPhoneNumberInfo->Remove(0, blankIndex + 1);
+ pValueList->Add(new (std::nothrow) String(*pPhoneNumberInfo));
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_PHONE), pValueList);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+
+ if (pList == null)
+ {
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_FAILED, pReturnValue);
+ }
+ else
+ {
+ if (pList->GetCount() > 1)
+ {
+ __pContactValueListEvent = new (std::nothrow) ContactValueListItemProvider(pList);
+ ShowContactValuePopup(groupIndex, itemIndex);
+ }
+ else if (pList->GetCount() == 1)
+ {
+ String* pEmailInfo = static_cast<String *>(pList->GetAt(0));
+ int blankIndex = 0;
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ pEmailInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pEmailInfo->Remove(0, blankIndex + 1);
+ pValueList->Add(new (std::nothrow) String(*pEmailInfo));
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_EMAIL), pValueList);
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+ delete pList;
+ }
+ }
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_ITEM_ID)
+ {
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+ RecordId contactId = __pPresentationModel->GetContactId(groupIndex, itemIndex);
+ if (contactId == INVALID_RECORD_ID)
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ String contactIdString;
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ contactIdString.Append(contactId);
+ pValueList->Add(new (std::nothrow) String(contactIdString));
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_ITEM_ID), pValueList);
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_VCARD)
+ {
+ AppCtrlResult appCtrlResult = APP_CTRL_RESULT_SUCCEEDED;
+ String vCardPath = __pPresentationModel->ExportToVcard(groupIndex, itemIndex);
+
+ if (vCardPath.IsEmpty())
+ {
+ appCtrlResult = APP_CTRL_RESULT_FAILED;
+ }
+ else
+ {
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_PATH), new (std::nothrow) String(vCardPath));
+ }
+
+ ReturnValues(pContactsApp->GetRequestId(), appCtrlResult, pReturnValue);
+ }
+
+ delete pReturnValue;
+ }
+ else
+ {
+ ArrayList* pContactId = new (std::nothrow) ArrayList();
+ pContactId->Construct();
+
+ pContactId->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetContactId(groupIndex, itemIndex))));
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_DETAILS, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pContactId);
+ }
+}
+
+void
+GroupContactListForm::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+GroupContactListForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+GroupContactListForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ IList* pList = null;
+
+ HashMap* pReturnValue = new (std::nothrow) HashMap();
+ pReturnValue->Construct();
+
+ int groupIndex = (__selectedIndex >> LIST_VIEW_GROUP_INDEX_SHIFT) & LIST_VIEW_MASK;
+ int itemIndex = __selectedIndex & LIST_VIEW_MASK;
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ pList = __pPresentationModel->GetAllPhoneNumbersN(groupIndex, itemIndex);
+ String* pPhoneNumberInfo = static_cast<String *>(pList->GetAt(index));
+ int blankIndex = 0;
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ pPhoneNumberInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pPhoneNumberInfo->Remove(0, blankIndex + 1);
+ pValueList->Add(new (std::nothrow) String(*pPhoneNumberInfo));
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_PHONE), pValueList);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ pList = __pPresentationModel->GetAllEmailsN(groupIndex, itemIndex);
+ String* pEmailInfo = static_cast<String *>(pList->GetAt(index));
+ int blankIndex = 0;
+ ArrayList* pValueList = new (std::nothrow) ArrayList();
+ pValueList->Construct();
+
+ pEmailInfo->IndexOf(CHARACTER_SPACE, 0, blankIndex);
+ pEmailInfo->Remove(0, blankIndex + 1);
+ pValueList->Add(new (std::nothrow) String(*pEmailInfo));
+ pReturnValue->Add(new (std::nothrow) String(CONTACT_KEY_EMAIL), pValueList);
+ }
+
+ delete pList;
+
+ ReturnValues(pContactsApp->GetRequestId(), APP_CTRL_RESULT_SUCCEEDED, pReturnValue);
+}
+
+void
+GroupContactListForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+void
+GroupContactListForm::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, SearchBarMode mode)
+{
+ if (mode == SEARCH_BAR_MODE_NORMAL)
+ {
+ __pListView->SetShowState(true);
+ __pSearchListView->SetShowState(false);
+ __pPresentationModel->ResetSearchedContactList();
+ __pSearchListView->UpdateList();
+ __pListView->UpdateList();
+ }
+ else
+ {
+ //[TODO] to restore swept item.
+ // need to be fixed with better idea..
+ Rectangle bounds = __pListView->GetBounds();
+ __pListView->SetBounds(bounds.x, bounds.y, bounds.width, bounds.height + 1);
+ __pListView->Invalidate(true);
+ __pListView->SetBounds(bounds);
+ }
+}
+
+void
+GroupContactListForm::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ String searchText = __pSearchBar->GetText();
+ searchText.Trim();
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_PHONE_ONLY);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_HAS_EMAIL_ONLY);
+ }
+ else
+ {
+ __pPresentationModel->SetSearchText(searchText, SEARCH_TYPE_NORMAL);
+ }
+
+ if (searchText.GetLength() != 0)
+ {
+ __pSearchListView->SetShowState(true);
+ __pListView->SetShowState(false);
+ }
+ else
+ {
+ __pSearchListView->SetShowState(false);
+ __pListView->SetShowState(true);
+ }
+
+ __pSearchListView->UpdateList();
+}
+
+void
+GroupContactListForm::OnFastScrollIndexSelected (Tizen::Ui::Control& source, Tizen::Base::String& index)
+{
+ __pListView->ScrollToItem(__pPresentationModel->GetKeyIndex(index), -1);
+ __pListView->Invalidate(false);
+}
+
+void
+GroupContactListForm::OnFocusGained(const Tizen::Ui::Control& source)
+{
+ if (source.Equals(*__pSearchBar))
+ {
+ if (__pListView->GetShowState() == true )
+ {
+ int groupCount = __pPresentationModel->GetKeyCount();
+ bool isContextItemOpenend = false;
+
+ for (int i = 0; i < groupCount; i++)
+ {
+ int contactCount = __pPresentationModel->GetContactCount(i);
+ for (int j = 0; j < contactCount; j++)
+ {
+ if (__pListView->IsContextItemOpened(i, j) == true)
+ {
+ isContextItemOpenend = true;
+ break;
+ }
+ }
+ }
+
+ if (isContextItemOpenend == true)
+ {
+ __pListView->UpdateList();
+ }
+ }
+ else if (__pSearchListView->GetShowState() == true )
+ {
+ int groupCount = 0;
+ bool isContextItemOpenend = false;
+
+ if (__pSearchListEvent == null)
+ {
+ return;
+ }
+ groupCount = __pSearchListEvent->GetGroupCount();
+ for (int i = 0; i < groupCount; i++)
+ {
+ int contactCount = __pSearchListEvent->GetItemCount(i);
+ for (int j = 0; j < contactCount; j++)
+ {
+ if (__pSearchListView->IsContextItemOpened(i, j) == true)
+ {
+ isContextItemOpenend = true;
+ break;
+ }
+ }
+ }
+
+ if (isContextItemOpenend == true)
+ {
+ __pSearchListView->UpdateList();
+ }
+ }
+ }
+}
+
+void
+GroupContactListForm::OnFocusLost(const Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupContactListForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupContactListForm::OnContactsChanged(void)
+{
+ HideContactValuePopup();
+ HideDeletePopup();
+
+ if (__isCategoryUpdating)
+ {
+ __isCategoryUpdating = false;
+
+ return;
+ }
+
+ if (__categoryId == ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID);
+ }
+ else
+ {
+ __pPresentationModel->InitializeGroupContactList(__categoryId);
+ }
+
+ if (__pSearchBar->GetMode() == SEARCH_BAR_MODE_INPUT)
+ {
+ __pSearchBar->SetMode(SEARCH_BAR_MODE_NORMAL);
+ SetFocus();
+ }
+
+ if (__categoryId != ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ Footer* pFooter = GetFooter();
+
+ if (__pPresentationModel->GetAllContactsCount() <= __pPresentationModel->GetContactCount())
+ {
+ pFooter->SetItemEnabled(0, false);
+ pFooter->Invalidate(true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, true);
+ pFooter->Invalidate(true);
+ }
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ SetFormMenuEventListener(this);
+ }
+ else
+ {
+ SetFormMenuEventListener(null);
+ }
+ }
+
+ if (__pPresentationModel->GetContactCount() > 0)
+ {
+ __pSearchBar->SetShowState(true);
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+
+ __pPresentationModel->InitializeContactList();
+ __pListView->SetFastScrollIndex(__pPresentationModel->GetAllKeys(), false);
+ __pListView->UpdateList();
+ }
+ else
+ {
+ __pSearchBar->SetShowState(false);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+}
+
+void
+GroupContactListForm::OnCategoriesChanged(void)
+{
+ if (__pPresentationModel->IsCategoryValid() == false)
+ {
+ SceneManager::GetInstance()->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+}
+
+void
+GroupContactListForm::ShowDeletePopup(void)
+{
+ if (__pDeletePopup == null)
+ {
+ __pDeletePopup = new (std::nothrow) Popup();
+ __pDeletePopup->Construct(false, Dimension(W_DELETE_POPUP, H_DELETE_POPUP));
+ __pDeletePopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pDeletePopup->GetClientAreaBounds();
+
+ Label* pLabel = new (std::nothrow) Label();
+ pLabel->Construct(Rectangle(X_DELETE_LABEL, Y_DELETE_LABEL, W_DELETE_LABEL, H_DELETE_LABEL), ResourceManager::GetString(L"IDS_COM_POP_DELETE_Q"));
+ pLabel->SetTextConfig(FONT_SIZE_DELETE_CONFIRM, LABEL_TEXT_STYLE_NORMAL);
+ pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ Button* pDeleteButton = new (std::nothrow) Button();
+ pDeleteButton->Construct(Rectangle(X_DELETE_LABEL + W_DELETE_BUTTON + W_DELETE_BUTTON_GAP, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+ pDeleteButton->SetColor(BUTTON_STATUS_NORMAL, COLOR_DELETE_BUTTON_NORMAL);
+ pDeleteButton->SetColor(BUTTON_STATUS_PRESSED, COLOR_DELETE_BUTTON_PRESSED);
+ pDeleteButton->SetTextColor(COLOR_DELETE_BUTTON_TEXT);
+ pDeleteButton->SetTextSize(FONT_SIZE_DELETE_BUTTON);
+ pDeleteButton->SetActionId(IDA_POPUP_DELETE_YES);
+ pDeleteButton->AddActionEventListener(*this);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle(X_DELETE_LABEL, Y_DELETE_BUTTON, W_DELETE_BUTTON, H_DELETE_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pCancelButton->SetTextSize(FONT_SIZE_DELETE_BUTTON);
+ pCancelButton->SetActionId(IDA_POPUP_DELETE_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pDeletePopup->AddControl(pLabel);
+ __pDeletePopup->AddControl(pDeleteButton);
+ __pDeletePopup->AddControl(pCancelButton);
+ }
+
+ __pDeletePopup->SetShowState(true);
+ __pDeletePopup->Show();
+}
+
+void
+GroupContactListForm::HideDeletePopup(void)
+{
+ if (__pDeletePopup != null)
+ {
+ __pDeletePopup->SetShowState(false);
+ Invalidate(true);
+ }
+
+ delete __pContactValueListEvent;
+ __pContactValueListEvent = null;
+}
+
+void
+GroupContactListForm::ShowContactValuePopup(int groupIndex, int itemIndex)
+{
+ delete __pMultipleContactValuePopup;
+ __pMultipleContactValuePopup = new (std::nothrow) Popup();
+ __pMultipleContactValuePopup->Construct(true, Dimension(W_CONTACT_VALUE_POPUP, H_CONTACT_VALUE_POPUP));
+ __pMultipleContactValuePopup->SetTitleText(__pPresentationModel->GetName(groupIndex, itemIndex));
+ __pMultipleContactValuePopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pMultipleContactValuePopup->GetClientAreaBounds();
+
+ ListView* pListView = new (std::nothrow) ListView();
+ pListView->Construct(Rectangle(0, 0, popupClientBounds.width, H_CONTACT_VALUE_POPUP_LIST_VIEW));
+ pListView->SetItemProvider(*__pContactValueListEvent);
+ pListView->AddListViewItemEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(pListView);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle((popupClientBounds.width - W_CLOSE_BUTTON) / 2, Y_CLOSE_BUTTON, W_CLOSE_BUTTON, H_CLOSE_BUTTON), ResourceManager::GetString(L"IDS_COM_POP_CLOSE"));
+ pCancelButton->SetActionId(IDA_POPUP_CONTACT_VALUE_CLOSE);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pMultipleContactValuePopup->AddControl(pCancelButton);
+ __pMultipleContactValuePopup->SetShowState(true);
+ __pMultipleContactValuePopup->Show();
+}
+
+void
+GroupContactListForm::HideContactValuePopup(void)
+{
+ if (__pMultipleContactValuePopup != null)
+ {
+ __pMultipleContactValuePopup->SetShowState(false);
+ Invalidate(true);
+ }
+}
+
+result
+GroupContactListForm::ParseAppControlArgument(const Tizen::Base::String& argument, Tizen::Base::String& type, Tizen::Base::String& content)
+{
+ result r = E_SUCCESS;
+
+ if (argument.IsEmpty() || argument.Contains(DELIMITER) == false)
+ {
+ return E_FAILURE;
+ }
+
+ StringTokenizer stringToken(argument, DELIMITER);
+
+ r = stringToken.GetNextToken(type);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get type", GetErrorMessage(r));
+
+ r = stringToken.GetNextToken(content);
+ TryReturn(r == E_SUCCESS, r, "[%s] Unable to get content", GetErrorMessage(r));
+
+ return r;
+}
+
+void
+GroupContactListForm::ReturnValues(RequestId requestId, Tizen::App::AppCtrlResult appCtrlResult, const Tizen::Base::Collection::IMap* pReturnValue)
+{
+ AppControlProviderManager* pAppManager = AppControlProviderManager::GetInstance();
+
+ result r = pAppManager->SendAppControlResult(requestId, appCtrlResult, pReturnValue);
+ AppLogDebug("[%s] The return result from SendAppControlResult(), AppCtrlResult value : %d.", GetErrorMessage(r), appCtrlResult);
+
+ UiApp::GetInstance()->Terminate();
+}
+
+result
+GroupContactListForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, const Tizen::Base::String& argument, const Tizen::Base::String& type)
+{
+ result r = E_SUCCESS;
+
+ if (__pAppControl != null)
+ {
+ return E_FAILURE;
+ }
+
+ String uri;
+ HashMap extraData;
+ extraData.Construct();
+
+ if (appId.Equals(String(PROVIDER_ID_PHONE)))
+ {
+ uri.Append(INPUT_URI_TEL);
+ uri.Append(argument);
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_CALL_TYPE), new (std::nothrow) String(type));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_MESSAGE)))
+ {
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TO), new (std::nothrow) String(argument));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_MESSAGE_TYPE), new (std::nothrow) String(INPUT_TYPE_SMS));
+ }
+
+ __pAppControl = AppManager::FindAppControlN(appId, operationId);
+ if (__pAppControl != null)
+ {
+ r = __pAppControl->Start(&uri, null, &extraData, null);
+ if (IsFailed(r))
+ {
+ AppLogDebug("[%s] Unable to launch app control", GetErrorMessage(r));
+ }
+ else
+ {
+ if (__pListView->GetShowState() == true)
+ {
+ __pListView->SetEnabled(false);
+ }
+
+ if (__pSearchListView->GetShowState() == true)
+ {
+ __pSearchListView->SetEnabled(false);
+ }
+ }
+ }
+
+ extraData.RemoveAll(true);
+
+ return r;
+}
+
+void
+GroupContactListForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupContactListForm::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+ __pSearchListView->SetSize(__pListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight());
+}
+
+void
+GroupContactListForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+ if (__categoryId == ID_GROUP_CONTACT_NOT_ASSIGNED)
+ {
+ __pPresentationModel->InitializeGroupContactList(Tizen::Social::INVALID_RECORD_ID);
+ GetFooter()->SetShowState(false);
+ }
+ else
+ {
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ __pPresentationModel->InitializeGroupContactList(__categoryId);
+ if (pContactsApp->GetOperationId() != OPERATION_ID_PICK)
+ {
+ GetFooter()->SetShowState(true);
+ }
+ }
+ __pListView->SetSize(__pListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight());
+ __pSearchListView->SetSize(__pListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight());
+ Invalidate(true);
+}
+
+void
+GroupContactListForm::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
+{
+ __pSearchListView->SetSize(__pListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight());
+}
+
+void
+GroupContactListForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+ if (keypadAction == KEYPAD_ACTION_SEARCH)
+ {
+ __pSearchBar->HideKeypad();
+ }
+}
+
+void
+GroupContactListForm::OnForeground(void)
+{
+ delete __pAppControl;
+ __pAppControl = null;
+
+ if (__pListView->IsEnabled() == false)
+ {
+ __pListView->SetEnabled(true);
+ }
+
+ if (__pSearchListView->IsEnabled() == false)
+ {
+ __pSearchListView->SetEnabled(true);
+ }
+}
+
+void
+GroupContactListForm::OnBackground(void)
+{
+}
+
+void
+GroupContactListForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo & touchInfo)
+{
+ GroupedListView* pList = static_cast<GroupedListView*>(&const_cast<Control&>(source));
+ if (pList != null)
+ {
+ pList->SetFocus();
+ }
+}
+
+void
+GroupContactListForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupContactListForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+bool
+GroupContactListForm::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+GroupContactListForm::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ if (keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
+ {
+ if (__pMultipleContactValuePopup && __pMultipleContactValuePopup->GetShowState() == true)
+ {
+ HideContactValuePopup();
+ return true;
+ }
+ else if (__pDeletePopup && __pDeletePopup->GetShowState() == true)
+ {
+ HideDeletePopup();
+ return true;
+ }
+ }
+ return false;
+}
+
+bool
+GroupContactListForm::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+GroupContactListForm::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupContactListPresentationModel.cpp
+ * @brief This is the implementation file for the GroupContactListPresentationModel class.
+ */
+
+#include <FSocial.h>
+#include "CtContactsApp.h"
+#include "CtGroupContactListPresentationModel.h"
+#include "CtIContactEventListener.h"
+#include "CtResourceManager.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Social;
+
+static const wchar_t* KEY_SHARP = L"#";
+
+GroupContactListPresentationModel* GroupContactListPresentationModel::__pInstance = null;
+
+GroupContactListPresentationModel*
+GroupContactListPresentationModel::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+
+ return __pInstance;
+}
+
+void
+GroupContactListPresentationModel::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) GroupContactListPresentationModel();
+ result r = __pInstance->Construct();
+ TryCatch(r == E_SUCCESS, , "[%s] Construction Failed", GetErrorMessage(r));
+
+ std::atexit(DestroyInstance);
+ return;
+
+CATCH:
+ delete __pInstance;
+ __pInstance = null;
+}
+
+void
+GroupContactListPresentationModel::DestroyInstance(void)
+{
+ delete __pInstance;
+}
+
+GroupContactListPresentationModel::GroupContactListPresentationModel(void)
+ : __categoryId(INVALID_RECORD_ID)
+ , __groupContactLaunchType(GROUP_CONTACT_LAUNCH_TYPE_NONE)
+{
+}
+
+GroupContactListPresentationModel::~GroupContactListPresentationModel(void)
+{
+}
+
+result
+GroupContactListPresentationModel::Construct(void)
+{
+ result r = E_SUCCESS;
+
+ if (_pAddressbook != null)
+ {
+ AppLogDebug("ContactListPresentationModel is already constructed.");
+ return E_SUCCESS;
+ }
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ _pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (_pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ r = _pAddressbook->SetAddressbookChangeEventListener(this);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set event listener.", GetErrorMessage(r));
+
+ _pContactChangeListenerList = new (std::nothrow) ArrayList();
+ _pContactChangeListenerList->Construct();
+
+ return r;
+
+CATCH:
+ delete _pAddressbook;
+ _pAddressbook = null;
+
+ if (_pContactList != null)
+ {
+ _pContactList->RemoveAll(true);
+
+ delete _pContactList;
+ _pContactList = null;
+ }
+
+ delete _pContactChangeListenerList;
+ _pContactChangeListenerList = null;
+
+ return r;
+}
+
+result
+GroupContactListPresentationModel::InitializeGroupContactList(Tizen::Social::RecordId categoryId, GroupContactLaunchType launchType)
+{
+ __categoryId = categoryId;
+ __groupContactLaunchType = launchType;
+
+
+ return CreateContactList();
+}
+
+Tizen::Base::String
+GroupContactListPresentationModel::GetName(int groupIndex, int itemIndex)
+{
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+
+ if (pPerson == null)
+ {
+ return null;
+ }
+
+ return pPerson->GetDisplayName();
+}
+
+Tizen::Base::Collection::IList*
+GroupContactListPresentationModel::GetAllPhoneNumbersN(int groupIndex, int itemIndex)
+{
+ Contact* pContact = _pAddressbook->GetContactN(GetContactId(groupIndex, itemIndex));
+ if (pContact == null)
+ {
+ return null;
+ }
+ IList* pPhoneNumberList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_PHONE_NUMBERS);
+ if (pPhoneNumberList == null)
+ {
+ delete pContact;
+ return null;
+ }
+
+ ArrayList* pPhoneNumberInfoList = new (std::nothrow) ArrayList();
+ pPhoneNumberInfoList->Construct();
+ PhoneNumber* pPhoneNumber = null;
+
+ IEnumerator* pEnum = pPhoneNumberList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pPhoneNumber = static_cast<PhoneNumber *>(pEnum->GetCurrent());
+ if (pPhoneNumber != null)
+ {
+ String phoneNumbersInfo(L"");
+
+ switch (pPhoneNumber->GetType())
+ {
+ case PHONENUMBER_TYPE_HOME:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case PHONENUMBER_TYPE_MOBILE:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_MOBILE"));
+ break;
+ case PHONENUMBER_TYPE_HOME_FAX:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HHOME"));
+ break;
+ case PHONENUMBER_TYPE_WORK_FAX:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_FAX_HWORK"));
+ break;
+ case PHONENUMBER_TYPE_PAGER:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_PAGER"));
+ break;
+ case PHONENUMBER_TYPE_OTHER:
+ phoneNumbersInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ phoneNumbersInfo.Append(CHARACTER_SPACE);
+ phoneNumbersInfo.Append(pPhoneNumber->GetPhoneNumber());
+
+ pPhoneNumberInfoList->Add(*(new (std::nothrow) String(phoneNumbersInfo)));
+ }
+ }
+
+ delete pEnum;
+ delete pContact;
+ pPhoneNumberList->RemoveAll(true);
+ delete pPhoneNumberList;
+
+ return pPhoneNumberInfoList;
+}
+
+Tizen::Base::Collection::IList*
+GroupContactListPresentationModel::GetAllEmailsN(int groupIndex, int itemIndex)
+{
+ Contact* pContact = _pAddressbook->GetContactN(GetContactId(groupIndex, itemIndex));
+ if (pContact == null)
+ {
+ return null;
+ }
+ IList* pEmailList = pContact->GetValuesN(CONTACT_MPROPERTY_ID_EMAILS);
+ if (pEmailList == null)
+ {
+ delete pContact;
+ return null;
+ }
+
+ ArrayList* pEmailInfoList = new (std::nothrow) ArrayList();
+ pEmailInfoList->Construct();
+ Email* pEmail = null;
+
+ IEnumerator* pEnum = pEmailList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pEmail = static_cast<Email *>(pEnum->GetCurrent());
+ if (pEmail != null)
+ {
+ String EmailsInfo(L"");
+
+ switch (pEmail->GetType())
+ {
+ case EMAIL_TYPE_PERSONAL:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_HOME"));
+ break;
+ case EMAIL_TYPE_WORK:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_WORK"));
+ break;
+ case EMAIL_TYPE_OTHER:
+ EmailsInfo.Append(ResourceManager::GetString(L"IDS_PB_BODY_OTHER"));
+ break;
+ default:
+ break;
+ }
+ EmailsInfo.Append(CHARACTER_SPACE);
+ EmailsInfo.Append(pEmail->GetEmail());
+
+ pEmailInfoList->Add(*(new (std::nothrow) String(EmailsInfo)));
+ }
+ }
+
+ delete pEnum;
+ delete pContact;
+ pEmailList->RemoveAll(true);
+ delete pEmailList;
+
+ return pEmailInfoList;
+}
+
+Tizen::Social::Person*
+GroupContactListPresentationModel::GetPersonAt(int groupIndex, int itemIndex)
+{
+ int count = 0;
+ Person* pPerson = null;
+ IEnumerator* pEnum = _pContactList->GetValuesN(GetKey(groupIndex));
+
+ TryReturn(pEnum, null, "No contact")
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ if (itemIndex == count++)
+ {
+ pPerson = static_cast<Person *>(pEnum->GetCurrent());
+ break;
+ }
+ }
+
+ delete pEnum;
+
+ return pPerson;
+}
+
+result
+GroupContactListPresentationModel::CreateContactList(void)
+{
+ result r = E_SUCCESS;
+
+ if (_pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ if (_pContactList == null)
+ {
+ _pContactList = new (std::nothrow) MultiHashMap();
+ _pContactList->Construct();
+ }
+ else
+ {
+ _pContactList->RemoveAll(true);
+ }
+
+ if (_pGroupIndexList == null)
+ {
+ _pGroupIndexList = new (std::nothrow) ArrayList();
+ _pGroupIndexList->Construct();
+ }
+ else
+ {
+ _pGroupIndexList->RemoveAll(false);
+ }
+
+ IList* pContactList = AddressbookManager::GetInstance()->GetPersonsByCategoryN(__categoryId);
+ if (pContactList == null)
+ {
+ return E_FAILURE;
+ }
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ TrimListForAppControl(pContactList);
+ }
+
+ if (__groupContactLaunchType != GROUP_CONTACT_LAUNCH_TYPE_NONE)
+ {
+ TrimListForLaunch(pContactList);
+ }
+
+ IEnumerator* pEnum = pContactList->GetEnumeratorN();
+ if (pEnum == null)
+ {
+ return E_FAILURE;
+ }
+
+ bool isNotUsedSharpKey = true;
+ String* pSharpKey = new (std::nothrow) String(KEY_SHARP);
+ String* pKey = null;
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Person* pPerson = static_cast<Person *>(pEnum->GetCurrent());
+ if (pPerson == null)
+ {
+ r = E_FAILURE;
+ break;
+ }
+
+ String displayName = pPerson->GetDisplayName();
+ String firstCharacter;
+
+ displayName.SubString(0, 1, firstCharacter);
+ firstCharacter.ToUpper();
+
+ if (pKey == null || firstCharacter.CompareTo(*pKey) != 0)
+ {
+ if (*(firstCharacter.GetPointer()) >= L'A' && *(firstCharacter.GetPointer()) <= L'Z')
+ {
+ if (_pGroupIndexList->Contains(firstCharacter))
+ {
+ int index;
+
+ _pGroupIndexList->IndexOf(firstCharacter, index);
+ pKey = static_cast<String *>(_pGroupIndexList->GetAt(index));
+ if (pKey == null)
+ {
+ break;
+ }
+ }
+ else
+ {
+ pKey = new (std::nothrow) String(firstCharacter);
+ _pGroupIndexList->Add(*pKey);
+ }
+ }
+ else
+ {
+ isNotUsedSharpKey = false;
+ pKey = pSharpKey;
+
+ if (_pGroupIndexList->Contains(*pKey) == false)
+ {
+ _pGroupIndexList->Add(*pKey);
+ }
+ }
+ }
+ _pContactList->Add(*pKey, *pPerson);
+ }
+
+ _pGroupIndexList->Sort(StringComparer());
+
+ delete pEnum;
+ delete pContactList;
+
+ if (isNotUsedSharpKey)
+ {
+ delete pSharpKey;
+ }
+
+ return r;
+}
+
+result
+GroupContactListPresentationModel::TrimListForAppControl(Tizen::Base::Collection::IList*& pContactList)
+{
+ TryReturn(pContactList != null, E_INVALID_ARG, "Invalid argument");
+
+ IList* pSelectedList = null;
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, 0);
+ }
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "Unable to get the list contained phone number");
+
+ pContactList->RemoveAll(true);
+ pContactList->AddItems(*pSelectedList);
+ }
+ else if (pContactsApp->GetReturnType() == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, 0);
+ }
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "Unable to get the list contained email");
+
+ pContactList->RemoveAll(true);
+ pContactList->AddItems(*pSelectedList);
+ }
+
+ return E_SUCCESS;
+}
+
+result
+GroupContactListPresentationModel::TrimListForLaunch(Tizen::Base::Collection::IList*& pContactList)
+{
+ result r = E_SUCCESS;
+
+ TryReturn(pContactList != null, E_INVALID_ARG, "Invalid argument");
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ IList* pSelectedList = null;
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ if (__groupContactLaunchType == GROUP_CONTACT_LAUNCH_TYPE_MESSAGE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+
+ if (__categoryId == INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "[E_FAIURE] Unable to get the list contained phone number");
+ }
+ else if (__groupContactLaunchType == GROUP_CONTACT_LAUNCH_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_NONE, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+
+ if (__categoryId == INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_AND, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+
+ pSelectedList = pAddressbookManager->SearchN(mainFilter);
+ TryReturn(pSelectedList != null, E_FAILURE, "[E_FAILURE] Unable to get the list contained email");
+ }
+
+ pContactList->RemoveAll(true);
+ pContactList->AddItems(*pSelectedList);
+
+ return r;
+}
+
+Tizen::Base::String
+GroupContactListPresentationModel::GetCategoryName(void)
+{
+ String categoryName;
+
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ Category* pCategory = _pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory == null)
+ {
+ return categoryName;
+ }
+
+ categoryName = pCategory->GetName();
+
+ delete pCategory;
+ }
+ else
+ {
+ categoryName = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ }
+
+ return categoryName;
+}
+
+int
+GroupContactListPresentationModel::GetAllContactsCount(void)
+{
+ return _pAddressbook->GetContactCount();
+}
+
+bool
+GroupContactListPresentationModel::IsCategoryValid(void)
+{
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ Category* pCategory = _pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory != null)
+ {
+ delete pCategory;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+result
+GroupContactListPresentationModel::AddContactToCategory(Tizen::Base::Collection::IList* pList)
+{
+ if (pList == null)
+ {
+ return E_FAILURE;
+ }
+
+ Category* pCategory = _pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory == null)
+ {
+ return E_FAILURE;
+ }
+
+ Integer* pContactId = null;
+ IEnumerator* pEnum = pList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pContactId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pContactId != null)
+ {
+ pCategory->AddMember(pContactId->ToInt());
+ }
+ }
+ delete pEnum;
+
+ _pAddressbook->UpdateCategory(*pCategory);
+ CreateContactList();
+
+ delete pCategory;
+
+ return E_SUCCESS;
+}
+
+result
+GroupContactListPresentationModel::RemoveContactFromCategory(int groupIndex, int itemIndex)
+{
+ Category* pCategory = _pAddressbook->GetCategoryN(__categoryId);
+ if (pCategory == null)
+ {
+ return E_FAILURE;
+ }
+
+ Person* pPerson = GetPersonAt(groupIndex, itemIndex);
+ if (pPerson == null)
+ {
+ delete pCategory;
+ return E_FAILURE;
+ }
+
+ _pAddressbook->RemoveMemberFromCategory(pCategory->GetRecordId(), GetContactId(groupIndex, itemIndex));
+ _pAddressbook->UpdateCategory(*pCategory);
+
+ CreateContactList();
+
+ delete pCategory;
+
+ return E_SUCCESS;
+}
+
+void
+GroupContactListPresentationModel::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ IContactEventListener* pInterface = null;
+ if (_pContactChangeListenerList != null)
+ {
+ IEnumerator* pEnum = _pContactChangeListenerList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnContactsChanged();
+ }
+
+ delete pEnum;
+ }
+}
+
+void
+GroupContactListPresentationModel::OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList)
+{
+ IContactEventListener* pInterface = null;
+ if (_pContactChangeListenerList != null)
+ {
+ IEnumerator* pEnum = _pContactChangeListenerList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnCategoriesChanged();
+ }
+
+ delete pEnum;
+ }
+}
+
+Tizen::Base::Collection::IList*
+GroupContactListPresentationModel::GetSearchedContactListN(const Tizen::Base::String& searchText, SearchType searchType)
+{
+ if (searchText.GetLength() == 0)
+ {
+ return null;
+ }
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ int phoneNumber = 0;
+ IList* pSearchedList = null;
+
+ if (Integer::Parse(searchText, phoneNumber) == E_SUCCESS && searchType != SEARCH_TYPE_HAS_EMAIL_ONLY)
+ {
+ IList* pSearchingPhoneNumberList = null;
+ AddressbookFilter phoneNumberFilter(AB_FI_TYPE_PHONE_CONTACT);
+ phoneNumberFilter.AppendString(FI_CONJ_OP_NONE, PHONE_CONTACT_FI_PR_PHONE, FI_STR_OP_CONTAIN, searchText);
+ phoneNumberFilter.AppendString(FI_CONJ_OP_OR, PHONE_CONTACT_FI_PR_DISPLAY_NAME, FI_STR_OP_CONTAIN, searchText);
+
+ pSearchingPhoneNumberList = pAddressbookManager->SearchN(phoneNumberFilter);
+ if (pSearchingPhoneNumberList == null)
+ {
+ return null;
+ }
+
+ IEnumerator* pEnum = pSearchingPhoneNumberList->GetEnumeratorN();
+ if (pEnum == null)
+ {
+ pSearchingPhoneNumberList->RemoveAll(true);
+ delete pSearchingPhoneNumberList;
+
+ return null;
+ }
+
+ ArrayList* pSearchedPersonsList = new (std::nothrow) ArrayList();
+ pSearchedPersonsList->Construct();
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ PhoneNumberContact* pPhoneNumberContact = static_cast<PhoneNumberContact *>(pEnum->GetCurrent());
+ Person* pPerson = pAddressbookManager->GetPersonN(pPhoneNumberContact->GetPersonId());
+
+ if (pPerson != null && pSearchedPersonsList->Contains(*pPerson) == false)
+ {
+ IList* pCategoryList = pAddressbookManager->GetCategoriesByPersonN(pPerson->GetId());
+
+ if (__categoryId == INVALID_RECORD_ID)
+ {
+ if (pCategoryList == null || pCategoryList->GetCount() == 0)
+ {
+ pSearchedPersonsList->Add(*pPerson);
+ }
+ else
+ {
+ delete pPerson;
+ }
+ }
+ else
+ {
+ if (pCategoryList != null)
+ {
+ IEnumerator* pCategoryEnum = pCategoryList->GetEnumeratorN();
+ bool isAdded = false;
+
+ while (pCategoryEnum->MoveNext() == E_SUCCESS)
+ {
+ Category* pCategory = static_cast<Category *>(pCategoryEnum->GetCurrent());
+ if (pCategory != null && pCategory->GetRecordId() == __categoryId)
+ {
+ pSearchedPersonsList->Add(*pPerson);
+ isAdded = true;
+ }
+ }
+
+ if (isAdded == false)
+ {
+ delete pPerson;
+ }
+
+ delete pCategoryEnum;
+ }
+ }
+
+ if (pCategoryList != null)
+ {
+ pCategoryList->RemoveAll(true);
+ delete pCategoryList;
+ }
+ }
+ }
+
+ pSearchingPhoneNumberList->RemoveAll(true);
+ delete pSearchingPhoneNumberList;
+ delete pEnum;
+
+ pSearchedList = pSearchedPersonsList;
+
+ if (searchType != SEARCH_TYPE_HAS_PHONE_ONLY)
+ {
+ IList* pDisplayNameSearchedList = null;
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, INVALID_RECORD_ID);
+ }
+ mainFilter.AppendString(FI_CONJ_OP_AND, PERSON_FI_PR_DISPLAY_NAME, FI_STR_OP_CONTAIN, searchText);
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, false);
+
+ pDisplayNameSearchedList = pAddressbookManager->SearchN(mainFilter);
+ pSearchedList->InsertItemsFrom(*pDisplayNameSearchedList, 0);
+ }
+ }
+ else
+ {
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+ if (__categoryId != INVALID_RECORD_ID)
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, __categoryId);
+ }
+ else
+ {
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, INVALID_RECORD_ID);
+ }
+ mainFilter.AppendString(FI_CONJ_OP_AND, PERSON_FI_PR_DISPLAY_NAME, FI_STR_OP_CONTAIN, searchText);
+
+ if (searchType == SEARCH_TYPE_HAS_PHONE_ONLY)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ }
+ else if (searchType == SEARCH_TYPE_HAS_EMAIL_ONLY)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ }
+
+ pSearchedList = pAddressbookManager->SearchN(mainFilter);
+ }
+
+ return pSearchedList;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupEditorForm.cpp
+ * @brief This is the implementation file for the GroupEditorForm class.
+ */
+
+#include <FApp.h>
+#include <FMedia.h>
+#include "CtContactsApp.h"
+#include "CtGroupEditorForm.h"
+#include "CtGroupPresentationModel.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+#include "CtCommonUtil.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Io;
+using namespace Tizen::Media;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+using namespace Tizen::System;
+
+static const int IDA_HEADER_SAVE = 0;
+static const int IDA_BUTTON_GALLERY = 10;
+static const int IDA_BUTTON_TAKE_PHOTO = 11;
+static const int IDA_BUTTON_REMOVE = 12;
+static const int IDA_BUTTON_RINGTONE_CLEAR = 13;
+static const int IDA_POPUP_DISCARD_CHANGES_OK = 20;
+static const int IDA_POPUP_DISCARD_CHANGES_CANCEL = 21;
+
+static const wchar_t* IDB_ICON_ADD_NORMAL = L"C02_caller_id_icon_add.png";
+static const wchar_t* IDB_ICON_ADD_PRESSED = L"C02_caller_id_icon_add_press.png";
+static const wchar_t* IDB_ICON_CAMERA_NORMAL = L"C02_caller_id_icon_camera.png";
+static const wchar_t* IDB_ICON_CAMERA_PRESSED = L"C02_caller_id_icon_camera_press.png";
+static const wchar_t* IDB_ICON_REMOVE_NORMAL = L"00_button_expand_minus_press.png";
+static const wchar_t* IDB_ICON_REMOVE_PRESSED = L"00_button_expand_minus_press.png";
+static const wchar_t* IDB_REMOVE_BG_NORMAL = L"00_circle_button_delete.png";
+static const wchar_t* IDB_REMOVE_BG_PRESSED = L"00_circle_button_delete_press.png";
+static const wchar_t* IDB_DETAILS_RESET_NORMAL = L"00_button_refresh.png";
+static const wchar_t* IDB_DETAILS_RESET_PRESSED = L"00_button_refresh_press.png";
+
+static const int H_ITEM = 128;
+static const int H_THUMBNAIL = 360;
+static const int Y_THUMBNAIL = 49;
+static const int H_ICON_BUTTON = 74;
+static const int Y_REMOVE_BUTTON = 26;
+static const int X_REMOVE_BUTTON_MARGIN = 40;
+static const int X_REFRESH_BUTTON_MARGIN = 88;
+
+static const int X_RINGTONE_TEXT = 3;
+static const int Y_RINGTONE_TITLE = 10;
+static const int Y_RINGTONE_NAME = 68;
+static const int W_RINGTONE_TEXT = 600;
+static const int H_RINGTONE_TITLE = 58;
+static const int H_RINGTONE_NAME = 60;
+
+static const int X_GROUP_TEXT_GAP = 5;
+static const int H_GROUP_TEXT_GAP = 10;
+
+static const unsigned int COLOR_GUIDE_TEXT = Color32<255, 0, 0>::Value;
+static const unsigned int COLOR_RINGTONE_TITLE = Color32<128, 128, 128>::Value;
+static const unsigned int COLOR_THUMBNAIL = Color32<239, 237, 229>::Value;
+static const unsigned int COLOR_TABLE_BG = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_ITEM_TITLE = Color32<128, 128, 128>::Value;
+static const unsigned int COLOR_ITEM_VALUE = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_ITEM_PRESSED = Color32<248, 246, 239>::Value;
+static const unsigned int COLOR_PRESSED = Color32<87, 135, 194>::Value;
+
+static const int ITEM_COUNT = 3;
+
+static const int FONT_SIZE_RINGTONE_TITLE = 32;
+
+static const wchar_t* INPUT_DATA_SELECTION_MODE_SINGLE = L"single";
+static const wchar_t* INPUT_KEY_SELECTION_MODE = L"http://tizen.org/appcontrol/data/selection_mode";
+static const wchar_t* INPUT_KEY_IMAGEVIEWER_MODE = L"http://tizen.org/appcontrol/data/image/crop_mode";
+static const wchar_t* INPUT_KEY_ALLOW_SWITCH = L"http://tizen.org/appcontrol/data/camera/allow_switch";
+static const wchar_t* INPUT_MIME_TYPE_CAMERA = L"image/jpg";
+static const wchar_t* INPUT_MIME_TYPE_GALLERY = L"image/*";
+static const wchar_t* INPUT_MIME_TYPE_AUDIO = L"audio/*";
+static const wchar_t* INPUT_VALUE_FALSE = L"false";
+static const wchar_t* INPUT_VALUE_IMAGEVIEWER_TYPE = L"fit_to_screen";
+static const wchar_t* OUTPUT_KEY_SELECTED = L"http://tizen.org/appcontrol/data/selected";
+static const wchar_t* THUMBNAIL_LABEL = L"thumbnail";
+static const wchar_t* THUMBNAIL_EMPTY_LABEL = L"emptyThumbnail";
+static const wchar_t* ADD_BUTTON = L"add";
+static const wchar_t* CAMERA_BUTTON = L"camera";
+static const wchar_t* REMOVE_BUTTON = L"remove";
+static const wchar_t* SD_CARD_UNMOUNTED = L"Unmounted";
+
+static const wchar_t* GROUP_EDITOR_LABEL_TITLE = L"GroupLabelTitle";
+static const wchar_t* GROUP_EDITOR_LABEL_VALUE = L"GroupLabelValue";
+static const wchar_t* GROUP_EDITOR_STYLE_PANEL = L"GroupStylePanel";
+
+GroupEditorForm::GroupEditorForm(void)
+ : __pPresentationModel(null)
+ , __pTableView(null)
+ , __pFileEventManager(null)
+ , __isEditMode(false)
+ , __isSaved(false)
+ , __isGroupsChanged(false)
+ , __pDiscardChangesPopup(null)
+{
+}
+
+GroupEditorForm::~GroupEditorForm(void)
+{
+}
+
+void
+GroupEditorForm::Initialize(void)
+{
+ Construct(L"IDL_GROUP_EDITOR_FORM");
+}
+
+result
+GroupEditorForm::OnInitializing(void)
+{
+ Footer* pFooter = GetFooter();
+ pFooter->AddActionEventListener(*this);
+ SetFormBackEventListener(this);
+ DeviceManager::AddDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
+
+ __pTableView = new (std::nothrow) TableView();
+ __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), true, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
+ __pTableView->SetItemProvider(this);
+ __pTableView->AddTableViewItemEventListener(*this);
+ AddControl(__pTableView);
+
+ return E_SUCCESS;
+}
+
+result
+GroupEditorForm::OnTerminating(void)
+{
+ __pTableView->SetItemProvider(null);
+
+ delete __pPresentationModel;
+ delete __pFileEventManager;
+
+ if (__pDiscardChangesPopup != null)
+ {
+ delete __pDiscardChangesPopup;
+ }
+
+ DeviceManager::RemoveDeviceEventListener(DEVICE_TYPE_STORAGE_CARD, *this);
+
+ return E_SUCCESS;
+}
+
+void
+GroupEditorForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ SetFocus();
+
+ Footer* pFooter = GetFooter();
+ FooterItemStatus status;
+ pFooter->GetItemStatus(0, status);
+
+ if (status != FOOTER_ITEM_STATUS_DISABLED && __isGroupsChanged == true)
+ {
+ ShowDiscardChangesPopup();
+ return;
+ }
+
+ result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+}
+
+void
+GroupEditorForm::ShowDiscardChangesPopup(void)
+{
+ if (__pDiscardChangesPopup == null)
+ {
+ __pDiscardChangesPopup = new (std::nothrow) Popup();
+ __pDiscardChangesPopup->Construct(false, Dimension(W_SAVE_POPUP, H_SAVE_POPUP));
+ __pDiscardChangesPopup->SetPropagatedKeyEventListener(this);
+
+ Rectangle popupClientBounds = __pDiscardChangesPopup->GetClientAreaBounds();
+
+ Label* pLabel = new (std::nothrow) Label();
+ pLabel->Construct(Rectangle(X_SAVE_LABEL, Y_SAVE_LABEL, W_SAVE_LABEL, H_SAVE_LABEL), ResourceManager::GetString(L"IDS_PB_POP_DISCARD_CHANGES_Q"));
+ pLabel->SetTextConfig(FONT_SIZE_SAVE_CONFIRM, LABEL_TEXT_STYLE_NORMAL);
+ pLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+
+ Button* pSaveButton = new (std::nothrow) Button();
+ pSaveButton->Construct(Rectangle(X_SAVE_LABEL + W_SAVE_BUTTON + W_POPUP_ITEM_GAP, Y_SAVE_BUTTON, W_SAVE_BUTTON, H_SAVE_BUTTON), ResourceManager::GetString(L"IDS_COM_SK_OK"));
+ pSaveButton->SetTextSize(FONT_SIZE_SAVE_BUTTON);
+ pSaveButton->SetActionId(IDA_POPUP_DISCARD_CHANGES_OK);
+ pSaveButton->AddActionEventListener(*this);
+
+ Button* pCancelButton = new (std::nothrow) Button();
+ pCancelButton->Construct(Rectangle(X_SAVE_LABEL, Y_SAVE_BUTTON, W_SAVE_BUTTON, H_SAVE_BUTTON), ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pCancelButton->SetTextSize(FONT_SIZE_SAVE_BUTTON);
+ pCancelButton->SetActionId(IDA_POPUP_DISCARD_CHANGES_CANCEL);
+ pCancelButton->AddActionEventListener(*this);
+
+ __pDiscardChangesPopup->AddControl(pLabel);
+ __pDiscardChangesPopup->AddControl(pSaveButton);
+ __pDiscardChangesPopup->AddControl(pCancelButton);
+ }
+
+ __pDiscardChangesPopup->SetShowState(true);
+ __pDiscardChangesPopup->Show();
+}
+
+void
+GroupEditorForm::HideDiscardChangesPopup(void)
+{
+ __pDiscardChangesPopup->SetShowState(false);
+ Invalidate(true);
+}
+
+void
+GroupEditorForm::OnFileEventOccured(const unsigned long events, const Tizen::Base::String &path, const unsigned int eventId)
+{
+ String thumbnailPath = __pPresentationModel->GetThumbnailPath();
+ if (thumbnailPath.Equals(path, false) == true)
+ {
+ __pPresentationModel->SetThumbnailPath(String());
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ __pTableView->RefreshItem(1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ else
+ {
+ String ringtonePath = __pPresentationModel->GetRingtone();
+ if (ringtonePath.Equals(path, false) == true )
+ {
+ __pPresentationModel->SetRingtone(String());
+ __pTableView->RefreshItem(2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ }
+}
+
+void
+GroupEditorForm::OnDeviceStateChanged(Tizen::System::DeviceType deviceType, const Tizen::Base::String &state)
+{
+ if (deviceType != DEVICE_TYPE_STORAGE_CARD || __pPresentationModel->GetThumbnailPath().IsEmpty())
+ {
+ return;
+ }
+
+ if (state.Equals(SD_CARD_UNMOUNTED, false) && File::IsFileExist(__pPresentationModel->GetThumbnailPath()) == false)
+ {
+ __pPresentationModel->SetThumbnailPath(L"");
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+}
+
+
+void
+GroupEditorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ switch (actionId)
+ {
+ case IDA_HEADER_SAVE:
+ {
+ result r = E_SUCCESS;
+
+ if (CommonUtil::isMemoryAvailable() == false)
+ {
+ CommonUtil::showMemoryFullMessageBox();
+ return;
+ }
+
+ __pTableView->RefreshItem(1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__pPresentationModel->IsDefaultCategory() == false && __pPresentationModel->IsDuplicatedCategory() == true)
+ {
+ Footer* pFooter = GetFooter();
+ pFooter->SetItemEnabled(0, false);
+ break;
+ }
+
+ if (__isEditMode)
+ {
+ r = __pPresentationModel->UpdateCategory();
+ if (r == E_FAILURE)
+ {
+ __isSaved = true;
+ OnCategoriesChanged();
+ }
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to update category", GetErrorMessage(r));
+ }
+ else
+ {
+ r = __pPresentationModel->AddCategory();
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to add category", GetErrorMessage(r));
+ }
+
+ SetFocus();
+ __isSaved = true;
+ }
+ break;
+ case IDA_BUTTON_GALLERY:
+ {
+ LaunchAppControl(PROVIDER_ID_GALLERY, OPERATION_ID_PICK);
+ }
+ break;
+ case IDA_BUTTON_TAKE_PHOTO:
+ {
+ LaunchAppControl(PROVIDER_ID_CAMERA, OPERATION_ID_CREATE_CONTENT);
+ }
+ break;
+ case IDA_BUTTON_REMOVE:
+ {
+ __pPresentationModel->SetThumbnailPath(String());
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ __pTableView->RefreshItem(1, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__pFileEventManager != null)
+ {
+ delete __pFileEventManager;
+ __pFileEventManager = null;
+ }
+ }
+ break;
+ case IDA_BUTTON_RINGTONE_CLEAR:
+ {
+ __pPresentationModel->SetRingtone(String());
+ __pTableView->RefreshItem(2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ break;
+ case IDA_POPUP_DISCARD_CHANGES_OK:
+ {
+ HideDiscardChangesPopup();
+ SetFocus();
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ result r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_POPUP_DISCARD_CHANGES_CANCEL:
+ {
+ HideDiscardChangesPopup();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupEditorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+
+ RecordId categoryId = INVALID_RECORD_ID;
+
+ if (pArgs != null)
+ {
+ IEnumerator* pEnum = pArgs->GetEnumeratorN();
+ if (pEnum->MoveNext() == E_SUCCESS)
+ {
+ Integer* pCategoryId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pCategoryId != null)
+ {
+ categoryId = pCategoryId->ToInt();
+ __isEditMode = true;
+ }
+ }
+ delete pEnum;
+
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+
+ __pPresentationModel = new (std::nothrow) GroupPresentationModel();
+ __pPresentationModel->Construct(categoryId);
+ __pPresentationModel->AddContactChangeListener(*this);
+
+ Header* pHeader = GetHeader();
+ if (__isEditMode)
+ {
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_PB_OPT2_EDIT_GROUPS"));
+ }
+ else
+ {
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+ }
+
+ Footer* pFooter = GetFooter();
+ if (__isEditMode)
+ {
+ pFooter->SetItemEnabled(0, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(0, false);
+ }
+
+}
+
+void
+GroupEditorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+
+ __pPresentationModel->RemoveContactChangeListener(*this);
+}
+
+int
+GroupEditorForm::GetItemCount(void)
+{
+ return ITEM_COUNT;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+GroupEditorForm::CreateItem(int itemIndex, int itemWidth)
+{
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ Label* pSubjectLabel = null;
+ Label* pContentLabel = null;
+ int itemHeight = H_ITEM + pContactsApp->GetFontHeightOffset();
+
+ if (itemIndex == 0)
+ {
+ itemHeight = Y_THUMBNAIL * 2 + H_THUMBNAIL;
+ }
+
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, itemHeight), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+
+ if (itemIndex == 0)
+ {
+ Label* pThumbnailLabel = new (std::nothrow) Label();
+ pThumbnailLabel->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2, Y_THUMBNAIL, H_THUMBNAIL, H_THUMBNAIL), L"");
+ pThumbnailLabel->SetName(THUMBNAIL_LABEL);
+ pItem->AddControl(pThumbnailLabel);
+ Label* pEmptyThumbnailLabel = new (std::nothrow) Label();
+ pEmptyThumbnailLabel->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2, Y_THUMBNAIL, H_THUMBNAIL, H_THUMBNAIL), L"");
+ pEmptyThumbnailLabel->SetName(THUMBNAIL_EMPTY_LABEL);
+ pEmptyThumbnailLabel->SetBackgroundColor(COLOR_THUMBNAIL);
+ pItem->AddControl(pEmptyThumbnailLabel);
+
+ if (__pPresentationModel->GetThumbnailPath().IsEmpty() == false)
+ {
+ Bitmap* pThumbnail = null;
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(__pPresentationModel->GetThumbnailPath());
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_NONE);
+ }
+ pThumbnailLabel->SetBackgroundBitmap(*pThumbnail);
+ delete pThumbnail;
+
+ pEmptyThumbnailLabel->SetShowState(false);
+ }
+
+ Button* pButtonAdd = new (std::nothrow) Button();
+ pButtonAdd->Construct(Rectangle((itemWidth - H_ICON_BUTTON) / 2, (H_THUMBNAIL - H_ICON_BUTTON) / 2 + Y_THUMBNAIL, H_ICON_BUTTON, H_ICON_BUTTON), L"");
+ pButtonAdd->SetActionId(IDA_BUTTON_GALLERY);
+ pButtonAdd->AddActionEventListener(*this);
+ pButtonAdd->SetName(ADD_BUTTON);
+ Bitmap* pIconNormal = ResourceManager::GetBitmapN(IDB_ICON_ADD_NORMAL);
+ Bitmap* pIconPressed = ResourceManager::GetBitmapN(IDB_ICON_ADD_PRESSED);
+ if (pIconNormal != null)
+ {
+ pButtonAdd->SetNormalBackgroundBitmap(*pIconNormal);
+ delete pIconNormal;
+ }
+ if (pIconPressed != null)
+ {
+ pButtonAdd->SetPressedBackgroundBitmap(*pIconPressed);
+ delete pIconPressed;
+ }
+ pItem->AddControl(pButtonAdd);
+ pItem->SetIndividualSelectionEnabled(pButtonAdd, true);
+
+ Button* pButtonCamera = new (std::nothrow) Button();
+ pButtonCamera->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2 + H_THUMBNAIL, Y_THUMBNAIL + H_THUMBNAIL - H_ICON_BUTTON, H_ICON_BUTTON, H_ICON_BUTTON), L"");
+ pButtonCamera->SetActionId(IDA_BUTTON_TAKE_PHOTO);
+ pButtonCamera->AddActionEventListener(*this);
+ pButtonCamera->SetName(CAMERA_BUTTON);
+ pIconNormal = ResourceManager::GetBitmapN(IDB_ICON_CAMERA_NORMAL);
+ pIconPressed = ResourceManager::GetBitmapN(IDB_ICON_CAMERA_PRESSED);
+ if (pIconNormal != null)
+ {
+ pButtonCamera->SetNormalBackgroundBitmap(*pIconNormal);
+ delete pIconNormal;
+ }
+ if (pIconPressed != null)
+ {
+ pButtonCamera->SetPressedBackgroundBitmap(*pIconPressed);
+ delete pIconPressed;
+ }
+ pItem->AddControl(pButtonCamera);
+ pItem->SetIndividualSelectionEnabled(pButtonCamera, true);
+
+ Button* pButtonRemove = new (std::nothrow) Button();
+ pButtonRemove->Construct(Rectangle((itemWidth - H_THUMBNAIL) / 2 - X_REMOVE_BUTTON_MARGIN, Y_REMOVE_BUTTON, H_ICON_BUTTON, H_ICON_BUTTON), L"");
+ pButtonRemove->SetActionId(IDA_BUTTON_REMOVE);
+ pButtonRemove->AddActionEventListener(*this);
+ pButtonRemove->SetName(REMOVE_BUTTON);
+ pIconNormal = ResourceManager::GetBitmapN(IDB_ICON_REMOVE_NORMAL);
+ pIconPressed = ResourceManager::GetBitmapN(IDB_ICON_REMOVE_PRESSED);
+ if (pIconNormal != null)
+ {
+ pButtonRemove->SetNormalBitmap(Point(0, 0), *pIconNormal);
+ delete pIconNormal;
+ }
+ if (pIconPressed != null)
+ {
+ pButtonRemove->SetPressedBitmap(Point(0, 0), *pIconPressed);
+ delete pIconPressed;
+ }
+
+ pIconNormal = ResourceManager::GetBitmapN(IDB_REMOVE_BG_NORMAL);
+ pIconPressed = ResourceManager::GetBitmapN(IDB_REMOVE_BG_PRESSED);
+ if (pIconNormal != null)
+ {
+ pButtonRemove->SetNormalBackgroundBitmap(*pIconNormal);
+ delete pIconNormal;
+ }
+ if (pIconPressed != null)
+ {
+ pButtonRemove->SetPressedBackgroundBitmap(*pIconPressed);
+ delete pIconPressed;
+ }
+ pItem->AddControl(pButtonRemove);
+ pItem->SetIndividualSelectionEnabled(pButtonRemove, true);
+
+ if (__pPresentationModel->GetThumbnailPath().IsEmpty() == true)
+ {
+ pButtonRemove->SetShowState(false);
+ }
+ else
+ {
+ pButtonAdd->SetShowState(false);
+ }
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_TABLE_BG, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+ }
+ else if (itemIndex == 1)
+ {
+ EditField* pEditField = new (std::nothrow) EditField();
+ pEditField->Construct(Rectangle(X_GROUP_TEXT_GAP, X_GROUP_TEXT_GAP, itemWidth - H_GROUP_TEXT_GAP, H_ITEM + pContactsApp->GetFontHeightOffset() - H_GROUP_TEXT_GAP), EDIT_FIELD_STYLE_NORMAL, INPUT_STYLE_OVERLAY, EDIT_FIELD_TITLE_STYLE_TOP, !__pPresentationModel->IsDefaultCategory());
+ pEditField->AddTextEventListener(*this);
+ pEditField->AddKeypadEventListener(*this);
+ pEditField->SetText(__pPresentationModel->GetCategoryName());
+ pEditField->SetTitleText(ResourceManager::GetString(L"IDS_PB_BODY_GROUP_NAME_ABB"));
+ pEditField->SetTextSize(pContactsApp->GetFontSize());
+ pEditField->SetEnabled(!__pPresentationModel->IsDefaultCategory());
+
+ if (__isEditMode == true)
+ {
+ String categoryName = __pPresentationModel->GetCategoryName();
+ pEditField->SetText(categoryName);
+ }
+
+ pItem->SetBackgroundColor(COLOR_THUMBNAIL, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ pItem->SetBackgroundColor(COLOR_THUMBNAIL, TABLE_VIEW_ITEM_DRAWING_STATUS_PRESSED);
+
+ pItem->AddControl(pEditField);
+ pItem->SetIndividualSelectionEnabled(pEditField, true);
+ }
+ else if (itemIndex == 2)
+ {
+ Panel* pGroupStyle = new (std::nothrow) Panel();
+ pGroupStyle->Construct(Rectangle(0, 0, itemWidth , itemHeight), GROUP_STYLE_NONE);
+ pGroupStyle->SetName(GROUP_EDITOR_STYLE_PANEL);
+ pGroupStyle->SetBackgroundColor(COLOR_THUMBNAIL);
+ pGroupStyle->AddTouchEventListener(*this);
+ pItem->AddKeyEventListener(*this);
+ pItem->AddControl(pGroupStyle);
+
+ pSubjectLabel = new (std::nothrow) Label();
+ pSubjectLabel->Construct(Rectangle(X_RINGTONE_TEXT, Y_RINGTONE_TITLE, W_RINGTONE_TEXT, H_RINGTONE_TITLE),
+ ResourceManager::GetString(L"IDS_PB_BODY_RINGTONE"));
+ pSubjectLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pSubjectLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pSubjectLabel->SetTextColor(Color(COLOR_RINGTONE_TITLE));
+ pSubjectLabel->SetTextConfig(FONT_SIZE_RINGTONE_TITLE, LABEL_TEXT_STYLE_BOLD);
+ pSubjectLabel->SetName(GROUP_EDITOR_LABEL_TITLE);
+ pSubjectLabel->AddTouchEventListener(*this);
+ pGroupStyle->AddControl(pSubjectLabel);
+
+ int index = 0;
+ String ringtonePath = __pPresentationModel->GetRingtone();
+ String trimmedPath;
+
+ if (ringtonePath.IsEmpty() == true)
+ {
+ trimmedPath = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT");
+ }
+ else
+ {
+ ringtonePath.LastIndexOf(L"/", ringtonePath.GetLength() - 1, index);
+ if (index != 0)
+ {
+ ringtonePath.SubString(index + 1, trimmedPath);
+ }
+ }
+
+ pContentLabel = new (std::nothrow) Label();
+ pContentLabel->Construct(Rectangle(X_RINGTONE_TEXT, Y_RINGTONE_NAME, W_RINGTONE_TEXT, H_RINGTONE_NAME + pContactsApp->GetFontHeightOffset()), trimmedPath);
+ pContentLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pContentLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ pContentLabel->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+ pContentLabel->SetName(GROUP_EDITOR_LABEL_VALUE);
+ pContentLabel->AddTouchEventListener(*this);
+ pGroupStyle->AddControl(pContentLabel);
+
+ Button* pClearButton = new (std::nothrow) Button();
+ pClearButton->Construct(Rectangle(itemWidth - X_REFRESH_BUTTON_MARGIN, (pItem->GetHeight() - H_ICON_BUTTON) / 2, H_ICON_BUTTON, H_ICON_BUTTON));
+ pClearButton->SetActionId(IDA_BUTTON_RINGTONE_CLEAR);
+ pClearButton->AddActionEventListener(*this);
+
+ Bitmap* pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_NORMAL);
+ if (pReset != null)
+ {
+ pClearButton->SetNormalBitmap(Point(0, 0), *pReset);
+ delete pReset;
+ }
+ pReset = ResourceManager::GetBitmapN(IDB_DETAILS_RESET_PRESSED);
+ if (pReset != null)
+ {
+ pClearButton->SetPressedBitmap(Point(0, 0), *pReset);
+ delete pReset;
+ }
+
+ pItem->AddControl(pClearButton);
+ pItem->SetIndividualSelectionEnabled(pClearButton, true);
+
+ pItem->SetBackgroundColor(COLOR_THUMBNAIL, TABLE_VIEW_ITEM_DRAWING_STATUS_NORMAL);
+ }
+
+ return pItem;
+}
+
+bool
+GroupEditorForm::DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ delete pItem;
+ return true;
+}
+
+void
+GroupEditorForm::UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ if (pItem == null)
+ {
+ return;
+ }
+
+ if (itemIndex == 0)
+ {
+ Button* pRemoveButton = static_cast<Button*>(pItem->GetControl(REMOVE_BUTTON, false));
+ Button* pAddButton = static_cast<Button*>(pItem->GetControl(ADD_BUTTON, false));
+ Label* pThumbnailLabel = static_cast<Label*>(pItem->GetControl(THUMBNAIL_LABEL, false));
+ Label* pThumbnailEmptyLabel = static_cast<Label*>(pItem->GetControl(THUMBNAIL_EMPTY_LABEL, false));
+ if (pRemoveButton == null || pAddButton == null ||
+ pThumbnailLabel == null || pThumbnailEmptyLabel == null)
+ {
+ return;
+ }
+
+ if (__pPresentationModel->GetThumbnailPath().IsEmpty() == true)
+ {
+ pRemoveButton->SetShowState(false);
+ pThumbnailLabel->SetShowState(false);
+ pThumbnailEmptyLabel->SetShowState(true);
+ pAddButton->SetShowState(true);
+ }
+ else
+ {
+ pAddButton->SetShowState(false);
+ pThumbnailEmptyLabel->SetShowState(false);
+ pThumbnailLabel->SetShowState(true);
+ pRemoveButton->SetShowState(true);
+
+ Bitmap* pThumbnail = null;
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(__pPresentationModel->GetThumbnailPath());
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_ARGB8888, BUFFER_SCALING_NONE);
+ }
+ pThumbnailLabel->SetBackgroundBitmap(*pThumbnail);
+ delete pThumbnail;
+
+ pThumbnailLabel->Invalidate(false);
+ }
+ }
+ else if (itemIndex == 1)
+ {
+ EditField* pEditField = static_cast<EditField*>(pItem->GetControl(0));
+ if (pEditField == null)
+ {
+ return;
+ }
+
+ String groupName = pEditField->GetText();
+ groupName.Trim();
+
+ if (groupName.GetLength() > 0)
+ {
+ Footer* pFooter = GetFooter();
+ pFooter->SetItemEnabled(0, true);
+ pFooter->Invalidate(true);
+ }
+
+ if (__pPresentationModel->IsDefaultCategory() == false && __pPresentationModel->IsDuplicatedCategory() == true)
+ {
+ pEditField->SetEnabled(true);
+ pEditField->Clear();
+ pEditField->SetGuideTextColor(Color(COLOR_GUIDE_TEXT));
+ pEditField->SetGuideText(ResourceManager::GetString(L"IDS_PB_POP_GROUP_ALREADY_IN_USE"));
+ pEditField->SetFocus();
+ pEditField->Invalidate(false);
+ }
+ }
+ else if (itemIndex == 2)
+ {
+ int index = 0;
+ String ringtonePath = __pPresentationModel->GetRingtone();
+ String trimmedPath;
+
+ if (ringtonePath.IsEmpty() == true)
+ {
+ trimmedPath = ResourceManager::GetString(L"IDS_PB_BODY_DEFAULT");
+ }
+ else
+ {
+ ringtonePath.LastIndexOf(L"/", ringtonePath.GetLength() - 1, index);
+ if (index != 0)
+ {
+ ringtonePath.SubString(index + 1, trimmedPath);
+ }
+ }
+
+ Panel* pPanel = static_cast<Panel*>(pItem->GetControl(0));
+
+ if (pPanel == null)
+ {
+ return;
+ }
+
+ Label* pRingtoneName = static_cast<Label*>(pPanel->GetControl(1));
+
+ if (pRingtoneName == null)
+ {
+ return;
+ }
+
+ if (pRingtoneName != null)
+ {
+ pRingtoneName->SetText(trimmedPath);
+ pRingtoneName->Invalidate(true);
+ }
+ }
+}
+
+int
+GroupEditorForm::GetDefaultItemHeight(void)
+{
+ return H_ITEM;
+}
+
+void
+GroupEditorForm::OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+ if (status == TABLE_VIEW_ITEM_STATUS_SELECTED && itemIndex == 2)
+ {
+ LaunchAppControl(PROVIDER_ID_FILEMANAGER, OPERATION_ID_PICK);
+ }
+}
+
+void
+GroupEditorForm::OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
+{
+}
+
+void
+GroupEditorForm::OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo)
+{
+}
+
+void
+GroupEditorForm::OnTextValueChanged(const Tizen::Ui::Control& source)
+{
+ EditField* pEditField = const_cast<EditField *>(static_cast<const EditField *>(&source));
+ if (pEditField == null)
+ {
+ return;
+ }
+
+ String existingCategoryName = __pPresentationModel->GetCategoryName();
+ String name = pEditField->GetText();
+
+ if (name.IsEmpty())
+ {
+ pEditField->SetGuideText(String(CHARACTER_SPACE));
+ pEditField->Invalidate(false);
+
+ Footer* pFooter = GetFooter();
+ pFooter->SetItemEnabled(0, false);
+ pFooter->Invalidate(true);
+ return;
+ }
+ name.Trim();
+ __pPresentationModel->SetCategoryName(name);
+
+ bool isSaveEnabled = false;
+ wchar_t ch;
+ __isGroupsChanged = false;
+
+ for (int index = 0; index < name.GetLength(); index++)
+ {
+ name.GetCharAt(index, ch);
+
+ if (ch != L' ')
+ {
+ isSaveEnabled = true;
+ __isGroupsChanged = true;
+ break;
+ }
+ }
+
+ Footer* pFooter = GetFooter();
+
+ pFooter->SetItemEnabled(0, isSaveEnabled);
+ pFooter->Invalidate(true);
+}
+
+void
+GroupEditorForm::OnTextValueChangeCanceled(const Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupEditorForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_EDITOR_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(GROUP_EDITOR_LABEL_TITLE, true) || source.GetName().Equals(GROUP_EDITOR_LABEL_VALUE, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent());
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_PRESSED);
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(GROUP_EDITOR_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_PRESSED));
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(GROUP_EDITOR_LABEL_TITLE, true));
+ pLabelTitle->SetTextColor(COLOR_ITEM_PRESSED);
+
+ pPanel->Invalidate(true);
+ }
+}
+
+void
+GroupEditorForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_EDITOR_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(GROUP_EDITOR_LABEL_TITLE, true) || source.GetName().Equals(GROUP_EDITOR_LABEL_VALUE, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent());
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_THUMBNAIL);
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(GROUP_EDITOR_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(GROUP_EDITOR_LABEL_TITLE, true));
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+
+ pPanel->Invalidate(true);
+ }
+
+}
+
+void
+GroupEditorForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ Panel* pPanel = null;
+
+ if (source.GetName().Equals(GROUP_EDITOR_STYLE_PANEL, true))
+ {
+ pPanel = static_cast<Panel*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(GROUP_EDITOR_LABEL_TITLE, true) || source.GetName().Equals(GROUP_EDITOR_LABEL_VALUE, true))
+ {
+ pPanel = static_cast<Panel*>(source.GetParent());
+ }
+
+ if (pPanel != null)
+ {
+ pPanel->SetBackgroundColor(COLOR_THUMBNAIL);
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(GROUP_EDITOR_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(GROUP_EDITOR_LABEL_TITLE, true));
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+
+ pPanel->Invalidate(true);
+ }
+}
+
+void
+GroupEditorForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupEditorForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupEditorForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+GroupEditorForm::OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+ if (keyCode == KEY_ENTER )
+ {
+ TableViewItem* pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ String valueString;
+ Panel* pPanel = static_cast<Panel*>(pItem->GetControl(0));
+
+ if (pPanel == null)
+ {
+ return;
+ }
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(GROUP_EDITOR_LABEL_VALUE, true));
+
+ if (pLabelValue == null)
+ {
+ return;
+ }
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(GROUP_EDITOR_LABEL_TITLE, true));
+
+ if (pLabelTitle == null)
+ {
+ return;
+ }
+
+ pPanel->SetBackgroundColor(COLOR_PRESSED);
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_PRESSED));
+ pLabelTitle->SetTextColor(COLOR_ITEM_PRESSED);
+ pPanel->Invalidate(true);
+ }
+}
+
+void
+GroupEditorForm::OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+ if (keyCode == KEY_ENTER )
+ {
+
+ TableViewItem* pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ String valueString;
+ Panel* pPanel = static_cast<Panel*>(pItem->GetControl(0));
+
+ if (pPanel == null)
+ {
+ return;
+ }
+
+ Label* pLabelValue = static_cast<Label*>(pPanel->GetControl(GROUP_EDITOR_LABEL_VALUE, true));
+
+ if (pLabelValue == null)
+ {
+ return;
+ }
+
+ Label* pLabelTitle = static_cast<Label*>(pPanel->GetControl(GROUP_EDITOR_LABEL_TITLE, true));
+
+ if (pLabelTitle == null)
+ {
+ return;
+ }
+
+ pPanel->SetBackgroundColor(COLOR_THUMBNAIL);
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_VALUE));
+ pLabelTitle->SetTextColor(COLOR_ITEM_TITLE);
+ pPanel->Invalidate(true);
+ }
+}
+
+void
+GroupEditorForm::OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+
+}
+
+bool
+GroupEditorForm::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+GroupEditorForm::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ if (keyEventInfo.GetKeyCode() == KEY_BACK || keyEventInfo.GetKeyCode() == KEY_ESC)
+ {
+ if (__pDiscardChangesPopup && __pDiscardChangesPopup->GetShowState() == true)
+ {
+ HideDiscardChangesPopup();
+ return true;
+ }
+ }
+ return false;
+}
+
+bool
+GroupEditorForm::OnPreviewKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+bool
+GroupEditorForm::OnPreviewKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
+{
+ return false;
+}
+
+void
+GroupEditorForm::OnKeypadWillOpen(Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupEditorForm::OnKeypadOpened(Tizen::Ui::Control& source)
+{
+ Rectangle clientBounds = GetClientAreaBounds();
+
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+}
+
+void
+GroupEditorForm::OnKeypadClosed(Tizen::Ui::Control& source)
+{
+}
+
+void
+GroupEditorForm::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction)
+{
+}
+
+void
+GroupEditorForm::OnKeypadBoundsChanged(Tizen::Ui::Control& source)
+{
+ Rectangle clientBounds = GetClientAreaBounds();
+
+ __pTableView->SetSize(clientBounds.width, clientBounds.height);
+}
+
+void
+GroupEditorForm::OnAppControlCompleteResponseReceived(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId, Tizen::App::AppCtrlResult appControlResult, const Tizen::Base::Collection::IMap* pExtraData)
+{
+ AppLogDebug("ENTER");
+
+ SetEnabled(true);
+ Invalidate(true);
+
+ TryReturnVoid(appControlResult == APP_CTRL_RESULT_SUCCEEDED, "[E_FAILURE] The result of an appcontrol is not succeeded.");
+ TryReturnVoid(pExtraData != null, "[E_FAILURE] The extra data is null.");
+
+ const String *pResultString = null;
+ const ArrayList* pResultList = dynamic_cast<const ArrayList*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
+ if (pResultList != null)
+ {
+ pResultString = static_cast<const String*>(pResultList->GetAt(0));
+ }
+ else
+ {
+ pResultString = static_cast<const String*>(pExtraData->GetValue(String(OUTPUT_KEY_SELECTED)));
+ }
+ TryReturnVoid(pResultString != null, "[E_FAILURE] Unable to get file path.");
+
+ if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
+ {
+ __pPresentationModel->SetThumbnailPath(*pResultString);
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__pFileEventManager == null)
+ {
+ __pFileEventManager = new (std::nothrow) FileEventManager();
+ __pFileEventManager->Construct(*this);
+ }
+ __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
+ __isGroupsChanged = true;
+ }
+ else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ int width = 0;
+ int height = 0;
+ ImageFormat imageFormat;
+ result r = ImageBuffer::GetImageInfo(*pResultString, imageFormat, width, height);
+
+ if (appControlResult == APP_CTRL_RESULT_FAILED || r != E_SUCCESS)
+ {
+ int modalResult = 0;
+ MessageBox unsupportedMessageBox;
+ unsupportedMessageBox.Construct(L"", ResourceManager::GetString(L"IDS_MP_POP_INVALID_FILE"), MSGBOX_STYLE_NONE, 3000);
+ unsupportedMessageBox.ShowAndWait(modalResult);
+
+ return;
+ }
+
+ __pPresentationModel->SetThumbnailPath(*pResultString);
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__pFileEventManager == null)
+ {
+ __pFileEventManager = new (std::nothrow) FileEventManager();
+ __pFileEventManager->Construct(*this);
+ }
+ __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
+ __isGroupsChanged = true;
+ }
+ else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ __pPresentationModel->SetRingtone(*pResultString);
+ __pTableView->RefreshItem(2, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__pFileEventManager == null)
+ {
+ __pFileEventManager = new (std::nothrow) FileEventManager();
+ __pFileEventManager->Construct(*this);
+ }
+ __pFileEventManager->AddPath(*pResultString, FILE_EVENT_TYPE_DELETE | FILE_EVENT_TYPE_DELETE_SELF | FILE_EVENT_TYPE_MODIFY | FILE_EVENT_TYPE_MOVE_SELF);
+ __isGroupsChanged = true;
+ }
+
+ AppLogDebug("EXIT");
+}
+
+result
+GroupEditorForm::LaunchAppControl(const Tizen::App::AppId& appId, const Tizen::Base::String& operationId)
+{
+ result r = E_SUCCESS;
+
+ SetFocus();
+
+ String uri;
+ String mimeType;
+ HashMap extraData;
+ extraData.Construct();
+
+ if (appId.Equals(String(PROVIDER_ID_CAMERA)) && operationId.Equals(String(OPERATION_ID_CREATE_CONTENT)))
+ {
+ mimeType.Append(INPUT_MIME_TYPE_CAMERA);
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_ALLOW_SWITCH), new (std::nothrow) String(INPUT_VALUE_FALSE));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_GALLERY)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ mimeType.Append(INPUT_MIME_TYPE_GALLERY);
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_IMAGEVIEWER_MODE), new (std::nothrow) String(INPUT_VALUE_IMAGEVIEWER_TYPE));
+ }
+ else if (appId.Equals(String(PROVIDER_ID_FILEMANAGER)) && operationId.Equals(String(OPERATION_ID_PICK)))
+ {
+ mimeType.Append(INPUT_MIME_TYPE_AUDIO);
+ extraData.Add(new (std::nothrow) String(INPUT_KEY_SELECTION_MODE), new (std::nothrow) String(INPUT_DATA_SELECTION_MODE_SINGLE));
+ }
+
+ AppControl* pAppControl = AppManager::FindAppControlN(appId, operationId);
+
+ if (pAppControl != null)
+ {
+ r = pAppControl->Start(&uri, &mimeType, &extraData, this);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to launch app control", GetErrorMessage(r));
+
+ SetEnabled(false);
+ Invalidate(true);
+ }
+
+CATCH:
+ extraData.RemoveAll(true);
+ delete pAppControl;
+
+ return r;
+}
+
+void
+GroupEditorForm::OnContactsChanged(void)
+{
+}
+
+void
+GroupEditorForm::OnCategoriesChanged(void)
+{
+ result r = E_SUCCESS;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ SceneId previousSceneId;
+ IListT<SceneId>* pHistoryList = pSceneManager->GetSceneHistoryN();
+ if (pHistoryList != null)
+ {
+ int count = pHistoryList->GetCount();
+ r = pHistoryList->GetAt(count - 1, previousSceneId);
+ delete pHistoryList;
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to get previous scene id", GetErrorMessage(r));
+ }
+
+ if (previousSceneId.Equals(IDSCN_CONTACT_DETAILS, true) || previousSceneId.Equals(IDSCN_CONTACT_EDITOR, true))
+ {
+ if (__pPresentationModel->GetCategoryCount() > 0)
+ {
+ ArrayList* pArg = new (std::nothrow) ArrayList();
+ pArg->Construct();
+ pArg->Add(new (std::nothrow) Integer(__pPresentationModel->GetCategoryId()));
+
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), pArg);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+
+ return;
+ }
+ }
+
+ if (__isSaved)
+ {
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+}
+
+void
+GroupEditorForm::OnForeground(void)
+{
+ if ( File::IsFileExist(__pPresentationModel->GetThumbnailPath()) == false)
+ {
+ __pPresentationModel->SetThumbnailPath(L"");
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ }
+ if (IsEnabled() == false)
+ {
+ result r = SetEnabled(true);
+ AppLogDebug("Form Enabled = %s", GetErrorMessage(r));
+ Invalidate(true);
+ }
+}
+
+void
+GroupEditorForm::OnBackground(void)
+{
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupListEditorPanel.cpp
+ * @brief This is the implementation file for the GroupListEditorPanel class.
+ */
+
+#include <FSocial.h>
+#include "CtContactListItem.h"
+#include "CtGroupListEditorPanel.h"
+#include "CtGroupListPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_FOOTER_REMOVE = 1;
+static const int IDA_FOOTER_CANCEL = 2;
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_BUTTON_EDIT_GROUP = 20;
+static const int IDA_CHECK_SELECT_ALL_CHECKED = 30;
+static const int IDA_CHECK_SELECT_ALL_UNCHECKED = 31;
+
+static const wchar_t* IDB_BUTTON_CIRCLE_NORMAL = L"00_circle_button.png";
+static const wchar_t* IDB_BUTTON_CIRCLE_PRESSED = L"00_circle_button_press.png";
+static const wchar_t* IDB_BUTTON_RENAME_NORMAL = L"00_button_rename.png";
+static const wchar_t* IDB_BUTTON_RENAME_PRESSED = L"00_button_rename_press.png";
+
+static const unsigned int COLOR_CHECK_LABEL_BG = Color32<220, 218, 211>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_BG = Color32<68, 68, 68>::Value;
+static const unsigned int COLOR_BOTTOM_LABEL_FONT = Color32<255, 255, 255>::Value;
+
+static const int FONT_SIZE_BOTTOM_LABEL = 32;
+
+static const int H_SELECT_ALL = 112;
+static const int H_ITEM = 112;
+static const int H_GROUP_ITEM = 84;
+static const int W_INITIAL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int W_THUMBNAIL = 112;
+static const int W_BUTTON_EDIT_GROUP = 72;
+static const int H_BUTTON_EDIT_GROUP = 72;
+static const int Y_BUTTON_GAP = 20;
+static const int X_THUMBNAIL_GAP = 16;
+static const int X_LIST_ITEM_TEXT_MARGIN = 64;
+static const int H_BOTTOM_LABEL = 48;
+static const int W_ELEMENT_GAP = 16;
+
+GroupListEditorPanel::GroupListEditorPanel(void)
+: __pSelectAll(null)
+, __pTableView(null)
+, __pCheckLabel(null)
+, __pBottomLabel(null)
+, __pPresentationModel(null)
+, __pSavedCategoryList(null)
+{
+}
+
+GroupListEditorPanel::~GroupListEditorPanel(void)
+{
+}
+
+void
+GroupListEditorPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITIAL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+GroupListEditorPanel::OnInitializing(void)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ FloatRectangle clientBounds = pForm->GetClientAreaBoundsF();
+ SetBounds(FloatRectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = GroupListPresentationModel::GetInstance();
+
+ __pCheckLabel = new (std::nothrow) Label();
+ __pCheckLabel->Construct(Rectangle(0, Y_BUTTON_GAP, clientBounds.width, H_BUTTON_EDIT_GROUP), L"");
+ __pCheckLabel->SetBackgroundColor(COLOR_CHECK_LABEL_BG);
+ AddControl(__pCheckLabel);
+
+ __pSelectAll = new (std::nothrow) CheckButton();
+ __pSelectAll->Construct(Rectangle(0, 0, clientBounds.width, H_SELECT_ALL), CHECK_BUTTON_STYLE_MARK, BACKGROUND_STYLE_NONE);
+ __pSelectAll->SetText(ResourceManager::GetString(L"IDS_COM_BODY_SELECT_ALL"));
+ __pSelectAll->SetActionId(IDA_CHECK_SELECT_ALL_CHECKED, IDA_CHECK_SELECT_ALL_UNCHECKED);
+ __pSelectAll->AddActionEventListener(*this);
+ AddControl(__pSelectAll);
+
+ __pTableView = new (std::nothrow) GroupedTableView();
+ __pTableView->Construct(Rectangle(0, H_SELECT_ALL, clientBounds.width, clientBounds.height - H_SELECT_ALL - H_BOTTOM_LABEL), true, TABLE_VIEW_SCROLL_BAR_STYLE_FADE_OUT);
+ __pTableView->SetItemProvider(this);
+ __pTableView->AddGroupedTableViewItemEventListener(*this);
+ AddControl(__pTableView);
+
+ __pBottomLabel = new (std::nothrow) Label();
+ __pBottomLabel->Construct(FloatRectangle(0, clientBounds.height - H_BOTTOM_LABEL, clientBounds.width, H_BOTTOM_LABEL),
+ ResourceManager::GetString(L"IDS_COM_POP_SELECTED") + INITIAL_SELECTED_COUNT);
+ __pBottomLabel->SetBackgroundColor(Color(COLOR_BOTTOM_LABEL_BG));
+ __pBottomLabel->SetTextColor(Color(COLOR_BOTTOM_LABEL_FONT));
+ __pBottomLabel->SetTextConfig(FONT_SIZE_BOTTOM_LABEL, LABEL_TEXT_STYLE_BOLD);
+ __pBottomLabel->SetTextVerticalAlignment(ALIGNMENT_MIDDLE);
+ __pBottomLabel->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ AddControl(__pBottomLabel);
+
+ if (__pSavedCategoryList == null)
+ {
+ __pSavedCategoryList = new (std::nothrow) ArrayList();
+ __pSavedCategoryList->Construct();
+ }
+
+ return E_SUCCESS;
+}
+
+result
+GroupListEditorPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveGroupChangeListener(*this);
+ }
+
+ if (__pSavedCategoryList != null)
+ {
+ __pSavedCategoryList->RemoveAll(true);
+ delete __pSavedCategoryList;
+ __pSavedCategoryList = null;
+ }
+
+ return r;
+}
+
+void
+GroupListEditorPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ }
+ break;
+ case IDA_FOOTER_REMOVE:
+ {
+ int categoryCount = __pTableView->GetItemCountAt(0);
+
+ for (int index = categoryCount - 1; index >= 0; index--)
+ {
+ if (__pTableView->IsItemChecked(0, index) == true)
+ {
+ __pPresentationModel->RemoveCategory(index);
+ }
+ }
+ __pPresentationModel->UpdateCategoryList();
+
+ pSceneManager->GoBackward(BackwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ pSceneManager->GoBackward(BackwardSceneTransition());
+ }
+ break;
+ case IDA_BUTTON_EDIT_GROUP:
+ {
+ int index = -1;
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+
+ Integer::Parse(source.GetName(), index);
+ pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetCategoryId(index))));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_CHECKED:
+ {
+ for (int i = 0; i < __pTableView->GetItemCountAt(0); i++)
+ {
+ __pTableView->SetItemChecked(0, i, true);
+ }
+ __pTableView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ case IDA_CHECK_SELECT_ALL_UNCHECKED:
+ {
+ for (int i = 0; i < __pTableView->GetItemCountAt(0); i++)
+ {
+ __pTableView->SetItemChecked(0, i, false);
+ }
+ __pTableView->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupListEditorPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveAllItems();
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ pForm->SetFormMenuEventListener(null);
+ pFooter->AddActionEventListener(*this);
+
+ FooterItem footerCancel;
+ footerCancel.Construct(IDA_FOOTER_CANCEL);
+ footerCancel.SetText(ResourceManager::GetString(L"IDS_PB_SK_CANCEL"));
+ pFooter->AddItem(footerCancel);
+
+ FooterItem footerRemove;
+ footerRemove.Construct(IDA_FOOTER_REMOVE);
+ footerRemove.SetText(ResourceManager::GetString(L"IDS_COM_BODY_REMOVE"));
+ pFooter->AddItem(footerRemove);
+
+ __pTableView->UpdateTableView();
+
+ if (previousSceneId.Equals(IDSCN_GROUP_EDITOR, true) == false)
+ {
+ __pSelectAll->SetSelected(false);
+ for (int i = 0; i < __pTableView->GetItemCountAt(0); i++)
+ {
+ __pTableView->SetItemChecked(0, i, false);
+ }
+ }
+ else if (previousSceneId.Equals(IDSCN_GROUP_EDITOR, true) == true)
+ {
+ ResetSelectedItems();
+ }
+
+ __pPresentationModel->AddGroupChangeListener(*this);
+ UpdateBottomLabel();
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+void
+GroupListEditorPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+
+ __pPresentationModel->RemoveGroupChangeListener(*this);
+
+ if (__pSavedCategoryList != null)
+ {
+ __pSavedCategoryList->RemoveAll(true);
+ SaveCategoryList();
+ }
+}
+
+Tizen::Ui::Controls::TableViewGroupItem*
+GroupListEditorPanel::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ TableViewSimpleGroupItem* pItem = new (std::nothrow) TableViewSimpleGroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetItemContents(ResourceManager::GetString(L"IDS_PB_BODY_PHONE"));
+ pItem->SetEnabled(false);
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+GroupListEditorPanel::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String groupNameString;
+ String contactCountString;
+ Bitmap* pThumbnail = null;
+ Bitmap* pBgBitmap = null;
+ Bitmap* pBitmap = null;
+ bool isNotAssinged = false;
+ int adjustedNameWidth;
+ Dimension countSize;
+ Dimension groupNameSize;
+ Font font;
+ IList* pList = null;
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TableViewItem* pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()), TABLE_VIEW_ANNEX_STYLE_MARK);
+
+ result r = __pPresentationModel->UpdatePersonList(itemIndex);
+ TryReturn(r == E_SUCCESS, null, "[%s] Unable to update person list", GetErrorMessage(r));
+
+ if (__pPresentationModel->GetCategoryCount() == itemIndex)
+ {
+ isNotAssinged = true;
+ groupNameString = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ contactCountString = L"(" + Integer::ToString(__pPresentationModel->GetContactCountInNotAssignedCategory()) + L")";
+ }
+ else
+ {
+ groupNameString = __pPresentationModel->GetCategoryName(itemIndex);
+ contactCountString = L"(" + Integer::ToString(__pPresentationModel->GetContactCountInCategoryN(itemIndex, pList)) + L")";
+ }
+
+ font.Construct(FONT_STYLE_PLAIN, pContactsApp->GetFontSize());
+ font.GetTextExtent(contactCountString, contactCountString.GetLength(), countSize);
+ font.GetTextExtent(groupNameString, groupNameString.GetLength(), groupNameSize);
+
+ adjustedNameWidth = itemWidth - (TableViewItem::GetAnnexWidth(TABLE_VIEW_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN + W_BUTTON_EDIT_GROUP + W_THUMBNAIL + (X_THUMBNAIL_GAP * 2) + (countSize.width + W_ELEMENT_GAP * 2));
+ if (groupNameSize.width < adjustedNameWidth)
+ {
+ adjustedNameWidth = groupNameSize.width + W_ELEMENT_GAP + 1;
+ }
+
+ Label* pLabelGroupName = new (std::nothrow) Label();
+ pLabelGroupName->Construct(Rectangle(0, Y_BUTTON_GAP, adjustedNameWidth, H_BUTTON_EDIT_GROUP + pContactsApp->GetFontHeightOffset()), groupNameString);
+ pLabelGroupName->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pLabelGroupName->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+ pLabelGroupName->SetMargin(0, 0);
+ pItem->AddControl(pLabelGroupName);
+
+ Label* pLabelCount = new (std::nothrow) Label();
+ pLabelCount->Construct(Rectangle(adjustedNameWidth, Y_BUTTON_GAP, countSize.width + W_ELEMENT_GAP + 1, H_BUTTON_EDIT_GROUP + pContactsApp->GetFontHeightOffset()), contactCountString);
+ pLabelCount->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pLabelCount->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+ pLabelCount->SetMargin(0, 0);
+ pItem->AddControl(pLabelCount);
+
+ int editButtonX = itemWidth - (TableViewItem::GetAnnexWidth(TABLE_VIEW_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN + X_THUMBNAIL_GAP + W_BUTTON_EDIT_GROUP);
+ Button* pButtonEdit = new (std::nothrow) Button();
+ pButtonEdit->Construct(Rectangle(editButtonX, (pContactsApp->GetListItemSingleLineHeight() - H_BUTTON_EDIT_GROUP)/2, W_BUTTON_EDIT_GROUP, H_BUTTON_EDIT_GROUP));
+ pButtonEdit->SetActionId(IDA_BUTTON_EDIT_GROUP);
+ pButtonEdit->AddActionEventListener(*this);
+ pButtonEdit->SetName(Integer::ToString(itemIndex));
+ pItem->AddControl(pButtonEdit);
+
+ Label* pLabelThumbnail = new (std::nothrow) Label();
+ pLabelThumbnail->Construct(Rectangle(editButtonX - (X_THUMBNAIL_GAP + W_THUMBNAIL), 0, W_THUMBNAIL, H_ITEM), L"");
+ pItem->AddControl(pLabelThumbnail);
+
+ pThumbnail = __pPresentationModel->GetThumbnailN(itemIndex, pList);
+
+ if(pThumbnail != null)
+ {
+ pLabelThumbnail->SetBackgroundBitmap(*pThumbnail);
+ delete pThumbnail;
+ }
+
+ pBgBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_CIRCLE_NORMAL);
+ if (pBgBitmap != null)
+ {
+ pButtonEdit->SetNormalBackgroundBitmap(*pBgBitmap);
+ delete pBgBitmap;
+ }
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RENAME_NORMAL);
+ if (pBitmap != null)
+ {
+ pButtonEdit->SetNormalBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+ }
+
+ pBgBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_CIRCLE_PRESSED);
+ if (pBgBitmap != null)
+ {
+ pButtonEdit->SetPressedBackgroundBitmap(*pBgBitmap);
+ delete pBgBitmap;
+ }
+ pBitmap = ResourceManager::GetBitmapN(IDB_BUTTON_RENAME_PRESSED);
+ if (pBitmap != null)
+ {
+ pButtonEdit->SetPressedBitmap(Point(0, 0), *pBitmap);
+ delete pBitmap;
+ }
+ pItem->SetIndividualSelectionEnabled(pButtonEdit, true);
+
+ if (pList != null)
+ {
+ pList->RemoveAll(true);
+ pList = null;
+ }
+
+ return pItem;
+}
+
+bool
+GroupListEditorPanel::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+GroupListEditorPanel::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+int
+GroupListEditorPanel::GetDefaultGroupItemHeight(void)
+{
+ return H_GROUP_ITEM;
+}
+
+int
+GroupListEditorPanel::GetDefaultItemHeight(void)
+{
+ return H_ITEM;
+}
+
+int
+GroupListEditorPanel::GetGroupCount(void)
+{
+ int count = __pPresentationModel->GetCategoryCount();
+ if(count == 0)
+ {
+ __pSelectAll->SetShowState(false);
+ __pCheckLabel->SetShowState(false);
+ __pTableView->SetBounds(0, 0, GetWidth(), GetHeight());
+ return 0;
+ }
+ else
+ {
+ __pSelectAll->SetShowState(true);
+ __pCheckLabel->SetShowState(true);
+ if (__pBottomLabel->GetShowState() == false)
+ {
+ __pTableView->SetBounds(0, __pSelectAll->GetY() + __pSelectAll->GetHeight(), GetWidth(), GetHeight() - __pSelectAll->GetHeight());
+ }
+ else
+ {
+ __pTableView->SetBounds(0, __pSelectAll->GetY() + __pSelectAll->GetHeight(), GetWidth(), GetHeight() - __pSelectAll->GetHeight() - __pBottomLabel->GetHeight());
+ }
+ return 1;
+ }
+}
+
+int
+GroupListEditorPanel::GetItemCount(int groupIndex)
+{
+ return __pPresentationModel->GetCategoryCount();
+}
+
+void
+GroupListEditorPanel::UpdateGroupItem(int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem)
+{
+}
+
+void
+GroupListEditorPanel::UpdateItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem)
+{
+}
+
+result
+GroupListEditorPanel::UpdateBottomLabel(void)
+{
+ int selectedCount = 0;
+ for (int i = 0; i < __pTableView->GetItemCountAt(0); i++)
+ {
+ if (__pTableView->IsItemChecked(0, i) == true)
+ {
+ selectedCount++;
+ }
+ }
+
+ String selected = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ selected.Append(L" (");
+ selected.Append(selectedCount);
+ selected.Append(L")");
+ __pBottomLabel->SetText(selected);
+ __pBottomLabel->Invalidate(false);
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Footer* pFooter = pForm->GetFooter();
+ if (selectedCount > 0)
+ {
+ if(__pBottomLabel->GetShowState() == false)
+ {
+ __pBottomLabel->SetShowState(true);
+ __pTableView->SetSize(__pTableView->GetSize().width, __pTableView->GetSize().height - H_BOTTOM_LABEL);
+ }
+ pFooter->SetItemEnabled(1, true);
+ }
+ else if (selectedCount == 0 )
+ {
+ if (__pBottomLabel->GetShowState() == true)
+ {
+ __pBottomLabel->SetShowState(false);
+ __pTableView->SetSize(__pTableView->GetSize().width, __pTableView->GetSize().height + H_BOTTOM_LABEL);
+ }
+ pFooter->SetItemEnabled(1, false);
+ }
+
+ pFooter->Invalidate(true);
+
+ return E_SUCCESS;
+}
+
+void
+GroupListEditorPanel::ResetSelectedItems(void)
+{
+ for (int index = 0; index < __pTableView->GetItemCountAt(0); index++)
+ {
+ __pTableView->SetItemChecked(0, index, false);
+ __pTableView->Invalidate(true);
+ }
+
+ if (__pPresentationModel != null)
+ {
+ if (__pSavedCategoryList != null)
+ {
+ for (int i = 0; i < __pSavedCategoryList->GetCount(); i++)
+ {
+ Integer* pCategoryId = static_cast<Integer*>(__pSavedCategoryList->GetAt(i));
+
+ bool isCategoryFound = false;
+ if (pCategoryId != null)
+ {
+ RecordId recordId = pCategoryId->ToInt();
+ for (int index = 0; index < __pTableView->GetItemCountAt(0); index++)
+ {
+ if (recordId == __pPresentationModel->GetCategoryId(index))
+ {
+ __pTableView->SetItemChecked(0, index, true);
+ isCategoryFound = true;
+ }
+ }
+ if (isCategoryFound == false)
+ {
+ __pSavedCategoryList->RemoveAt(i);
+ i--;
+ }
+ }
+ }
+
+ __pTableView->Invalidate(true);
+
+ if (__pSavedCategoryList->GetCount() == __pTableView->GetItemCountAt(0))
+ {
+ __pSelectAll->SetSelected(true);
+ }
+ else
+ {
+ __pSelectAll->SetSelected(false);
+ }
+
+ __pSelectAll->Invalidate(true);
+ UpdateBottomLabel();
+ }
+ }
+}
+
+void
+GroupListEditorPanel::OnGroupedTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewContextItem *pContextItem, bool activated)
+{
+}
+
+void
+GroupListEditorPanel::OnGroupedTableViewGroupItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, Tizen::Ui::Controls::TableViewGroupItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+}
+
+void
+GroupListEditorPanel::OnGroupedTableViewItemStateChanged(Tizen::Ui::Controls::GroupedTableView &tableView, int groupIndex, int itemIndex, Tizen::Ui::Controls::TableViewItem *pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+ if (tableView.IsItemChecked(groupIndex, itemIndex) == true)
+ {
+ bool isChecked = true;
+ for (int i = 0; i < tableView.GetItemCountAt(groupIndex); i++)
+ {
+ if (tableView.IsItemChecked(groupIndex, i) == false)
+ {
+ isChecked = false;
+ break;
+ }
+ }
+ __pSelectAll->SetSelected(isChecked);
+ }
+ else if (tableView.IsItemChecked(groupIndex, itemIndex) == false)
+ {
+ __pSelectAll->SetSelected(false);
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+GroupListEditorPanel::OnContactsChanged(void)
+{
+ __pTableView->UpdateTableView();
+}
+
+void
+GroupListEditorPanel::OnCategoriesChanged(void)
+{
+ __pTableView->UpdateTableView();
+ ResetSelectedItems();
+}
+
+void
+GroupListEditorPanel::OnForeground(void)
+{
+}
+
+void
+GroupListEditorPanel::OnBackground(void)
+{
+ if (__pSavedCategoryList != null)
+ {
+ __pSavedCategoryList->RemoveAll(true);
+ SaveCategoryList();
+ }
+}
+
+void
+GroupListEditorPanel::SaveCategoryList(void)
+{
+ for (int index = 0; index < __pTableView->GetItemCountAt(0); index++)
+ {
+ if (__pTableView->IsItemChecked(0, index) == true)
+ {
+ __pSavedCategoryList->Add((new (std::nothrow) Integer(__pPresentationModel->GetCategoryId(index))));
+ }
+ }
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupListPanel.cpp
+ * @brief This is the implementation file for the GroupListPanel class.
+ */
+
+#include <FSocial.h>
+#include "CtContactListItem.h"
+#include "CtGroupListPanel.h"
+#include "CtGroupListPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_FOOTER_CREATE = 1;
+static const int IDA_MORE_EDIT = 2;
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+static const int IDA_LIST_ELEMENT_MESSAGE = 40;
+static const int IDA_LIST_ELEMENT_EMAIL = 41;
+static const int IDA_LIST_ELEMENT_ADD_MEMEBER = 42;
+
+static const wchar_t* IDB_NO_GROUP = L"00_Nocontents_unnamed.png";
+
+static const unsigned int COLOR_ITEM_TEXT_NORMAL = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_ITEM_TEXT_PRESSED = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_EMPTY_COMMENT = Color32<102, 102, 102>::Value;
+
+static const int H_GROUP_ITEM = 76;
+static const int W_INITIAL_PANEL = 10;
+static const int H_INITIAL_PANEL = 10;
+static const int W_THUMBNAIL = 108;
+static const int H_THUMBNAIL = 108;
+static const int X_TEXT = 26;
+static const int W_ELEMENT_GAP = 16;
+
+static const int X_EMPTY_IMAGE = 220;
+static const int Y_EMPTY_IMAGE = 300;
+static const int W_EMPTY_IMAGE = 280;
+static const int H_EMPTY_IMAGE = 280;
+static const int Y_EMPTY_COMMENT = 618;
+static const int H_EMPTY_COMMENT = 38;
+
+static const int FONT_SIZE_EMPTY_COMMENT = 32;
+
+GroupListPanel::GroupListPanel(void)
+: __sweptItemIndex(0)
+, __pListView(null)
+, __pOptionMenu(null)
+, __pEmptyImageLabel(null)
+, __pEmptyCommentLabel(null)
+, __pPresentationModel(null)
+{
+}
+
+GroupListPanel::~GroupListPanel(void)
+{
+}
+
+void
+GroupListPanel::Initialize(void)
+{
+ Construct(Rectangle(0, 0, W_INITIAL_PANEL, H_INITIAL_PANEL));
+}
+
+result
+GroupListPanel::OnInitializing(void)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ FloatRectangle clientBounds = ((MainForm*)pForm)->GetClientBounds();
+
+ SetBounds(Rectangle(0, 0, clientBounds.width, clientBounds.height));
+
+ __pPresentationModel = GroupListPresentationModel::GetInstance();
+
+ __pListView = new (std::nothrow) GroupedListView();
+ __pListView->Construct(Rectangle(0, 0, clientBounds.width, clientBounds.height), GROUPED_LIST_VIEW_STYLE_INDEXED, true, false);
+ __pListView->SetItemProvider(*this);
+ __pListView->AddGroupedListViewItemEventListener(*this);
+
+ AddControl(__pListView);
+
+ __pEmptyImageLabel = new (std::nothrow) Label();
+ __pEmptyImageLabel->Construct(Rectangle(X_EMPTY_IMAGE, Y_EMPTY_IMAGE, W_EMPTY_IMAGE, H_EMPTY_IMAGE), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_NO_GROUP);
+ if (pBitmap != null)
+ {
+ __pEmptyImageLabel->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+ __pEmptyImageLabel->SetShowState(false);
+
+ AddControl(__pEmptyImageLabel);
+
+ __pEmptyCommentLabel = new (std::nothrow) Label();
+ __pEmptyCommentLabel->Construct(Rectangle(0, Y_EMPTY_COMMENT, clientBounds.width, H_EMPTY_COMMENT),
+ ResourceManager::GetString(L"IDS_PB_HEADER_NO_GROUP"));
+ __pEmptyCommentLabel->SetTextConfig(FONT_SIZE_EMPTY_COMMENT, LABEL_TEXT_STYLE_NORMAL);
+ __pEmptyCommentLabel->SetTextColor(Color(COLOR_EMPTY_COMMENT));
+ __pEmptyCommentLabel->SetShowState(false);
+
+ AddControl(__pEmptyCommentLabel);
+
+ __pOptionMenu = new (std::nothrow) OptionMenu();
+ __pOptionMenu->Construct();
+ __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_COM_SK_EDIT"), IDA_MORE_EDIT);
+ __pOptionMenu->AddActionEventListener(*this);
+ __pOptionMenu->SetShowState(false);
+ return E_SUCCESS;
+}
+
+result
+GroupListPanel::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pPresentationModel != null)
+ {
+ __pPresentationModel->RemoveGroupChangeListener(*this);
+ }
+
+ delete __pOptionMenu;
+
+ return r;
+}
+
+void
+GroupListPanel::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ switch (actionId)
+ {
+ case IDA_HEADER_CONTACTS:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_LIST));
+ }
+ }
+ break;
+ case IDA_HEADER_GROUPS:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST));
+ }
+ break;
+ case IDA_HEADER_FAVORITES:
+ {
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_SINGLE)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ else if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST_EDITOR));
+ }
+ }
+ else
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_FAVORITE_LIST));
+ }
+ }
+ break;
+ case IDA_FOOTER_CREATE:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ }
+ break;
+ case IDA_MORE_EDIT:
+ {
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_LIST_EDITOR));
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupListPanel::OnFormMenuRequested(Tizen::Ui::Controls::Form& source)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ if(__pPresentationModel->GetCategoryCount() > 0 && pContactsApp->GetOperationId() != OPERATION_ID_PICK)
+ {
+ __pOptionMenu->SetShowState(true);
+ __pOptionMenu->Show();
+ }
+}
+
+void
+GroupListPanel::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId,
+ const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (previousSceneId.Equals(IDSCN_CONTACT_SELECTOR, true))
+ {
+ __pPresentationModel->AddContactToCategory(__sweptItemIndex, pArgs);
+ }
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+ Form *pEventForm = const_cast<Form*>(pForm);
+ pEventForm->SetFormMenuEventListener(this);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->AddActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->AddActionEventListener(*this);
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ pFooter->SetShowState(false);
+
+ SetBounds(Rectangle(0, 0, ((MainForm*)pForm)->GetClientBounds().width, ((MainForm*)pForm)->GetClientBounds().height + pFooter->GetHeight()));
+ __pListView->SetSize(__pListView->GetWidthF(), ((MainForm*)pForm)->GetClientBounds().height + + pFooter->GetHeight());
+
+ Invalidate(true);
+
+ if (__pPresentationModel->GetCategoryCount() == 0)
+ {
+ pForm->SetFormMenuEventListener(null);
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ else
+ {
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ }
+ }
+ else
+ {
+ FooterItem footerItemCreate;
+ footerItemCreate.Construct(IDA_FOOTER_CREATE);
+ footerItemCreate.SetText(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"));
+ int count = pFooter->GetItemCount();
+ if (count == 0)
+ {
+ pFooter->AddItem(footerItemCreate);
+ }
+ else if (count == 1)
+ {
+ pFooter->SetItemAt(0, footerItemCreate);
+ }
+ else
+ {
+ pFooter->SetItemAt(0, footerItemCreate);
+ pFooter->RemoveItemAt(1);
+ pFooter->RemoveButtonAt(BUTTON_POSITION_LEFT);
+ }
+ pFooter->SetItemEnabled(0,true);
+ pForm->SetFormMenuEventListener(null);
+
+ if (__pPresentationModel->GetCategoryCount() > 0)
+ {
+ pForm->SetFormMenuEventListener(this);
+
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ }
+ else if (__pPresentationModel->GetContactCount() > 0)
+ {
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ }
+ else
+ {
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ }
+
+ __pListView->UpdateList();
+ __pPresentationModel->AddGroupChangeListener(*this);
+
+ if (pArgs != null)
+ {
+ pArgs->RemoveAll(true);
+ delete pArgs;
+ }
+}
+
+void
+GroupListPanel::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
+ const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ const Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ Form *pEventForm = const_cast<Form*>(pForm);
+ pEventForm->SetFormMenuEventListener(null);
+
+ Header* pHeader = pForm->GetHeader();
+ pHeader->RemoveActionEventListener(*this);
+
+ Footer* pFooter = pForm->GetFooter();
+ pFooter->RemoveActionEventListener(*this);
+
+ __pPresentationModel->RemoveGroupChangeListener(*this);
+}
+
+int
+GroupListPanel::GetGroupCount(void)
+{
+ return 1;
+}
+
+int
+GroupListPanel::GetItemCount(int groupIndex)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ int count = __pPresentationModel->GetCategoryCount();
+
+ if (__pPresentationModel->GetContactCountInNotAssignedCategory(pContactsApp->GetReturnType()))
+ {
+ count++;
+ }
+
+ return count;
+}
+
+Tizen::Ui::Controls::ListItemBase*
+GroupListPanel::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ String groupNameString;
+ int contactCount = 0;
+ String contactCountString;
+ bool isNotAssinged = false;
+ int adjustedNameWidth;
+ Dimension countSize;
+ Dimension groupNameSize;
+ Font font;
+ IList* pList = null;
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()), LIST_ANNEX_STYLE_NORMAL);
+
+ result r = __pPresentationModel->UpdatePersonList(itemIndex);
+ TryReturn(r == E_SUCCESS, null, "[%s] Unable to update person list", GetErrorMessage(r));
+
+ if (__pPresentationModel->GetCategoryCount() == itemIndex)
+ {
+ isNotAssinged = true;
+ groupNameString = ResourceManager::GetString(L"IDS_PB_BODY_NOT_ASSIGNED");
+ contactCount = __pPresentationModel->GetContactCountInNotAssignedCategory(pContactsApp->GetReturnType());
+ contactCountString = L"(" + Integer::ToString(contactCount) + L")";
+ }
+ else
+ {
+ groupNameString = __pPresentationModel->GetCategoryName(itemIndex);
+ contactCount = __pPresentationModel->GetContactCountInCategoryN(itemIndex, pList, pContactsApp->GetReturnType());
+ contactCountString = L"(" + Integer::ToString(contactCount) + L")";
+ }
+
+ font.Construct(FONT_STYLE_PLAIN, pContactsApp->GetFontSize());
+ font.GetTextExtent(contactCountString, contactCountString.GetLength(), countSize);
+ font.GetTextExtent(groupNameString, groupNameString.GetLength(), groupNameSize);
+
+ adjustedNameWidth = itemWidth - (W_THUMBNAIL + (X_TEXT * 2) + (countSize.width + W_ELEMENT_GAP * 2));
+ if (groupNameSize.width < adjustedNameWidth)
+ {
+ adjustedNameWidth = groupNameSize.width + 1;
+ }
+
+ pItem->AddElement(Rectangle(X_TEXT, 0, adjustedNameWidth, pContactsApp->GetListItemSingleLineHeight()), 1, groupNameString, pContactsApp->GetFontSize(), COLOR_ITEM_TEXT_NORMAL, COLOR_ITEM_TEXT_PRESSED, COLOR_ITEM_TEXT_PRESSED, true);
+ pItem->AddElement(Rectangle(X_TEXT + adjustedNameWidth + W_ELEMENT_GAP, 0, countSize.width + 1, pContactsApp->GetListItemSingleLineHeight()), 2, contactCountString, pContactsApp->GetFontSize(), COLOR_ITEM_TEXT_NORMAL, COLOR_ITEM_TEXT_PRESSED, COLOR_ITEM_TEXT_PRESSED, true);
+
+ Bitmap* pThumbnail = null;
+ pThumbnail = __pPresentationModel->GetThumbnailN(itemIndex, pList);
+ if (pThumbnail != null)
+ {
+ pItem->AddElement(Rectangle(itemWidth - W_THUMBNAIL - X_TEXT, (pContactsApp->GetListItemSingleLineHeight() - H_THUMBNAIL)/2, W_THUMBNAIL, H_THUMBNAIL), 0, *pThumbnail);
+ delete pThumbnail;
+ }
+
+ if (pContactsApp->GetOperationId().IsEmpty() == false)
+ {
+ return pItem;
+ }
+
+ ListContextItem* pItemContext = new (std::nothrow) ListContextItem();
+ pItemContext->Construct();
+ if (contactCount == 0)
+ {
+ pItemContext->AddElement(IDA_LIST_ELEMENT_MESSAGE, ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), false);
+ pItemContext->AddElement(IDA_LIST_ELEMENT_EMAIL, ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"), false);
+ }
+ else
+ {
+ pItemContext->AddElement(IDA_LIST_ELEMENT_MESSAGE, ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"));
+ pItemContext->AddElement(IDA_LIST_ELEMENT_EMAIL, ResourceManager::GetString(L"IDS_COM_BODY_EMAIL"));
+ }
+
+ if (isNotAssinged == false && __pPresentationModel->GetContactCount() > contactCount)
+ {
+ pItemContext->AddElement(IDA_LIST_ELEMENT_ADD_MEMEBER, ResourceManager::GetString(L"IDS_PB_SK_ADD_MEMBER"));
+ }
+
+ pItem->SetContextItem(pItemContext);
+
+ if (pList != null)
+ {
+ pList->RemoveAll(true);
+ pList = null;
+ }
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+GroupListPanel::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(ResourceManager::GetString(L"IDS_PB_BODY_PHONE"));
+
+ return pItem;
+}
+
+bool
+GroupListPanel::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ CustomItem* pCustomItem = static_cast<CustomItem *>(pItem);
+ pCustomItem->RemoveAllElements();
+
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+GroupListPanel::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+GroupListPanel::OnContactsChanged(void)
+{
+ __pListView->UpdateList();
+}
+
+void
+GroupListPanel::OnCategoriesChanged(void)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ Form* pForm = dynamic_cast<Form*>(GetParent());
+ AppAssert(pForm);
+
+ if (__pPresentationModel->GetCategoryCount()> 0)
+ {
+ pForm->SetFormMenuEventListener(this);
+ }
+ else
+ {
+ pForm->SetFormMenuEventListener(null);
+ }
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_PICK)
+ {
+ if (__pPresentationModel->GetCategoryCount() == 0)
+ {
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ else
+ {
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ }
+ }
+ else
+ {
+ if (__pPresentationModel->GetCategoryCount() > 0)
+ {
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ }
+ else if (__pPresentationModel->GetContactCount() > 0)
+ {
+ __pListView->SetShowState(true);
+ __pEmptyImageLabel->SetShowState(false);
+ __pEmptyCommentLabel->SetShowState(false);
+ }
+ else
+ {
+ __pListView->SetShowState(false);
+ __pEmptyImageLabel->SetShowState(true);
+ __pEmptyCommentLabel->SetShowState(true);
+ }
+ }
+
+ __pListView->UpdateList();
+}
+
+void
+GroupListPanel::OnGroupedListViewContextItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ switch (elementId)
+ {
+ case IDA_LIST_ELEMENT_MESSAGE:
+ {
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+
+ if (__pPresentationModel->GetCategoryCount() == itemIndex)
+ {
+ pList->Add(*(new (std::nothrow) Integer(ID_GROUP_CONTACT_NOT_ASSIGNED)));
+ }
+ else
+ {
+ pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetCategoryId(itemIndex))));
+ }
+ pList->Add(*(new (std::nothrow) Integer(ID_GROUP_CONTACT_SELECT_MESSAGE)));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_CONTACT_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ }
+ break;
+ case IDA_LIST_ELEMENT_EMAIL:
+ {
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+
+ if (__pPresentationModel->GetCategoryCount() == itemIndex)
+ {
+ pList->Add(*(new (std::nothrow) Integer(ID_GROUP_CONTACT_NOT_ASSIGNED)));
+ }
+ else
+ {
+ pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetCategoryId(itemIndex))));
+ }
+ pList->Add(*(new (std::nothrow) Integer(ID_GROUP_CONTACT_SELECT_EMAIL)));
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_CONTACT_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ }
+ break;
+ case IDA_LIST_ELEMENT_ADD_MEMEBER:
+ {
+ IList* pArgList = __pPresentationModel->GetContactIdListInCategory(itemIndex);
+
+ __sweptItemIndex = itemIndex;
+
+ pSceneManager->GoForward(ForwardSceneTransition(IDSCN_CONTACT_SELECTOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pArgList);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+void
+GroupListPanel::OnGroupedListViewItemStateChanged(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, int elementId, Tizen::Ui::Controls::ListItemStatus state)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+
+ if (__pPresentationModel->GetCategoryCount() == itemIndex)
+ {
+ pList->Add(*(new (std::nothrow) Integer(ID_GROUP_CONTACT_NOT_ASSIGNED)));
+ }
+ else
+ {
+ pList->Add(*(new (std::nothrow) Integer(__pPresentationModel->GetCategoryId(itemIndex))));
+ }
+
+ if (pContactsApp->GetSelectionMode() == APP_CONTROL_SELECTION_MODE_MULTI)
+ {
+ SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_GROUP_CONTACT_LIST_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ }
+ else
+ {
+ SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_GROUP_CONTACT_LIST, SCENE_TRANSITION_ANIMATION_TYPE_LEFT), pList);
+ }
+}
+
+void
+GroupListPanel::OnGroupedListViewItemSwept(Tizen::Ui::Controls::GroupedListView& listView, int groupIndex, int itemIndex, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupListPresentationModel.cpp
+ * @brief This is the implementation file for the GroupListPresentationModel class.
+ */
+
+#include <FMedia.h>
+#include "CtGroupListPresentationModel.h"
+#include "CtIContactEventListener.h"
+#include "CtResourceManager.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Media;
+using namespace Tizen::Social;
+
+GroupListPresentationModel* GroupListPresentationModel::__pInstance = null;
+
+GroupListPresentationModel*
+GroupListPresentationModel::GetInstance(void)
+{
+ if (__pInstance == null)
+ {
+ CreateInstance();
+ }
+
+ return __pInstance;
+}
+
+void
+GroupListPresentationModel::CreateInstance(void)
+{
+ __pInstance = new (std::nothrow) GroupListPresentationModel();
+ result r = __pInstance->Construct();
+ TryCatch(r == E_SUCCESS, , "[%s] Construction Failed", GetErrorMessage(r));
+
+ std::atexit(DestroyInstance);
+ return;
+
+CATCH:
+ delete __pInstance;
+ __pInstance = null;
+}
+
+void
+GroupListPresentationModel::DestroyInstance(void)
+{
+ delete __pInstance;
+}
+
+GroupListPresentationModel::GroupListPresentationModel(void)
+: __pAddressbook(null)
+, __pCategoryList(null)
+, __pPersonList(null)
+, __pCategoryChangeListener(null)
+{
+}
+
+GroupListPresentationModel::~GroupListPresentationModel(void)
+{
+ delete __pAddressbook;
+
+ if (__pCategoryList != null)
+ {
+ __pCategoryList->RemoveAll(true);
+ delete __pCategoryList;
+ }
+
+ if (__pPersonList != null)
+ {
+ __pPersonList->RemoveAll(true);
+ delete __pPersonList;
+ }
+
+ if (__pCategoryChangeListener != null)
+ {
+ __pCategoryChangeListener->RemoveAll(false);
+ delete __pCategoryChangeListener;
+ }
+}
+
+result
+GroupListPresentationModel::Construct(void)
+{
+ result r = E_SUCCESS;
+
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+
+ __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (__pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ r = __pAddressbook->SetAddressbookChangeEventListener(this);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to set event listener", GetErrorMessage(r));
+
+ __pCategoryList = __pAddressbook->GetAllCategoriesN();
+ r = GetLastResult();
+ TryCatch(__pCategoryList && r == E_SUCCESS, , "[%s] Unable to get all categories", GetErrorMessage(r));
+
+ __pCategoryChangeListener = new (std::nothrow) ArrayList();
+ __pCategoryChangeListener->Construct();
+
+ return r;
+
+CATCH:
+ delete __pAddressbook;
+ __pAddressbook = null;
+
+ if (__pCategoryList != null)
+ {
+ __pCategoryList->RemoveAll(true);
+
+ delete __pCategoryList;
+ __pCategoryList = null;
+ }
+
+ delete __pCategoryChangeListener;
+ __pCategoryChangeListener = null;
+
+ return r;
+}
+
+result
+GroupListPresentationModel::RemoveCategory(int index)
+{
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return E_FAILURE;
+ }
+
+ __pAddressbook->RemoveCategory(*pCategory);
+
+ return E_SUCCESS;
+}
+
+Tizen::Base::String
+GroupListPresentationModel::GetCategoryName(int index)
+{
+ String returnName;
+
+ Category* pCategory = static_cast<Category *>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return returnName;
+ }
+
+ returnName = pCategory->GetName();
+
+ return returnName;
+}
+
+Tizen::Base::Collection::IList*
+GroupListPresentationModel::GetContactIdListInCategory(int index)
+{
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return null;
+ }
+
+ IList* pContactList = AddressbookManager::GetInstance()->GetContactsByCategoryN(pCategory->GetRecordId());
+ if (pContactList == null)
+ {
+ return null;
+ }
+
+ ArrayList* pList = new (std::nothrow) ArrayList();
+ pList->Construct();
+
+ for (int i = 0; i < pContactList->GetCount(); i++)
+ {
+ Contact* pContact = static_cast<Contact*>(pContactList->GetAt(i));
+ if (pContact != null)
+ {
+ pList->Add(*(new (std::nothrow) Integer(pContact->GetRecordId())));
+ }
+ }
+
+ delete pContactList;
+
+ return pList;
+}
+
+bool
+GroupListPresentationModel::IsContactInCategory(const Tizen::Base::Collection::IList& categoryIdList, int categoryIndex)
+{
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(categoryIndex));
+ if (pCategory == null)
+ {
+ return false;
+ }
+
+ IEnumerator* pEnum = categoryIdList.GetEnumeratorN();
+
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ String* pCategoryIdString = static_cast<String *>(pEnum->GetCurrent());
+
+ if (pCategoryIdString->Equals(Integer::ToString(pCategory->GetRecordId()), true))
+ {
+ delete pEnum;
+
+ return true;
+ }
+ }
+
+ delete pEnum;
+
+ return false;
+}
+
+bool
+GroupListPresentationModel::IsDefaultCategory(int index)
+{
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return false;
+ }
+
+ return pCategory->IsDefault();
+}
+
+int
+GroupListPresentationModel::GetContactCountInCategoryN(int index, IList*& pContactList, AppControlReturnType returnType)
+{
+ Category* pCategory = static_cast<Category *>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return -1;
+ }
+ if (returnType != APP_CONTROL_RETURN_TYPE_PHONE &&
+ returnType != APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ return pCategory->GetMemberCount();
+ }
+
+ int returnCount = 0;
+ IList* pList = null;
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_EQUAL, pCategory->GetRecordId());
+ if (returnType == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ }
+ else if (returnType == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ }
+
+ pList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+
+ if (pList == null)
+ {
+ return returnCount;
+ }
+
+ returnCount = pList->GetCount();
+
+ pContactList = pList;
+
+ return returnCount;
+}
+
+int
+GroupListPresentationModel::GetContactCountInNotAssignedCategory(AppControlReturnType returnType)
+{
+ int returnCount = 0;
+ IList* pList = null;
+ AddressbookFilter mainFilter(AB_FI_TYPE_PERSON);
+
+ mainFilter.AppendInt(FI_CONJ_OP_NONE, PERSON_FI_PR_CATEGORY_ID, FI_CMP_OP_IS_NULL, INVALID_RECORD_ID);
+ if (returnType == APP_CONTROL_RETURN_TYPE_PHONE)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_PHONE, FI_CMP_OP_EQUAL, true);
+ }
+ else if (returnType == APP_CONTROL_RETURN_TYPE_EMAIL)
+ {
+ mainFilter.AppendBool(FI_CONJ_OP_AND, PERSON_FI_PR_HAS_EMAIL, FI_CMP_OP_EQUAL, true);
+ }
+
+ pList = AddressbookManager::GetInstance()->SearchN(mainFilter);
+
+ if (pList == null)
+ {
+ return returnCount;
+ }
+
+ returnCount = pList->GetCount();
+
+ pList->RemoveAll(true);
+ delete pList;
+
+ return returnCount;
+}
+
+int
+GroupListPresentationModel::GetCategoryCount(void)
+{
+ return __pAddressbook->GetCategoryCount();
+}
+
+int
+GroupListPresentationModel::GetContactCount(void)
+{
+ return __pAddressbook->GetContactCount();
+}
+
+Tizen::Graphics::Bitmap*
+GroupListPresentationModel::GetThumbnailN(int index, IList* pList)
+{
+ String filePath;
+ Bitmap* pThumbnail = null;
+ IList* pPersonList = null;
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(index));
+ TryReturn(pCategory != null, null, "Unable to get a category");
+
+ filePath = pCategory->GetThumbnailPath();
+
+ if (filePath.IsEmpty())
+ {
+ if (pList == null)
+ {
+ pPersonList = __pPersonList;
+ }
+ else
+ {
+ pPersonList = pList;
+ }
+
+ for (int i = 0; i < pPersonList->GetCount(); i++)
+ {
+ Person* pPerson = static_cast<Person*>(pPersonList->GetAt(i));
+ TryReturn(pPerson != null, null, "Unable to get a person");
+ filePath = pPerson->GetThumbnailPath();
+
+ if (filePath.IsEmpty() == false)
+ {
+ break;
+ }
+ }
+ }
+
+ if (filePath.IsEmpty() == false)
+ {
+ ImageBuffer thumbnailImageBuffer;
+ result r = thumbnailImageBuffer.Construct(filePath);
+ if (r == E_SUCCESS)
+ {
+ pThumbnail = thumbnailImageBuffer.GetBitmapN(BITMAP_PIXEL_FORMAT_RGB565, BUFFER_SCALING_NONE);
+ }
+ }
+
+ return pThumbnail;
+}
+
+result
+GroupListPresentationModel::UpdatePersonList(int categoryIndex)
+{
+ RecordId categoryId = INVALID_RECORD_ID;
+
+ if (__pCategoryList != null)
+ {
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(categoryIndex));
+ if (pCategory != null)
+ {
+ categoryId = pCategory->GetRecordId();
+ }
+
+ if (__pPersonList != null)
+ {
+ delete __pPersonList;
+ }
+ __pPersonList = AddressbookManager::GetInstance()->GetPersonsByCategoryN(categoryId);
+ }
+
+ if (__pPersonList == null)
+ {
+ return E_FAILURE;
+ }
+
+ return E_SUCCESS;
+}
+
+Tizen::Social::RecordId
+GroupListPresentationModel::GetCategoryId(int index)
+{
+ Category* pCategory = static_cast<Category *>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return -1;
+ }
+
+ return pCategory->GetRecordId();
+}
+
+result
+GroupListPresentationModel::UpdateCategoryList(void)
+{
+ if (__pCategoryList != null)
+ {
+ __pCategoryList->RemoveAll(true);
+ delete __pCategoryList;
+ __pCategoryList = null;
+ }
+
+ __pCategoryList = __pAddressbook->GetAllCategoriesN();
+ if ((__pCategoryList == null) || IsFailed(GetLastResult()))
+ {
+ return E_FAILURE;
+ }
+
+ return E_SUCCESS;
+}
+
+result
+GroupListPresentationModel::AddContactToCategory(int index, Tizen::Base::Collection::IList* pList)
+{
+ if (pList == null)
+ {
+ return E_FAILURE;
+ }
+
+ Category* pCategory = static_cast<Category*>(__pCategoryList->GetAt(index));
+ if (pCategory == null)
+ {
+ return E_FAILURE;
+ }
+
+ Integer* pContactId = null;
+ IEnumerator* pEnum = pList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pContactId = static_cast<Integer*>(pEnum->GetCurrent());
+ if (pContactId != null)
+ {
+ pCategory->AddMember(pContactId->ToInt());
+ }
+ }
+ delete pEnum;
+
+ AddressbookManager::GetInstance()->UpdateCategory(*pCategory);
+
+ return E_SUCCESS;
+}
+
+void
+GroupListPresentationModel::AddGroupChangeListener(const IContactEventListener& listener)
+{
+ __pCategoryChangeListener->Add(listener);
+}
+
+void
+GroupListPresentationModel::RemoveGroupChangeListener(const IContactEventListener& listener)
+{
+ __pCategoryChangeListener->Remove(listener, false);
+}
+
+void
+GroupListPresentationModel::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ UpdateCategoryList();
+
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pCategoryChangeListener->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnContactsChanged();
+ }
+
+ delete pEnum;
+}
+
+void
+GroupListPresentationModel::OnCategoriesChanged(const Tizen::Base::Collection::IList& categoryChangeInfoList)
+{
+ UpdateCategoryList();
+
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pCategoryChangeListener->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnCategoriesChanged();
+ }
+
+ delete pEnum;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupPresentationModel.cpp
+ * @brief This is the implementation file for the GroupPresentationModel class.
+ */
+
+#include "CtGroupPresentationModel.h"
+#include "CtIContactEventListener.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Social;
+
+GroupPresentationModel::GroupPresentationModel(void)
+ : __pContactChangeListenerList(null)
+ , __pAddressbook(null)
+ , __pCategory(null)
+{
+}
+
+GroupPresentationModel::~GroupPresentationModel(void)
+{
+ if (__pContactChangeListenerList != null)
+ {
+ __pContactChangeListenerList->RemoveAll(false);
+ delete __pContactChangeListenerList;
+ }
+
+ delete __pAddressbook;
+ delete __pCategory;
+}
+
+result
+GroupPresentationModel::Construct(Tizen::Social::RecordId categoryId)
+{
+ AddressbookManager* pAddressbookManager = AddressbookManager::GetInstance();
+ __pAddressbook = pAddressbookManager->GetAddressbookN(DEFAULT_ADDRESSBOOK_ID);
+ if (__pAddressbook == null)
+ {
+ return E_FAILURE;
+ }
+
+ if (categoryId != INVALID_RECORD_ID)
+ {
+ __pCategory = __pAddressbook->GetCategoryN(categoryId);
+ if (__pCategory == null)
+ {
+ return E_FAILURE;
+ }
+ }
+ else
+ {
+ __pCategory = new (std::nothrow) Category();
+ if (__pCategory == null)
+ {
+ return E_FAILURE;
+ }
+ }
+
+ __pContactChangeListenerList = new (std::nothrow) ArrayList();
+ __pContactChangeListenerList->Construct();
+
+ __pAddressbook->SetAddressbookChangeEventListener(this);
+
+ return E_SUCCESS;
+}
+
+bool
+GroupPresentationModel::IsDuplicatedCategory(void)
+{
+ bool isDuplicated = false;
+ Category* pCategory = null;
+
+ IList* pList = __pAddressbook->GetAllCategoriesN();
+ if (pList == null)
+ {
+ return false;
+ }
+
+ IEnumerator* pEnum = pList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pCategory = static_cast<Category*>(pEnum->GetCurrent());
+ TryCatch(pCategory != null, , "Unable to cast object to category");
+
+ if (pCategory->IsDefault())
+ {
+ continue;
+ }
+
+ if (pCategory->GetRecordId() != __pCategory->GetRecordId() &&
+ pCategory->GetName().Equals(__pCategory->GetName()) == true)
+ {
+ isDuplicated = true;
+ }
+ }
+
+CATCH:
+ pList->RemoveAll(true);
+ delete pList;
+ delete pEnum;
+
+ return isDuplicated;
+}
+
+bool
+GroupPresentationModel::IsDefaultCategory(void)
+{
+ return __pCategory->IsDefault();
+}
+
+result
+GroupPresentationModel::SetCategoryName(const Tizen::Base::String& groupName)
+{
+ return __pCategory->SetName(groupName);
+}
+
+result
+GroupPresentationModel::SetRingtone(const Tizen::Base::String& ringtonePath)
+{
+ return __pCategory->SetRingtonePath(ringtonePath);
+}
+
+result
+GroupPresentationModel::AddCategory(void)
+{
+ return __pAddressbook->AddCategory(*__pCategory);
+}
+
+result
+GroupPresentationModel::UpdateCategory(void)
+{
+ bool isSame = false;
+ Category* pCategory = __pAddressbook->GetCategoryN(GetCategoryId());
+
+ if (pCategory && pCategory->Equals(*__pCategory))
+ {
+ isSame = true;
+ }
+
+ delete pCategory;
+
+ // If the category is not changed, OnCategoriesChanged will not be called. But UpdateCategory() returns E_SCCUESS.
+ result r = __pAddressbook->UpdateCategory(*__pCategory);
+ return isSame ? E_FAILURE : r;
+}
+
+result
+GroupPresentationModel::SetThumbnailPath(const Tizen::Base::String& filePath)
+{
+ return __pCategory->SetThumbnail(filePath);
+}
+
+Tizen::Base::String
+GroupPresentationModel::GetThumbnailPath(void)
+{
+ return __pCategory->GetThumbnailPath();
+}
+
+Tizen::Base::String
+GroupPresentationModel::GetCategoryName(void)
+{
+ return __pCategory->GetName();
+}
+
+Tizen::Base::String
+GroupPresentationModel::GetRingtone(void)
+{
+ return __pCategory->GetRingtonePath();
+}
+
+int
+GroupPresentationModel::GetCategoryCount(void)
+{
+ return __pAddressbook->GetCategoryCount();
+}
+
+Tizen::Social::RecordId
+GroupPresentationModel::GetCategoryId(void)
+{
+ return __pCategory->GetRecordId();
+}
+
+void
+GroupPresentationModel::AddContactChangeListener(const IContactEventListener& listener)
+{
+ __pContactChangeListenerList->Add(listener);
+}
+
+void
+GroupPresentationModel::RemoveContactChangeListener(const IContactEventListener& listener)
+{
+ __pContactChangeListenerList->Remove(listener, false);
+}
+
+void
+GroupPresentationModel::OnContactsChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+}
+
+void
+GroupPresentationModel::OnCategoriesChanged(const Tizen::Base::Collection::IList& contactChangeInfoList)
+{
+ IContactEventListener* pInterface = null;
+ IEnumerator* pEnum = __pContactChangeListenerList->GetEnumeratorN();
+ while (pEnum->MoveNext() == E_SUCCESS)
+ {
+ pInterface = static_cast<IContactEventListener *>(pEnum->GetCurrent());
+ if (pInterface == null)
+ {
+ delete pEnum;
+ return;
+ }
+ pInterface->OnCategoriesChanged();
+ }
+
+ delete pEnum;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupSelectorForm.cpp
+ * @brief This is the implementation file for the GroupSelectorForm class.
+ */
+
+#include <FApp.h>
+#include <FBase.h>
+#include "CtContactsApp.h"
+#include "CtGroupListPresentationModel.h"
+#include "CtGroupSelectorForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_FOOTER_DONE = 11;
+static const int IDA_FOOTER_CANCEL = 12;
+static const int IDA_MORE_CREATE_GROUP = 13;
+
+static const int X_LIST_ITEM_TEXT_MARGIN = 36;
+
+GroupSelectorForm::GroupSelectorForm(void)
+ :__isDonePressed(false)
+ ,__pGroupListPresentationModel(null)
+ , __pListView(null)
+ , __pBottomLabel(null)
+ , __pOptionMenu(null)
+ , __pGroupIndexMap(null)
+ , __pGroupIdList(null)
+{
+}
+
+GroupSelectorForm::~GroupSelectorForm(void)
+{
+}
+
+void
+GroupSelectorForm::Initialize(void)
+{
+ Construct(L"IDL_GROUP_SELECTOR_FORM");
+}
+
+result
+GroupSelectorForm::OnInitializing(void)
+{
+ Footer* pFooter = GetFooter();
+ pFooter->SetItemEnabled(1, false);
+ pFooter->AddActionEventListener(*this);
+ SetFormBackEventListener(this);
+
+ __pGroupListPresentationModel = GroupListPresentationModel::GetInstance();
+ __pGroupListPresentationModel->AddGroupChangeListener(*this);
+
+ __pListView = static_cast<ListView*>(GetControl(L"IDC_LISTVIEW", false));
+ __pListView->SetItemProvider(*this);
+ __pListView->AddListViewItemEventListener(*this);
+
+ __pBottomLabel = static_cast<Label*>(GetControl(L"IDC_LABEL", false));
+
+ __pGroupIndexMap = new (std::nothrow) HashMapT<int, bool>();
+ __pGroupIndexMap->Construct(__pGroupListPresentationModel->GetCategoryCount());
+
+ __pOptionMenu = new (std::nothrow) OptionMenu();
+ __pOptionMenu->Construct();
+ __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"), IDA_MORE_CREATE_GROUP);
+ __pOptionMenu->AddActionEventListener(*this);
+ __pOptionMenu->SetShowState(false);
+
+ return E_SUCCESS;
+}
+
+result
+GroupSelectorForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pGroupIndexMap)
+ {
+ __pGroupIndexMap->RemoveAll();
+ delete __pGroupIndexMap;
+ }
+
+ if (__pGroupIdList)
+ {
+ __pGroupIdList->RemoveAll(true);
+ delete __pGroupIdList;
+ }
+
+ if (__pGroupListPresentationModel != null)
+ {
+ __pGroupListPresentationModel->RemoveGroupChangeListener(*this);
+ }
+
+ delete __pOptionMenu;
+
+ return r;
+}
+
+void
+GroupSelectorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ result r = E_SUCCESS;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ArrayList* pList = null;
+
+ switch (actionId)
+ {
+ case IDA_MORE_CREATE_GROUP:
+ {
+ r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to go forward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ __isDonePressed = true;
+ pList = new (std::nothrow) ArrayList();
+ pList->Construct(__pGroupIndexMap->GetCount());
+
+ for (int i = 0; i < __pGroupListPresentationModel->GetCategoryCount(); i++)
+ {
+ bool categoryValue = false;
+ RecordId categoryId = __pGroupListPresentationModel->GetCategoryId(i);
+
+ __pGroupIndexMap->GetValue(categoryId, categoryValue);
+
+ if (categoryValue)
+ {
+ pList->Add(*(new (std::nothrow) Integer(categoryId)));
+ }
+ }
+
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), pList);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryCatch(r == E_SUCCESS, ,"[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ default:
+ break;
+ }
+
+ return;
+
+CATCH:
+ if (pList != null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+ }
+
+ return;
+}
+
+void
+GroupSelectorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+
+ SetFormMenuEventListener(this);
+
+ if (pArgs == null)
+ {
+ return;
+ }
+
+ if (__pGroupIdList != null)
+ {
+ __pGroupIdList->RemoveAll(true);
+ delete __pGroupIdList;
+ }
+
+ __pGroupIdList = pArgs;
+
+ __pGroupIndexMap->RemoveAll();
+
+ int categoryCount = __pGroupListPresentationModel->GetCategoryCount();
+ for (int index = 0; index < categoryCount; index++)
+ {
+ if (__pGroupListPresentationModel->IsContactInCategory(*__pGroupIdList, index) == true)
+ {
+ __pGroupIndexMap->Add(__pGroupListPresentationModel->GetCategoryId(index), true);
+ }
+ else
+ {
+ __pGroupIndexMap->Add(__pGroupListPresentationModel->GetCategoryId(index), false);
+ }
+ }
+
+ __pListView->UpdateList();
+
+ for (int index = 0; index < __pListView->GetItemCount(); index++)
+ {
+ bool isChecked = false;
+
+ __pGroupIndexMap->GetValue(__pGroupListPresentationModel->GetCategoryId(index), isChecked);
+
+ if (isChecked == true)
+ {
+ result r = __pListView->SetItemChecked(index, true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+GroupSelectorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+ SetFormMenuEventListener(null);
+}
+
+void
+GroupSelectorForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ SceneManager *pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+}
+
+void
+GroupSelectorForm::OnFormMenuRequested(Tizen::Ui::Controls::Form& source)
+{
+ __pOptionMenu->SetShowState(true);
+ __pOptionMenu->Show();
+}
+
+Tizen::Ui::Controls::ListItemBase*
+GroupSelectorForm::CreateItem(int index, int itemWidth)
+{
+ result r = E_SUCCESS;
+ String name;
+ Color textColor = Color::GetColor(COLOR_ID_BLACK);
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()), LIST_ANNEX_STYLE_MARK);
+
+ name = __pGroupListPresentationModel->GetCategoryName(index);
+
+ r = pItem->AddElement(Rectangle(X_LIST_ITEM_TEXT_MARGIN/2, 0, itemWidth - (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN), pContactsApp->GetListItemSingleLineHeight()), index, name, pContactsApp->GetFontSize(), textColor, textColor, textColor);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to add element", GetErrorMessage(r));
+
+ return pItem;
+
+CATCH:
+ delete pItem;
+ pItem = null;
+
+ return null;
+}
+
+bool
+GroupSelectorForm::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+
+ return true;
+}
+
+int
+GroupSelectorForm::GetItemCount(void)
+{
+ return __pGroupListPresentationModel->GetCategoryCount();
+}
+
+void
+GroupSelectorForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+GroupSelectorForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ result r = E_SUCCESS;
+
+ if (status == LIST_ITEM_STATUS_CHECKED)
+ {
+ r = listView.SetItemChecked(index, true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+
+ r = __pGroupIndexMap->SetValue(__pGroupListPresentationModel->GetCategoryId(index), true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set value", GetErrorMessage(r));
+ }
+ else if (status == LIST_ITEM_STATUS_UNCHECKED)
+ {
+ r = listView.SetItemChecked(index, false);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+
+ r = __pGroupIndexMap->SetValue(__pGroupListPresentationModel->GetCategoryId(index), false);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set value", GetErrorMessage(r));
+ }
+
+ Footer* pFooter = GetFooter();
+
+ int modifiedItems = 0;
+ int itemCount = listView.GetItemCount();
+ for(int count = 0; count < itemCount; count++)
+ {
+ if(__pGroupListPresentationModel->IsContactInCategory(*__pGroupIdList, count) != listView.IsItemChecked(count))
+ {
+ modifiedItems++;
+ }
+ }
+
+ if(modifiedItems > 0)
+ {
+ pFooter->SetItemEnabled(1, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(1, false);
+ }
+ pFooter->Invalidate(true);
+ UpdateBottomLabel();
+}
+
+void
+GroupSelectorForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+result
+GroupSelectorForm::UpdateBottomLabel(void)
+{
+ int itemCount = __pListView->GetItemCount();
+ int selectedCount = 0;
+ bool isChecked = false;
+
+ for (int index = 0; index < itemCount; index++)
+ {
+ __pGroupIndexMap->GetValue(__pGroupListPresentationModel->GetCategoryId(index), isChecked);
+
+ if (isChecked == true)
+ {
+ selectedCount++;
+ }
+ }
+
+ String selected = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ selected.Append(L" (");
+ selected.Append(selectedCount);
+ selected.Append(L")");
+ __pBottomLabel->SetText(selected);
+
+ if (selectedCount > 0)
+ {
+ __pBottomLabel->SetShowState(true);
+ __pListView->SetSize(__pListView->GetSize().width, GetClientAreaBounds().height - __pBottomLabel->GetHeight());
+ }
+ else
+ {
+ __pBottomLabel->SetShowState(false);
+ __pListView->SetSize(__pListView->GetSize().width, GetClientAreaBounds().height);
+ }
+
+ __pBottomLabel->Invalidate(false);
+
+ return E_SUCCESS;
+}
+
+void
+GroupSelectorForm::OnContactsChanged(void)
+{
+ if (__isDonePressed == false)
+ {
+ SceneManager *pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ }
+
+ __isDonePressed = false;
+
+}
+
+void
+GroupSelectorForm::OnCategoriesChanged(void)
+{
+ __pListView->UpdateList();
+
+ for (int index = 0; index < __pListView->GetItemCount(); index++)
+ {
+ bool isChecked = false;
+
+ __pGroupIndexMap->GetValue(__pGroupListPresentationModel->GetCategoryId(index), isChecked);
+
+ if (isChecked == true)
+ {
+ result r = __pListView->SetItemChecked(index, true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+ }
+ else
+ {
+ result r = __pListView->SetItemChecked(index, false);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item unchecked", GetErrorMessage(r));
+
+ __pGroupIndexMap->Add(__pGroupListPresentationModel->GetCategoryId(index), false);
+ }
+ }
+
+ Footer* pFooter = GetFooter();
+
+ int modifiedItems = 0;
+ int itemCount = __pListView->GetItemCount();
+
+ for(int count = 0; count < itemCount; count++)
+ {
+ if(__pGroupListPresentationModel->IsContactInCategory(*__pGroupIdList, count) != __pListView->IsItemChecked(count))
+ {
+ modifiedItems++;
+ }
+ }
+
+ if (pFooter != null)
+ {
+ if(modifiedItems > 0)
+ {
+ pFooter->SetItemEnabled(1, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(1, false);
+ }
+
+ pFooter->Invalidate(true);
+ }
+
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+}
+
+void
+GroupSelectorForm::OnForeground(void)
+{
+ UpdateBottomLabel();
+}
+
+void
+GroupSelectorForm::OnBackground(void)
+{
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtGroupSelectorForm.cpp
+ * @brief This is the implementation file for the GroupSelectorForm class.
+ */
+
+#include <FApp.h>
+#include <FBase.h>
+#include "CtContactsApp.h"
+#include "CtGroupListPresentationModel.h"
+#include "CtGroupSelectorForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::Social;
+
+static const int IDA_FOOTER_DONE = 11;
+static const int IDA_FOOTER_CANCEL = 12;
+static const int IDA_MORE_CREATE_GROUP = 13;
+
+static const int X_LIST_ITEM_TEXT_MARGIN = 36;
+
+GroupSelectorForm::GroupSelectorForm(void)
+ :__isDonePressed(false)
+ ,__pGroupListPresentationModel(null)
+ , __pListView(null)
+ , __pBottomLabel(null)
+ , __pOptionMenu(null)
+ , __pGroupIndexMap(null)
+ , __pGroupIdList(null)
+{
+}
+
+GroupSelectorForm::~GroupSelectorForm(void)
+{
+}
+
+void
+GroupSelectorForm::Initialize(void)
+{
+ Construct(L"IDL_GROUP_SELECTOR_FORM");
+}
+
+result
+GroupSelectorForm::OnInitializing(void)
+{
+ Footer* pFooter = GetFooter();
+ pFooter->SetItemEnabled(1, false);
+ pFooter->AddActionEventListener(*this);
+ SetFormBackEventListener(this);
+
+ __pGroupListPresentationModel = GroupListPresentationModel::GetInstance();
+ __pGroupListPresentationModel->AddGroupChangeListener(*this);
+
+ __pListView = static_cast<ListView*>(GetControl(L"IDC_LISTVIEW", false));
+ __pListView->SetItemProvider(*this);
+ __pListView->AddListViewItemEventListener(*this);
+
+ __pBottomLabel = static_cast<Label*>(GetControl(L"IDC_LABEL", false));
+
+ __pGroupIndexMap = new (std::nothrow) HashMapT<int, bool>();
+ __pGroupIndexMap->Construct(__pGroupListPresentationModel->GetCategoryCount());
+
+ __pOptionMenu = new (std::nothrow) OptionMenu();
+ __pOptionMenu->Construct();
+ __pOptionMenu->AddItem(ResourceManager::GetString(L"IDS_COM_BODY_CREATE"), IDA_MORE_CREATE_GROUP);
+ __pOptionMenu->AddActionEventListener(*this);
+ __pOptionMenu->SetShowState(false);
+
+ return E_SUCCESS;
+}
+
+result
+GroupSelectorForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pGroupIndexMap)
+ {
+ __pGroupIndexMap->RemoveAll();
+ delete __pGroupIndexMap;
+ }
+
+ if (__pGroupIdList)
+ {
+ __pGroupIdList->RemoveAll(true);
+ delete __pGroupIdList;
+ }
+
+ if (__pGroupListPresentationModel != null)
+ {
+ __pGroupListPresentationModel->RemoveGroupChangeListener(*this);
+ }
+
+ delete __pOptionMenu;
+
+ return r;
+}
+
+void
+GroupSelectorForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+ result r = E_SUCCESS;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ ArrayList* pList = null;
+
+ switch (actionId)
+ {
+ case IDA_MORE_CREATE_GROUP:
+ {
+ r = pSceneManager->GoForward(ForwardSceneTransition(IDSCN_GROUP_EDITOR, SCENE_TRANSITION_ANIMATION_TYPE_LEFT));
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to go forward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_FOOTER_DONE:
+ {
+ __isDonePressed = true;
+ pList = new (std::nothrow) ArrayList();
+ pList->Construct(__pGroupIndexMap->GetCount());
+
+ for (int i = 0; i < __pGroupListPresentationModel->GetCategoryCount(); i++)
+ {
+ bool categoryValue = false;
+ RecordId categoryId = __pGroupListPresentationModel->GetCategoryId(i);
+
+ __pGroupIndexMap->GetValue(categoryId, categoryValue);
+
+ if (categoryValue)
+ {
+ pList->Add(*(new (std::nothrow) Integer(categoryId)));
+ }
+ }
+
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT), pList);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ case IDA_FOOTER_CANCEL:
+ {
+ r = pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ TryCatch(r == E_SUCCESS, ,"[%s] Unable to go backward", GetErrorMessage(r));
+ }
+ break;
+ default:
+ break;
+ }
+
+ return;
+
+CATCH:
+ if (pList != null)
+ {
+ pList->RemoveAll(true);
+ delete pList;
+ }
+
+ return;
+}
+
+void
+GroupSelectorForm::OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pContactsApp->AddContactsAppChangeEventListener(*this);
+
+ SetFormMenuEventListener(this);
+
+ if (pArgs == null)
+ {
+ return;
+ }
+
+ if (__pGroupIdList != null)
+ {
+ __pGroupIdList->RemoveAll(true);
+ delete __pGroupIdList;
+ }
+
+ __pGroupIdList = pArgs;
+
+ __pGroupIndexMap->RemoveAll();
+
+ int categoryCount = __pGroupListPresentationModel->GetCategoryCount();
+ for (int index = 0; index < categoryCount; index++)
+ {
+ if (__pGroupListPresentationModel->IsContactInCategory(*__pGroupIdList, index) == true)
+ {
+ __pGroupIndexMap->Add(__pGroupListPresentationModel->GetCategoryId(index), true);
+ }
+ else
+ {
+ __pGroupIndexMap->Add(__pGroupListPresentationModel->GetCategoryId(index), false);
+ }
+ }
+
+ __pListView->UpdateList();
+
+ for (int index = 0; index < __pListView->GetItemCount(); index++)
+ {
+ bool isChecked = false;
+
+ __pGroupIndexMap->GetValue(__pGroupListPresentationModel->GetCategoryId(index), isChecked);
+
+ if (isChecked == true)
+ {
+ result r = __pListView->SetItemChecked(index, true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+ }
+ }
+
+ UpdateBottomLabel();
+}
+
+void
+GroupSelectorForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ pContactsApp->RemoveContactsAppChangeEventListener(*this);
+ SetFormMenuEventListener(null);
+}
+
+void
+GroupSelectorForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ SceneManager *pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+}
+
+void
+GroupSelectorForm::OnFormMenuRequested(Tizen::Ui::Controls::Form& source)
+{
+ __pOptionMenu->SetShowState(true);
+ __pOptionMenu->Show();
+}
+
+Tizen::Ui::Controls::ListItemBase*
+GroupSelectorForm::CreateItem(int index, int itemWidth)
+{
+ result r = E_SUCCESS;
+ String name;
+ Color textColor = Color::GetColor(COLOR_ID_BLACK);
+
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ CustomItem* pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, pContactsApp->GetListItemSingleLineHeight()), LIST_ANNEX_STYLE_MARK);
+
+ name = __pGroupListPresentationModel->GetCategoryName(index);
+
+ r = pItem->AddElement(Rectangle(X_LIST_ITEM_TEXT_MARGIN/2, 0, itemWidth - (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN), pContactsApp->GetListItemSingleLineHeight()), index, name, pContactsApp->GetFontSize(), textColor, textColor, textColor);
+ TryCatch(r == E_SUCCESS, , "[%s] Unable to add element", GetErrorMessage(r));
+
+ return pItem;
+
+CATCH:
+ delete pItem;
+ pItem = null;
+
+ return null;
+}
+
+bool
+GroupSelectorForm::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ delete pItem;
+
+ return true;
+}
+
+int
+GroupSelectorForm::GetItemCount(void)
+{
+ return __pGroupListPresentationModel->GetCategoryCount();
+}
+
+void
+GroupSelectorForm::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
+{
+}
+
+void
+GroupSelectorForm::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
+{
+ result r = E_SUCCESS;
+
+ if (status == LIST_ITEM_STATUS_CHECKED)
+ {
+ r = listView.SetItemChecked(index, true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+
+ r = __pGroupIndexMap->SetValue(__pGroupListPresentationModel->GetCategoryId(index), true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set value", GetErrorMessage(r));
+ }
+ else if (status == LIST_ITEM_STATUS_UNCHECKED)
+ {
+ r = listView.SetItemChecked(index, false);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+
+ r = __pGroupIndexMap->SetValue(__pGroupListPresentationModel->GetCategoryId(index), false);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set value", GetErrorMessage(r));
+ }
+
+ Footer* pFooter = GetFooter();
+
+ int modifiedItems = 0;
+ int itemCount = listView.GetItemCount();
+ for(int count = 0; count < itemCount; count++)
+ {
+ if(__pGroupListPresentationModel->IsContactInCategory(*__pGroupIdList, count) != listView.IsItemChecked(count))
+ {
+ modifiedItems++;
+ }
+ }
+
+ if(modifiedItems > 0)
+ {
+ pFooter->SetItemEnabled(1, true);
+ }
+ else
+ {
+ pFooter->SetItemEnabled(1, false);
+ }
+ pFooter->Invalidate(true);
+ UpdateBottomLabel();
+}
+
+void
+GroupSelectorForm::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
+{
+}
+
+result
+GroupSelectorForm::UpdateBottomLabel(void)
+{
+ int itemCount = __pListView->GetItemCount();
+ int selectedCount = 0;
+ bool isChecked = false;
+
+ for (int index = 0; index < itemCount; index++)
+ {
+ __pGroupIndexMap->GetValue(__pGroupListPresentationModel->GetCategoryId(index), isChecked);
+
+ if (isChecked == true)
+ {
+ selectedCount++;
+ }
+ }
+
+ String selected = ResourceManager::GetString(L"IDS_COM_POP_SELECTED");
+ selected.Append(L" (");
+ selected.Append(selectedCount);
+ selected.Append(L")");
+ __pBottomLabel->SetText(selected);
+
+ if (selectedCount > 0)
+ {
+ __pBottomLabel->SetShowState(true);
+ __pListView->SetSize(__pListView->GetSize().width, GetClientAreaBounds().height - __pBottomLabel->GetHeight());
+ }
+ else
+ {
+ __pBottomLabel->SetShowState(false);
+ __pListView->SetSize(__pListView->GetSize().width, GetClientAreaBounds().height);
+ }
+
+ __pBottomLabel->Invalidate(false);
+
+ return E_SUCCESS;
+}
+
+void
+GroupSelectorForm::OnContactsChanged(void)
+{
+ if (__isDonePressed == false)
+ {
+ SceneManager *pSceneManager = SceneManager::GetInstance();
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ }
+
+ __isDonePressed = false;
+
+}
+
+void
+GroupSelectorForm::OnCategoriesChanged(void)
+{
+ __pListView->UpdateList();
+
+ for (int index = 0; index < __pListView->GetItemCount(); index++)
+ {
+ bool isChecked = false;
+
+ __pGroupIndexMap->GetValue(__pGroupListPresentationModel->GetCategoryId(index), isChecked);
+
+ if (isChecked == true)
+ {
+ result r = __pListView->SetItemChecked(index, true);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item checked", GetErrorMessage(r));
+ }
+ else
+ {
+ result r = __pListView->SetItemChecked(index, false);
+ TryReturnVoid(r == E_SUCCESS, "[%s] Unable to set item unchecked", GetErrorMessage(r));
+
+ __pGroupIndexMap->Add(__pGroupListPresentationModel->GetCategoryId(index), false);
+ }
+ }
+
+ __pListView->Invalidate(true);
+ UpdateBottomLabel();
+}
+
+void
+GroupSelectorForm::OnForeground(void)
+{
+ UpdateBottomLabel();
+}
+
+void
+GroupSelectorForm::OnBackground(void)
+{
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtMainForm.cpp
+ * @brief This is the implementation file for the MainForm class.
+ */
+
+#include <FApp.h>
+#include "CtContactsApp.h"
+#include "CtMainForm.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+static const int IDA_HEADER_CONTACTS = 10;
+static const int IDA_HEADER_GROUPS = 11;
+static const int IDA_HEADER_FAVORITES = 12;
+
+static const wchar_t* IDB_TAB_ICON_CONTACTS = L"C02_tab_icon_contacts.png";
+static const wchar_t* IDB_TAB_ICON_GROUPS = L"C02_tab_icon_groups.png";
+static const wchar_t* IDB_TAB_ICON_FAVORITES = L"C02_tab_icon_favourites.png";
+static const wchar_t* IDB_TAB_ICON_CONTACTS_PRESSED = L"C02_tab_icon_contacts_press.png";
+static const wchar_t* IDB_TAB_ICON_GROUPS_PRESSED = L"C02_tab_icon_groups_press.png";
+static const wchar_t* IDB_TAB_ICON_FAVORITES_PRESSED = L"C02_tab_icon_favourites_press.png";
+
+MainForm::MainForm(void)
+{
+}
+
+MainForm::~MainForm(void)
+{
+}
+
+void
+MainForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER | FORM_STYLE_FOOTER);
+}
+
+result
+MainForm::OnInitializing(void)
+{
+ result r = E_SUCCESS;
+
+ Header* pHeader = GetHeader();
+
+ r = pHeader->SetStyle(HEADER_STYLE_TAB);
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ r = pHeader->SetTabEditModeEnabled(false);
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ HeaderItem headerContacts;
+ headerContacts.Construct(IDA_HEADER_CONTACTS);
+ r = headerContacts.SetText(ResourceManager::GetString(L"IDS_COM_BODY_CONTACTS"));
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ headerContacts.SetIcon(HEADER_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_TAB_ICON_CONTACTS));
+ headerContacts.SetIcon(HEADER_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_TAB_ICON_CONTACTS_PRESSED));
+
+ HeaderItem headerGroups;
+ headerGroups.Construct(IDA_HEADER_GROUPS);
+ r = headerGroups.SetText(ResourceManager::GetString(L"IDS_PB_BODY_GROUPS"));
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ headerGroups.SetIcon(HEADER_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_TAB_ICON_GROUPS));
+ headerGroups.SetIcon(HEADER_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_TAB_ICON_GROUPS_PRESSED));
+
+ HeaderItem headerFavorites;
+ headerFavorites.Construct(IDA_HEADER_FAVORITES);
+ r = headerFavorites.SetText(ResourceManager::GetString(L"IDS_PB_ITAB4_FAVOURITES"));
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ headerFavorites.SetIcon(HEADER_ITEM_STATUS_NORMAL, ResourceManager::GetBitmapN(IDB_TAB_ICON_FAVORITES));
+ headerFavorites.SetIcon(HEADER_ITEM_STATUS_PRESSED, ResourceManager::GetBitmapN(IDB_TAB_ICON_FAVORITES_PRESSED));
+
+ r = pHeader->AddItem(headerContacts);
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+ r = pHeader->AddItem(headerGroups);
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+ r = pHeader->AddItem(headerFavorites);
+ if (r != E_SUCCESS)
+ {
+ return r;
+ }
+
+ SetFormBackEventListener(this);
+
+ __clientBounds = GetClientAreaBoundsF();
+
+ return r;
+}
+
+result
+MainForm::OnTerminating(void)
+{
+ result r = E_SUCCESS;
+
+ return r;
+}
+
+void
+MainForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TryReturnVoid(pContactsApp != null, "Unable to cast UiApp to ContactsApp");
+
+ if (pContactsApp->GetOperationId().Equals(OPERATION_ID_PICK, true))
+ {
+ result r = AppControlProviderManager::GetInstance()->SendAppControlResult(pContactsApp->GetRequestId(), APP_CTRL_RESULT_CANCELED, null);
+ AppLogDebug("[%s] The return result from SendAppControlResult().", GetErrorMessage(r));
+ UiApp::GetInstance()->Terminate();
+ return;
+ }
+
+ SceneManager *pSceneManager = SceneManager::GetInstance();
+ SceneId curSceneId = pSceneManager->GetCurrentSceneId();
+
+ if (curSceneId == IDSCN_CONTACT_LIST || curSceneId == IDSCN_FAVORITE_LIST || curSceneId == IDSCN_GROUP_LIST)
+ {
+ UiApp::GetInstance()->Terminate();
+ }
+ else if (SceneManager::GetInstance()->GoBackward(BackwardSceneTransition()) != E_SUCCESS)
+ {
+ UiApp::GetInstance()->Terminate();
+ }
+}
+
+FloatRectangle
+MainForm::GetClientBounds()
+{
+
+ return __clientBounds;
+}
\ No newline at end of file
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtMainFrame.cpp
+ * @brief This is the implementation file for the MainFrame class.
+ */
+
+#include "CtContactsApp.h"
+#include "CtMainFrame.h"
+#include "CtSceneRegister.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Ui::Scenes;
+
+MainFrame::MainFrame(void)
+{
+}
+
+MainFrame::~MainFrame(void)
+{
+}
+
+result
+MainFrame::OnInitializing(void)
+{
+ result r = SceneRegister::RegisterAllScenes();
+ TryReturn(r == E_SUCCESS, r, "[%s] Scene registering failed", GetErrorMessage(r));
+
+ ContactsApp* pApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ r = SceneManager::GetInstance()->GoForward(ForwardSceneTransition(pApp->GetInitialSceneId()), pApp->GetArguments());
+ TryReturn(r == E_SUCCESS, r, "[%s] Scene transition failed", GetErrorMessage(r));
+
+ return r;
+}
+
+result
+MainFrame::OnTerminating(void)
+{
+ return E_SUCCESS;
+}
+
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtPanelFactory.cpp
+ * @brief This is the implementation file for the PanelFactory class.
+ */
+
+#include "CtContactListEditorPanel.h"
+#include "CtContactListPanel.h"
+#include "CtFavoriteListEditorPanel.h"
+#include "CtFavoriteListPanel.h"
+#include "CtGroupListPanel.h"
+#include "CtGroupListEditorPanel.h"
+#include "CtPanelFactory.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+
+PanelFactory::PanelFactory(void)
+{
+}
+
+PanelFactory::~PanelFactory(void)
+{
+}
+
+Tizen::Ui::Controls::Panel*
+PanelFactory::CreatePanelN(const Tizen::Base::String& panelId, const Tizen::Ui::Scenes::SceneId& sceneId)
+{
+ result r = E_SUCCESS;
+
+ Panel* pNewPanel= null;
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ if (panelId == IDC_PANEL_CONTACT_LIST)
+ {
+ ContactListPanel* pPanel = new (std::nothrow) ContactListPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+ else if (panelId == IDC_PANEL_CONTACT_LIST_EDITOR)
+ {
+ ContactListEditorPanel* pPanel = new (std::nothrow) ContactListEditorPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+ else if (panelId == IDC_PANEL_GROUP_LIST)
+ {
+ GroupListPanel* pPanel = new (std::nothrow) GroupListPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+ else if (panelId == IDC_PANEL_GROUP_LIST_EDITOR)
+ {
+ GroupListEditorPanel* pPanel = new (std::nothrow) GroupListEditorPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+ else if (panelId == IDC_PANEL_FAVORITE_LIST)
+ {
+ FavoriteListPanel* pPanel = new (std::nothrow) FavoriteListPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+ else if (panelId == IDC_PANEL_FAVORITE_LIST_EDITOR)
+ {
+ FavoriteListEditorPanel* pPanel = new (std::nothrow) FavoriteListEditorPanel();
+ pPanel->Initialize();
+
+ r = pSceneManager->AddSceneEventListener(sceneId, *pPanel);
+ TryCatch(r == E_SUCCESS, delete pPanel, "[%s] Unable to add scene event listener", GetErrorMessage(r));
+
+ pNewPanel = pPanel;
+ }
+
+ return pNewPanel;
+
+CATCH:
+ return null;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtResourceManager.cpp
+ * @brief This is the implementation file for the ResourceManager class.
+ */
+
+#include <FApp.h>
+#include <FBase.h>
+#include <FGraphics.h>
+#include "CtResourceManager.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+
+Tizen::Graphics::Bitmap*
+ResourceManager::GetBitmapN(const Tizen::Base::String& id)
+{
+ AppResource* pAppResource = Application::GetInstance()->GetAppResource();
+ if (pAppResource == null)
+ {
+ AppLog("Unable to get app resource.");
+ return null;
+ }
+
+ return pAppResource->GetBitmapN(id);
+}
+
+Tizen::Base::String
+ResourceManager::GetString(const Tizen::Base::String& id)
+{
+ AppResource* pAppResource = Application::GetInstance()->GetAppResource();
+ if (pAppResource == null)
+ {
+ AppLog("Unable to get app resource.");
+ return null;
+ }
+
+ String str;
+ pAppResource->GetString(id, str);
+ return str;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtSceneRegister.cpp
+ * @brief This is the implementation file for the SceneRegister class.
+ */
+
+#include <FUi.h>
+#include "CtFormFactory.h"
+#include "CtPanelFactory.h"
+#include "CtSceneRegister.h"
+#include "CtTypes.h"
+
+using namespace Tizen::Ui::Scenes;
+
+SceneRegister::SceneRegister()
+{
+}
+
+SceneRegister::~SceneRegister()
+{
+}
+
+result
+SceneRegister::RegisterAllScenes(void)
+{
+ result r = E_SUCCESS;
+
+ static const wchar_t* PANEL_BLANK = L"";
+ static FormFactory formFactory;
+ static PanelFactory panelFactory;
+
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+ r |= pSceneManager->RegisterFormFactory(formFactory);
+ r |= pSceneManager->RegisterPanelFactory(panelFactory);
+ r |= pSceneManager->RegisterScene(IDSCN_CONTACT_LIST, IDC_FORM_MAIN, IDC_PANEL_CONTACT_LIST);
+ r |= pSceneManager->RegisterScene(IDSCN_CONTACT_LIST_EDITOR, IDC_FORM_MAIN, IDC_PANEL_CONTACT_LIST_EDITOR);
+ r |= pSceneManager->RegisterScene(IDSCN_CONTACT_DETAILS, IDC_FORM_CONTACT_DETAILS, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_CONTACT_EDITOR, IDC_FORM_CONTACT_EDITOR, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_CONTACT_SELECTOR, IDC_FORM_CONTACT_SELECTOR, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_LIST, IDC_FORM_MAIN, IDC_PANEL_GROUP_LIST);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_LIST_EDITOR, IDC_FORM_MAIN, IDC_PANEL_GROUP_LIST_EDITOR);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_SELECTOR, IDC_FORM_GROUP_SELECTOR, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_EDITOR, IDC_FORM_GROUP_EDITOR, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_CONTACT_LIST, IDC_FORM_GROUP_CONTACT_LIST, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_GROUP_CONTACT_LIST_EDITOR, IDC_FORM_GROUP_CONTACT_LIST_EDITOR, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_SETTINGS, IDC_FORM_SETTINGS, PANEL_BLANK);
+ r |= pSceneManager->RegisterScene(IDSCN_FAVORITE_LIST, IDC_FORM_MAIN, IDC_PANEL_FAVORITE_LIST);
+ r |= pSceneManager->RegisterScene(IDSCN_FAVORITE_LIST_EDITOR, IDC_FORM_MAIN, IDC_PANEL_FAVORITE_LIST_EDITOR);
+
+ return r;
+}
+
+
+
+
+
+
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtSearchListEventListener.cpp
+ * @brief This is the implementation file for the SearchListEventListener class.
+ */
+
+#include "CtContactListPresentationModel.h"
+#include "CtContactsApp.h"
+#include "CtResourceManager.h"
+#include "CtSearchListEventListener.h"
+#include "CtSearchListItem.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+static const int IDA_LIST_ELEMENT_DELETE = 40;
+static const int IDA_LIST_ELEMENT_CALL = 41;
+static const int IDA_LIST_ELEMENT_MESSAGE = 42;
+static const int IDA_LIST_ELEMENT_VIDEO_CALL = 43;
+
+
+static const unsigned int COLOR_DELETE_ELEMENT_NORMAL = Color32<208, 82, 82>::Value;
+static const unsigned int COLOR_DELETE_ELEMENT_PRESSED = Color32<194, 71, 71>::Value;
+static const unsigned int COLOR_DELETE_ELEMENT_TEXT = Color32<248, 246, 239>::Value;
+
+static const int H_GROUP_ITEM = 76;
+static const int H_ITEM = 112;
+static const int X_LIST_ITEM_TEXT_MARGIN = 32;
+
+SearchListEventListener::SearchListEventListener(ListAnnexStyle itemAnnexStyle, ContactListPresentationModel* pContactListPresentationModel)
+: __pContactListPresentationModel(pContactListPresentationModel)
+, __itemAnnexStyle(itemAnnexStyle)
+, __showDeleteOption(true)
+{
+}
+
+SearchListEventListener::~SearchListEventListener(void)
+{
+}
+
+int
+SearchListEventListener::GetGroupCount(void)
+{
+ if (__pContactListPresentationModel->GetSearchedContactCount() != 0)
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+int
+SearchListEventListener::GetItemCount(int groupIndex)
+{
+ return __pContactListPresentationModel->GetSearchedContactCount();
+}
+
+Tizen::Ui::Controls::ListItemBase*
+SearchListEventListener::CreateItem(int groupIndex, int itemIndex, int itemWidth)
+{
+ String name;
+ String phoneNumber;
+ Bitmap* pThumbnail = null;
+ CustomItem* pItem = null;
+ SearchListItem* pCustomElement = null;
+ int searchItemWidth = itemWidth;
+ int groupItemMainIndex = 0;
+ int ItemMainIndex = 0;
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (__itemAnnexStyle == LIST_ANNEX_STYLE_MARK)
+ {
+ searchItemWidth -= (ListItemBase::GetAnnexWidth(LIST_ANNEX_STYLE_MARK) + X_LIST_ITEM_TEXT_MARGIN);
+ }
+ __pContactListPresentationModel->GetSearchedContactItemInfo(itemIndex, name, pThumbnail);
+
+ pItem = new (std::nothrow) CustomItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM + pContactsApp->GetFontHeightOffset()), __itemAnnexStyle);
+
+ pCustomElement = new (std::nothrow) SearchListItem(name, pThumbnail, __pContactListPresentationModel->GetSearchText());
+
+ pItem->AddElement(Rectangle(0, 0, searchItemWidth, H_ITEM + pContactsApp->GetFontHeightOffset()), 0, *(static_cast<ICustomElement *>(pCustomElement)));
+
+
+ if (pContactsApp->GetOperationId().IsEmpty() == false || __itemAnnexStyle == LIST_ANNEX_STYLE_MARK)
+ {
+ return pItem;
+ }
+
+ __pContactListPresentationModel->GetItemMainIndex(itemIndex, groupItemMainIndex, ItemMainIndex);
+
+ bool isCallEnabled = true;
+ bool isMessageEnabled = true;
+ if (__pContactListPresentationModel->GetDefaultPhoneNumber(groupItemMainIndex, ItemMainIndex).IsEmpty())
+ {
+ isCallEnabled = false;
+ }
+
+ if ((__pContactListPresentationModel->GetDefaultPhoneNumber(groupItemMainIndex, ItemMainIndex).IsEmpty()) && (__pContactListPresentationModel->GetDefaultEmail(groupItemMainIndex, ItemMainIndex).IsEmpty()))
+ {
+ isMessageEnabled = false;
+ }
+
+ ListContextItem* pItemContext = new (std::nothrow) ListContextItem();
+ pItemContext->Construct();
+ pItemContext->AddElement(IDA_LIST_ELEMENT_CALL, ResourceManager::GetString(L"IDS_COM_BODY_CALL"), isCallEnabled);
+ pItemContext->AddElement(IDA_LIST_ELEMENT_MESSAGE, ResourceManager::GetString(L"IDS_COM_BODY_MESSAGE"), isMessageEnabled);
+#if __SUPPORT_VIDEO_CALL
+ pItemContext->AddElement(IDA_LIST_ELEMENT_VIDEO_CALL, ResourceManager::GetString(L"IDS_COM_BODY_VIDEO_CALL"), isCallEnabled);
+#endif
+ if (__showDeleteOption == true)
+ {
+ pItemContext->AddElement(IDA_LIST_ELEMENT_DELETE, ResourceManager::GetString(L"IDS_COM_SK_DELETE"));
+ }
+ pItemContext->SetElementBackgroundColor(IDA_LIST_ELEMENT_DELETE, LIST_CONTEXT_ITEM_ELEMENT_STATUS_NORMAL, COLOR_DELETE_ELEMENT_NORMAL);
+ pItemContext->SetElementBackgroundColor(IDA_LIST_ELEMENT_DELETE, LIST_CONTEXT_ITEM_ELEMENT_STATUS_PRESSED, COLOR_DELETE_ELEMENT_PRESSED);
+ pItemContext->SetElementTextColor(IDA_LIST_ELEMENT_DELETE, LIST_CONTEXT_ITEM_ELEMENT_STATUS_NORMAL, COLOR_DELETE_ELEMENT_TEXT);
+
+ pItem->SetContextItem(pItemContext);
+
+ return pItem;
+}
+
+Tizen::Ui::Controls::GroupItem*
+SearchListEventListener::CreateGroupItem(int groupIndex, int itemWidth)
+{
+ GroupItem* pItem = new (std::nothrow) GroupItem();
+ pItem->Construct(Dimension(itemWidth, H_GROUP_ITEM));
+ pItem->SetElement(ResourceManager::GetString("IDS_COM_BODY_CONTACTS") + L" (" + Integer::ToString(__pContactListPresentationModel->GetSearchedContactCount()) + L")");
+
+ return pItem;
+}
+
+bool
+SearchListEventListener::DeleteItem(int groupIndex, int itemIndex, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
+{
+ CustomItem* pCustomItem = static_cast<CustomItem *>(pItem);
+ pCustomItem->RemoveAllElements();
+
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+bool
+SearchListEventListener::DeleteGroupItem(int groupIndex, Tizen::Ui::Controls::GroupItem* pItem, int itemWidth)
+{
+ delete pItem;
+ pItem = null;
+
+ return true;
+}
+
+void
+SearchListEventListener::SetShowDeleteOption(bool showDeleteOption)
+{
+ __showDeleteOption = showDeleteOption;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtSearchListItem.cpp
+ * @brief This is the implementation file for the SearchListItem class.
+ */
+
+#include "CtContactsApp.h"
+#include "CtSearchListItem.h"
+
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui::Controls;
+
+static const int W_THUMBNAIL_AREA = 134;
+static const int Y_THUMBNAIL = 2;
+static const int W_THUMBNAIL = 108;
+static const int H_THUMBNAIL = 108;
+static const int X_TEXT = 26;
+static const int H_TEXT = 80;
+static const int Y_TEXT = 16;
+
+static const unsigned int COLOR_TEXT_NORMAL = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_TEXT_PRESSED = Color32<255, 255, 255>::Value;
+static const unsigned int COLOR_SEARCHED_TEXT = Color32<59, 115, 182>::Value;
+
+SearchListItem::SearchListItem(const Tizen::Base::String& name, Tizen::Graphics::Bitmap* pThumbnail, const Tizen::Base::String& searchedText)
+: __name(name)
+, __searchedText(searchedText)
+, __pThumbnail(pThumbnail)
+{
+}
+
+SearchListItem::~SearchListItem(void)
+{
+}
+
+Tizen::Graphics::EnrichedText*
+SearchListItem::GetDisplayEnrichedTextN(const Tizen::Graphics::Rectangle& rect, const Tizen::Base::String& text, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus, bool isSearchingTextVisible)
+{
+ int searchedTextIndex = 0;
+ String preSearchedText;
+ String searchedText;
+ String postSearchedText;
+ String displayNameText;
+ EnrichedText* pEnrichedText = null;
+ TextElement* pSearchedTextElement = null;
+ TextElement* pPreNameTextElement = null;
+ TextElement* pPostNameTextElement = null;
+ Color textColor;
+ Color searchedTextColor;
+ Font font;
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ font.Construct(FONT_STYLE_PLAIN, pContactsApp->GetFontSize());
+
+ pEnrichedText = new (std::nothrow) EnrichedText();
+ pEnrichedText->Construct(Dimension(rect.width - (rect.x + X_TEXT + W_THUMBNAIL_AREA), rect.height));
+ pEnrichedText->SetVerticalAlignment(TEXT_ALIGNMENT_MIDDLE);
+ pEnrichedText->SetTextWrapStyle(TEXT_WRAP_CHARACTER_WRAP);
+ pEnrichedText->SetTextAbbreviationEnabled(true);
+
+ if (itemStatus == LIST_ITEM_DRAWING_STATUS_NORMAL)
+ {
+ textColor = COLOR_TEXT_NORMAL;
+ searchedTextColor = COLOR_SEARCHED_TEXT;
+ }
+ else if (itemStatus == LIST_ITEM_DRAWING_STATUS_PRESSED)
+ {
+ textColor = COLOR_TEXT_PRESSED;
+ searchedTextColor = COLOR_TEXT_PRESSED;
+ }
+
+ if (isSearchingTextVisible == false)
+ {
+ if (text.GetLength() > 0)
+ {
+ pSearchedTextElement = new (std::nothrow) TextElement();
+ pSearchedTextElement->Construct(text);
+ pSearchedTextElement->SetTextColor(textColor);
+ pSearchedTextElement->SetFont(font);
+ pEnrichedText->Add(*pSearchedTextElement);
+ }
+
+ return pEnrichedText;
+ }
+
+ text.ToLowerCase(displayNameText);
+ displayNameText.IndexOf(__searchedText, 0, searchedTextIndex);
+
+ if (searchedTextIndex == -1)
+ {
+ preSearchedText = text;
+ }
+ else
+ {
+ text.SubString(0, searchedTextIndex, preSearchedText);
+ text.SubString(searchedTextIndex, __searchedText.GetLength(), searchedText);
+ text.SubString(searchedTextIndex + __searchedText.GetLength(), text.GetLength() - (searchedTextIndex + __searchedText.GetLength()), postSearchedText);
+ }
+
+ if (preSearchedText.GetLength() > 0)
+ {
+ pPreNameTextElement = new (std::nothrow) TextElement();
+ pPreNameTextElement->Construct(preSearchedText);
+ pPreNameTextElement->SetTextColor(textColor);
+ pPreNameTextElement->SetFont(font);
+
+ pEnrichedText->Add(*pPreNameTextElement);
+ }
+
+ if (searchedText.GetLength() > 0)
+ {
+ pSearchedTextElement = new (std::nothrow) TextElement();
+ pSearchedTextElement->Construct(searchedText);
+ pSearchedTextElement->SetTextColor(searchedTextColor);
+ pSearchedTextElement->SetFont(font);
+
+ pEnrichedText->Add(*pSearchedTextElement);
+ }
+
+ if (postSearchedText.GetLength() > 0)
+ {
+ pPostNameTextElement = new (std::nothrow) TextElement();
+ pPostNameTextElement->Construct(postSearchedText);
+ pPostNameTextElement->SetTextColor(textColor);
+ pPostNameTextElement->SetFont(font);
+
+ pEnrichedText->Add(*pPostNameTextElement);
+ }
+
+ return pEnrichedText;
+}
+
+bool
+SearchListItem::OnDraw(Tizen::Graphics::Canvas& canvas, const Tizen::Graphics::Rectangle& rect, Tizen::Ui::Controls::ListItemDrawingStatus itemStatus)
+{
+ result r = E_SUCCESS;
+ bool ret = true;
+ EnrichedText* pEnrichedText = null;
+ Rectangle enrichedTextBounds = rect;
+ Font font;
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ font.Construct(FONT_STYLE_PLAIN, pContactsApp->GetFontSize());
+ canvas.SetFont(font);
+
+ enrichedTextBounds.height = H_TEXT + pContactsApp->GetFontHeightOffset();
+ pEnrichedText = GetDisplayEnrichedTextN(enrichedTextBounds, __name, itemStatus);
+
+ r = canvas.DrawText(Point(rect.x + X_TEXT, Y_TEXT), *pEnrichedText);
+ TryCatch(r == E_SUCCESS, ret = false, "Unable to draw text.");
+
+ if (__pThumbnail != null)
+ {
+ r = canvas.DrawBitmap(Rectangle(rect.width - W_THUMBNAIL_AREA, (pContactsApp->GetListItemSingleLineHeight() - H_THUMBNAIL)/2 , W_THUMBNAIL, H_THUMBNAIL), *__pThumbnail);
+ TryCatch(r == E_SUCCESS, ret = false, "Unable to draw a thumbnail.");
+ }
+
+CATCH:
+ if (pEnrichedText != null)
+ {
+ pEnrichedText->RemoveAllTextElements(true);
+ delete pEnrichedText;
+ }
+
+ return ret;
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtSettingsForm.cpp
+ * @brief This is the implementation file for the SettingsForm class.
+ */
+
+#include <FApp.h>
+#include <FSystem.h>
+#include "CtContactsApp.h"
+#include "CtResourceManager.h"
+#include "CtSceneRegister.h"
+#include "CtSettingsForm.h"
+
+using namespace Tizen::App;
+using namespace Tizen::Base;
+using namespace Tizen::Graphics;
+using namespace Tizen::Ui;
+using namespace Tizen::Ui::Controls;
+using namespace Tizen::Ui::Scenes;
+using namespace Tizen::System;
+
+static const int H_ITEM_MAIN = 140;
+static const int H_ITEM_SUB = 112;
+static const int X_TEXT = 26;
+static const int Y_TEXT_ITEM_TITLE = 10;
+static const int H_TEXT_ITEM_TITLE = 64;
+static const int Y_TEXT_ITEM_SELECTED = 80;
+static const int H_TEXT_ITEM_SELECTED = 42;
+static const int Y_SUB_TEXT = 30;
+static const int W_EXPAND = 72;
+static const int W_EXPAND_MARGIN = 20;
+static const int INDEX_FIRST_NAME = 1;
+static const int INDEX_LAST_NAME = 2;
+
+static const unsigned int COLOR_TEXT_ITEM_TITLE = Color32<0, 0, 0>::Value;
+static const unsigned int COLOR_TEXT_ITEM_SELECTED = Color32<59, 115, 182>::Value;
+static const unsigned int COLOR_ITEM_PRESSED = Color32<248, 246, 239>::Value;
+
+static const int FONT_SIZE_ITEM_SELECTED = 32;
+
+static const wchar_t* IDB_EXPAND_OPENED = L"00_button_expand_opened.png";
+static const wchar_t* IDB_EXPAND_CLOSED = L"00_button_expand_closed.png";
+
+static const wchar_t* SETTING_KEY_FIRST_NAME = L"http://tizen.org/setting/contacts.order.firstname";
+static const wchar_t* SETTING_LABEL_TITLE = L"SettingLabelTitle";
+static const wchar_t* SETTING_LABEL_VALUE = L"SettingLabelValue";
+static const wchar_t* SETTING_TABLEVIEW_ITEM = L"SettingTableViewItem";
+
+SettingsForm::SettingsForm(void)
+: __pTableView(null)
+, __isExpanded(false)
+, __isFirstNameFirst(false)
+{
+}
+
+SettingsForm::~SettingsForm(void)
+{
+}
+
+void
+SettingsForm::Initialize(void)
+{
+ Construct(FORM_STYLE_NORMAL | FORM_STYLE_INDICATOR | FORM_STYLE_HEADER);
+}
+
+result
+SettingsForm::OnInitializing(void)
+{
+ Header* pHeader = GetHeader();
+ pHeader->SetTitleText(ResourceManager::GetString(L"IDS_COM_BODY_SETTINGS"));
+ SettingInfo::AddSettingEventListener(*this);
+
+ SetFormBackEventListener(this);
+
+ __pTableView = new (std::nothrow) TableView();
+ __pTableView->Construct(Rectangle(0, 0, GetClientAreaBounds().width, GetClientAreaBounds().height), true, TABLE_VIEW_SCROLL_BAR_STYLE_NONE);
+ __pTableView->AddTableViewItemEventListener(*this);
+ __pTableView->SetItemProvider(this);
+
+ AddControl(__pTableView);
+
+ SettingInfo::GetValue(SETTING_KEY_FIRST_NAME, __isFirstNameFirst);
+
+ return E_SUCCESS;
+}
+
+result
+SettingsForm::OnTerminating(void)
+{
+ SettingInfo::RemoveSettingEventListener(*this);
+ return E_SUCCESS;
+}
+
+void
+SettingsForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
+{
+}
+
+void
+SettingsForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (pContactsApp->GetOperationId() == OPERATION_ID_CONFIGURE)
+ {
+ UiApp* pApp = UiApp::GetInstance();
+ pApp->Terminate();
+ }
+ else
+ {
+ SceneManager* pSceneManager = SceneManager::GetInstance();
+
+ pSceneManager->GoBackward(BackwardSceneTransition(SCENE_TRANSITION_ANIMATION_TYPE_RIGHT));
+ }
+}
+
+int
+SettingsForm::GetItemCount(void)
+{
+ return 1;
+}
+
+Tizen::Ui::Controls::TableViewItem*
+SettingsForm::CreateItem(int itemIndex, int itemWidth)
+{
+ TableViewItem* pItem = null;
+
+ ContactsApp *pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+
+ if (itemIndex == 0)
+ {
+ pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM_MAIN + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_NORMAL);
+ pItem->AddTouchEventListener(*this);
+ pItem->AddKeyEventListener(*this);
+ pItem->SetName(SETTING_TABLEVIEW_ITEM);
+
+ Label* pTitle = new (std::nothrow) Label();
+ pTitle->Construct(Rectangle(X_TEXT, Y_TEXT_ITEM_TITLE, itemWidth - W_EXPAND, H_TEXT_ITEM_TITLE + pContactsApp->GetFontHeightOffset()), ResourceManager::GetString(L"IDS_PB_BODY_ORDER_OF_DISPLAY_NAME"));
+ pTitle->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pTitle->SetTextColor(COLOR_TEXT_ITEM_TITLE);
+ pTitle->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+ pTitle->AddTouchEventListener(*this);
+ pTitle->SetName(SETTING_LABEL_TITLE);
+
+ String selectedItem;
+ if (__isFirstNameFirst)
+ {
+ selectedItem = ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME_FIRST");
+ }
+ else
+ {
+ selectedItem = ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME_FIRST_ABB");
+ }
+
+ Label* pValue = new (std::nothrow) Label();
+ pValue->Construct(Rectangle(X_TEXT, Y_TEXT_ITEM_SELECTED + pContactsApp->GetFontHeightOffset(), itemWidth - W_EXPAND, H_TEXT_ITEM_SELECTED ), selectedItem);
+ pValue->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pValue->SetTextColor(COLOR_TEXT_ITEM_SELECTED);
+ pValue->SetTextConfig(FONT_SIZE_ITEM_SELECTED, LABEL_TEXT_STYLE_NORMAL);
+ pValue->AddTouchEventListener(*this);
+ pValue->SetName(SETTING_LABEL_VALUE);
+
+ Label* pExpand = new (std::nothrow) Label();
+ pExpand->Construct(Rectangle(itemWidth - W_EXPAND - W_EXPAND_MARGIN, (H_ITEM_MAIN + pContactsApp->GetFontHeightOffset() - W_EXPAND) / 2, W_EXPAND, W_EXPAND), L"");
+ Bitmap* pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_CLOSED);
+ if (pBitmap != null)
+ {
+ pExpand->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+
+ pItem->AddControl(pTitle);
+ pItem->AddControl(pValue);
+ pItem->AddControl(pExpand);
+ }
+ else
+ {
+ if (__isExpanded)
+ {
+ String nameOrder;
+ if (itemIndex == INDEX_FIRST_NAME)
+ {
+ nameOrder = ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME_FIRST");
+ }
+ else if (itemIndex == INDEX_LAST_NAME)
+ {
+ nameOrder = ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME_FIRST_ABB");
+ }
+
+ pItem = new (std::nothrow) TableViewItem();
+ pItem->Construct(Dimension(itemWidth, H_ITEM_SUB + pContactsApp->GetFontHeightOffset()), TABLE_VIEW_ANNEX_STYLE_RADIO);
+
+ Label* pOrder = new (std::nothrow) Label();
+ pOrder->Construct(Rectangle(0, Y_SUB_TEXT, itemWidth - W_EXPAND - 2 * W_EXPAND_MARGIN, H_TEXT_ITEM_TITLE + pContactsApp->GetFontHeightOffset()), nameOrder);
+ pOrder->SetTextHorizontalAlignment(ALIGNMENT_LEFT);
+ pOrder->SetTextColor(COLOR_TEXT_ITEM_TITLE);
+ pOrder->SetTextConfig(pContactsApp->GetFontSize(), LABEL_TEXT_STYLE_NORMAL);
+
+ pItem->AddControl(pOrder);
+ }
+ }
+
+ return pItem;
+}
+
+bool
+SettingsForm::DeleteItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ delete pItem;
+ return true;
+}
+
+void
+SettingsForm::UpdateItem(int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem)
+{
+ Label* pOrder = static_cast<Label*>(pItem->GetControl(1));
+ String selectedItem;
+ if (__isFirstNameFirst)
+ {
+ selectedItem = ResourceManager::GetString(L"IDS_PB_BODY_FIRST_NAME_FIRST");
+ }
+ else
+ {
+ selectedItem = ResourceManager::GetString(L"IDS_PB_BODY_LAST_NAME_FIRST_ABB");
+ }
+ pOrder->SetText(selectedItem);
+
+ Label* pExpand = static_cast<Label*>(pItem->GetControl(2));
+ Bitmap* pBitmap = null;
+ if (__isExpanded)
+ {
+ pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_OPENED);
+ }
+ else
+ {
+ pBitmap = ResourceManager::GetBitmapN(IDB_EXPAND_CLOSED);
+ }
+
+ if (pBitmap != null)
+ {
+ pExpand->SetBackgroundBitmap(*pBitmap);
+ delete pBitmap;
+ }
+
+ pOrder->Invalidate(false);
+ pExpand->Invalidate(false);
+}
+
+int
+SettingsForm::GetDefaultItemHeight(void)
+{
+ return H_ITEM_MAIN;
+}
+
+void
+SettingsForm::OnTableViewItemStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewItem* pItem, Tizen::Ui::Controls::TableViewItemStatus status)
+{
+ result r = E_SUCCESS;
+
+ if (itemIndex == 0)
+ {
+ __isExpanded ? __isExpanded = false : __isExpanded = true;
+
+ if (__isExpanded)
+ {
+ __pTableView->RefreshItem(INDEX_FIRST_NAME, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+ __pTableView->RefreshItem(INDEX_LAST_NAME, TABLE_VIEW_REFRESH_TYPE_ITEM_ADD);
+ }
+ else
+ {
+ __pTableView->RefreshItem(INDEX_LAST_NAME, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ __pTableView->RefreshItem(INDEX_FIRST_NAME, TABLE_VIEW_REFRESH_TYPE_ITEM_REMOVE);
+ }
+ }
+ else if (itemIndex == INDEX_FIRST_NAME)
+ {
+ __isFirstNameFirst = true;
+ r = SettingInfo::SetValue(SETTING_KEY_FIRST_NAME, true);
+ }
+ else if (itemIndex == INDEX_LAST_NAME)
+ {
+ __isFirstNameFirst = false;
+ r = SettingInfo::SetValue(SETTING_KEY_FIRST_NAME, false);
+ }
+
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+ if (__isFirstNameFirst == true)
+ {
+ __pTableView->SetItemChecked(INDEX_FIRST_NAME, true);
+ __pTableView->SetItemChecked(INDEX_LAST_NAME, false);
+ }
+ else
+ {
+ __pTableView->SetItemChecked(INDEX_FIRST_NAME, false);
+ __pTableView->SetItemChecked(INDEX_LAST_NAME, true);
+ }
+
+ __pTableView->Invalidate(true);
+}
+
+void
+SettingsForm::OnTableViewContextItemActivationStateChanged(Tizen::Ui::Controls::TableView& tableView, int itemIndex, Tizen::Ui::Controls::TableViewContextItem* pContextItem, bool activated)
+{
+}
+
+void
+SettingsForm::OnTableViewItemReordered(Tizen::Ui::Controls::TableView& tableView, int itemIndexFrom, int itemIndexTo)
+{
+}
+
+void
+SettingsForm::OnSettingChanged(Tizen::Base::String &key)
+{
+ ContactsApp* pContactsApp = static_cast<ContactsApp*>(ContactsApp::GetInstance());
+ TryReturnVoid(pContactsApp != null, "Unable to get ContactsApp instance.");
+
+ if (key.Equals(SETTING_KEY_NAME_ORDER, false) == true && pContactsApp->GetAppUiState() == APP_UI_STATE_BACKGROUND)
+ {
+ AppLogDebug("APP_UI_STATE_BACKGROUND");
+ SettingInfo::GetValue(SETTING_KEY_FIRST_NAME, __isFirstNameFirst);
+ __pTableView->RefreshItem(0, TABLE_VIEW_REFRESH_TYPE_ITEM_MODIFY);
+
+ if (__isFirstNameFirst == true)
+ {
+ __pTableView->SetItemChecked(INDEX_FIRST_NAME, true);
+ __pTableView->SetItemChecked(INDEX_LAST_NAME, false);
+ }
+ else
+ {
+ __pTableView->SetItemChecked(INDEX_FIRST_NAME, false);
+ __pTableView->SetItemChecked(INDEX_LAST_NAME, true);
+ }
+
+ __pTableView->Invalidate(true);
+ }
+}
+
+void
+SettingsForm::OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ TableViewItem* pItem = null;
+ if (source.GetName().Equals(SETTING_TABLEVIEW_ITEM, true))
+ {
+ pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(SETTING_LABEL_TITLE, true) || source.GetName().Equals(SETTING_LABEL_VALUE, true))
+ {
+ pItem = static_cast<TableViewItem*>(source.GetParent());
+ }
+
+ if (pItem != null)
+ {
+ Label* pLabelValue = static_cast<Label*>(pItem->GetControl(SETTING_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_PRESSED));
+ pLabelValue->Invalidate(true);
+ }
+}
+
+void
+SettingsForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ TableViewItem* pItem = null;
+ if (source.GetName().Equals(SETTING_TABLEVIEW_ITEM, true))
+ {
+ pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(SETTING_LABEL_TITLE, true) || source.GetName().Equals(SETTING_LABEL_VALUE, true))
+ {
+ pItem = static_cast<TableViewItem*>(source.GetParent());
+ }
+
+ if (pItem != null)
+ {
+ Label* pLabelValue = static_cast<Label*>(pItem->GetControl(SETTING_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_TEXT_ITEM_SELECTED));
+ pLabelValue->Invalidate(true);
+ }
+}
+
+void
+SettingsForm::OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ TableViewItem* pItem = null;
+ if (source.GetName().Equals(SETTING_TABLEVIEW_ITEM, true))
+ {
+ pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(SETTING_LABEL_TITLE, true) || source.GetName().Equals(SETTING_LABEL_VALUE, true))
+ {
+ pItem = static_cast<TableViewItem*>(source.GetParent());
+ }
+
+ if (pItem != null)
+ {
+ Label* pLabelValue = static_cast<Label*>(pItem->GetControl(SETTING_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_TEXT_ITEM_SELECTED));
+ pLabelValue->Invalidate(true);
+ }
+}
+
+void
+SettingsForm::OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+SettingsForm::OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+}
+
+void
+SettingsForm::OnTouchCanceled(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo)
+{
+ TableViewItem* pItem = null;
+ if (source.GetName().Equals(SETTING_TABLEVIEW_ITEM, true))
+ {
+ pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ }
+ else if (source.GetName().Equals(SETTING_LABEL_TITLE, true) || source.GetName().Equals(SETTING_LABEL_VALUE, true))
+ {
+ pItem = static_cast<TableViewItem*>(source.GetParent());
+ }
+
+ if (pItem != null)
+ {
+ Label* pLabelValue = static_cast<Label*>(pItem->GetControl(SETTING_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_TEXT_ITEM_SELECTED));
+ pLabelValue->Invalidate(true);
+ }
+}
+
+void
+SettingsForm:: OnKeyPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+ TableViewItem* pItem = null;
+ if (source.GetName().Equals(SETTING_TABLEVIEW_ITEM, true))
+ {
+ pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ }
+
+ if (pItem != null && keyCode == KEY_ENTER)
+ {
+ Label* pLabelValue = static_cast<Label*>(pItem->GetControl(SETTING_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_ITEM_PRESSED));
+ pLabelValue->Invalidate(true);
+ }
+}
+
+void
+SettingsForm:: OnKeyReleased(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+ TableViewItem* pItem = null;
+ if (source.GetName().Equals(SETTING_TABLEVIEW_ITEM, true))
+ {
+ pItem = static_cast<TableViewItem*>(&(const_cast<Control&>(source)));
+ }
+
+ if (pItem != null && keyCode == KEY_ENTER)
+ {
+ Label* pLabelValue = static_cast<Label*>(pItem->GetControl(SETTING_LABEL_VALUE, true));
+ pLabelValue->SetTextColor(Color(COLOR_TEXT_ITEM_SELECTED));
+ pLabelValue->Invalidate(true);
+ }
+}
+
+void
+SettingsForm:: OnKeyLongPressed(const Tizen::Ui::Control& source, Tizen::Ui::KeyCode keyCode)
+{
+
+}
--- /dev/null
+//
+// Copyright (c) 2012 Samsung Electronics Co., Ltd.
+//
+// Licensed under the Flora License, Version 1.1 (the License);
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://floralicense.org/license/
+//
+// 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.
+//
+
+/**
+ * @file CtTypes.cpp
+ * @brief This is the implementation file for the Contacts application types.
+ */
+
+#include "CtTypes.h"
+
+// form, panel ids
+const wchar_t* IDC_FORM_CONTACT_DETAILS = L"FormContactDetails";
+const wchar_t* IDC_FORM_CONTACT_EDITOR = L"FormContactEditor";
+const wchar_t* IDC_FORM_CONTACT_SELECTOR = L"FormContactSelector";
+const wchar_t* IDC_FORM_GROUP_SELECTOR = L"FormGroupSelector";
+const wchar_t* IDC_FORM_GROUP_EDITOR = L"FormGroupEditor";
+const wchar_t* IDC_FORM_GROUP_CONTACT_LIST = L"FormGroupContactList";
+const wchar_t* IDC_FORM_GROUP_CONTACT_LIST_EDITOR = L"FormGroupContactListEditor";
+const wchar_t* IDC_FORM_SETTINGS = L"FormSettings";
+const wchar_t* IDC_FORM_MAIN = L"FormMain";
+
+const wchar_t* IDC_PANEL_CONTACT_LIST = L"PanelContactList";
+const wchar_t* IDC_PANEL_CONTACT_LIST_EDITOR = L"PanelContactListEditor";
+const wchar_t* IDC_PANEL_GROUP_LIST = L"PanelGroupList";
+const wchar_t* IDC_PANEL_GROUP_LIST_EDITOR = L"PanelGroupListEditor";
+const wchar_t* IDC_PANEL_FAVORITE_LIST = L"PanelFavoriteList";
+const wchar_t* IDC_PANEL_FAVORITE_LIST_EDITOR = L"PanelFavoriteListEditor";
+
+// scene ids
+const wchar_t* IDSCN_CONTACT_LIST = L"ContactList";
+const wchar_t* IDSCN_CONTACT_LIST_EDITOR = L"ContactListEditor";
+const wchar_t* IDSCN_CONTACT_DETAILS = L"ContactDetails";
+const wchar_t* IDSCN_CONTACT_EDITOR = L"ContactEditor";
+const wchar_t* IDSCN_CONTACT_SELECTOR = L"ContactSelector";
+const wchar_t* IDSCN_GROUP_LIST = L"GroupList";
+const wchar_t* IDSCN_GROUP_LIST_EDITOR = L"GroupListEditor";
+const wchar_t* IDSCN_GROUP_SELECTOR = L"GroupSelector";
+const wchar_t* IDSCN_GROUP_EDITOR = L"GroupEditor";
+const wchar_t* IDSCN_GROUP_CONTACT_LIST = L"GroupContactList";
+const wchar_t* IDSCN_GROUP_CONTACT_LIST_EDITOR = L"GroupContactListEditor";
+const wchar_t* IDSCN_FAVORITE_LIST = L"FavoriteList";
+const wchar_t* IDSCN_FAVORITE_LIST_EDITOR = L"FavoriteListEditor";
+const wchar_t* IDSCN_SETTINGS = L"Settings";
+
+const wchar_t* OPERATION_ID_MAIN = L"http://tizen.org/appcontrol/operation/main";
+const wchar_t* OPERATION_ID_PICK = L"http://tizen.org/appcontrol/operation/pick";
+const wchar_t* OPERATION_ID_VIEW = L"http://tizen.org/appcontrol/operation/view";
+const wchar_t* OPERATION_ID_ADD = L"http://tizen.org/appcontrol/operation/add";
+const wchar_t* OPERATION_ID_EDIT = L"http://tizen.org/appcontrol/operation/edit";
+const wchar_t* OPERATION_ID_CONFIGURE = L"http://tizen.org/appcontrol/operation/configure";
+const wchar_t* OPERATION_ID_CREATE_CONTENT = L"http://tizen.org/appcontrol/operation/create_content";
+const wchar_t* OPERATION_ID_CALL = L"http://tizen.org/appcontrol/operation/call";
+const wchar_t* OPERATION_ID_COMPOSE = L"http://tizen.org/appcontrol/operation/compose";
+const wchar_t* OPERATION_ID_CROP = L"http://tizen.org/appcontrol/operation/image/crop";
+
+const wchar_t* CONTACT_OPERATION_ID_MAIN = L"http://tizen.org/appcontrol/operation/main";
+const wchar_t* CONTACT_OPERATION_ID_ADD = L"http://tizen.org/appcontrol/operation/social/add";
+const wchar_t* CONTACT_OPERATION_ID_VIEW = L"http://tizen.org/appcontrol/operation/social/view";
+const wchar_t* CONTACT_OPERATION_ID_PICK = L"http://tizen.org/appcontrol/operation/social/pick";
+const wchar_t* CONTACT_OPERATION_ID_EDIT = L"http://tizen.org/appcontrol/operation/social/edit";
+const wchar_t* CONTACT_OPERATION_ID_CHOOSE = L"http://tizen.org/appcontrol/operation/social/choose";
+
+const wchar_t* RETURN_KEY_TYPE = L"returnType";
+const wchar_t* RETURN_KEY_VALUE = L"value";
+const wchar_t* RETURN_TYPE_PHONE = L"phone";
+const wchar_t* RETURN_TYPE_EMAIL = L"email";
+const wchar_t* RETURN_TYPE_VCARD = L"vcard";
+const wchar_t* RETURN_TYPE_ITEM_ID = L"item_id";
+
+const wchar_t* CONTACT_KEY_ITEM_TYPE = L"http://tizen.org/appcontrol/data/social/item_type";
+const wchar_t* CONTACT_KEY_PHONE = L"http://tizen.org/appcontrol/data/social/phone";
+const wchar_t* CONTACT_KEY_EMAIL = L"http://tizen.org/appcontrol/data/social/email";
+const wchar_t* CONTACT_KEY_URL = L"http://tizen.org/appcontrol/data/social/url";
+const wchar_t* CONTACT_KEY_ITEM_ID = L"http://tizen.org/appcontrol/data/social/item_id";
+const wchar_t* CONTACT_KEY_SELECTION_MODE = L"http://tizen.org/appcontrol/data/selection_mode";
+const wchar_t* CONTACT_KEY_RESULT_TYPE = L"http://tizen.org/appcontrol/data/social/result_type";
+const wchar_t* CONTACT_KEY_PATH = L"http://tizen.org/appcontrol/data/path";
+
+const wchar_t* ITEM_TYPE_PERSON = L"person";
+const wchar_t* ITEM_TYPE_CONTACT = L"contact";
+
+const wchar_t* PROVIDER_ID_CAMERA = L"tizen.camera";
+const wchar_t* PROVIDER_ID_GALLERY = L"tizen.gallery";
+const wchar_t* PROVIDER_ID_PHONE = L"tizen.call";
+const wchar_t* PROVIDER_ID_MESSAGE = L"tizen.messages";
+const wchar_t* PROVIDER_ID_EMAIL = L"tizen.email";
+const wchar_t* PROVIDER_ID_FILEMANAGER = L"tizen.filemanager";
+const wchar_t* PROVIDER_ID_IMAGEVIEWER = L"tizen.imageviewer";
+
+const wchar_t* SETTING_KEY_LANGUAGE = L"http://tizen.org/setting/locale.language";
+const wchar_t* SETTING_KEY_COUNTRY = L"http://tizen.org/setting/locale.country";
+const wchar_t* SETTING_KEY_FONTSIZE = L"http://tizen.org/setting/font.size";
+const wchar_t* SETTING_KEY_NAME_ORDER = L"http://tizen.org/setting/contacts.order.firstname";
+
+const wchar_t* RUNTIMEINFO_INTERNAL_MEMORY_KEY = L"http://tizen.org/runtime/storage.available.internal";
+
+const wchar_t* CHARACTER_SPACE = L" ";
+const wchar_t* DELIMITER = L":";
+const wchar_t* DELIMITER_SEMICOLON = L";";
+const wchar_t* DELIMITER_COMMA = L",";
+const wchar_t* INITIAL_SELECTED_COUNT = L" (0)";
+const wchar_t* DEFAULT_GROUP_FAMILY = L"Family";
+const wchar_t* DEFAULT_GROUP_FRIENDS = L"Friends";
+const wchar_t* DEFAULT_GROUP_COWORKERS = L"Co-workers";
+
+const int ID_GROUP_CONTACT_NOT_ASSIGNED = 0xFFFFFFFF;
+const int ID_GROUP_CONTACT_SELECT_MESSAGE = 0xFFFFFFFE;
+const int ID_GROUP_CONTACT_SELECT_EMAIL = 0xFFFFFFFD;
+
+const int W_SAVE_POPUP = 688;
+const int H_SAVE_POPUP = 230;
+const int W_SAVE_LABEL = 656;
+const int H_SAVE_LABEL = 80;
+const int X_SAVE_LABEL = 16;
+const int Y_SAVE_LABEL = 32;
+const int Y_SAVE_BUTTON = 132;
+const int H_SAVE_BUTTON = 74;
+const int W_SAVE_BUTTON = 318;
+const int W_POPUP_ITEM_GAP = 20;
+const int W_DELETE_POPUP = 688;
+const int H_DELETE_POPUP = 230;
+const int W_DELETE_LABEL = 656;
+const int H_DELETE_LABEL = 80;
+const int X_DELETE_LABEL = 16;
+const int Y_DELETE_LABEL = 32;
+const int Y_DELETE_BUTTON = 132;
+const int H_DELETE_BUTTON = 74;
+const int W_DELETE_BUTTON = 318;
+
+const int FONT_SIZE_SAVE_CONFIRM = 42;
+const int FONT_SIZE_SAVE_BUTTON = 36;
+const int FONT_SIZE_DELETE_CONFIRM = 42;
+const int FONT_SIZE_DELETE_BUTTON = 36;
+
+const int BIRTHDAY_MIN_YEAR_DIFF = 100;
+const int BIRTHDAY_MAX_YEAR_DIFF = 35;