--- /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.nativecore.config.sbi.gcc45.so.debug.464197902">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.so.debug.464197902" moduleId="org.eclipse.cdt.core.settings" name="Debug">
+ <externalSettings/>
+ <extensions>
+ <extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+ <extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" 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.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="setting-profile-common" buildArtefactType="org.tizen.nativecore.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.sharedLib,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.so.debug.464197902" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.so.debug">
+ <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.so.debug.464197902." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.so.debug.1866721973" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.so.debug">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.18123900" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder autoBuildTarget="all" buildPath="${workspace_loc:/setting-profile-common}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.1413869503" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+ <tool command="i586-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1901490582" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+ <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1787561814" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+ <option id="gnu.cpp.compiler.option.optimization.level.572462069" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
+ <option defaultValue="gnu.cpp.compiler.debugging.level.max" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1518761027" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+ <option id="sbi.gnu.cpp.compiler.option.1095316228" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-4.0-emulator.core_llvm40.i386"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.2068441720" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/asp/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/attach-panel""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cbhm""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/chromium-ewk""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-service""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/csr""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dali""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dali-toolkit""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/device""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-buffer-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-con-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-file-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-imf-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-imf-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-input-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-input-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-ipc-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ector-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eldbus-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/emile-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eo-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eom""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-client-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/feedback""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/geofence""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/harfbuzz""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/iotcon""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/maps""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/metadata-editor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minicontrol""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/nsd/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/phonenumber-utils""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/privacy-privilege-manager/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/service-adaptor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tef""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tzsh""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui-viewmgr""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vulkan""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_service""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_viewer_dali""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_viewer_evas""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/yaca""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.501903655" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+ <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-fvisibility=hidden"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.220864707" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks.core.803942012" name="Tizen-Frameworks" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+ <listOptionValue builtIn="false" value="Native_API"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation.439372058" name="Defined symbols (-D)" superClass="sbi.gnu.cpp.compiler.option.preprocessor.def.deprecation" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+ <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+ <listOptionValue builtIn="false" value="_DEBUG"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1843209315" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+ </tool>
+ <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.726134331" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.536785439" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+ <option defaultValue="gnu.c.debugging.level.max" id="sbi.gnu.c.compiler.option.debugging.level.core.277854594" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+ <option id="sbi.gnu.c.compiler.option.675917863" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-4.0-emulator.core_llvm40.i386"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.989719318" name="Tizen-Frameworks-Include-Path" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/asp/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/attach-panel""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cbhm""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/chromium-ewk""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-service""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/csr""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dali""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dali-toolkit""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/device""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-buffer-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-con-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-file-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-imf-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-imf-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-input-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-input-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-ipc-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ector-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eldbus-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/emile-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eo-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eom""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-client-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/feedback""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/geofence""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/harfbuzz""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/iotcon""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/maps""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/metadata-editor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minicontrol""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/nsd/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/phonenumber-utils""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/privacy-privilege-manager/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/service-adaptor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tef""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tzsh""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui-viewmgr""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vulkan""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_service""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_viewer_dali""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_viewer_evas""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/yaca""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1419369275" name="Tizen-Frameworks-Other-Cflags" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+ <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-fvisibility=hidden"/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.110000376" name="Include paths (-I)" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks.core.1580706592" name="Tizen-Frameworks" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+ <listOptionValue builtIn="false" value="Native_API"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation.1250707764" name="Defined symbols (-D)" superClass="sbi.gnu.c.compiler.option.preprocessor.def.symbols.deprecation" valueType="definedSymbols">
+ <listOptionValue builtIn="false" value="TIZEN_DEPRECATION"/>
+ <listOptionValue builtIn="false" value="DEPRECATION_WARNING"/>
+ <listOptionValue builtIn="false" value="_DEBUG"/>
+ <listOptionValue builtIn="false" value="_TZ_SYS_GLOBALUSER_DATA=TZ_SYS_GLOBALUSER_DATA"/>
+ <listOptionValue builtIn="false" value=""TZ_SYS_GLOBALUSER_DATA=\"/opt/usr/data\""/>
+ <listOptionValue builtIn="false" value="_TZ_SYS_RO_APP=TZ_SYS_RO_APP"/>
+ <listOptionValue builtIn="false" value="_TZ_SYS_MEDIA=TZ_SYS_MEDIA"/>
+ <listOptionValue builtIn="false" value=""TZ_SYS_RO_APP=\"/usr/apps\""/>
+ <listOptionValue builtIn="false" value=""TZ_SYS_MEDIA=\"/opt/media\""/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.2110196211" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.603675915" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+ <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.157500216" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+ <option defaultValue="false" id="sbi.gnu.cpp.link.option.strip.288436062" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.2110926329" name="Tizen-Frameworks-Other-Lflags" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+ <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+ <listOptionValue builtIn="false" value="-lpthread "/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/>
+ <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+ </option>
+ <option id="gnu.cpp.link.option.paths.2008833880" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/>
+ </option>
+ <option id="gnu.cpp.link.option.libs.1954454689" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">
+ <listOptionValue builtIn="false" srcPrefixMapping="" srcRootPath="" value="setting-common"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1247410231" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.514428390" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.156588631" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.506702535" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1113730454" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+ <tool id="org.tizen.nativecore.tool.ast.770098327" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+ <tool id="org.tizen.nativecore.tool.ast.cpp.111713214" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.1020605097" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+ <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1343831432" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1405116007" name="EDC Resource Compiler" superClass="org.tizen.nativecore.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="shared"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ <cconfiguration id="org.tizen.nativecore.config.sbi.gcc45.so.release.1786350098">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.so.release.1786350098" 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.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GLDErrorParser" 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.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.tizen.nativecore.NativeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ <extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+ </extensions>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <configuration artifactExtension="so" artifactName="setting-profile-common" buildArtefactType="org.tizen.nativecore.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.sharedLib,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" description="" errorParsers="org.eclipse.cdt.core.MakeErrorParser;org.eclipse.cdt.core.GCCErrorParser;" id="org.tizen.nativecore.config.sbi.gcc45.so.release.1786350098" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.so.release">
+ <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.so.release.1786350098." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.so.release.1122838438" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.so.release">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.320031579" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder buildPath="${workspace_loc:/setting-profile-common}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1708486407" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+ <tool command="i586-linux-gnueabi-ar" id="org.tizen.nativecore.tool.sbi.gnu.archiver.1567329888" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+ <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1128419594" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+ <option id="gnu.cpp.compiler.option.optimization.level.219739374" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
+ <option defaultValue="gnu.cpp.compiler.debugging.level.none" id="sbi.gnu.cpp.compiler.option.debugging.level.core.1780880625" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+ <option id="sbi.gnu.cpp.compiler.option.570392823" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-4.0-emulator.core_llvm40.i386"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1030020664" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/asp/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/attach-panel""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cbhm""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/chromium-ewk""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-service""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/csr""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dali""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dali-toolkit""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/device""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-buffer-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-con-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-file-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-imf-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-imf-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-input-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-input-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-ipc-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ector-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eldbus-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/emile-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eo-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eom""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-client-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/feedback""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/geofence""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/harfbuzz""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/iotcon""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/maps""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/metadata-editor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minicontrol""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/nsd/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/phonenumber-utils""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/privacy-privilege-manager/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/service-adaptor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tef""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tzsh""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui-viewmgr""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vulkan""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_service""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_viewer_dali""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_viewer_evas""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/yaca""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_cflags.core.1251926175" superClass="sbi.gnu.cpp.compiler.option.frameworks_cflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+ <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-fvisibility=hidden"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.978125357" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks.core.380560123" superClass="sbi.gnu.cpp.compiler.option.frameworks.core" valueType="userObjs">
+ <listOptionValue builtIn="false" value="Native_API"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1425583636" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+ </tool>
+ <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1904446928" name="C Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.c.compiler">
+ <option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.option.optimization.level.954354122" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+ <option defaultValue="gnu.c.debugging.level.none" id="sbi.gnu.c.compiler.option.debugging.level.core.718350115" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+ <option id="sbi.gnu.c.compiler.option.576964103" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-4.0-emulator.core_llvm40.i386"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.2117908111" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/asp/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/attach-panel""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/badge""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/base""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cairo""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/calendar-service2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/cbhm""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/chromium-ewk""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ckm""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/contacts-svc""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-service""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/csr""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dali""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dali-toolkit""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dbus-1.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/device""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/dlog""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-buffer-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-con-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-file-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-imf-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-imf-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-input-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-input-evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ecore-ipc-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ector-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/e_dbus-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/edje-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eet-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efl-extension""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/efreet-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eina-1/eina""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eio-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eldbus-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/elementary-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/emile-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eo-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/eom""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-client-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/feedback""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/geofence""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/harfbuzz""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/iotcon""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/maps""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/media-content""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/messaging""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/metadata-editor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minicontrol""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/minizip""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/nsd/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/phonenumber-utils""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/privacy-privilege-manager/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/SDL2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/service-adaptor""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/shortcut""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/storage""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/system""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tef""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tzsh""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui-viewmgr""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vulkan""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_service""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_viewer_dali""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_viewer_evas""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/wifi-direct""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/yaca""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/dbus-1.0/include""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/lib/glib-2.0/include""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_cflags.core.1407817417" superClass="sbi.gnu.c.compiler.option.frameworks_cflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="${TC_COMPILER_MISC}"/>
+ <listOptionValue builtIn="false" value="${RS_COMPILER_MISC}"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-fvisibility=hidden"/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.274494345" superClass="gnu.c.compiler.option.include.paths" valueType="includePath">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/inc}""/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks.core.1920716407" superClass="sbi.gnu.c.compiler.option.frameworks.core" valueType="userObjs">
+ <listOptionValue builtIn="false" value="Native_API"/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.425349519" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1069059252" name="C Linker" superClass="org.tizen.nativeide.tool.sbi.gnu.c.linker.base"/>
+ <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.linker.621037936" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+ <option defaultValue="true" id="sbi.gnu.cpp.link.option.strip.1105549297" name="Omit all symbol information (-s)" superClass="sbi.gnu.cpp.link.option.strip" valueType="boolean"/>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.39337005" superClass="sbi.gnu.cpp.linker.option.frameworks_lflags.core" valueType="stringList">
+ <listOptionValue builtIn="false" value="${TC_LINKER_MISC}"/>
+ <listOptionValue builtIn="false" value="${RS_LINKER_MISC}"/>
+ <listOptionValue builtIn="false" value="-lpthread "/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/>
+ <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+ </option>
+ <option id="gnu.cpp.link.option.paths.1830150638" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1715232239" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool command="#{PLATFORM_DEFAULT_GCC_PREFIX}as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1676198758" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1591077912" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.1443933101" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.807374152" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+ <tool id="org.tizen.nativecore.tool.ast.722281076" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+ <tool id="org.tizen.nativecore.tool.ast.cpp.1030650084" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.416178153" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+ <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1889272029" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.2115193844" name="EDC Resource Compiler" superClass="org.tizen.nativecore.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="shared"/>
+ <entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="src"/>
+ </sourceEntries>
+ </configuration>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+ </cconfiguration>
+ </storageModule>
+ <storageModule moduleId="cdtBuildSystem" version="4.0.0">
+ <project id="setting-profile-common.org.tizen.nativecore.target.sbi.gcc45.so.753416480" name="Tizen Native Shared Library" projectType="org.tizen.nativecore.target.sbi.gcc45.so"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.so.debug.464197902">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.so.release.1786350098">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+ <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+</cproject>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>setting-profile-common</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </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>
+ </natures>
+ <filteredResources>
+ <filter>
+ <id>1525948279165</id>
+ <name></name>
+ <type>26</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-projectRelativePath-matches-false-false-*/.tpk</arguments>
+ </matcher>
+ </filter>
+ <filter>
+ <id>1525948279166</id>
+ <name></name>
+ <type>6</type>
+ <matcher>
+ <id>org.eclipse.ui.ide.multiFilter</id>
+ <arguments>1.0-name-matches-false-false-project_def.prop</arguments>
+ </matcher>
+ </filter>
+ </filteredResources>
+</projectDescription>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<tproject xmlns="http://www.tizen.org/tproject">
+ <platforms>
+ <platform>
+ <name>mobile-4.0</name>
+ </platform>
+ </platforms>
+ <package>
+ <blacklist/>
+ <resFallback autoGen="true"/>
+ </package>
+</tproject>
--- /dev/null
+# Appendix\r
--- /dev/null
+# Add inputs and outputs from these tool invocations to the build variables
+
+
+OS_NAME := $(shell $(UNAME))
+
+
+#ifeq ($(origin BUILD_CONFIG), undefined)
+BUILD_CONFIG ?= Debug
+#endif
+
+#ifeq ($(origin ARCH), undefined)
+ARCH ?= i386
+#endif
+
+#ifeq ($(origin PROJPATH), undefined)
+PROJPATH ?= .
+#endif
+
+
+#ifeq ($(origin PROJ_PATH), undefined)
+PROJ_PATH ?= $(PROJPATH)
+#endif
+
+#ifeq ($(strip $(OUTPUT_DIR)),)
+#OUTPUT_DIR ?= $(PROJ_PATH)/$(BUILD_CONFIG)
+#endif
+
+#ifeq ($(strip $(BUILD_ARCH)),)
+BUILD_ARCH ?= $(ARCH)
+#endif
+
+#ifeq ($(strip $(ENVENTOR_PATH)),)
+ENVENTOR_PATH ?= $(SDK_TOOLPATH)/enventor
+#endif
--- /dev/null
+# C/C++ build script
+
+
+_FUNC_EXT2O = $(patsubst %.$(3),$(1)/%.o,$(2))
+_FUNC_C2O = $(call _FUNC_EXT2O,$(1),$(2),c)
+_FUNC_CPP2O = $(call _FUNC_EXT2O,$(1),$(2),cpp)
+
+
+# parameter :
+# $(1) - C/C++ soruce file
+# $(2) - output path
+# $(3) - .ext
+# $(4) - unique id
+CONVERT_ESC_EXT_TO_O = $(addprefix $(2)/,$(notdir $(patsubst %.$(3),%-$(4).o,$(1))))
+
+#CONVERT_ESC_C_TO_O = $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),c)
+#CONVERT_ESC_CPP_TO_O = $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),cpp)
+
+
+# parameter :
+# $(1) - encoded one C/C++ soruce file
+# $(2) - output path
+# $(3) - ext title (C/C++)
+# $(4) - ext (c/cpp)
+# $(5) - compiler ($(CC)/$(CXX))
+# $(6) - build opt
+# $(7) - build opt file
+# output :
+# $(8) - output files list
+define C_BUILD_PROC_RAW
+$(call CONVERT_ESC_EXT_TO_O,$(1),$(2),$(4),$(8)) : $(call DECODE_4MAKE,$(1)) $(7)
+ @echo ' Building file: $$<'
+ @echo ' Invoking: $(3) Compiler'
+ $$(call MAKEDIRS,$$(@D))
+ $(5) -c "$$<" -o "$$@" $(6) -Wp,@$(7)
+ @echo ' Finished building: $$<'
+$(9) += $(call CONVERT_ESC_EXT_TO_O,$(1),$(2),$(4),$(8))
+endef
+
+
+# parameter :
+# $(1) - output paths
+# $(2) - src paths
+# $(3) - inc paths
+# $(4) - inc files
+# $(5) - Defs
+# $(6) - UnDefs
+# $(7) - compiler opt
+# $(8) - compiler opt file
+# $(9) - ext title (C/C++)
+# $(10) - ext (c/cpp)
+# $(11) - compiler ($(CC)/$(CXX))
+# output :
+# $(12) - OBJS
+# return :
+# none
+define C_PROC_RAW
+
+_OUTPUT_DIR := $$(strip $(1))#
+_SRCS := $(2)#
+_INCS := $(3)#
+_INC_FILES := $(4)#
+_DEFS := $(5)#
+_UNDEFS := $(6)#
+
+_OPT := $(7)
+_OPT_FILE := $(8)
+
+_EXT_TITLE := $(9)
+_EXT := $(10)
+_COMPILER := $(11)
+
+#_OUTPUT_FILES := $(12)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_SRCS))
+_ENC_SRCS := $$(filter %.$$(_EXT),$$(_ENC_SRCS))
+
+ifneq ($$(strip $$(_SRCS)),)
+
+_NORMAL_SRCS := $$(filter-out %*.$$(_EXT),$$(_ENC_SRCS))
+_WIDLCARD_SRCS := $$(filter %*.$$(_EXT),$$(_ENC_SRCS))
+
+_ALL_SRCS := $$(call DECODE_4MAKE,$$(_NORMAL_SRCS)) \
+ $$(foreach var,$$(_WIDLCARD_SRCS),$$(call FIND_FILES_4MAKE,$$(call DECODE_4MAKE,$$(var))))
+
+ifneq ($$(strip $$(_ALL_SRCS)),)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_ALL_SRCS))
+
+_CDEFS := $$(CDEFS)
+_CDEFS += $$(addprefix -D,$$(_DEFS))
+_CDEFS += $$(addprefix -U,$$(_UNDEFS))
+
+_ENC_C_INCS := $$(call ENCODE_4MAKE,$$(_INCS))
+_ENC_C_INCS := $$(addprefix -I,$$(_ENC_C_INCS))
+
+_ENC_INC_FILES := $$(call ENCODE_4MAKE,$$(_INC_FILES))
+_ENC_INC_FILES += $$(addprefix -include,$$(_ENC_INC_FILES))
+
+_C_INCS := $$(call DECODE_4MAKE,$$(_ENC_C_INCS) $$(_ENC_C_INC_FILES))
+
+_DEFS := $$(_CDEFS) $$(_C_INCS) -I"pch" $$(_OPT)
+
+_UNIQUE_ID = $$(firstword $$(shell echo $$(var) | $$(CKSUM)))
+
+$$(foreach var,$$(_ENC_SRCS),$$(eval $$(call C_BUILD_PROC_RAW,$$(var),$$(_OUTPUT_DIR),$$(_EXT_TITLE),$$(_EXT),$$(_COMPILER),$$(_DEFS),$$(_OPT_FILE),$$(_UNIQUE_ID),$(12))))
+
+endif # (_(strip _(_ALL_SRCS)),)
+
+endif # (_(strip _(_SRCS)),)
+
+
+endef
--- /dev/null
+# EDC build script
+
+
+FUNC_EDC2EDJ = $(patsubst %.edc,$(2)/%.edj,$(1))
+
+# parameter :
+# $(1) - C/C++ soruce file
+# $(2) - output path
+CONVERT_ESC_EDC_TO_EDJ = $(call CONVERT_4MAKE_TO_OUT,$(call FUNC_EDC2EDJ,$(1),$(2)))
+
+
+# parameter :
+# $(1) - encoded one C/C++ soruce file
+# $(2) - output path
+# $(3) - build opt
+# output :
+# $(4) - output files list
+define EDJ_BUILD_PROC_RAW
+$(call CONVERT_ESC_EDC_TO_EDJ,$(1),$(2)) : $(call DECODE_4MAKE,$(1))
+ @echo ' Building file: $$<'
+ @echo ' Invoking: EDC Resource Compiler'
+ $$(call MAKEDIRS,$$(@D))
+ $$(EDJE_CC) $(3) "$$<" "$$@"
+ @echo ' Finished building: $$<'
+$(4) += $(call CONVERT_ESC_EDC_TO_EDJ,$(1),$(2))
+endef
+
+
+# parameter :
+# $(1) - output paths
+# $(2) - src paths
+# $(3) - image inc paths
+# $(4) - sound inc paths
+# $(5) - font inc paths
+# output :
+# $(6) - OBJS
+# return :
+# none
+define EDJ_PROC_RAW
+
+_OUTPUT_DIR := $$(strip $(1))#
+_SRCS := $(2)#
+_IMAGE_DIRS := $(3)#
+_SOUND_DIRS := $(4)#
+_FONT_DIRS := $(5)#
+
+ifneq ($$(strip $$(_SRCS)),)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_SRCS))
+
+_NORMAL_SRCS := $$(filter-out %*.edc,$$(_ENC_SRCS))
+_WIDLCARD_SRCS := $$(filter %*.edc,$$(_ENC_SRCS))
+
+_ALL_SRCS := $$(call DECODE_4MAKE,$$(_NORMAL_SRCS)) \
+ $$(foreach var,$$(_WIDLCARD_SRCS),$$(call FIND_FILES_4MAKE,$$(call DECODE_4MAKE,$$(var))))
+
+ifneq ($$(strip $$(_ALL_SRCS)),)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_ALL_SRCS))
+
+_COMPILER_FLAGS := -id "$$(ENVENTOR_SHARED_RES_PATH)/images"
+_COMPILER_FLAGS += -sd "$$(ENVENTOR_SHARED_RES_PATH)/sounds"
+_COMPILER_FLAGS += -fd "$$(ENVENTOR_SHARED_RES_PATH)/fonts"
+
+ifneq ($$(strip $$(_IMAGE_DIRS)),)
+_COMPILER_FLAGS += $$(addprefix -id ,$$(_IMAGE_DIRS))
+endif
+ifneq ($$(strip $$(_SOUND_DIRS)),)
+_COMPILER_FLAGS += $$(addprefix -sd ,$$(_SOUND_DIRS))
+endif
+ifneq ($$(strip $$(_FONT_DIRS)),)
+_COMPILER_FLAGS += $$(addprefix -fd ,$$(_FONT_DIRS))
+endif
+
+$$(foreach var,$$(_ENC_SRCS),$$(eval $$(call EDJ_BUILD_PROC_RAW,$$(var),$$(_OUTPUT_DIR),$$(_COMPILER_FLAGS),$(6))))
+
+endif # (_(strip _(_ALL_SRCS)),)
+
+endif # (_(strip _(_SRCS)),)
+
+endef
--- /dev/null
+# PO build script
+
+
+_FUNC_PO2MO = $(patsubst %.po,$(2)/res/locale/%/LC_MESSAGES/$(3).mo,$(notdir $(1)))
+
+
+# parameter :
+# $(1) - C/C++ soruce file
+# $(2) - output path
+# $(3) - app name
+CONVERT_ESC_PO_TO_MO = $(call CONVERT_4MAKE_TO_OUT,$(call _FUNC_PO2MO,$(1),$(2),$(3)))
+
+
+# parameter :
+# $(1) - encoded one C/C++ soruce file
+# $(2) - output path
+# $(3) - app name
+# output :
+# $(4) - output files list
+define MO_BUILD_PROC_RAW
+$(call CONVERT_ESC_PO_TO_MO,$(1),$(2),$(3)) : $(call DECODE_4MAKE,$(1))
+ @echo ' Building file: $$<'
+ @echo ' Invoking: msgfmt String Formatter'
+ $$(call MAKEDIRS,$$(@D))
+ $$(MSGFMT) -o "$$@" "$$<"
+ @echo ' Finished building: $$<'
+$(4) += $(call CONVERT_ESC_PO_TO_MO,$(1),$(2),$(3))
+endef
+
+
+# parameter :
+# $(1) - output dir
+# $(2) - src paths
+# $(3) - app name
+# output :
+# $(4) - OBJS
+
+define MO_PROC_RAW
+
+_OUTPUT_DIR := $(1)
+_SRCS := $(2)
+_APPNAME := $(3)
+
+ifneq ($$(strip $$(_SRCS)),)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_SRCS))
+
+_NORMAL_SRCS := $$(filter-out %*.po,$$(_ENC_SRCS))
+_WIDLCARD_SRCS := $$(filter %*.po,$$(_ENC_SRCS))
+
+_ALL_SRCS := $$(call DECODE_4MAKE,$$(_NORMAL_SRCS)) \
+ $$(foreach var,$$(_WIDLCARD_SRCS),$$(call FIND_FILES_4MAKE,$$(call DECODE_4MAKE,$$(var))))
+
+ifneq ($$(strip $$(_ALL_SRCS)),)
+
+_ENC_SRCS := $$(call ENCODE_4MAKE,$$(_ALL_SRCS))
+
+$$(foreach var,$$(_ENC_SRCS),$$(eval $$(call MO_BUILD_PROC_RAW,$$(var),$$(_OUTPUT_DIR),$$(_APPNAME),$(4))))
+
+endif # (_(strip _(_ALL_SRCS)),)
+
+endif # (_(strip _(_SRCS)),)
+
+endef
--- /dev/null
+
+DEBUG_OP = -g3 -D_DEBUG
+CPP_DEBUG_OP = -D_DEBUG
+
+OPTIMIZATION_OP = -O0
+CPP_OPTIMIZATION_OP =
+
+COMPILE_FLAGS = $(DEBUG_OP) $(OPTIMIZATION_OP) -Wall -c -fmessage-length=0 -fPIC
+
+CPP_COMPILE_FLAGS = $(CPP_DEBUG_OP) $(CPP_OPTIMIZATION_OP)
+
+LINK_FLAGS = -shared -Wl,--no-undefined
+
+AR_FLAGS =
+
+EDC_COMPILE_FLAGS =
\ No newline at end of file
--- /dev/null
+
+BSLASH := \\#
+NULL_CHAR := #
+SPACE := \ #
+COLON := :#
+DOTDOT := ..#
+SPACE_ESC := &sp;#
+COLON_ESC := &co;#
+SPACE_OUT := ~sp~#
+COLON_OUT := ~co~#
+DOTDOT_OUT := ~dtdt~#
+
+BSLASH2SLASH = $(subst $(BSLASH),/,$(1))
+
+REMOVE_TAIL = $(patsubst %/,%,$(1))
+
+#LOWER_CASE = $(shell echo translit($(1),[A-Z],[a-z])|$(M4))
+LOWER_CASE = $(shell echo $(1)|$(TR) [A-Z] [a-z])
+
+#ifneq ($(findstring Windows,$(OS)),)
+# ...
+#endif
+
+FIND_FILES = $(shell $(FIND) $(1)/$(2) | $(SED) 's/^$(subst /,$(BSLASH)/,$(1))$(BSLASH)///')
+FIND_FILES_ESC = $(shell $(FIND) $(1)/$(2) | $(SED) 's/^$(subst /,$(BSLASH)/,$(1))$(BSLASH)///' -e 's/:/$(BSLASH)&co;/g' -e 's/$(BSLASH) /$(BSLASH)&sp;/g')
+FIND_FILES_4MAKE = $(shell $(FIND) $(1)/$(2) | $(SED) 's/^$(subst /,$(BSLASH)/,$(1))$(BSLASH)///')
+
+FIND_FILES_ABS = $(shell $(FIND) $(1))
+FIND_FILES_ABS_4MAKE = $(shell $(FIND) $(1) -e 's/$(BSLASH) /$(BSLASH)&sp;/g')
+FIND_FILES_ABS_ESC = $(shell $(FIND) $(1) -e 's/:/$(BSLASH)&co;/g' -e 's/$(BSLASH) /$(BSLASH)&sp;/g')
+
+FIND_FILES_4MAKE = $(shell $(FIND) $(1) | $(SED) 's/ /\\\ /g')
+
+#ENCODE_ESC = $(shell echo $(1) | $(SED) -e 's/:/$(BSLASH)&co;/g' -e 's/$(BSLASH) /$(BSLASH)&sp;/g')
+#DECODE_ESC = $(shell echo $(1) | $(SED) -e 's/$(BSLASH)&co;/:/g' -e 's/$(BSLASH)&sp;/$(BSLASH) / g')
+ENCODE_ESC = $(subst $(SPACE),$(SPACE_ESC),$(subst $(COLON),$(COLON_ESC),$(1)))
+DECODE_ESC = $(subst $(COLON_ESC),$(COLON),$(subst $(SPACE_ESC),$(SPACE),$(1)))
+ENCODE_4MAKE = $(subst $(SPACE),$(SPACE_ESC),$(1))
+DECODE_4MAKE = $(subst $(SPACE_ESC),$(SPACE),$(1))
+
+CONVERT_TO_OUT = $(subst $(DOTDOT),$(DOTDOT_OUT),$(subst $(COLON),$(COLON_OUT),$(subst $(SPACE),$(SPACE_OUT),$(1))))
+CONVERT_ESC_TO_OUT = $(subst $(DOTDOT),$(DOTDOT_OUT),$(subst $(COLON_ESC),$(COLON_OUT),$(subst $(SPACE_ESC),$(SPACE_OUT),$(1))))
+CONVERT_4MAKE_TO_OUT = $(subst $(DOTDOT),$(DOTDOT_OUT),$(subst $(COLON),$(COLON_OUT),$(subst $(SPACE_ESC),$(SPACE_OUT),$(1))))
+
+PROC_NO_EXIST = $(if $(wildcard $(1)),,$(call $(2),$(1)))
+define MAKEDIRS0
+ @echo ' Building directory: $(1)'
+ @$(MKDIR) $(MKDIR_OP) $(subst $(BSLASH),/,$(1))
+endef
+MAKEDIRS = $(call PROC_NO_EXIST,$(1),MAKEDIRS0)
--- /dev/null
+#
+# Usege : make -f <proj_root>/Build/makefile -C <proj_root>
+#
+
+BUILD_SCRIPT_VERSION := 1.1.0
+
+.PHONY : app_version app_build app_clean build_version
+
+
+all : app_build
+
+clean : app_clean
+
+version : build_version
+
+#PROJ_ROOT = .
+#BUILD_ROOT := $(PROJ_PATH)/Build#
+
+ifeq ($(MAKE_NAME),mingw32-make)
+ifneq ($(SHELL),)
+OPTIONS += --eval="SHELL=$(SHELL)"
+endif
+endif
+
+app_build :
+ @echo $(MAKE) -f "$(BUILD_ROOT)/makefile.mk"
+ @$(MAKE_BIN) -f "$(BUILD_ROOT)/makefile.mk" -C "$(PROJ_PATH)" $(OPTIONS)
+
+app_clean :
+ @$(MAKE) -f "$(BUILD_ROOT)/makefile.mk" -C "$(PROJ_PATH)" $(OPTIONS) clean
+
+build_version :
+ @echo makefile : $(BUILD_SCRIPT_VERSION)
+ @$(MAKE) -f "$(BUILD_ROOT)/makefile.mk" -C "$(PROJ_PATH)" $(OPTIONS) version
--- /dev/null
+#
+# Usege : make -f <proj_root>/Build/makefile -C <proj_root>
+#
+
+BUILD_SCRIPT_VERSION := 1.2.3
+
+.PHONY : app_version app_clean build_version
+
+
+all : app_build
+
+clean : app_clean
+
+version : build_version
+
+_BLANK :=#
+_SPACE := $(_BLANK) $(_BLANK)#
+_SPACE_4MAKE := \$(_SPACE)#
+
+NULL_CHAR :=#
+SPACE := $(NULL_CHAR) $(NULL_CHAR)#
+
+PROJ_ROOT := .
+_PROJ_ROOT_4MAKE := $(subst $(_SPACE),$(_SPACE_4MAKE),$(PROJ_ROOT))#
+PROJ_ROOT=$(_PROJ_ROOT_4MAKE)
+_BUILD_ROOT_4MAKE := $(subst $(_SPACE),$(_SPACE_4MAKE),$(BUILD_ROOT))#
+BUILD_ROOT=$(_BUILD_ROOT_4MAKE)
+
+include $(BUILD_ROOT)/basedef.mk
+
+include $(PROJ_ROOT)/project_def.prop
+-include $(PROJ_ROOT)/build_def.prop
+
+include $(BUILD_ROOT)/funcs.mk
+
+-include $(BUILD_ROOT)/tooldef.mk
+-include $(BUILD_ROOT)/flags.mk
+-include $(BUILD_ROOT)/platform.mk
+
+
+APPTYPE := $(type)
+
+OUTPUT_DIR := $(PROJ_ROOT)/$(BUILD_CONFIG)
+OBJ_OUTPUT := $(OUTPUT_DIR)/objs
+
+LOWER_APPNAME := $(call LOWER_CASE,$(APPNAME))
+APPID2 := $(subst $(basename $(APPID)).,,$(APPID))
+
+ifeq ($(strip $(APPTYPE)),app)
+APPFILE := $(OUTPUT_DIR)/$(LOWER_APPNAME)
+endif
+ifeq ($(strip $(APPTYPE)),staticLib)
+APPFILE := $(OUTPUT_DIR)/lib$(LOWER_APPNAME).a
+endif
+ifeq ($(strip $(APPTYPE)),sharedLib)
+APPFILE := $(OUTPUT_DIR)/lib$(LOWER_APPNAME).so
+endif
+
+ifneq ($(strip $(PLATFORM_INCS)),)
+PLATFORM_INCS_FILE := $(OBJ_OUTPUT)/platform_incs_file.inc
+endif
+
+include $(BUILD_ROOT)/build_c.mk
+
+
+ifeq ($(strip $(APPTYPE)),app)
+EXT_OP := -fPIE
+endif
+ifeq ($(strip $(APPTYPE)),staticLib)
+EXT_OP := -fPIE
+endif
+ifeq ($(strip $(APPTYPE)),sharedLib)
+EXT_OP := -fPIC
+endif
+
+C_OPT := $(COMPILE_FLAGS) $(TC_COMPILER_MISC) $(RS_COMPILER_MISC) $(EXT_OP) --sysroot="$(SYSROOT)" -Werror-implicit-function-declaration $(M_OPT) $(USER_C_OPTS)
+CPP_OPT := $(CPP_COMPILE_FLAGS) $(TC_COMPILER_MISC) $(RS_COMPILER_MISC) $(EXT_OP) --sysroot="$(SYSROOT)" -Werror-implicit-function-declaration $(M_OPT) $(USER_CPP_OPTS)
+C_OPT_FILE := $(PLATFORM_INCS_FILE)
+
+OBJS := #
+
+# Global C/C++
+ifeq ($(strip $(USER_ROOT)),)
+USER_ROOT := $(PROJ_ROOT)
+endif
+$(eval $(call C_PROC_RAW,$(OBJ_OUTPUT),$(USER_SRCS),$(USER_INC_DIRS),$(USER_INC_FILES),$(USER_DEFS),$(USER_UNDEFS),$(C_OPT),$(C_OPT_FILE),C,c,$(CC),OBJS))
+$(foreach ext,cpp cxx cc c++ C,$(eval $(call C_PROC_RAW,$(OBJ_OUTPUT),$(USER_SRCS),$(USER_INC_DIRS),$(USER_CPP_INC_FILES),$(USER_CPP_DEFS),$(USER_CPP_UNDEFS),$(CPP_OPT),$(C_OPT_FILE),C++,$(ext),$(CXX),OBJS)))
+
+# Individual C/C++
+ifneq ($(strip $(USER_EXT_C_KEYS)),)
+$(foreach var,$(USER_EXT_C_KEYS),$(eval $(call C_PROC_RAW,$(OBJ_OUTPUT),$(USER_EXT_$(var)_SRCS),$(USER_EXT_$(var)_INC_DIRS),$(USER_EXT_$(var)_INC_FILES),$(USER_EXT_$(var)_DEFS),$(USER_EXT_$(var)_UNDEFS),$(C_OPT),$(C_OPT_FILE),C,c,$(CC),OBJS)))
+$(foreach ext,cpp cxx cc c++ C,$(foreach var,$(USER_EXT_C_KEYS),$(eval $(call C_PROC_RAW,$(OBJ_OUTPUT),$(USER_EXT_$(var)_SRCS),$(USER_EXT_$(var)_INC_DIRS),$(USER_EXT_$(var)_CPP_INC_FILES),$(USER_EXT_$(var)_CPP_DEFS),$(USER_EXT_$(var)_CPP_UNDEFS),$(CPP_OPT),$(C_OPT_FILE),C++,$(ext),$(CXX),OBJS))))
+endif
+
+
+ifneq ($(strip $(USER_LIB_DIRS)),)
+_ENC_USER_LIB_DIRS := $(call ENCODE_4MAKE,$(USER_LIB_DIRS))
+_ENC_USER_LIB_DIRS := $(addprefix -L,$(_ENC_USER_LIB_DIRS))
+LIBPATHS := $(call DECODE_4MAKE,$(_ENC_USER_LIB_DIRS))
+endif
+
+LIBS += $(addprefix -l,$(USER_LIBS))
+
+UOBJS += $(USER_OBJS)
+
+M_OPT = -MMD -MP -MF"$(@:%.o=%.d)"
+
+DEPS := $(OBJS:.o=.d)
+
+ifneq ($(strip $(DEPS)),)
+-include $(PROJ_ROOT)/Build/$(DEPS)
+endif
+
+
+ifeq ($(strip $(APPTYPE)),app)
+$(APPFILE) : $(OBJS) $(UOBJS)
+ @echo ' Building target: $@'
+ @echo ' Invoking: C/C++ Linker'
+ $(call MAKEDIRS,$(@D))
+ $(CXX) -o $(APPFILE) $(OBJS) $(UOBJS) $(LIBPATHS) -Xlinker --as-needed $(LIBS) $(LINK_FLAGS) $(TC_LINKER_MISC) $(RS_LINKER_MISC) -pie -lpthread --sysroot="$(SYSROOT)" -Xlinker --version-script="$(PROJ_ROOT)/.exportMap" $(RS_LIB_PATHS) $(RS_LIBRARIES) -Xlinker -rpath='$$ORIGIN/../lib' -Werror-implicit-function-declaration $(USER_LINK_OPTS)
+ @echo ' Finished building target: $@'
+endif
+ifeq ($(strip $(APPTYPE)),staticLib)
+$(APPFILE) : $(OBJS) $(UOBJS)
+ @echo ' Building target: $@'
+ @echo ' Invoking: Archive utility'
+ $(call MAKEDIRS,$(@D))
+ $(AR) -r $(APPFILE) $(OBJS) $(UOBJS) $(AR_FLAGS) $(USER_LINK_OPTS)
+ @echo ' Finished building target: $@'
+endif
+ifeq ($(strip $(APPTYPE)),sharedLib)
+$(APPFILE) : $(OBJS) $(UOBJS)
+ @echo ' Building target: $@'
+ @echo ' Invoking: C/C++ Linker'
+ $(call MAKEDIRS,$(@D))
+ $(CXX) -o $(APPFILE) $(OBJS) $(UOBJS) $(LIBPATHS) -Xlinker --as-needed $(LIBS) $(LINK_FLAGS) $(TC_LINKER_MISC) $(RS_LINKER_MISC) -shared -lpthread --sysroot="$(SYSROOT)" $(RS_LIB_PATHS) $(RS_LIBRARIES) $(USER_LINK_OPTS)
+ @echo ' Finished building target: $@'
+endif
+
+
+$(OBJ_OUTPUT) :
+ $(call MAKEDIRS,$@)
+
+$(OUTPUT_DIR) :
+ $(call MAKEDIRS,$@)
+
+
+#ifneq ($(strip $(PLATFORM_INCS)),)
+#$(PLATFORM_INCS_FILE) : $(OBJ_OUTPUT)
+# @echo ' Building inc file: $@'
+#ifneq ($(findstring Windows,$(OS)),)
+#ifneq ($(findstring 3.82,$(MAKE_VERSION)),)
+# $(file > $@,$(PLATFORM_INCS))
+#else
+# @echo $(PLATFORM_INCS) > $@
+#endif
+#else
+# @echo '$(PLATFORM_INCS)' > $@
+#endif
+#endif
+
+
+include $(BUILD_ROOT)/build_edc.mk
+
+#ifeq ($(strip $(ENVENTOR_SHARED_RES_PATH)),)
+ENVENTOR_SHARED_RES_PATH ?= $(ENVENTOR_PATH)/share/enventor
+#endif
+
+EDJ_FILES :=
+
+# Global EDCs
+ifneq ($(strip $(USER_EDCS)),)
+$(eval $(call EDJ_PROC_RAW,$(OUTPUT_DIR),$(USER_EDCS),$(USER_EDCS_IMAGE_DIRS),$(USER_EDCS_SOUND_DIRS),$(USER_EDCS_FONT_DIRS),EDJ_FILES))
+endif
+
+# Individual EDCs
+ifneq ($(strip $(USER_EXT_EDC_KEYS)),)
+$(foreach var,$(USER_EXT_EDC_KEYS),$(eval $(call EDJ_PROC_RAW,$(OUTPUT_DIR),$(USER_EXT_$(var)_EDCS),$(USER_EXT_$(var)_EDCS_IMAGE_DIRS),$(USER_EXT_$(var)_EDCS_SOUND_DIRS),$(USER_EXT_$(var)_EDCS_FONT_DIRS),EDJ_FILES)))
+endif
+
+
+include $(BUILD_ROOT)/build_po.mk
+
+MO_FILES :=
+
+# Global POs
+ifneq ($(strip $(USER_POS)),)
+$(eval $(call MO_PROC_RAW,$(OUTPUT_DIR),$(USER_POS),$(APPID2),MO_FILES))
+endif
+
+
+secondary-outputs : $(EDJ_FILES) $(MO_FILES)
+
+-include appendix.mk
+
+app_build : $(OUTPUT_DIR) $(APPFILE) secondary-outputs
+ @echo ========= done =========
+
+
+app_clean :
+ rm -f $(APPFILE)
+ rm -rf $(OUTPUT_DIR)
+
+build_version :
+ @echo makefile.mk : $(BUILD_SCRIPT_VERSION)
--- /dev/null
+# Add inputs and outputs from these tool invocations to the build variables
+
+SYSROOT = $(SBI_SYSROOT)
+
+#USR_INCS := $(addprefix -I "$(SYSROOT),$(PLATFORM_INCS_EX))
+USR_INCS1 := $(addsuffix ",$(PLATFORM_INCS_EX))
+USR_INCS := $(addprefix -I "$(SYSROOT),$(USR_INCS1))
+
+ifeq ($(strip $(PLATFORM_LIB_PATHS)),)
+RS_LIB_PATHS := "$(SYSROOT)/usr/lib"
+else
+RS_LIB_PATHS1 := $(addsuffix ",$(PLATFORM_LIB_PATHS))
+RS_LIB_PATHS := $(addprefix -L "$(SYSROOT),$(RS_LIB_PATHS1))
+endif
+
+RS_LIBRARIES := $(addprefix -l,$(RS_LIBRARIES_EX))
+
+PLATFORM_INCS = $(USR_INCS) -I "$(SDK_PATH)/library"
--- /dev/null
+# Add inputs and outputs from these tool invocations to the build variables
+
+ifneq ($(strip $(SHELL_BIN)),)
+SHELL = $(SHELL_BIN)
+else
+SHELL = sh
+endif
+
+ifneq ($(strip $(MKDIR_BIN)),)
+MKDIR = $(MKDIR_BIN)
+MKDIR_OP = -p
+else
+MKDIR = mkdir
+MKDIR_OP = -p
+endif
+
+ifneq ($(strip $(UNAME_BIN)),)
+UNAME = $(UNAME_BIN)
+else
+UNAME = uname
+endif
+
+ifneq ($(strip $(M4_BIN)),)
+M4 = $(M4_BIN)
+else
+M4 = m4
+endif
+
+ifneq ($(strip $(TR_BIN)),)
+TR = $(TR_BIN)
+else
+TR = tr
+endif
+
+ifneq ($(strip $(FIND_BIN)),)
+FIND = $(FIND_BIN)
+else
+FIND = find
+endif
+
+ifneq ($(strip $(SED_BIN)),)
+SED = $(SED_BIN)
+else
+SED = sed
+endif
+
+ifneq ($(strip $(GREP_BIN)),)
+GREP = $(GREP_BIN)
+else
+GREP = grep
+endif
+
+ifneq ($(strip $(EDJE_CC_BIN)),)
+EDJE_CC = $(EDJE_CC_BIN)
+else
+EDJE_CC = edje_cc
+endif
+
+ifneq ($(strip $(MSGFMT_BIN)),)
+MSGFMT = $(MSGFMT_BIN)
+else
+MSGFMT = msgfmt
+endif
+
+ifneq ($(strip $(CKSUM_BIN)),)
+CKSUM = $(CKSUM_BIN)
+else
+CKSUM = cksum
+endif
+
--- /dev/null
+
+# Add pre/post build process
+PREBUILD_DESC =
+PREBUILD_COMMAND =
+POSTBUILD_DESC =
+POSTBUILD_COMMAND =
--- /dev/null
+#ifndef _SETTING-PROFILE-COMMON_H_
+#define _SETTING-PROFILE-COMMON_H_
+
+/**
+ * This header file is included to define _EXPORT_.
+ */
+#include <stdbool.h>
+#include <tizen.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// This method is exported from setting-profile-common.so
+EXPORT_API bool tizensetting-profile-common(void);
+
+#ifdef __cplusplus
+}
+#endif
+#endif // _SETTING-PROFILE-COMMON_H_
+
--- /dev/null
+/*
+ * setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+#ifndef __SETTING_PROFILE_H__
+#define __SETTING_PROFILE_H__
+
+#include <player.h>
+#include <sound_manager.h>
+#include <efl_extension.h>
+#include <feedback.h>
+#include <call-manager.h>
+#include <system_settings.h>
+#include <setting-common/setting-common-init.h>
+#include <setting-common/setting-common-general-func.h>
+#include <setting-common/setting-common-draw-widget.h>
+#include <setting-common/setting-common-view.h>
+
+#define SETTING_PROFILE_ICON_PATH_CFG _TZ_SYS_RO_APP"/org.tizen.setting/res/icons/"
+
+#define VOLUME_APP_NAME "org.tizen.setting.volume"
+#define SETTING_PROFILE_MMC_PATH \
+ _TZ_SYS_MEDIA"/sdcard"
+#define SETTING_DEFAULT_MSG_TONE \
+ _TZ_SYS_GLOBALUSER_DATA"/settings/Alerts/Whistle.ogg"
+#define SETTING_DEFAULT_MEDIA_TONE \
+ _TZ_SYS_GLOBALUSER_DATA"/settings/Ringtones/ringtone_sdk.mp3"
+#define SUPPORT_PLAYER_ASYNC 1
+
+/*Call ringtone:3 icon status */
+#define ICON_CALL_VIB \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume_vibrate.png"
+#define ICON_CALL_NORMAL \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_incoming_call.png"
+#define ICON_CALL_MUTE \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume_mute.png"
+
+/*Notification: 2 icon status */
+#define ICON_NOTI_VIB \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_notification_vibrate.png"
+#define ICON_NOTI_MUTE \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_notification_mute.png"
+#define ICON_NOTI_NORMAL \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_notification.png"
+
+/*Media: 2 icon status */
+#define ICON_MEDIA_MUTE SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume_mute.png"
+#define ICON_MEDIA_NORMAL SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume.png"
+
+/*System:2 icon status */
+#define ICON_SYSTEM_MUTE \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_system_mute.png"
+#define ICON_SYSTEM_NORMAL \
+ SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_system.png"
+
+typedef enum {
+ SND_SLIDER_CALL = 0,
+ SND_SLIDER_NOTI,
+ SND_SLIDER_MEDIA,
+ SND_SLIDER_SYSTEM,
+ SND_SLIDER_MAX,
+} SoundType;
+
+typedef struct _SettingSoundData SettingSoundData;
+
+/**
+ * Setting Profile UG context
+ * all UG function has void* as an agument. this is casted back to
+ * SettingSoundData and the functions access app context.
+ */
+struct _SettingSoundData {
+ char *viewtype;
+ MainData md;
+
+ /* add more variables here (move your appdata to here) */
+ Elm_Genlist_Item_Class itc_layout;
+ Elm_Genlist_Item_Class itc_layout_1icon;
+
+ /* Main view */
+ Setting_GenGroupItem_Data *data_call_alert_tone;
+ Setting_GenGroupItem_Data *data_call_volume;
+ Setting_GenGroupItem_Data *data_msg_alert_tone;
+ Setting_GenGroupItem_Data *data_noti_volume;
+ Setting_GenGroupItem_Data *data_touch_volume;
+ Setting_GenGroupItem_Data *data_media_volume;
+ Setting_GenGroupItem_Data *data_sound_when_ring;
+ Setting_GenGroupItem_Data *data_do_not_disturb;
+ Setting_GenGroupItem_Data *data_notifiaction_on_lock_screen;
+
+ /* Feedback */
+ Setting_GenGroupItem_Data *data_lock_sound;
+ Setting_GenGroupItem_Data *data_keyboard_sound;
+ Setting_GenGroupItem_Data *data_button_sounds;
+ Setting_GenGroupItem_Data *data_touch_sounds;
+
+ player_h mp_player;
+ player_h mp_prepare_async;
+ sound_stream_info_h ringtone_sound_stream_info;
+ sound_stream_info_h noti_sound_stream_info;
+ sound_stream_info_h media_sound_stream_info;
+
+ bool sound_on;
+ char *song_playing;
+ char *ringtone_type;
+
+ /* for performance of incoming call ringtone slider */
+ Ecore_Idler *play_ringtone_idler;
+
+ Ecore_Event_Handler *keydown_handler;
+ Ecore_Event_Handler *keyup_handler;
+ bool is_pressing;
+ Ecore_Timer *updown_timer;
+ Evas_Object *calling_popup; /* Unable to pre-listening during a call */
+ int backup_ringtone_volume[SOUND_TYPE_VOICE + 1];
+ bool is_ringtone_slidering;
+};
+
+extern setting_view setting_view_sound_main;
+
+void setting_sound_play_sound_origin(void *data, void *cb, char *ringtone_file, float vol, sound_type_e sound_type);
+int setting_sound_check_file_exist(void *data, const char *file_path);
+bool setting_sound_play_sound(void *data, void *cb, char *ringtone_file, int vol, sound_type_e sound_type);
+void setting_sound_stop_sound(void *data);
+void setting_sound_key_grab(SettingSoundData *ad);
+void setting_sound_key_ungrab(SettingSoundData *ad);
+char *setting_media_basename(char *path);
+void setting_sound_create_warning_popup_during_call(void *data);
+char *setting_sound_get_slider_icon(int type, int volume);
+void setting_sound_update_slider_icon(Setting_GenGroupItem_Data *item_data, int type);
+Evas_Object *setting_sound_init(SettingSoundData *ad);
+void setting_sound_deinit(void *data);
+const char *setting_do_not_disturb_is_enable(void *data);
+const char *setting_notifiaction_on_lock_screen(void *data);
+void setting_sound_update_do_not_disturb_item(void *data);
+void setting_sound_update_notifiaction_on_lock_screen_item(void *data);
+
+#endif
--- /dev/null
+
+# Project Name
+APPNAME = setting-profile-common
+
+# Project Type
+type = sharedLib
+
+# Project Profile
+profile = mobile-4.0
+
+# C/CPP Sources
+USER_SRCS = src/setting-profile-common.c src/setting-profile-sound-main.c
+
+# EDC Sources
+USER_EDCS =
+
+# PO Sources
+USER_POS =
+
+# User Defines
+USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING _TZ_SYS_GLOBALUSER_DATA=TZ_SYS_GLOBALUSER_DATA TZ_SYS_GLOBALUSER_DATA=\"/opt/usr/data\" _TZ_SYS_RO_APP=TZ_SYS_RO_APP _TZ_SYS_MEDIA=TZ_SYS_MEDIA TZ_SYS_RO_APP=\"/usr/apps\" TZ_SYS_MEDIA=\"/opt/media\"
+USER_CPP_DEFS =
+
+# User Undefines
+USER_UNDEFS =
+USER_CPP_UNDEFS =
+
+# User Libraries
+USER_LIBS = setting-common
+
+# User Objects
+USER_OBJS =
+
+# User Includes
+## C Compiler
+USER_C_INC_DIRS = inc
+USER_INC_FILES =
+## C++ Compiler
+USER_CPP_INC_DIRS =
+USER_CPP_INC_FILES =
+
+USER_INC_DIRS = $(USER_C_INC_DIRS) $(USER_CPP_INC_DIRS)
+
+# User Library Path
+USER_LIB_DIRS = lib
+
+# EDC Resource Path
+USER_EDCS_IMAGE_DIRS = ${OUTPUT_DIR}
+USER_EDCS_SOUND_DIRS = ${OUTPUT_DIR}
+USER_EDCS_FONT_DIRS = ${OUTPUT_DIR}
+
+# EDC Flags
+USER_EXT_EDC_KEYS =
+
+# Resource Filter
+USER_RES_INCLUDE =
+USER_RES_EXCLUDE =
+
--- /dev/null
+/*
+ * setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include "setting-profile.h"
+#include <sys/stat.h>
+#include <dirent.h>
+#include <app_manager.h>
+#include <metadata_extractor.h>
+#include <player.h>
+
+#define SETTING_DEFAULT_FOLDER_PATH _TZ_SYS_GLOBALUSER_DATA"/settings/"
+#define SDCARD_PATH _TZ_SYS_MEDIA"/sdcard/"
+#define EXP 0.001
+
+typedef struct _SliderIcons {
+ int index;
+ char mute[256];
+ char volume[256];
+} SliderIcons;
+
+SliderIcons slider_icons[SND_SLIDER_MAX] = {
+ {SND_SLIDER_CALL, ICON_CALL_MUTE, ICON_CALL_NORMAL},
+ {SND_SLIDER_NOTI, ICON_NOTI_MUTE, ICON_NOTI_NORMAL},
+ {SND_SLIDER_MEDIA, ICON_MEDIA_MUTE, ICON_MEDIA_NORMAL},
+ {SND_SLIDER_SYSTEM, ICON_SYSTEM_MUTE, ICON_SYSTEM_NORMAL}
+};
+
+static void __mm_player_prepared_cb(void *user_data);
+static void __sound_stream_focus_state_changed_cb(
+ sound_stream_info_h stream_info,
+ sound_stream_focus_mask_e focus_mask,
+ sound_stream_focus_state_e focus_state,
+ sound_stream_focus_change_reason_e reason,
+ int sound_behavior,
+ const char *extra_info,
+ void *user_data);
+static Eina_Bool __volume_key_down_cb(void *data, int type, void *event);
+static Eina_Bool __volume_key_up_cb(void *data, int type, void *event);
+static Evas_Object *__sound_slider_icon_get(void *data, Evas_Object *obj,
+ const char *part);
+static int __listen_vconf_change(void *data);
+static int __unlisten_vconf_change(void *data);
+static void __calling_popup_cb(void *data, Evas_Object *obj, void *event_info);
+
+void setting_sound_update_do_not_disturb_item(void *data)
+{
+ SettingSoundData *ad = (SettingSoundData *) data;
+ const char *sub_desc = NULL;
+
+ if (!ad || !ad->data_do_not_disturb)
+ return;
+
+ sub_desc = setting_do_not_disturb_is_enable(data);
+ g_free(ad->data_do_not_disturb->sub_desc);
+ ad->data_do_not_disturb->sub_desc = g_strdup(sub_desc);
+ elm_genlist_item_update(ad->data_do_not_disturb->item);
+}
+
+void setting_sound_update_notifiaction_on_lock_screen_item(void *data)
+{
+ SettingSoundData *ad = (SettingSoundData *) data;
+ const char *sub_desc = NULL;
+
+ if (!ad || !ad->data_notifiaction_on_lock_screen)
+ return;
+
+ sub_desc = setting_notifiaction_on_lock_screen(data);
+ g_free(ad->data_notifiaction_on_lock_screen->sub_desc);
+ ad->data_notifiaction_on_lock_screen->sub_desc = g_strdup(sub_desc);
+ elm_genlist_item_update(ad->data_notifiaction_on_lock_screen->item);
+}
+
+char *setting_sound_get_slider_icon(int type, int volume)
+{
+ if (type < SND_SLIDER_CALL || type >= SND_SLIDER_MAX)
+ return NULL;
+
+ SETTING_TRACE("type : %d, volume : %d", type, volume);
+ /* 1.Call ringtone and notification have 3 icon status */
+ if (SND_SLIDER_CALL == type || SND_SLIDER_NOTI == type) {
+ /*special process */
+ int sound = 0;
+ int vibration = 0;
+ vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound);
+ vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+ &vibration);
+
+ if (sound && !vibration) {
+ return (SND_SLIDER_CALL == type ?
+ ICON_CALL_NORMAL : ICON_NOTI_NORMAL);
+ }
+
+ if (vibration && !sound) {
+ return (SND_SLIDER_CALL == type ? ICON_CALL_VIB : ICON_NOTI_VIB);
+ }
+
+ if (!vibration && !sound) {
+ return (SND_SLIDER_CALL == type ? ICON_CALL_MUTE : ICON_NOTI_MUTE);
+ }
+
+ return (SND_SLIDER_CALL == type ?
+ ICON_CALL_NORMAL : ICON_NOTI_NORMAL);
+ }
+
+ /* 2.Other types, just have two icon status */
+ if (volume > 0)
+ return slider_icons[type].volume;
+ else
+ return slider_icons[type].mute;
+}
+
+void setting_sound_update_slider_icon(Setting_GenGroupItem_Data *item_data,
+ int type)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!item_data || !item_data->eo_check);
+
+ Evas_Object *icon = elm_object_content_get(item_data->eo_check);
+ if (icon) {
+ char *new_file = setting_sound_get_slider_icon(type,
+ item_data->chk_status);
+ elm_image_file_set(icon, new_file, NULL);
+ }
+}
+
+char *setting_media_basename(char *path)
+{
+ metadata_extractor_h metadata = NULL;
+ char *title = NULL;
+ int ret = METADATA_EXTRACTOR_ERROR_NONE;
+
+ if (NULL == path || '\0' == path[0])
+ return strdup(_("IDS_ST_BODY_PHONEPROFILES_SILENT"));
+
+ ret = metadata_extractor_create(&metadata);
+ if (ret == METADATA_EXTRACTOR_ERROR_NONE && metadata) {
+ ret = metadata_extractor_set_path(metadata, path);
+
+ if (ret == METADATA_EXTRACTOR_ERROR_NONE) {
+ ret = metadata_extractor_get_metadata(metadata,
+ METADATA_TITLE, &title);
+ if (title) {
+ char *strdup_title = strdup(title);
+ metadata_extractor_destroy(metadata);
+ free(title);
+ return strdup_title;
+ }
+ }
+
+ metadata_extractor_destroy(metadata);
+ }
+
+ return setting_file_basename(path);
+}
+
+/* ***************************************************
+ *
+ *general func
+ *
+ ***************************************************/
+int setting_sound_check_file_exist(void *data, const char *file_path)
+{
+ retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+ retv_if(file_path == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+ if (0 == safeStrNCmp(file_path,
+ SETTING_DEFAULT_FOLDER_PATH,
+ safeStrLen(SETTING_DEFAULT_FOLDER_PATH))) {
+ SETTING_TRACE("Default file[%s]!", file_path);
+ return SETTING_RETURN_SUCCESS;
+ }
+
+ if (!ecore_file_exists(file_path)) {
+ if (safeStrCmp(file_path, "Silent") == 0) {
+ SETTING_TRACE("%s", file_path);
+ return SETTING_RETURN_SUCCESS;
+ }
+ SETTING_TRACE_ERROR(
+ "Cannot find the ringtone file[%s]!",
+ file_path);
+ if (0 == safeStrNCmp(
+ file_path, SDCARD_PATH,
+ safeStrLen(SDCARD_PATH))) {
+ char *strdup_file_path = strdup(file_path);
+ /*sdcard file*/
+ int ret = vconf_set_str(
+ VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR,
+ strdup_file_path);
+ if (ret < 0)
+ SETTING_TRACE_DEBUG("failed to set vconf");
+
+ FREE(strdup_file_path);
+ }
+ return SETTING_RETURN_FAIL;
+ }
+
+ int mmc_status = VCONFKEY_SYSMAN_MMC_REMOVED;
+ vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_status);
+ if (VCONFKEY_SYSMAN_MMC_MOUNTED != mmc_status) {
+ if (!safeStrNCmp(
+ SETTING_PROFILE_MMC_PATH,
+ file_path,
+ safeStrLen(SETTING_PROFILE_MMC_PATH))) {
+ return SETTING_RETURN_FAIL;
+ }
+ }
+ return SETTING_RETURN_SUCCESS;
+}
+
+bool setting_sound_play_sound(
+ void *data,
+ void *cb,
+ char *ringtone_file,
+ int vol,
+ sound_type_e sound_type)
+{
+ int err = 0;
+ sound_stream_focus_state_e ssfs = SOUND_STREAM_FOCUS_STATE_ACQUIRED;
+ player_state_e state = PLAYER_STATE_NONE;
+ /* error check */
+ retv_if(data == NULL, NULL);
+ SettingSoundData *ad = (SettingSoundData *) data;
+ sound_stream_info_h sound_stream_info_to_set = NULL;
+
+ int is_existing = setting_sound_check_file_exist(ad, ringtone_file);
+
+ if (is_existing == SETTING_RETURN_FAIL || NULL == ringtone_file) {
+ switch (sound_type) {
+ case SOUND_TYPE_RINGTONE:
+ ad->song_playing = (char *)g_strdup(
+ _TZ_SYS_GLOBALUSER_DATA"/settings/Ringtones/ringtone_sdk.mp3");
+ sound_stream_info_to_set =
+ ad->ringtone_sound_stream_info;
+ break;
+ case SOUND_TYPE_MEDIA:
+ if (isEmulBin())
+ ad->song_playing = (char *)g_strdup(
+ SETTING_DEFAULT_CALL_TONE_SDK);
+ else
+ ad->song_playing = (char *)g_strdup(
+ _TZ_SYS_GLOBALUSER_DATA"/settings/Ringtones/ringtone_sdk.mp3");
+ sound_stream_info_to_set = ad->media_sound_stream_info;
+ break;
+ case SOUND_TYPE_NOTIFICATION:
+ ad->song_playing = (char *)g_strdup(
+ SETTING_DEFAULT_MSG_TONE);
+ sound_stream_info_to_set = ad->noti_sound_stream_info;
+ break;
+ default:
+ return false;
+ break;
+ }
+
+ } else {
+ if (safeStrCmp(ringtone_file, "Silent") == 0)
+ return false;
+
+ switch (sound_type) {
+ case SOUND_TYPE_RINGTONE:
+ sound_stream_info_to_set =
+ ad->ringtone_sound_stream_info;
+ break;
+ case SOUND_TYPE_MEDIA:
+ sound_stream_info_to_set = ad->media_sound_stream_info;
+ break;
+ case SOUND_TYPE_NOTIFICATION:
+ sound_stream_info_to_set = ad->noti_sound_stream_info;
+ break;
+ default:
+ return false;
+ break;
+ }
+ ad->song_playing = (char *)g_strdup(ringtone_file);
+ }
+
+ player_get_state(ad->mp_player, &state);
+ if (state != PLAYER_STATE_IDLE) {
+ if (err != player_unprepare(ad->mp_player)) {
+ SETTING_TRACE_ERROR("player_unprepare() failed: [%s]",
+ get_error_message(err));
+ player_unprepare(ad->mp_player);
+ return false;
+
+ }
+ }
+
+ if (sound_type != SOUND_TYPE_NOTIFICATION) {
+ sound_manager_get_focus_state(sound_stream_info_to_set, &ssfs,
+ NULL);
+ if (ssfs == SOUND_STREAM_FOCUS_STATE_RELEASED) {
+ err = sound_manager_acquire_focus(
+ sound_stream_info_to_set,
+ SOUND_STREAM_FOCUS_FOR_PLAYBACK,
+ SOUND_BEHAVIOR_NONE, NULL);
+ if (err != SOUND_MANAGER_ERROR_NONE) {
+ SETTING_TRACE_ERROR(
+ "Could not acquire focus: [%s]",
+ get_error_message(err));
+ player_unprepare(ad->mp_player);
+ return false;
+ }
+ }
+ }
+
+ player_get_state(ad->mp_player, &state);
+ if (state != PLAYER_STATE_IDLE)
+ player_unprepare(ad->mp_player);
+
+ err = player_set_sound_stream_info(ad->mp_player, sound_stream_info_to_set);
+ if (err != PLAYER_ERROR_NONE) {
+ SETTING_TRACE_ERROR("error to set audio policy [%s]",
+ get_error_message(err));
+ if (sound_type != SOUND_TYPE_NOTIFICATION)
+ sound_manager_release_focus(sound_stream_info_to_set,
+ SOUND_STREAM_FOCUS_FOR_PLAYBACK,
+ SOUND_BEHAVIOR_NONE, NULL);
+ player_unprepare(ad->mp_player);
+ return false;
+ }
+
+ err = player_set_uri(ad->mp_player, ad->song_playing);
+ if (err != PLAYER_ERROR_NONE) {
+ SETTING_TRACE_ERROR("error to set attribute---profile_uri[%s]",
+ get_error_message(err));
+ if (sound_type != SOUND_TYPE_NOTIFICATION)
+ sound_manager_release_focus(sound_stream_info_to_set,
+ SOUND_STREAM_FOCUS_FOR_PLAYBACK,
+ SOUND_BEHAVIOR_NONE, NULL);
+ player_unprepare(ad->mp_player);
+ return false;
+ }
+
+#if SUPPORT_PLAYER_ASYNC
+ err = player_prepare_async(ad->mp_player, __mm_player_prepared_cb, ad);
+ if (err != PLAYER_ERROR_NONE) {
+ SETTING_TRACE_ERROR("realizing the player handle failed[%s]",
+ get_error_message(err));
+ if (sound_type != SOUND_TYPE_NOTIFICATION)
+ sound_manager_release_focus(sound_stream_info_to_set,
+ SOUND_STREAM_FOCUS_FOR_PLAYBACK,
+ SOUND_BEHAVIOR_NONE, NULL);
+ player_unprepare(ad->mp_player);
+ return false;
+ }
+ ad->mp_prepare_async = ad->mp_player;
+ SETTING_TRACE("waiting..player (%x)", ad->mp_prepare_async);
+#else
+ err = player_prepare(ad->mp_player);
+ if (err != PLAYER_ERROR_NONE) {
+ SETTING_TRACE_ERROR("player_prepare() error %d", err);
+ if (sound_type != SOUND_TYPE_NOTIFICATION)
+ sound_manager_release_focus(sound_stream_info_to_set,
+ SOUND_STREAM_FOCUS_FOR_PLAYBACK,
+ SOUND_BEHAVIOR_NONE, NULL);
+ player_unprepare(ad->mp_player);
+ return false;
+ }
+
+ state = PLAYER_STATE_NONE;
+ err = player_get_state(ad->mp_player, &state);
+ SETTING_TRACE("state:%d", state);
+ if (state != PLAYER_STATE_READY) {
+ SETTING_TRACE_ERROR("state of player is invalid %d", err);
+ if (sound_type != SOUND_TYPE_NOTIFICATION)
+ sound_manager_release_focus(sound_stream_info_to_set,
+ SOUND_STREAM_FOCUS_FOR_PLAYBACK,
+ SOUND_BEHAVIOR_NONE, NULL);
+ player_unprepare(ad->mp_player);
+ return false;
+ }
+
+ player_set_completed_cb(ad->mp_player, __mm_player_msg_cb, ad);
+
+ err = player_start(ad->mp_player);
+ if (err != PLAYER_ERROR_NONE) {
+ /* if directly return error.. */
+ SETTING_TRACE_ERROR("player_start [%s]",
+ get_error_message(err));
+ player_unset_completed_cb(ad->mp_player);
+ if (sound_type != SOUND_TYPE_NOTIFICATION)
+ sound_manager_release_focus(sound_stream_info_to_set,
+ SOUND_STREAM_FOCUS_FOR_PLAYBACK,
+ SOUND_BEHAVIOR_NONE, NULL);
+ player_unprepare(ad->mp_player);
+ return false;
+ }
+#endif
+
+ return true;
+}
+
+void setting_sound_play_sound_origin(void *data, void *cb, char *ringtone_file,
+ float vol, sound_type_e sound_type)
+{
+ SETTING_TRACE_BEGIN;
+ int vconf_value = 0;
+ SettingSoundData *ad = (SettingSoundData *) data;
+
+ ret_if(!ad);
+
+ if (vol < EXP) {
+ SETTING_TRACE_DEBUG("vol < EXP");
+ setting_sound_stop_sound(ad);
+ return;
+ }
+
+ vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS,
+ &vconf_value);
+
+ if (vconf_value == TRUE)
+ return;
+
+ setting_sound_play_sound(ad, cb, ringtone_file, vol, sound_type);
+ SETTING_TRACE("play sound type %d", sound_type);
+}
+
+void setting_sound_stop_sound(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ SettingSoundData *ad = (SettingSoundData *)data;
+ sound_stream_focus_state_e ssfs = SOUND_STREAM_FOCUS_STATE_ACQUIRED;
+ player_state_e player_state = PLAYER_STATE_NONE;
+
+ if (ad->song_playing) {
+ g_free(ad->song_playing);
+ ad->song_playing = NULL;
+ }
+
+ player_unset_completed_cb(ad->mp_player);
+
+ sound_manager_get_focus_state(ad->ringtone_sound_stream_info, &ssfs, NULL);
+ if (ssfs == SOUND_STREAM_FOCUS_STATE_ACQUIRED)
+ sound_manager_release_focus(ad->ringtone_sound_stream_info,
+ SOUND_STREAM_FOCUS_FOR_PLAYBACK,
+ SOUND_BEHAVIOR_NONE, NULL);
+
+ sound_manager_get_focus_state(ad->media_sound_stream_info, &ssfs, NULL);
+ if (ssfs == SOUND_STREAM_FOCUS_STATE_ACQUIRED)
+ sound_manager_release_focus(ad->media_sound_stream_info,
+ SOUND_STREAM_FOCUS_FOR_PLAYBACK,
+ SOUND_BEHAVIOR_NONE, NULL);
+
+ player_get_state(ad->mp_player, &player_state);
+
+ if (player_state != PLAYER_STATE_IDLE)
+ if (player_unprepare(ad->mp_player) != PLAYER_ERROR_NONE)
+ SETTING_TRACE_ERROR("player unrealize failed");
+}
+
+void setting_sound_key_grab(SettingSoundData *ad)
+{
+ SETTING_TRACE_BEGIN;
+
+ /* To prevent conflict with volume app */
+ vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 2);
+
+ if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
+ return;
+
+ if (!ad->keydown_handler)
+ ad->keydown_handler = ecore_event_handler_add(
+ ECORE_EVENT_KEY_DOWN, __volume_key_down_cb, ad);
+ if (!ad->keydown_handler)
+ SETTING_TRACE_DEBUG("ecore_event_handler_add() failed");
+
+ if (!ad->keyup_handler)
+ ad->keyup_handler = ecore_event_handler_add(
+ ECORE_EVENT_KEY_UP, __volume_key_up_cb, ad);
+ if (!ad->keyup_handler)
+ SETTING_TRACE_DEBUG("ecore_event_handler_add() failed");
+}
+
+void setting_sound_key_ungrab(SettingSoundData *ad)
+{
+ SETTING_TRACE_BEGIN;
+
+ /* To prevent conflict with volume app */
+ vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 0);
+
+ ecore_timer_del(ad->updown_timer);
+ ad->updown_timer = NULL;
+
+ ecore_event_handler_del(ad->keydown_handler);
+ ad->keydown_handler = NULL;
+
+ ecore_event_handler_del(ad->keyup_handler);
+ ad->keyup_handler = NULL;
+}
+
+Evas_Object *setting_sound_init(SettingSoundData *ad)
+{
+ SETTING_TRACE_BEGIN;
+ int err = 0;
+
+ bindtextdomain(SETTING_PACKAGE, SETTING_LOCALEDIR);
+
+ setting_create_Gendial_itc(SETTING_GENLIST_LEFT_ICON_CONTENT_ICON_STYLE,
+ &(ad->itc_layout));
+
+ ad->itc_layout.func.content_get = __sound_slider_icon_get;
+
+ setting_create_Gendial_itc("full", &(ad->itc_layout_1icon));
+
+ ad->itc_layout_1icon.func.content_get = __sound_slider_icon_get;
+
+ /* register view node table */
+ setting_view_node_table_intialize();
+ setting_view_node_table_register(&setting_view_sound_main, NULL);
+
+ err = player_create(&ad->mp_player);
+ if (PLAYER_ERROR_NONE != err) {
+ SETTING_TRACE_ERROR("Cannot create ringtone player %s",
+ get_error_message(err));
+ return NULL;
+ }
+
+ if (
+ (sound_manager_create_stream_information(
+ SOUND_STREAM_TYPE_RINGTONE_VOIP,
+ __sound_stream_focus_state_changed_cb, ad,
+ &ad->ringtone_sound_stream_info)
+ != SOUND_MANAGER_ERROR_NONE) ||
+ (sound_manager_create_stream_information(
+ SOUND_STREAM_TYPE_MEDIA,
+ __sound_stream_focus_state_changed_cb, ad,
+ &ad->media_sound_stream_info)
+ != SOUND_MANAGER_ERROR_NONE) ||
+ (sound_manager_create_stream_information(
+ SOUND_STREAM_TYPE_NOTIFICATION,
+ __sound_stream_focus_state_changed_cb, ad,
+ &ad->noti_sound_stream_info)
+ != SOUND_MANAGER_ERROR_NONE)
+ ) {
+ SETTING_TRACE_ERROR("Cannot create stream information ");
+ return NULL;
+ }
+ /* creating a view. */
+ setting_view_node_set_cur_view(&setting_view_sound_main);
+ setting_view_create(&setting_view_sound_main, (void *)ad);
+
+ err = feedback_initialize();
+ SETTING_TRACE_DEBUG("Feedback init: %s", get_error_message(err));
+
+ __listen_vconf_change(ad);
+
+ return ad->md.naviframe;
+}
+
+void setting_sound_deinit(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(data == NULL);
+ SettingSoundData *ad = data;
+
+ __unlisten_vconf_change(ad);
+ feedback_deinitialize();
+ setting_sound_stop_sound(ad);
+
+ evas_object_del(ad->calling_popup);
+ ad->calling_popup = NULL;
+
+ setting_sound_key_ungrab(ad);
+
+ FREE(ad->viewtype);
+
+ sound_manager_destroy_stream_information(
+ ad->ringtone_sound_stream_info);
+ sound_manager_destroy_stream_information(ad->media_sound_stream_info);
+ sound_manager_destroy_stream_information(ad->noti_sound_stream_info);
+
+ ad->ringtone_sound_stream_info = ad->media_sound_stream_info =
+ ad->noti_sound_stream_info = NULL;
+
+ player_destroy(ad->mp_player);
+ ad->mp_player = NULL;
+
+ /* it is the view manage strategy to invoke view's destory operation */
+ setting_view_destroy(&setting_view_sound_main, ad);
+
+ SETTING_TRACE_END;
+}
+
+/* Show guide popup, when drag or tap slider if during call.
+ Do not provide pre-listening. */
+void setting_sound_create_warning_popup_during_call(void *data)
+{
+ ret_if(data == NULL);
+ SettingSoundData *ad = (SettingSoundData *)data;
+
+ cm_call_status_e call_status = CM_CALL_STATUS_IDLE;
+ cm_client_h cm_handle = NULL;
+ cm_init(&cm_handle);
+ cm_get_call_status(cm_handle, &call_status);
+ cm_deinit(cm_handle);
+ if (CM_CALL_STATUS_IDLE != call_status) {
+ SETTING_TRACE("Call status is not OFF (%d)", call_status);
+ if (!ad->calling_popup) {
+ ad->calling_popup = setting_create_popup(
+ ad,
+ ad->md.window,
+ "IDS_ST_HEADER_UNABLE_TO_PLAY_SAMPLE_ABB",
+ "IDS_ST_POP_SAMPLES_CANNOT_BE_PLAYED_DURING_CALLS",
+ __calling_popup_cb,
+ 0,
+ false,
+ false,
+ 1,
+ "IDS_ST_BUTTON_OK");
+ }
+ }
+}
+
+/* ------------------------------------------------------------------------- */
+/* | | elm.swallow.icon.0 | elm.text | elm.swallow.icon.1 | | */
+/* | elm.swallow.icon |----------------------------------| elm.swallow.end | */
+/* | | elm.text.sub | elm.text.sub.end | | */
+/* ------------------------------------------------------------------------- */
+static Evas_Object *__sound_slider_icon_get(void *data, Evas_Object *obj,
+ const char *part)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(data == NULL, NULL);
+
+ SETTING_TRACE(" -----------------> EDC part [%s]", part);
+ if (safeStrCmp(part, "elm.swallow.content"))
+ return NULL;
+
+ Evas_Object *layout;
+ /* Set custom layout style */
+ layout = elm_layout_add(obj);
+
+ Setting_GenGroupItem_Data *item_data =
+ (Setting_GenGroupItem_Data *)data;
+ Evas_Object *slider = setting_create_slider(obj, item_data);
+
+ if (slider == NULL)
+ return NULL;
+
+ elm_layout_file_set(layout, EDJDIR"/setting-theme.edj",
+ "gl_custom_item");
+ evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
+ EVAS_HINT_EXPAND);
+
+ if (0 == safeStrCmp(item_data->keyStr, "IDS_ST_BODY_MEDIA")) {
+ elm_object_style_set(slider, "warning");
+
+ Edje_Message_Float_Set *msg =
+ alloca(sizeof(Edje_Message_Float_Set)
+ + (sizeof(double)));
+ msg->count = 1;
+ /* Warning area point has to be calculated considering rounding
+ * off. For example, value 10's area will be 9.5~10.4.
+ * So, if warning area has to be started at 10, we need to
+ * calculate the start point with 9.5.
+ * Warning start point = (Warning min value - 0.5) /
+ * (Max_Value - Min_Value) */
+ msg->val[0] = 0.633333;
+ edje_object_message_send(
+ elm_layout_edje_get(slider), EDJE_MESSAGE_FLOAT_SET, 0, msg);
+ elm_slider_indicator_format_set(slider, "%1.0f");
+ elm_slider_indicator_show_set(slider, 1);
+ }
+
+ item_data->eo_check = slider;
+
+ evas_object_pass_events_set(slider, EINA_TRUE);
+ evas_object_propagate_events_set(slider, EINA_FALSE);
+
+ if (item_data->userdata == NULL)
+ return NULL;
+
+ if (item_data->keyStr)
+ elm_object_part_text_set(layout, "elm.text", _(item_data->keyStr));
+
+ elm_object_part_content_set(layout, "elm.swallow.content", slider);
+ return layout;
+}
+
+static void __enable_sound_menu(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!data);
+ SettingSoundData *ad = data;
+ ad->sound_on = TRUE;
+ Setting_GenGroupItem_Data *item_to_update = NULL;
+
+
+ /*1.Enable "Vibrate when ringing" */
+ if (ad->data_sound_when_ring) {
+ item_to_update = ad->data_sound_when_ring;
+ elm_object_item_disabled_set(item_to_update->item, EINA_FALSE);
+ }
+
+ if (ad->data_call_volume) {
+ elm_object_item_disabled_set(ad->data_call_volume->item,
+ EINA_FALSE);
+ elm_object_disabled_set(ad->data_call_volume->eo_check,
+ EINA_FALSE);
+ }
+
+ /*2.Enable "Notification", via Sound Manager */
+ item_to_update = ad->data_noti_volume;
+
+ /* @todo make sure data_msg_alert_tone is correct for 'Silent' set.
+ if (item_to_update && safeStrCmp(item_to_update->sub_desc, "Silent"))*/
+ if ((ad->data_msg_alert_tone &&
+ safeStrCmp(ad->data_msg_alert_tone->sub_desc, "Silent")) ||
+ (!safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
+ ) {
+ /* Enable */
+ if (item_to_update
+ && item_to_update->item
+ && item_to_update->eo_check) {
+ int mm_value = 0;
+ int ret = sound_manager_get_volume(
+ SOUND_TYPE_NOTIFICATION, &mm_value);
+ SETTING_TRACE("ret:%d", ret);
+ item_to_update->chk_status = mm_value;
+ elm_slider_value_set(
+ item_to_update->eo_check,
+ item_to_update->chk_status);
+ elm_object_item_disabled_set(item_to_update->item,
+ EINA_FALSE);
+ elm_object_disabled_set(item_to_update->eo_check,
+ EINA_FALSE);
+
+ setting_sound_update_slider_icon(
+ item_to_update, SND_SLIDER_NOTI);
+ }
+ }
+
+ /*3.Enable "System", via Sound Manager */
+ item_to_update = ad->data_touch_volume;
+ if (item_to_update && item_to_update->item
+ && item_to_update->eo_check) {
+ int mm_value = 0;
+ int ret = sound_manager_get_volume(
+ SOUND_TYPE_SYSTEM, &mm_value);
+ SETTING_TRACE("ret:%d", ret);
+ item_to_update->chk_status = mm_value;
+ elm_slider_value_set(
+ item_to_update->eo_check,
+ item_to_update->chk_status);
+ elm_object_item_disabled_set(
+ item_to_update->item, EINA_FALSE);
+ elm_object_disabled_set(item_to_update->eo_check, EINA_FALSE);
+
+ setting_sound_update_slider_icon(
+ item_to_update, SND_SLIDER_SYSTEM);
+ }
+
+
+ /*4.Enable "Call ringtone", via "Backuped" value */
+ item_to_update = ad->data_call_volume;
+ if (item_to_update && item_to_update->eo_check) {
+ SETTING_TRACE("....ad->is_ringtone_slidering:%d, "
+ "ad->data_call_volume->chk_status:%d",
+ ad->is_ringtone_slidering,
+ item_to_update->chk_status);
+ /* do need to restore from BACKUP VOLUME */
+ if (ad->is_ringtone_slidering) return;
+
+ int mm_value = 0;
+ sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value);
+ if (mm_value <= 0) mm_value = 1;
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE, mm_value);
+ item_to_update->chk_status = mm_value;
+ elm_slider_value_set(
+ item_to_update->eo_check,
+ item_to_update->chk_status);
+ SETTING_TRACE("ad->data_call_volume->chk_status : %d",
+ item_to_update->chk_status);
+ }
+}
+
+static void __disable_sound_menu(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!data);
+ SettingSoundData *ad = data;
+ ad->sound_on = FALSE;
+ Setting_GenGroupItem_Data *item_to_update = NULL;
+
+ setting_sound_stop_sound(ad);
+
+ /*1.Disable "Vibrate when ringing" */
+ item_to_update = ad->data_sound_when_ring;
+ if (item_to_update)
+ elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
+
+ /* Disable Call Volume slider if Silent ringtone is selected */
+ if (ad->data_call_alert_tone && !safeStrCmp(
+ ad->data_call_alert_tone->sub_desc, "Silent")) {
+ elm_object_item_disabled_set(ad->data_call_volume->item,
+ EINA_TRUE);
+ elm_object_disabled_set(ad->data_call_volume->eo_check,
+ EINA_TRUE);
+ }
+
+ /*2.Disable "Notification" */
+ item_to_update = ad->data_noti_volume;
+ if (item_to_update && item_to_update->item
+ && item_to_update->eo_check) {
+ item_to_update->chk_status = 0;
+ elm_slider_value_set(item_to_update->eo_check,
+ item_to_update->chk_status);
+ elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
+ elm_object_disabled_set(item_to_update->eo_check, EINA_TRUE);
+
+ /* Change notification slider's icon as mute style */
+ setting_sound_update_slider_icon(item_to_update,
+ SND_SLIDER_NOTI);
+ }
+
+ /*3.Disable "System" */
+ item_to_update = ad->data_touch_volume;
+ if (item_to_update && item_to_update->item
+ && item_to_update->eo_check) {
+ item_to_update->chk_status = 0;
+ elm_slider_value_set(item_to_update->eo_check,
+ item_to_update->chk_status);
+ elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
+ elm_object_disabled_set(item_to_update->eo_check, EINA_TRUE);
+
+ /* Change system slider's icon as mute style */
+ setting_sound_update_slider_icon(item_to_update,
+ SND_SLIDER_SYSTEM);
+ }
+
+ /*4.Disable "Call ringtone" */
+ item_to_update = ad->data_call_volume;
+ if (item_to_update && item_to_update->eo_check) {
+ /*DO NOT CHANGE Backup Values(
+ * VCONFKEY_SETAPPL_RINGTONE_BACKUP_VOLUME) */
+ item_to_update->chk_status = 0;
+ elm_slider_value_set(item_to_update->eo_check,
+ item_to_update->chk_status);
+ SETTING_TRACE("item_to_update->chk_status : %d",
+ item_to_update->chk_status);
+ }
+
+}
+
+static void __sound_vconf_change_cb(keynode_t *key, void *data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(data == NULL);
+ SettingSoundData *ad = data;
+ int status = 0;
+ int ret = 0;
+ char *vconf_name = vconf_keynode_get_name(key);
+ Setting_GenGroupItem_Data *item_to_update = NULL;
+
+ if (!safeStrCmp(vconf_name, VCONFKEY_SYSMAN_MMC_STATUS)) {
+ status = vconf_keynode_get_int(key);
+ SETTING_TRACE("status:%d", status);
+ if (VCONFKEY_SYSMAN_MMC_MOUNTED != status) {
+ /* when remove mmc card, change default tone */
+ char *call_tone = vconf_get_str(
+ VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
+ if (call_tone && !safeStrNCmp(
+ SETTING_PROFILE_MMC_PATH,
+ call_tone,
+ safeStrLen(SETTING_PROFILE_MMC_PATH))) {
+ ret = vconf_set_str(
+ VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
+ _TZ_SYS_GLOBALUSER_DATA"/settings/Ringtones/ringtone_sdk.mp3");
+ if (ret < 0)
+ SETTING_TRACE_DEBUG(
+ "failed to set vconf");
+ }
+ FREE(call_tone);
+
+ SETTING_TRACE("song_playing:%s", ad->song_playing);
+
+ if (!safeStrNCmp(SETTING_PROFILE_MMC_PATH,
+ ad->song_playing,
+ safeStrLen(SETTING_PROFILE_MMC_PATH))) {
+ /* close mm plaer */
+ setting_sound_stop_sound(ad);
+ /* close vibration */
+ }
+ }
+ } else if (!safeStrCmp(vconf_name,
+ VCONFKEY_SETAPPL_SOUND_STATUS_BOOL)) {
+ status = vconf_keynode_get_bool(key);
+ SETTING_TRACE_DEBUG("sound status is changed. %d", status);
+ if (status)
+ __enable_sound_menu(ad);
+ else
+ __disable_sound_menu(ad);
+
+ setting_sound_update_slider_icon(ad->data_call_volume,
+ SND_SLIDER_CALL);
+
+ if (ad->data_sound_when_ring)
+ elm_object_item_disabled_set(ad->data_sound_when_ring->item,
+ !status);
+ } else if (!safeStrCmp(vconf_name,
+ VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL)) {
+ status = vconf_keynode_get_bool(key);
+ SETTING_TRACE_DEBUG("vibration status is changed. %d", status);
+
+ setting_sound_update_slider_icon(ad->data_call_volume,
+ SND_SLIDER_CALL);
+ } else if (!safeStrCmp(vconf_name,
+ VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL)) {
+ item_to_update = ad->data_sound_when_ring;
+ status = vconf_keynode_get_bool(key);
+ if (item_to_update && item_to_update->eo_check) {
+ item_to_update->chk_status = status;
+ elm_check_state_set(item_to_update->eo_check,
+ item_to_update->chk_status);
+ }
+ } else if (!safeStrCmp(vconf_name,
+ VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL)) {
+ item_to_update = ad->data_button_sounds;
+ status = vconf_keynode_get_bool(key);
+ if (item_to_update && item_to_update->eo_check) {
+ item_to_update->chk_status = status;
+ elm_check_state_set(item_to_update->eo_check,
+ item_to_update->chk_status);
+ }
+ } else if (!safeStrCmp(vconf_name,
+ VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL)) {
+ item_to_update = ad->data_touch_sounds;
+ status = vconf_keynode_get_bool(key);
+ if (item_to_update && item_to_update->eo_check) {
+ item_to_update->chk_status = status;
+ elm_check_state_set(item_to_update->eo_check,
+ item_to_update->chk_status);
+ }
+ } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_SOUND_LOCK_BOOL)) {
+ item_to_update = ad->data_lock_sound;
+ status = vconf_keynode_get_bool(key);
+ if (item_to_update && item_to_update->eo_check) {
+ item_to_update->chk_status = status;
+ elm_check_state_set(item_to_update->eo_check,
+ item_to_update->chk_status);
+ }
+ }
+#if 0
+ else if (!safeStrCmp(vconf_name, VCONFKEY_ISE_KEYSOUND)) {
+ item_to_update = ad->data_keyboard_sound;
+ status = vconf_keynode_get_bool(key);
+ if (item_to_update && item_to_update->eo_check) {
+ item_to_update->chk_status = status;
+ elm_check_state_set(item_to_update->eo_check,
+ item_to_update->chk_status);
+ }
+ }
+#endif
+}
+
+static int __listen_vconf_change(void *data)
+{
+ retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+ /*Ints */
+ (void)vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
+ __sound_vconf_change_cb, data);
+
+ /*Bools */
+ (void)vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+ __sound_vconf_change_cb, data);
+ (void)vconf_notify_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+ __sound_vconf_change_cb, data);
+
+ (void)vconf_notify_key_changed(
+ VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL,
+ __sound_vconf_change_cb, data);
+ (void)vconf_notify_key_changed(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL,
+ __sound_vconf_change_cb, data);
+ (void)vconf_notify_key_changed(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
+ __sound_vconf_change_cb, data);
+ (void)vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
+ __sound_vconf_change_cb, data);
+
+ return 0;
+}
+
+static int __unlisten_vconf_change(void *data)
+{
+ /* unused listen */
+ /*Ints */
+ (void)vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
+ __sound_vconf_change_cb);
+
+ /*Bools */
+ (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+ __sound_vconf_change_cb);
+ (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+ __sound_vconf_change_cb);
+
+ (void)vconf_ignore_key_changed(
+ VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL,
+ __sound_vconf_change_cb);
+ (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL,
+ __sound_vconf_change_cb);
+ (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
+ __sound_vconf_change_cb);
+ (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
+ __sound_vconf_change_cb);
+
+ return 0;
+}
+
+static Eina_Bool __volume_up_timer_cb(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ int volume = 0;
+ int volume_max = 0;
+ int ret = 0;
+ retv_if(!data, EINA_FALSE);
+ SettingSoundData *ad = (SettingSoundData *)data;
+
+ if (!ad->is_pressing) {
+ ad->updown_timer = NULL;
+ return EINA_FALSE;
+ }
+
+ ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
+ SETTING_TRACE("Getting volume: %s %d", get_error_message(ret), volume);
+ ret = sound_manager_get_max_volume(SOUND_TYPE_RINGTONE, &volume_max);
+ SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
+ volume_max);
+ if (volume < volume_max) {
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE, ++volume);
+ if (ad->data_call_volume && ad->data_call_volume->eo_check) {
+ ad->data_call_volume->chk_status = volume;
+ elm_slider_value_set(ad->data_call_volume->eo_check,
+ volume);
+ SETTING_TRACE("ad->data_call_volume->chk_status : %d",
+ ad->data_call_volume->chk_status);
+ }
+ }
+
+ return EINA_TRUE;
+}
+
+static Eina_Bool __volume_down_timer_cb(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ int ret = 0;
+ int volume = 0;
+ retv_if(!data, EINA_FALSE);
+ SettingSoundData *ad = (SettingSoundData *)data;
+
+ if (!ad->is_pressing) {
+ ad->updown_timer = NULL;
+ return EINA_FALSE;
+ }
+
+ ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
+ SETTING_TRACE("Getting volume: %s %d", get_error_message(ret), volume);
+ if (volume > 0) {
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE, --volume);
+ if (volume == 0) {
+ /* change to Vibration mode */
+ vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+ FALSE);
+ vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+ TRUE);
+ feedback_play_type(FEEDBACK_TYPE_VIBRATION,
+ FEEDBACK_PATTERN_VIBRATION_ON);
+ }
+ if (ad->data_call_volume
+ && ad->data_call_volume->eo_check) {
+ ad->data_call_volume->chk_status = volume;
+ elm_slider_value_set(
+ ad->data_call_volume->eo_check,
+ volume);
+ SETTING_TRACE("ad->data_call_volume->chk_status : %d",
+ ad->data_call_volume->chk_status);
+ setting_sound_update_slider_icon(
+ ad->data_call_volume,
+ SND_SLIDER_CALL);
+ }
+ }
+ return EINA_TRUE;
+}
+
+
+static Eina_Bool __volume_key_up_cb(void *data, int type, void *event)
+{
+ SETTING_TRACE_BEGIN;
+ retv_if(!data || !event, EINA_TRUE);
+ SettingSoundData *ad = (SettingSoundData *)data;
+
+ Ecore_Event_Key *ev = event;
+ char *key = (char *)ev->key;
+ if (!key)
+ return EINA_TRUE;
+
+ if (!safeStrCmp(key, "XF86AudioRaiseVolume")
+ || !safeStrCmp(key, "XF86AudioLowerVolume")) {
+ ad->is_pressing = FALSE;
+ if (ad->updown_timer) {
+ ecore_timer_del(ad->updown_timer);
+ ad->updown_timer = NULL;
+ }
+ }
+ return EINA_TRUE;
+}
+
+/*
+ * S5 concept:
+ * On the volume popup,
+ * 1) if user controls the slider, don't play any sounds
+ * just change volume.
+ * 2) if user controls the HW volume key for ringtone
+ * sound, the beep sound is supported
+
+ * On Setting > Sound
+ * 1) if user controls the slider, change volume &
+ * play sound
+ * 2) if user controls the HW volume key, do nothing
+ * (DO NOT change volume,DO NOT play sound)
+*/
+static Eina_Bool __volume_key_down_cb(void *data, int type, void *event)
+{
+ int ret = 0;
+ int sound = 0;
+ char *key = NULL;
+ int volume = 0;
+ int volume_max = 0;
+ SettingSoundData *ad = (SettingSoundData *)data;
+ Ecore_Event_Key *ev = event;
+ SETTING_TRACE_BEGIN;
+ retv_if(!ad || !event, EINA_TRUE);
+
+ key = (char *)ev->key;
+ if (!key)
+ return EINA_TRUE;
+
+ ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
+ SETTING_TRACE("Getting volume: %s %d", get_error_message(ret), volume);
+ ret = sound_manager_get_max_volume(SOUND_TYPE_RINGTONE, &volume_max);
+ SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
+ volume_max);
+
+ vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound);
+
+ if (!safeStrCmp(key, "XF86AudioRaiseVolume")) {
+ SETTING_TRACE("Press KEY_VOLUMEUP");
+
+ ad->is_pressing = TRUE;
+
+ if (volume < volume_max) {
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE, ++volume);
+
+
+ if (volume > 0 && !sound) {
+ vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+ TRUE);
+ vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+ FALSE);
+ ad->data_call_volume->chk_status =
+ volume;
+ setting_sound_update_slider_icon(
+ ad->data_call_volume,
+ SND_SLIDER_CALL);
+ }
+ if (ad->data_call_volume
+ && ad->data_call_volume->eo_check) {
+ ad->data_call_volume->chk_status = volume;
+ elm_slider_value_set(
+ ad->data_call_volume->eo_check,
+ volume);
+ SETTING_TRACE("chk_status : %d",
+ ad->data_call_volume->chk_status);
+ }
+ ad->updown_timer = ecore_timer_add(0.5,
+ __volume_up_timer_cb,
+ ad);
+ }
+ }
+
+ if (!safeStrCmp(key, "XF86AudioLowerVolume")) {
+ SETTING_TRACE("Press KEY_VOLUMEDOWN");
+
+ ad->is_pressing = TRUE;
+
+ if (!sound)
+ return EINA_TRUE;
+
+ if (volume > 0) {
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE,
+ --volume);
+ if (volume == 0) {
+ /* change to Vibration mode */
+ vconf_set_bool(
+ VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+ FALSE);
+ vconf_set_bool(
+ VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+ TRUE);
+ feedback_play_type(FEEDBACK_TYPE_VIBRATION,
+ FEEDBACK_PATTERN_VIBRATION_ON);
+
+ ad->data_call_volume->chk_status =
+ volume;
+ setting_sound_update_slider_icon(
+ ad->data_call_volume,
+ SND_SLIDER_CALL);
+ }
+ if (ad->data_call_volume
+ && ad->data_call_volume->eo_check) {
+ ad->data_call_volume->chk_status =
+ volume;
+ elm_slider_value_set(
+ ad->data_call_volume->eo_check,
+ volume);
+ SETTING_TRACE("ad->data_call_volume->chk_status : %d",
+ ad->data_call_volume->chk_status);
+ }
+ ad->updown_timer = ecore_timer_add(0.5,
+ __volume_down_timer_cb,
+ ad);
+ }
+ }
+
+ return EINA_TRUE;
+}
+
+/* ***************************************************
+ *
+ *general func
+ *
+ ***************************************************/
+static void __calling_popup_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ ret_if(data == NULL);
+ SettingSoundData *ad = (SettingSoundData *) data;
+
+ if (ad->calling_popup) {
+ evas_object_del(ad->calling_popup);
+ ad->calling_popup = NULL;
+ }
+}
+
+static void __mm_player_msg_cb(void *user_param)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(user_param == NULL);
+ SettingSoundData *ad = (SettingSoundData *)user_param;
+
+ SETTING_TRACE("completed_cb is called.");
+ setting_sound_stop_sound(ad);
+}
+
+static Eina_Bool __play_timer_cb(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ int err;
+ player_state_e state = PLAYER_STATE_NONE;
+
+ retv_if(!data, EINA_FALSE);
+ SettingSoundData *ad = (SettingSoundData *)data;
+
+ SETTING_TRACE("player (%x)", ad->mp_prepare_async);
+ err = player_get_state(ad->mp_player, &state);
+ SETTING_TRACE("state:%d", state);
+
+ if (state != PLAYER_STATE_READY) {
+ SETTING_TRACE_ERROR(
+ "state of player is invalid (%s), STATE: %d",
+ get_error_message(err), state);
+ player_unprepare(ad->mp_player);
+ return EINA_FALSE;
+ }
+
+ player_set_completed_cb(ad->mp_player, __mm_player_msg_cb, ad);
+
+ err = player_start(ad->mp_player);
+ if (err != PLAYER_ERROR_NONE) { /* if directly return error. */
+ SETTING_TRACE_ERROR("player_start [%s]",
+ get_error_message(err));
+ player_unset_completed_cb(ad->mp_player);
+ player_unset_interrupted_cb(ad->mp_player);
+ player_unprepare(ad->mp_player);
+ }
+
+ return EINA_FALSE;
+}
+
+/* Async cb : to improve slider's performance when creating player */
+static void __mm_player_prepared_cb(void *user_data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!user_data);
+ ecore_idler_add(__play_timer_cb, user_data);
+}
+
+
+static void __sound_stream_focus_state_changed_cb(
+ sound_stream_info_h stream_info,
+ sound_stream_focus_mask_e focus_mask,
+ sound_stream_focus_state_e focus_state,
+ sound_stream_focus_change_reason_e reason,
+ int sound_behavior,
+ const char *extra_info,
+ void *user_data)
+{
+ player_state_e state = PLAYER_STATE_NONE;
+ SettingSoundData *ad = (SettingSoundData *)user_data;
+ ret_if(ad == NULL);
+
+ SETTING_TRACE_ERROR("Focus state changed, reason: %d", reason);
+
+ if (ad->mp_player) {
+ player_get_state(ad->mp_player, &state);
+ SETTING_TRACE("player state : %d", state);
+ }
+}
+
+
--- /dev/null
+/*
+ * setting
+ *
+ * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
+ *
+ * Contact: MyoungJune Park <mj2004.park@samsung.com>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+
+#include <notification_setting.h>
+#include <notification_setting_internal.h>
+#include <setting-common/setting-common-general-func.h>
+#include "setting-profile.h"
+
+#define DO_NOT_DISTURB_OP \
+ "http://tizen.org/appcontrol/operation/setting/do_not_disturb"
+#define APP_NOTIFICATIONS_OP \
+ "http://tizen.org/appcontrol/operation/setting/app_notifications"
+#define NOTIFICATIONS_ON_LOCK_SCREEN \
+ "http://tizen.org/appcontrol/operation/setting/notification_on_lock_screen"
+
+#define SETTING_DEFAULT_RINGTONE_VOL_INT 11
+#define SETTING_DEFAULT_NOTI_VOL_INT 11
+#define SETTING_DEFAULT_MEDIA_VOL_INT 9
+#define SETTING_DEFAULT_SYSTEM_VOL_INT 9
+
+#define NOTIFICATION_STR_ON_LOCK_SCREEN \
+ "IDS_QP_TMBODY_NOTIFICATIONS_ON_LOCK_SCREEN"
+#define NOTIFICATION_STR_ON_LOCK_SCREEN_HIDE "IDS_ST_OPT_HIDE_CONTENT"
+#define NOTIFICATION_STR_ON_LOCK_SCREEN_HIDE_SENSITIVE \
+ "IDS_QP_OPT_HIDE_SENSITIVE_CONTENT_ABB"
+#define NOTIFICATION_STR_ON_LOCK_SCREEN_SHOW_ALL \
+ "IDS_QP_OPT_SHOW_ALL_CONTENT_ABB"
+#define SILENT_MODE "Silent"
+#define INIT_PATH _TZ_SYS_GLOBALUSER_DATA"/settings/Vibrations/"
+
+/* should be called in function to return void */
+#define ADD_GENLIST2(genlist, parent) \
+ {\
+ genlist = elm_genlist_add(parent);\
+ retm_if(genlist == NULL, \
+ "Cannot set genlist object as content of layout");\
+ elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);\
+ elm_object_style_set(genlist, "dialogue");\
+ elm_genlist_clear(genlist);\
+ evas_object_smart_callback_add(genlist, "realized", \
+ __gl_realized_cb, NULL);\
+ elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, \
+ ELM_SCROLLER_POLICY_AUTO);\
+ }
+
+/* keystr, toggle */
+#define ADD_TOGGLE_MENU2(item, genlist, item_style, keystr, value, data) \
+ {\
+ item = setting_create_Gendial_field_def( \
+ genlist, \
+ &(item_style), \
+ _mouse_up_Gendial_list_cb, \
+ data, \
+ SWALLOW_Type_1ICON_1RADIO, \
+ NULL, \
+ NULL, \
+ value, \
+ keystr, \
+ NULL, \
+ _sound_chk_cb); \
+ if (item) { \
+ item->userdata = data; \
+ } else { \
+ SETTING_TRACE_ERROR("%s item is NULL", keystr); \
+ } \
+ }
+
+
+/* keystr, multiline, toggle */
+/* should be called in function to return void */
+#define ADD_TOGGLE_MENU( \
+ _item, genlist, item_style, keystr, substr, value, data) \
+ {\
+ _item = setting_create_Gendial_field_def( \
+ genlist, \
+ &(item_style), \
+ _mouse_up_Gendial_list_cb, \
+ data, \
+ SWALLOW_Type_1ICON_1RADIO, \
+ NULL, \
+ NULL, \
+ value, \
+ keystr, \
+ NULL, \
+ _sound_chk_cb); \
+ if (_item) { \
+ _item->userdata = data;\
+ } else { \
+ SETTING_TRACE_ERROR("%s item is NULL", keystr);\
+ } \
+ if (substr) {\
+ Setting_GenGroupItem_Data *item_data = setting_create_Gendial_field_def( \
+ genlist, \
+ &itc_multiline_text,\
+ NULL,\
+ NULL,\
+ SWALLOW_Type_LAYOUT_SPECIALIZTION_X,\
+ NULL, \
+ NULL, \
+ 0, \
+ substr, \
+ NULL, \
+ NULL);\
+ setting_retm_if(NULL == item_data, \
+ "item_data is NULL");\
+ elm_genlist_item_select_mode_set( \
+ item_data->item, \
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\
+ } \
+ }
+
+#define ADD_SOUND_SLIDER(item_data, genlist, item_style, l_img, r_img, value, \
+ keystr, data, sld_cb, sld_max, start_cb, stop_cb) \
+ { \
+ item_data = setting_create_Gendial_field_def( \
+ genlist, \
+ &(item_style), \
+ NULL,\
+ NULL, \
+ SWALLOW_Type_LAYOUT_SLIDER,\
+ l_img, \
+ r_img,\
+ value,\
+ keystr,\
+ NULL,\
+ sld_cb);\
+ if (item_data) {\
+ item_data->window = data->md.layout;\
+ item_data->evas = data->md.evas;\
+ item_data->isIndicatorVisible = FALSE;\
+ item_data->slider_min = 0;\
+ item_data->slider_max = sld_max;\
+ item_data->userdata = data;\
+ item_data->start_change_cb = start_cb;\
+ item_data->stop_change_cb = stop_cb;\
+ elm_genlist_item_select_mode_set( \
+ item_data->item, \
+ ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\
+ } else {\
+ SETTING_TRACE_ERROR("%s item is NULL", keystr);\
+ } \
+ }
+
+static int _view_create(void *cb);
+static int _view_destroy(void *cb);
+static Eina_Bool _view_pop_cb(void *data, Elm_Object_Item *it);
+static void _mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
+ void *event_info);
+
+setting_view setting_view_sound_main = {
+ .create = _view_create,
+ .destroy = _view_destroy,
+ .update = NULL,
+ .cleanup = NULL
+};
+
+/* ***************************************************
+ *
+ * Public functions
+ *
+ ***************************************************/
+
+const char *setting_do_not_disturb_is_enable(void *data)
+{
+ int err = NOTIFICATION_ERROR_NONE;
+ bool do_not_disturb;
+ notification_system_setting_h system_setting = NULL;
+
+ err = notification_system_setting_load_system_setting(&system_setting);
+ setting_retvm_if(NULL == system_setting || NOTIFICATION_ERROR_NONE != err,
+ "NULL parameter",
+ "notification_system_setting_load_system_Setting failed");
+ err = notification_system_setting_get_do_not_disturb(
+ system_setting, &do_not_disturb);
+ SETTING_TRACE("do_not_disturb: %d", do_not_disturb);
+
+ notification_system_setting_free_system_setting(system_setting);
+ if (1 == do_not_disturb)
+ return "IDS_ST_BODY_ON";
+ else
+ return "IDS_ST_BODY_ALERTTYPE_OFF";
+}
+
+const char *setting_notifiaction_on_lock_screen(void *data)
+{
+ int err = NOTIFICATION_ERROR_NONE;
+ notification_system_setting_h system_setting = NULL;
+ lock_screen_content_level_e level = 0;
+
+ err = notification_system_setting_load_system_setting(&system_setting);
+ setting_retvm_if(NOTIFICATION_ERROR_NONE != err,
+ "NULL parameter",
+ "notification_system_setting_load_system_setting failed");
+
+ err = notification_system_setting_get_lock_screen_content(
+ system_setting, &level);
+ if (system_setting)
+ notification_system_setting_free_system_setting(system_setting);
+
+ if (NOTIFICATION_ERROR_NONE != err) {
+ SETTING_TRACE_ERROR("notification_system_setting_get_"\
+ "lock_screen_content failed");
+ return "";
+ }
+
+ if (level == SHOW_ALL_CONTENT)
+ return NOTIFICATION_STR_ON_LOCK_SCREEN_SHOW_ALL;
+ else if (level == HIDE_SENSITIVE_CONTENT)
+ return NOTIFICATION_STR_ON_LOCK_SCREEN_HIDE_SENSITIVE;
+ else
+ return NOTIFICATION_STR_ON_LOCK_SCREEN_HIDE;
+}
+
+/* ***************************************************
+ *
+ * basic func
+ *
+ ***************************************************/
+
+static Eina_Bool _play_ringtone_sound_idle_cb(void *data)
+{
+ double current;
+ char *pa_tone_path = NULL;
+ player_state_e state = PLAYER_STATE_NONE ;
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
+ SettingSoundData *ad = list_item->userdata;
+
+ SETTING_TRACE_BEGIN;
+ retv_if(!data, EINA_FALSE);
+
+ player_get_state(ad->mp_player, &state);
+
+ if (list_item->eo_check) {
+ current = elm_slider_value_get(list_item->eo_check);
+ list_item->chk_status = (int)(current + 0.5);
+ }
+
+ /*
+ * S5 concept:
+ * On the volume popup,
+ * 1) if user controls the slider, don't play any sounds,
+ * just change volume.
+ * 2) if user controls the HW volume key for ringtone sound,
+ * the beep sound is supported
+
+ * On Setting > Sound
+ * 1) if user controls the slider, change volume & play sound
+ * 2) if user controls the HW volume key, do nothing
+ * (DO NOT change volume,DO NOT play sound)
+ */
+ if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
+ return EINA_FALSE;
+
+ if (state == PLAYER_STATE_IDLE) {
+ pa_tone_path = vconf_get_str(
+ VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
+ if (pa_tone_path == NULL) {
+ if (isEmulBin())
+ pa_tone_path = strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+ else
+ pa_tone_path = strdup(SETTING_DEFAULT_CALL_TONE);
+
+ if (vconf_set_str(
+ VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
+ pa_tone_path) < 0) {
+ free(pa_tone_path);
+ return EINA_FALSE;
+ }
+ }
+ if (list_item->chk_status > 0) {
+ setting_sound_play_sound_origin(
+ ad,
+ NULL,
+ pa_tone_path,
+ (float)list_item->chk_status,
+ SOUND_TYPE_RINGTONE);
+ }
+ free(pa_tone_path);
+ } else {
+ SETTING_TRACE("ringtone player status : %d", state);
+ if (state == PLAYER_STATE_PAUSED) {
+ player_start(ad->mp_player);
+ } else if (state == PLAYER_STATE_PLAYING) {
+ if (ad->sound_on)
+ player_set_mute(ad->mp_player, false);
+ }
+ }
+
+ ad->play_ringtone_idler = NULL;
+ return EINA_FALSE;
+}
+
+void _start_change_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ Setting_GenGroupItem_Data *list_item = NULL;
+ SettingSoundData *ad = NULL;
+
+ list_item = (Setting_GenGroupItem_Data *)data;
+ ret_if(!list_item);
+ ad = list_item->userdata;
+ ret_if(ad == NULL);
+
+ setting_sound_create_warning_popup_during_call(ad);
+ if (list_item == ad->data_call_volume)
+ ad->is_ringtone_slidering = true;
+
+ setting_sound_stop_sound(ad);
+}
+
+static void _call_slider_change_cb(
+ void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ SettingSoundData *ad = NULL;
+ double val = 0.0;
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
+ ret_if(!data);
+
+ val = elm_slider_value_get(obj);
+ ad = list_item->userdata;
+
+ ad->is_ringtone_slidering = true;
+
+ if (list_item->chk_status != (int)(val + 0.5)) {
+ list_item->chk_status = (int)(val + 0.5);
+ sound_manager_set_volume(SOUND_TYPE_RINGTONE, list_item->chk_status);
+ SETTING_TRACE_DEBUG(
+ "ringtone volume is %d, %f",
+ list_item->chk_status,
+ val);
+
+ if (list_item->chk_status == 0) {
+ /* change to Vibration mode */
+ /* call system_setting */
+ /*system_settings_set_value_bool(
+ * SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, false); */
+ vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+ FALSE);
+ vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+ TRUE);
+ feedback_play_type(FEEDBACK_TYPE_VIBRATION,
+ FEEDBACK_PATTERN_VIBRATION_ON);
+ } else {
+ if (!ad->sound_on) {
+ /* change to Sound mode */
+ /* call system_setting */
+ /*system_settings_set_value_bool(
+ * SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE,
+ * false); */
+ vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+ TRUE);
+ vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
+ FALSE);
+ }
+ }
+
+ setting_sound_update_slider_icon(list_item, SND_SLIDER_CALL);
+
+ elm_slider_value_set(obj, list_item->chk_status);
+ }
+
+ setting_sound_create_warning_popup_during_call(ad);
+ if (ad->calling_popup)
+ return;
+
+ ecore_idler_del(ad->play_ringtone_idler);
+ ad->play_ringtone_idler = ecore_idler_add(
+ _play_ringtone_sound_idle_cb, list_item);
+
+ SETTING_TRACE("list_item->chk_status:%d", list_item->chk_status);
+}
+
+static void _noti_slider_change_cb(
+ void *data, Evas_Object *obj, void *event_info)
+{
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
+ player_state_e state = PLAYER_STATE_NONE;
+ SETTING_TRACE_BEGIN;
+
+ ret_if(data == NULL);
+
+ double val = elm_slider_value_get(obj);
+ SettingSoundData *ad = list_item->userdata;
+ sound_type_e sound_type = SOUND_TYPE_NOTIFICATION;
+
+ if (list_item->chk_status != (int)(val + 0.5)) {
+ list_item->chk_status = (int)(val + 0.5);
+ setting_sound_update_slider_icon(list_item, SND_SLIDER_NOTI);
+ sound_manager_set_volume(sound_type, list_item->chk_status);
+ SETTING_TRACE_DEBUG(
+ "notification volume is %d, %f",
+ list_item->chk_status,
+ val);
+ }
+
+ setting_sound_create_warning_popup_during_call(ad);
+ if (ad->calling_popup)
+ return;
+
+ player_get_state(ad->mp_player, &state);
+ /*
+ * S5 concept:
+ * On the volume popup,
+ * 1) if user controls the slider, don't play any sounds
+ * just change volume.
+ * 2) if user controls the HW volume key for ringtone sound,
+ * the beep sound is supported
+
+ * On Setting > Sound
+ * 1) if user controls the slider, change volume & play sound
+ * 2) if user controls the HW volume key, do nothing
+ * (DO NOT change volume,DO NOT play sound)
+ */
+ if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
+ return;
+
+ if (state == PLAYER_STATE_IDLE) {
+ if (list_item->chk_status > 0) {
+ char *pa_tone_path = vconf_get_str(
+ VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
+ if (pa_tone_path == NULL) {
+ pa_tone_path = strdup(SETTING_DEFAULT_MSG_TONE);
+ if (vconf_set_str(
+ VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR,
+ pa_tone_path) < 0) {
+ FREE(pa_tone_path);
+ return;
+ }
+ }
+ setting_sound_play_sound_origin(
+ ad,
+ NULL,
+ pa_tone_path,
+ (float)list_item->chk_status,
+ sound_type);
+ FREE(pa_tone_path);
+ }
+ } else {
+ SETTING_TRACE("noti player status : %d", state);
+ if (state == PLAYER_STATE_PAUSED)
+ player_start(ad->mp_player);
+ }
+}
+
+
+static void _media_slider_change_cb(
+ void *data, Evas_Object *obj, void *event_info)
+{
+ char *pa_tone_path = NULL;
+ player_state_e state = PLAYER_STATE_NONE;
+ sound_type_e sound_type = SOUND_TYPE_MEDIA;
+ SETTING_TRACE_BEGIN;
+
+ /* error check */
+ ret_if(data == NULL);
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
+ SettingSoundData *ad = list_item->userdata;
+
+ double val = elm_slider_value_get(obj);
+ int value = (int)(val + 0.5);
+ if (list_item->chk_status != value) {
+ list_item->chk_status = value;
+ setting_sound_update_slider_icon(list_item, SND_SLIDER_MEDIA);
+ int ret = sound_manager_set_volume(sound_type, value);
+ SETTING_TRACE_DEBUG("ret : 0x%.8x", ret);
+ SETTING_TRACE_DEBUG(
+ "media volume is %d, %f",
+ list_item->chk_status,
+ val);
+ }
+
+ setting_sound_create_warning_popup_during_call(ad);
+ if (ad->calling_popup)
+ return;
+
+ /*
+ * S5 concept:
+ * On the volume popup,
+ * 1) if user controls the slider, don't play any sounds
+ * just change volume.
+ * 2) if user controls the HW volume key for ringtone sound,
+ * the beep sound is supported
+
+ * On Setting > Sound
+ * 1) if user controls the slider, change volume & play sound
+ * 2) if user controls the HW volume key, do nothing
+ * (DO NOT change volume,DO NOT play sound)
+ */
+ if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
+ return;
+
+ player_get_state(ad->mp_player, &state);
+
+ if (state == PLAYER_STATE_IDLE) {
+ if (list_item->chk_status > 0) {
+ if (isEmulBin())
+ pa_tone_path = strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+ else
+ pa_tone_path = strdup(SETTING_DEFAULT_MEDIA_TONE);
+
+ setting_sound_play_sound_origin(
+ ad,
+ NULL,
+ pa_tone_path,
+ (float)list_item->chk_status,
+ sound_type);
+ FREE(pa_tone_path);
+ }
+ } else {
+ SETTING_TRACE("ringtone player status : %d", state);
+ if (state == PLAYER_STATE_PAUSED)
+ player_start(ad->mp_player);
+ }
+}
+
+static void _sys_slider_change_cb(
+ void *data, Evas_Object *obj, void *event_info)
+{
+ /* error check */
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
+ SettingSoundData *ad = list_item->userdata;
+ ret_if(ad == NULL);
+
+ /*Get the current real value of slider */
+ double val = elm_slider_value_get(obj);
+ int value = (int)(val + 0.5);
+ sound_manager_set_volume(SOUND_TYPE_SYSTEM, value);
+ SETTING_TRACE_DEBUG("system volume is %d, %f", value, val);
+
+ setting_sound_create_warning_popup_during_call(ad);
+ if (ad->calling_popup)
+ return;
+
+ if (list_item->chk_status != value) {
+
+ /*
+ * S5 concept:
+ * On the volume popup,
+ * 1) if user controls the slider, don't play any sounds
+ * just change volume.
+ * 2) if user controls the HW volume key for ringtone
+ * sound, the beep sound is supported
+
+ * On Setting > Sound
+ * 1) if user controls the slider, change
+ * volume & play sound
+ * 2) if user controls the HW volume key, do nothing
+ * (DO NOT change volume,DO NOT play sound)
+ */
+ if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
+ /*Play Tap Sound,then stop at once */
+ feedback_play_type(FEEDBACK_TYPE_SOUND,
+ FEEDBACK_PATTERN_TAP);
+ }
+ list_item->chk_status = value;
+ setting_sound_update_slider_icon(list_item, SND_SLIDER_SYSTEM);
+ }
+}
+
+void _stop_change_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ Setting_GenGroupItem_Data *list_item = NULL;
+
+ ret_if(data == NULL);
+ list_item = (Setting_GenGroupItem_Data *)data;
+
+ SETTING_TRACE("chk_status : %d, slider : %f", list_item->chk_status,
+ elm_slider_value_get(obj));
+ if (list_item->chk_status == 0)
+ elm_slider_value_set(obj, 0.0);
+ else if (list_item->chk_status == 15)
+ elm_slider_value_set(obj, 15.0);
+ if (list_item->userdata)
+ ((SettingSoundData *)(list_item->userdata))->is_ringtone_slidering = false;
+ SETTING_TRACE_END;
+}
+
+static void _sound_chk_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ /* error check */
+ ret_if(data == NULL);
+ Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
+ SettingSoundData *ad = list_item->userdata;
+ ret_if(ad == NULL);
+
+ setting_sound_stop_sound(ad);
+ /* for genlist update status */
+ list_item->chk_status = elm_check_state_get(obj);
+ /* rollback */
+ setting_update_gl_item_chk_status(list_item, !list_item->chk_status);
+ _mouse_up_Gendial_list_cb(ad, NULL, list_item->item);
+}
+
+static void _get_lite_main_list(void *data)
+{
+ SETTING_TRACE_BEGIN;
+ ret_if(!data);
+ SettingSoundData *ad = (SettingSoundData *)data;
+
+ char *app_id = NULL;
+ char *optional_txt = NULL;
+ char *sdcard_filepath = NULL;
+ int vconf_value = 0;
+ char *sub_desc = NULL;
+ char *left_icon = NULL;
+ int mm_value = 0;
+ int sound_value = 0;
+ int vconf_ret = 0;
+ int ret = 0;
+ char *pa_ringtone = NULL;
+ int max_ringtone_vol = 0;
+ int max_noti_vol = 0;
+ int max_media_vol = 0;
+ int max_system_vol = 0;
+ Elm_Genlist_Item_Class *itc_slider = NULL;
+ Evas_Object *genlist = ad->md.genlist;
+ elm_genlist_block_count_set(genlist, 3);
+ elm_genlist_homogeneous_set(genlist, EINA_FALSE);
+
+ ret = sound_manager_get_max_volume(SOUND_TYPE_RINGTONE,
+ &max_ringtone_vol);
+ SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
+ max_ringtone_vol);
+ ret = sound_manager_get_max_volume(SOUND_TYPE_NOTIFICATION,
+ &max_noti_vol);
+ SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
+ max_noti_vol);
+ ret = sound_manager_get_max_volume(SOUND_TYPE_MEDIA, &max_media_vol);
+ SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
+ max_media_vol);
+ ret = sound_manager_get_max_volume(SOUND_TYPE_SYSTEM, &max_system_vol);
+ SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
+ max_system_vol);
+
+ if (vconf_get_bool(
+ VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
+ &sound_value) < 0)
+ sound_value = TRUE; /* default value of sound : on */
+
+
+ /*------------------------------------------------------------------ */
+ /*------------------------------------------------------------------ */
+ /*------------------------------------------------------------------ */
+ itc_slider = &(ad->itc_layout_1icon);
+
+ if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
+ itc_slider = &(ad->itc_layout);
+ /*------------------------------------------------------------------ */
+ /*------------------------------------------------------------------ */
+ /*------------------------------------------------------------------ */
+
+ /* 1. Ringtones */
+ SETTING_TRACE(" ???????????? ad->viewtype : %s ", ad->viewtype);
+
+ if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
+
+ int sd_status = VCONFKEY_SYSMAN_MMC_REMOVED;
+ if (vconf_get_int(
+ VCONFKEY_SYSMAN_MMC_STATUS,
+ &sd_status) != 0) {
+ SETTING_TRACE_ERROR("fail to get mmc status");
+ }
+ sdcard_filepath = vconf_get_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR);
+
+ if (0 == safeStrNCmp(sdcard_filepath, INIT_PATH, safeStrLen(INIT_PATH))) {
+ vconf_set_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR, "NONE");
+ free(sdcard_filepath);
+ sdcard_filepath = vconf_get_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR);
+ }
+ if (safeStrCmp(sdcard_filepath, "NONE") != 0
+ && sd_status == VCONFKEY_SYSMAN_MMC_MOUNTED) {
+ /*check sdcard filepath*/
+ if (sdcard_filepath)
+ pa_ringtone = strdup(sdcard_filepath);
+ vconf_set_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR, "NONE");
+ } else {
+ pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
+ }
+
+ free(sdcard_filepath);
+ sdcard_filepath = NULL;
+
+ if (!pa_ringtone || strlen(pa_ringtone) == 0) {
+ sub_desc = strdup(SILENT_MODE);
+ } else if (setting_sound_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL) {
+ if (pa_ringtone)
+ FREE(pa_ringtone);
+ if (isEmulBin())
+ pa_ringtone = strdup(SETTING_DEFAULT_CALL_TONE_SDK);
+ else
+ pa_ringtone = strdup(SETTING_DEFAULT_CALL_TONE);
+
+ vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_ringtone);
+ if (vconf_ret < 0)
+ SETTING_TRACE_DEBUG("failed to set vconf");
+ } else {
+ if (pa_ringtone)
+ sub_desc = setting_media_basename(pa_ringtone);
+ }
+
+ ad->data_call_alert_tone =
+ setting_create_Gendial_field_def(
+ genlist,
+ &itc_2text_2,
+ _mouse_up_Gendial_list_cb,
+ ad,
+ SWALLOW_Type_INVALID,
+ NULL,
+ NULL,
+ 0,
+ "IDS_ST_MBODY_RINGTONE",
+ sub_desc,
+ NULL);
+ if (ad->data_call_alert_tone) {
+ __BACK_POINTER_SET(ad->data_call_alert_tone);
+ ad->data_call_alert_tone->userdata = ad;
+ }
+
+ FREE(pa_ringtone);
+ G_FREE(sub_desc);
+ }
+
+
+ /* 2. call volumn. */
+ if (sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value)
+ != SOUND_MANAGER_ERROR_NONE)
+ mm_value = SETTING_DEFAULT_RINGTONE_VOL_INT;
+ if (sound_value == FALSE)
+ mm_value = 0;
+
+ (void)app_get_id(&app_id);
+
+ if (app_id && !strcmp(VOLUME_APP_NAME, app_id))
+ optional_txt = "IDS_ST_MBODY_RINGTONE";
+
+ left_icon = setting_sound_get_slider_icon(SND_SLIDER_CALL, mm_value);
+ ADD_SOUND_SLIDER(
+ ad->data_call_volume,
+ genlist,
+ (*itc_slider),
+ left_icon,
+ NULL,
+ /*"IDS_ST_HEADER_RINGTONES" is for volume App,in
+ * Setting > Sound,it has no title */
+ mm_value,
+ optional_txt,
+ ad,
+ _call_slider_change_cb,
+ max_ringtone_vol,
+ _start_change_cb,
+ _stop_change_cb);
+ __BACK_POINTER_SET(ad->data_call_volume);
+
+ /* Disable Call Volume slider if Silent ringtone is selected */
+ if (ad->data_call_volume
+ && ad->data_call_alert_tone
+ && !safeStrCmp(ad->data_call_alert_tone->sub_desc, SILENT_MODE)) {
+ elm_object_item_disabled_set(ad->data_call_volume->item, EINA_TRUE);
+ elm_object_disabled_set(ad->data_call_volume->eo_check, EINA_TRUE);
+ }
+
+ /* 3. Notification alert */
+ if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
+ pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
+ SETTING_TRACE_WARNING("<MS> NOTI VCONF: %s", __FILE__, __LINE__, pa_ringtone);
+
+
+ if (!pa_ringtone || strlen(pa_ringtone) == 0) {
+ sub_desc = strdup(SILENT_MODE);
+ } else if (setting_sound_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL) {
+ if (pa_ringtone)
+ FREE(pa_ringtone);
+ pa_ringtone = strdup(SETTING_DEFAULT_MSG_TONE);
+ vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE);
+ if (vconf_ret < 0)
+ SETTING_TRACE_DEBUG("failed to set vconf");
+ } else {
+ if (pa_ringtone)
+ sub_desc = setting_media_basename(pa_ringtone);
+ }
+
+ ad->data_msg_alert_tone =
+ setting_create_Gendial_field_def(
+ genlist,
+ &itc_2text_2,
+ _mouse_up_Gendial_list_cb,
+ ad,
+ SWALLOW_Type_INVALID,
+ NULL,
+ NULL,
+ 0,
+ "IDS_ST_BODY_NOTIFICATION",
+ sub_desc,
+ NULL);
+ if (ad->data_msg_alert_tone) {
+ __BACK_POINTER_SET(ad->data_msg_alert_tone);
+ ad->data_msg_alert_tone->userdata = ad;
+ }
+
+ FREE(pa_ringtone);
+ G_FREE(sub_desc);
+ }
+ /* 4.noti volumn */
+ if (sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &mm_value)
+ != SOUND_MANAGER_ERROR_NONE)
+ mm_value = SETTING_DEFAULT_NOTI_VOL_INT;
+ if (sound_value == FALSE)
+ mm_value = 0;
+
+ if (app_id && !strcmp(VOLUME_APP_NAME, app_id))
+ optional_txt = "IDS_ST_BODY_NOTIFICATION";
+
+ left_icon = setting_sound_get_slider_icon(SND_SLIDER_NOTI, mm_value);
+ ADD_SOUND_SLIDER(
+ ad->data_noti_volume,
+ genlist,
+ (*itc_slider),
+ left_icon,
+ NULL,
+ mm_value,
+ optional_txt,
+ ad,
+ _noti_slider_change_cb,
+ max_noti_vol,
+ _start_change_cb,
+ _stop_change_cb);
+ __BACK_POINTER_SET(ad->data_noti_volume);
+
+ free(app_id);
+ app_id = NULL;
+
+ /* Disable Notification slider if Silent ringtone is selected */
+ if (ad->data_noti_volume
+ && ad->data_msg_alert_tone
+ && !safeStrCmp(ad->data_msg_alert_tone->sub_desc, SILENT_MODE)) {
+ elm_object_item_disabled_set(ad->data_noti_volume->item, EINA_TRUE);
+ elm_object_disabled_set(ad->data_noti_volume->eo_check, EINA_TRUE);
+ }
+
+ /* 5.media volume */
+ if (sound_manager_get_volume(SOUND_TYPE_MEDIA, &mm_value)
+ != SOUND_MANAGER_ERROR_NONE)
+ mm_value = SETTING_DEFAULT_MEDIA_VOL_INT;
+
+ left_icon = setting_sound_get_slider_icon(SND_SLIDER_MEDIA, mm_value);
+ ADD_SOUND_SLIDER(
+ ad->data_media_volume,
+ genlist,
+ ad->itc_layout,
+ left_icon, /*IMG_SLIDER_BTN_VOLUME02*/
+ NULL,
+ mm_value,
+ "IDS_ST_BODY_MEDIA",
+ ad,
+ _media_slider_change_cb,
+ max_media_vol,
+ _start_change_cb,
+ _stop_change_cb);
+
+ __BACK_POINTER_SET(ad->data_media_volume);
+
+ /* 6.system volume */
+ if (sound_manager_get_volume(SOUND_TYPE_SYSTEM, &mm_value)
+ != SOUND_MANAGER_ERROR_NONE) {
+ SETTING_TRACE_DEBUG("Fail to get volume");
+ mm_value = SETTING_DEFAULT_SYSTEM_VOL_INT;
+ }
+ if (sound_value == FALSE)
+ mm_value = 0;
+
+ left_icon = setting_sound_get_slider_icon(SND_SLIDER_SYSTEM, mm_value);
+ ADD_SOUND_SLIDER(
+ ad->data_touch_volume, genlist, ad->itc_layout,
+ left_icon, NULL/*IMG_SLIDER_BTN_SYSTEM_VOLUME*/,
+ mm_value, "IDS_ST_BODY_SYSTEM", ad,
+ _sys_slider_change_cb,
+ max_system_vol,
+ _start_change_cb, _stop_change_cb);
+
+ __BACK_POINTER_SET(ad->data_touch_volume);
+
+ if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
+ /* 7. Vibrate when ringing */
+ if (vconf_get_bool(
+ VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL,
+ &vconf_value) < 0) {
+ /* default value of vibrate sound : on */
+ vconf_value = TRUE;
+ }
+ ADD_TOGGLE_MENU2(
+ ad->data_sound_when_ring,
+ genlist,
+ itc_1text_1icon,
+ "IDS_ST_BODY_VIBRATE_WHEN_RINGING",
+ vconf_value,
+ ad);
+ __BACK_POINTER_SET(ad->data_sound_when_ring);
+
+ if (ad->data_sound_when_ring)
+ elm_object_item_disabled_set(ad->data_sound_when_ring->item,
+ !sound_value);
+ /* 8. Feedback */
+ setting_create_Gendial_field_def(genlist, &itc_1text,
+ _mouse_up_Gendial_list_cb,
+ data, SWALLOW_Type_INVALID, NULL,
+ NULL, 0,
+ "IDS_ST_MBODY_OTHER_SOUNDS", NULL, NULL);
+
+ /* Notifications */
+ setting_create_Gendial_field_titleItem(
+ genlist,
+ &itc_group_item,
+ _("IDS_ST_BODY_NOTIFICATIONS"),
+ NULL);
+ /* 9. Notifications - Do not disturb */
+ const char *sub_desc = setting_do_not_disturb_is_enable(data);
+ ad->data_do_not_disturb = setting_create_Gendial_field_def(
+ genlist,
+ &itc_2text_2,
+ _mouse_up_Gendial_list_cb,
+ data,
+ SWALLOW_Type_INVALID,
+ NULL,
+ NULL,
+ 0,
+ "IDS_ST_MBODY_DO_NOT_DISTURB_ABB",
+ sub_desc,
+ NULL);
+ /* 10. Notifications - App notifications */
+ setting_create_Gendial_field_def(
+ genlist,
+ &itc_2text_2,
+ _mouse_up_Gendial_list_cb,
+ data,
+ SWALLOW_Type_INVALID,
+ NULL,
+ NULL,
+ 0,
+ "IDS_ST_MBODY_APP_NOTIFICATIONS",
+ "IDS_ST_BODY_ALLOW_OR_BLOCK_NOTIFICATIONS_FROM_"
+ "INDIVIDUAL_APPLICATIONS",
+ NULL);
+
+ sub_desc = setting_notifiaction_on_lock_screen(data);
+ /* 11. Notifications - Notification on lock screen */
+ ad->data_notifiaction_on_lock_screen = setting_create_Gendial_field_def(
+ genlist,
+ &itc_2text_2,
+ _mouse_up_Gendial_list_cb,
+ data,
+ SWALLOW_Type_INVALID,
+ NULL,
+ NULL,
+ 0,
+ NOTIFICATION_STR_ON_LOCK_SCREEN,
+ sub_desc,
+ NULL);
+
+ ad->md.genlist = genlist;
+
+ }
+ if (!sound_value) {
+ if (ad->data_noti_volume)
+ elm_object_item_disabled_set(ad->data_noti_volume->item,
+ EINA_TRUE);
+ if (ad->data_touch_volume)
+ elm_object_item_disabled_set(ad->data_touch_volume->item,
+ EINA_TRUE);
+ }
+}
+
+static void _click_softkey_back_cb(void *data,
+ Evas_Object *obj, void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ SettingSoundData *ad = (SettingSoundData *)data;
+ ret_if(!ad);
+ elm_naviframe_item_pop(ad->md.naviframe);
+}
+
+static int _view_create(void *cb)
+{
+ Evas_Object *back_button = NULL;
+
+ SETTING_TRACE_BEGIN;
+ retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+ SettingSoundData *ad = (SettingSoundData *) cb;
+
+ int ret = view_init(&ad->md, _("IDS_ST_HEADER_SOUND"));
+
+ if (ret != SETTING_RETURN_SUCCESS)
+ return ret;
+
+ /* 1.Grab Hard Key */
+ setting_sound_key_grab(ad);
+ SETTING_TRACE("viewtype: %s", ad->viewtype);
+ _get_lite_main_list(ad);
+
+ back_button = setting_create_button(ad->md.naviframe,
+ _(NULL), NAVI_BACK_ARROW_BUTTON_STYLE,
+ _click_softkey_back_cb, ad);
+ elm_layout_content_set(ad->md.naviframe, "prev_btn",
+ back_button);
+ elm_naviframe_item_pop_cb_set(ad->md.naviframe_it, _view_pop_cb, ad);
+ elm_object_item_domain_text_translatable_set(
+ ad->md.naviframe_it, SETTING_PACKAGE,
+ EINA_TRUE);
+
+ setting_view_sound_main.is_create = TRUE;
+
+ SETTING_TRACE_END;
+ return SETTING_RETURN_SUCCESS;
+}
+
+static int _view_destroy(void *cb)
+{
+ /* error check */
+ retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+ SETTING_TRACE_BEGIN;
+ retv_if(!setting_view_sound_main.is_create,
+ SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
+
+ SettingSoundData *ad = (SettingSoundData *) cb;
+
+ /* 1.Ungrab Key */
+ setting_sound_key_ungrab(ad);
+
+ if (ad->play_ringtone_idler) {
+ ecore_idler_del(ad->play_ringtone_idler);
+ ad->play_ringtone_idler = NULL;
+ }
+
+ evas_object_del(ad->md.window);
+ ad->md.window = NULL;
+
+ setting_view_sound_main.is_create = FALSE;
+ return SETTING_RETURN_SUCCESS;
+}
+
+static Eina_Bool _view_pop_cb(void *data, Elm_Object_Item *it)
+{
+ SETTING_TRACE_BEGIN;
+ SettingSoundData *ad = data;
+ retv_if(!ad, EINA_FALSE);
+ setting_sound_stop_sound(ad);
+ ui_app_exit();
+ return EINA_TRUE;
+}
+
+/* ***************************************************
+ *
+ *general func
+ *
+ ***************************************************/
+
+static void _update_slider_item(Setting_GenGroupItem_Data *item_to_update,
+ sound_type_e sound_type_to_update, const char *ringtone_file,
+ int icon_type)
+{
+ int mm_value = 0;
+ SettingSoundData *ad = NULL;
+
+ ret_if(!item_to_update);
+ ad = item_to_update->userdata;
+ ret_if(!ad);
+
+ if (!safeStrCmp(ringtone_file, SILENT_MODE)) {
+ /* Disable */
+ if (item_to_update && item_to_update->item
+ && item_to_update->eo_check) {
+ if (item_to_update->chk_status)
+ ad->backup_ringtone_volume[sound_type_to_update] =
+ item_to_update->chk_status;
+ item_to_update->chk_status = 0;
+ elm_slider_value_set(item_to_update->eo_check,
+ item_to_update->chk_status);
+
+ sound_manager_set_volume(sound_type_to_update, 0);
+
+ elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
+ elm_object_disabled_set(item_to_update->eo_check, EINA_TRUE);
+
+ /* Change notification slider's icon as mute style */
+ setting_sound_update_slider_icon(item_to_update, icon_type);
+ }
+ } else {
+ /* Enable */
+ int ret = sound_manager_get_volume(sound_type_to_update, &mm_value);
+ SETTING_TRACE("ret:%d", ret);
+ item_to_update->chk_status = mm_value;
+ elm_slider_value_set(
+ item_to_update->eo_check,
+ item_to_update->chk_status);
+ elm_object_item_disabled_set(item_to_update->item, EINA_FALSE);
+ elm_object_disabled_set(item_to_update->eo_check, EINA_FALSE);
+ if (mm_value == 0)
+ sound_manager_set_volume(sound_type_to_update,
+ ad->backup_ringtone_volume[sound_type_to_update]);
+ setting_sound_update_slider_icon(item_to_update, icon_type);
+ }
+}
+
+static void _set_ringtone_path(Evas_Object *genlist, char *path, char *vconf,
+ system_settings_key_e key,
+ Setting_GenGroupItem_Data *ringtone_item,
+ Setting_GenGroupItem_Data *slider_item,
+ sound_type_e sound_type, SoundType type)
+{
+ char *ringtone_file = setting_media_basename(path);
+ int ret;
+
+ SETTING_TRACE_BEGIN;
+
+ if (strnlen(path, PATH_MAX) == 0) {
+ ret = vconf_set_str(vconf, "");
+ if (ret != 0)
+ dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] vconf_set_str() error: %s",
+ __FILE__, __LINE__, get_error_message(ret));
+
+ ringtone_item->sub_desc = strdup(SILENT_MODE);
+ } else {
+ ret = vconf_set_str(vconf, path);
+ if (ret != 0)
+ dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] cause error: %s",
+ __FILE__, __LINE__, get_error_message(ret));
+
+ ret = system_settings_set_value_string(key, path);
+ if (SYSTEM_SETTINGS_ERROR_NONE == ret)
+ ringtone_item->sub_desc = strdup(ringtone_file);
+ else
+ SETTING_TRACE_ERROR("system_settings_set_value_string() failed: %s",
+ get_error_message(ret));
+ }
+
+ elm_object_item_data_set(ringtone_item->item, ringtone_item);
+ elm_genlist_item_update(ringtone_item->item);
+ elm_genlist_realized_items_update(genlist);
+ _update_slider_item(slider_item, sound_type, ringtone_file, type);
+
+ free(ringtone_file);
+ SETTING_TRACE_END;
+}
+
+static void _result_myfile_cb(app_control_h request,
+ app_control_h reply, app_control_result_e result,
+ void *priv)
+{
+ char **paths = NULL;
+ int arr_len = 0;
+
+ SETTING_TRACE_BEGIN;
+ ret_if(priv == NULL);
+
+ SettingSoundData *ad = (SettingSoundData *) priv;
+
+ if (APP_CONTROL_RESULT_SUCCEEDED != result)
+ return;
+
+ (void)app_control_get_extra_data_array(reply, APP_CONTROL_DATA_SELECTED,
+ &paths, &arr_len);
+ if (!paths || arr_len == 0)
+ return;
+
+ if (paths[0] != NULL) {
+ if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_MBODY_RINGTONE")) {
+ _set_ringtone_path(ad->md.genlist, paths[0],
+ VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
+ SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
+ ad->data_call_alert_tone, ad->data_call_volume,
+ SOUND_TYPE_RINGTONE, SND_SLIDER_CALL);
+
+ } else if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_BODY_NOTIFICATION")) {
+ _set_ringtone_path(ad->md.genlist, paths[0],
+ VCONFKEY_SETAPPL_NOTI_RINGTONE_PATH_STR,
+ SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
+ ad->data_msg_alert_tone, ad->data_noti_volume,
+ SOUND_TYPE_NOTIFICATION, SND_SLIDER_NOTI);
+ }
+ }
+
+ free(paths);
+}
+
+static char *_prepare_ringtone_path(char *vconf, system_settings_key_e key,
+ char *default_emul, char *default_arm)
+{
+ int ret = 0;
+ char *vconf_ringtone = vconf_get_str(vconf);
+ char *pa_cur_ringtone = NULL;
+
+ dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] <MS> VCONF_RINGTONE: %s", __FILE__, __LINE__, vconf_ringtone);
+
+ if (!vconf_ringtone || strlen(vconf_ringtone) == 0) {
+ pa_cur_ringtone = strdup(SILENT_MODE);
+ } else {
+ ret = system_settings_get_value_string(key, &pa_cur_ringtone);
+ if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
+ SETTING_TRACE_ERROR("system_settings_get_value_string() failed. Error: %s", get_error_message(ret));
+ return NULL;
+ }
+ }
+
+ if (pa_cur_ringtone == NULL) {
+ if (isEmulBin())
+ pa_cur_ringtone = strdup(default_emul);
+ else
+ pa_cur_ringtone = strdup(default_arm);
+ }
+
+
+ return pa_cur_ringtone;
+}
+
+static void _create_myfile_ug(SettingSoundData *ad, char *titleID)
+{
+ ret_if(ad == NULL);
+ const char *selected_files_arr[] = {NULL};
+ char *pa_cur_ringtone = NULL;
+ app_control_h svc = NULL;
+ if (APP_CONTROL_ERROR_NONE != app_control_create(&svc))
+ return;
+
+ if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_MBODY_RINGTONE")) {
+ pa_cur_ringtone = _prepare_ringtone_path(
+ VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
+ SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
+ SETTING_DEFAULT_CALL_TONE_SDK,
+ SETTING_DEFAULT_CALL_TONE);
+
+ } else if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_BODY_NOTIFICATION")) {
+ pa_cur_ringtone = _prepare_ringtone_path(
+ VCONFKEY_SETAPPL_NOTI_RINGTONE_PATH_STR,
+ SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
+ SETTING_DEFAULT_MSG_TONE,
+ SETTING_DEFAULT_MSG_TONE);
+
+ app_control_add_extra_data(svc, "show_notification", "true");
+ }
+
+ selected_files_arr[0] = pa_cur_ringtone;
+
+ app_control_add_extra_data_array(svc, APP_CONTROL_DATA_SELECTED,
+ selected_files_arr,
+ sizeof(selected_files_arr)/
+ sizeof(const char *));
+
+ elm_object_tree_focus_allow_set(ad->md.naviframe, EINA_FALSE);
+
+ app_control_set_app_id(svc, "org.tizen.setting-ringtone");
+ app_control_set_launch_mode(svc, APP_CONTROL_LAUNCH_MODE_GROUP);
+ if (APP_CONTROL_ERROR_NONE !=
+ app_control_send_launch_request(svc, _result_myfile_cb, ad))
+ SETTING_TRACE_ERROR("org.tizen.setting-ringtone launch request failed");
+
+ app_control_destroy(svc);
+ free(pa_cur_ringtone);
+}
+
+static void _back_button_click_cb(void *data, Evas_Object *obj,
+ void *event_info)
+{
+ SettingSoundData *ad = data;
+ ret_if(!ad);
+ elm_naviframe_item_pop(ad->md.naviframe);
+}
+
+static void _mouse_up_Gendial_list_cb(void *data,
+ Evas_Object *obj,
+ void *event_info)
+{
+ SETTING_TRACE_BEGIN;
+ app_control_h service = 0;
+ Evas_Object *back_button = NULL;
+ SettingSoundData *ad = NULL;
+ Elm_Object_Item *navi_it = NULL;
+ int vconf_value = 0;
+ Evas_Object *genlist = NULL;
+ Elm_Object_Item *item = NULL;
+ Setting_GenGroupItem_Data *list_item = NULL;
+
+ ad = data;
+ ret_if(!ad);
+
+ item = (Elm_Object_Item *)event_info;
+ retm_if(event_info == NULL, "Invalid argument: event info is NULL");
+
+ elm_genlist_item_selected_set(item, 0);
+ list_item = elm_object_item_data_get(item);
+ ret_if(!list_item);
+
+ setting_sound_stop_sound(ad);
+
+ SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
+
+ if (!safeStrCmp("IDS_ST_MBODY_RINGTONE", list_item->keyStr)
+ || !safeStrCmp("IDS_ST_BODY_NOTIFICATION", list_item->keyStr)) {
+ ad->ringtone_type = list_item->keyStr;
+ _create_myfile_ug(ad, list_item->keyStr);
+ setting_sound_key_ungrab(ad);
+ } else if (!safeStrCmp("IDS_ST_MBODY_DO_NOT_DISTURB_ABB",
+ list_item->keyStr)) {
+ app_control_create(&service);
+ app_control_set_app_id(service,
+ "org.tizen.setting-notification");
+ app_control_set_operation(service, DO_NOT_DISTURB_OP);
+ app_control_set_launch_mode(service, APP_CONTROL_LAUNCH_MODE_GROUP);
+ app_control_send_launch_request(service, NULL, NULL);
+ app_control_destroy(service);
+ } else if (!safeStrCmp("IDS_ST_MBODY_APP_NOTIFICATIONS",
+ list_item->keyStr)) {
+ app_control_create(&service);
+ app_control_set_app_id(service,
+ "org.tizen.setting-notification");
+ app_control_set_operation(service, APP_NOTIFICATIONS_OP);
+ app_control_set_launch_mode(service, APP_CONTROL_LAUNCH_MODE_GROUP);
+ app_control_send_launch_request(service, NULL, NULL);
+ app_control_destroy(service);
+ } else if (!safeStrCmp(NOTIFICATION_STR_ON_LOCK_SCREEN,
+ list_item->keyStr)) {
+ app_control_create(&service);
+ app_control_set_app_id(service,
+ "org.tizen.setting-notification");
+ app_control_set_operation(service, NOTIFICATIONS_ON_LOCK_SCREEN);
+ app_control_set_launch_mode(service, APP_CONTROL_LAUNCH_MODE_GROUP);
+ app_control_send_launch_request(service, NULL, NULL);
+ app_control_destroy(service);
+
+ }
+ /* additional */
+ else if (!safeStrCmp(
+ "IDS_ST_BODY_VIBRATE_WHEN_RINGING",
+ list_item->keyStr)) {
+ /* vibrate when ring*/
+ int old_status = list_item->chk_status;
+ if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL,
+ !old_status) == 0) {
+ /* new status */
+ setting_update_gl_item_chk_status(list_item, !old_status);
+ }
+ } else if (!safeStrCmp("IDS_ST_BODY_SCREEN_LOCK_SOUND",
+ list_item->keyStr)) {
+ int old_status = list_item->chk_status;
+ if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
+ !old_status) == 0) {
+ /* new status */
+ setting_update_gl_item_chk_status(list_item,
+ !old_status);
+ }
+ } else if (!safeStrCmp("IDS_ST_MBODY_DIALLING_KEYPAD_TONE",
+ list_item->keyStr)) {
+ int old_status = list_item->chk_status;
+ /* To do : set vconfkey for touch sounds */
+ if (vconf_set_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL,
+ !old_status) == 0) {
+ /* new status */
+ setting_update_gl_item_chk_status(list_item,
+ !old_status);
+ }
+ } else if (!safeStrCmp("IDS_ST_MBODY_TOUCH_SOUND", list_item->keyStr)) {
+ int old_status = list_item->chk_status;
+ /* To do : set vconfkey for touch sounds */
+ if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
+ !old_status) == 0) {
+ /* new status */
+ setting_update_gl_item_chk_status(list_item,
+ !old_status);
+ }
+ } else if (!safeStrCmp("IDS_ST_MBODY_OTHER_SOUNDS", list_item->keyStr)) {
+ setting_sound_key_ungrab(ad);
+
+ ADD_GENLIST2(genlist, ad->md.naviframe);
+ /* 1. Touch sounds */
+ if (vconf_get_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
+ &vconf_value) < 0)
+ /* default value of touch sounds : on */
+ vconf_value = TRUE;
+ ADD_TOGGLE_MENU(ad->data_touch_sounds, genlist, itc_1text_1icon,
+ "IDS_ST_MBODY_TOUCH_SOUND",
+ "IDS_ST_BODY_PLAY_A_SOUND_WHEN_BUTTONS_ICONS_"
+ "AND_MENU_ITEMS_ARE_TAPPED",
+ vconf_value, ad)
+
+ /* 2. Keytones */
+ if (vconf_get_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL,
+ &vconf_value) < 0)
+ /* default value of touch sounds : on */
+ vconf_value = TRUE;
+ ADD_TOGGLE_MENU(ad->data_button_sounds, genlist,
+ itc_1text_1icon,
+ "IDS_ST_MBODY_DIALLING_KEYPAD_TONE",
+ "IDS_ST_BODY_PLAY_TONE_WHEN_THE_DIALLING_"
+ "KEYPAD_IS_TAPPED",
+ vconf_value, ad)
+
+ /* 3. Screen lock sound */
+ if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
+ &vconf_value) < 0)
+ /* default value of lock/unlock sound : off */
+ vconf_value = 0;
+ ADD_TOGGLE_MENU(ad->data_lock_sound, genlist, itc_1text_1icon,
+ "IDS_ST_BODY_SCREEN_LOCK_SOUND",
+ "IDS_ST_BODY_PLAY_SOUNDS_WHEN_LOCKING_AND_UNLOCKING_SCREEN",
+ vconf_value, ad)
+
+
+ navi_it = elm_naviframe_item_push(ad->md.naviframe,
+ "IDS_ST_MBODY_OTHER_SOUNDS", NULL, NULL, genlist,
+ NULL);
+ elm_object_item_domain_text_translatable_set(navi_it,
+ SETTING_PACKAGE, EINA_TRUE);
+ back_button = setting_create_button(ad->md.naviframe, _("IDS_ST_BUTTON_BACK"),
+ NAVI_BACK_ARROW_BUTTON_STYLE, _back_button_click_cb, ad);
+ elm_layout_content_set(ad->md.naviframe, "prev_btn", back_button);
+ }
+}
+++ /dev/null
-/*
- * setting
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
- *
- * Contact: MyoungJune Park <mj2004.park@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-#ifndef __SETTING_PROFILE_H__
-#define __SETTING_PROFILE_H__
-
-#include <player.h>
-#include <sound_manager.h>
-#include <efl_extension.h>
-#include <feedback.h>
-#include <call-manager.h>
-#include <system_settings.h>
-#include <setting-common/setting-common-init.h>
-#include <setting-common/setting-common-general-func.h>
-#include <setting-common/setting-common-draw-widget.h>
-#include <setting-common/setting-common-view.h>
-
-#define SETTING_PROFILE_ICON_PATH_CFG _TZ_SYS_RO_APP"/org.tizen.setting/res/icons/"
-
-#define VOLUME_APP_NAME "org.tizen.setting.volume"
-#define SETTING_PROFILE_MMC_PATH \
- _TZ_SYS_MEDIA"/sdcard"
-#define SETTING_DEFAULT_MSG_TONE \
- _TZ_SYS_GLOBALUSER_DATA"/settings/Alerts/Whistle.ogg"
-#define SETTING_DEFAULT_MEDIA_TONE \
- _TZ_SYS_GLOBALUSER_DATA"/settings/Ringtones/ringtone_sdk.mp3"
-#define SUPPORT_PLAYER_ASYNC 1
-
-/*Call ringtone:3 icon status */
-#define ICON_CALL_VIB \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume_vibrate.png"
-#define ICON_CALL_NORMAL \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_incoming_call.png"
-#define ICON_CALL_MUTE \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume_mute.png"
-
-/*Notification: 2 icon status */
-#define ICON_NOTI_VIB \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_notification_vibrate.png"
-#define ICON_NOTI_MUTE \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_notification_mute.png"
-#define ICON_NOTI_NORMAL \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_notification.png"
-
-/*Media: 2 icon status */
-#define ICON_MEDIA_MUTE SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume_mute.png"
-#define ICON_MEDIA_NORMAL SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_volume.png"
-
-/*System:2 icon status */
-#define ICON_SYSTEM_MUTE \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_system_mute.png"
-#define ICON_SYSTEM_NORMAL \
- SETTING_PROFILE_ICON_PATH_CFG"sound_slider_icon_system.png"
-
-typedef enum {
- SND_SLIDER_CALL = 0,
- SND_SLIDER_NOTI,
- SND_SLIDER_MEDIA,
- SND_SLIDER_SYSTEM,
- SND_SLIDER_MAX,
-} SoundType;
-
-typedef struct _SettingSoundData SettingSoundData;
-
-/**
- * Setting Profile UG context
- * all UG function has void* as an agument. this is casted back to
- * SettingSoundData and the functions access app context.
- */
-struct _SettingSoundData {
- char *viewtype;
- MainData md;
-
- /* add more variables here (move your appdata to here) */
- Elm_Genlist_Item_Class itc_layout;
- Elm_Genlist_Item_Class itc_layout_1icon;
-
- /* Main view */
- Setting_GenGroupItem_Data *data_call_alert_tone;
- Setting_GenGroupItem_Data *data_call_volume;
- Setting_GenGroupItem_Data *data_msg_alert_tone;
- Setting_GenGroupItem_Data *data_noti_volume;
- Setting_GenGroupItem_Data *data_touch_volume;
- Setting_GenGroupItem_Data *data_media_volume;
- Setting_GenGroupItem_Data *data_sound_when_ring;
- Setting_GenGroupItem_Data *data_do_not_disturb;
- Setting_GenGroupItem_Data *data_notifiaction_on_lock_screen;
-
- /* Feedback */
- Setting_GenGroupItem_Data *data_lock_sound;
- Setting_GenGroupItem_Data *data_keyboard_sound;
- Setting_GenGroupItem_Data *data_button_sounds;
- Setting_GenGroupItem_Data *data_touch_sounds;
-
- player_h mp_player;
- player_h mp_prepare_async;
- sound_stream_info_h ringtone_sound_stream_info;
- sound_stream_info_h noti_sound_stream_info;
- sound_stream_info_h media_sound_stream_info;
-
- bool sound_on;
- char *song_playing;
- char *ringtone_type;
-
- /* for performance of incoming call ringtone slider */
- Ecore_Idler *play_ringtone_idler;
-
- Ecore_Event_Handler *keydown_handler;
- Ecore_Event_Handler *keyup_handler;
- bool is_pressing;
- Ecore_Timer *updown_timer;
- Evas_Object *calling_popup; /* Unable to pre-listening during a call */
- int backup_ringtone_volume[SOUND_TYPE_VOICE + 1];
- bool is_ringtone_slidering;
-};
-
-extern setting_view setting_view_sound_main;
-
-void setting_sound_play_sound_origin(void *data, void *cb, char *ringtone_file,
- float vol, sound_type_e sound_type);
-int setting_sound_check_file_exist(void *data, const char *file_path);
-
-bool setting_sound_play_sound(void *data, void *cb, char *ringtone_file,
- int vol, sound_type_e sound_type);
-
-void setting_sound_stop_sound(void *data);
-void setting_sound_key_grab(SettingSoundData *ad);
-void setting_sound_key_ungrab(SettingSoundData *ad);
-char *setting_media_basename(char *path);
-void setting_sound_create_warning_popup_during_call(void *data);
-char *setting_sound_get_slider_icon(int type, int volume);
-void setting_sound_update_slider_icon(Setting_GenGroupItem_Data *item_data,
- int type);
-Evas_Object *setting_sound_init(SettingSoundData *ad);
-void setting_sound_deinit(void *data);
-const char *setting_do_not_disturb_is_enable(void *data);
-const char *setting_notifiaction_on_lock_screen(void *data);
-void setting_sound_update_do_not_disturb_item(void *data);
-void setting_sound_update_notifiaction_on_lock_screen_item(void *data);
-
-#endif
profile = mobile-4.0
# C/CPP Sources
-USER_SRCS = src/volume_popup.c src/setting-profile-sound-main.c src/setting-profile.c src/setting-profile-common.c
+USER_SRCS = src/volume_popup.c src/setting-profile.c
# EDC Sources
USER_EDCS =
USER_POS =
# User Defines
-USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING _TZ_SYS_GLOBALUSER_DATA=TZ_SYS_GLOBALUSER_DATA TZ_SYS_GLOBALUSER_DATA=\"/opt/usr/data\" _TZ_SYS_RO_APP=TZ_SYS_RO_APP _TZ_SYS_MEDIA=TZ_SYS_MEDIA TZ_SYS_RO_APP=\"/usr/apps\" TZ_SYS_MEDIA=\"/opt/media\"
+USER_DEFS = TIZEN_DEPRECATION DEPRECATION_WARNING _TZ_SYS_GLOBALUSER_DATA=TZ_SYS_GLOBALUSER_DATA "TZ_SYS_GLOBALUSER_DATA=\"/opt/usr/data\" _TZ_SYS_RO_APP=TZ_SYS_RO_APP _TZ_SYS_MEDIA=TZ_SYS_MEDIA "TZ_SYS_RO_APP=\"/usr/apps\" "TZ_SYS_MEDIA=\"/opt/media\"
USER_CPP_DEFS =
# User Undefines
+++ /dev/null
-/*
- * setting
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
- *
- * Contact: MyoungJune Park <mj2004.park@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include "setting-profile.h"
-#include <sys/stat.h>
-#include <dirent.h>
-#include <app_manager.h>
-#include <metadata_extractor.h>
-#include <player.h>
-
-#define SETTING_DEFAULT_FOLDER_PATH _TZ_SYS_GLOBALUSER_DATA"/settings/"
-#define SDCARD_PATH _TZ_SYS_MEDIA"/sdcard/"
-#define EXP 0.001
-
-typedef struct _SliderIcons {
- int index;
- char mute[256];
- char volume[256];
-} SliderIcons;
-
-SliderIcons slider_icons[SND_SLIDER_MAX] = {
- {SND_SLIDER_CALL, ICON_CALL_MUTE, ICON_CALL_NORMAL},
- {SND_SLIDER_NOTI, ICON_NOTI_MUTE, ICON_NOTI_NORMAL},
- {SND_SLIDER_MEDIA, ICON_MEDIA_MUTE, ICON_MEDIA_NORMAL},
- {SND_SLIDER_SYSTEM, ICON_SYSTEM_MUTE, ICON_SYSTEM_NORMAL}
-};
-
-static void __mm_player_prepared_cb(void *user_data);
-static void __sound_stream_focus_state_changed_cb(
- sound_stream_info_h stream_info,
- sound_stream_focus_mask_e focus_mask,
- sound_stream_focus_state_e focus_state,
- sound_stream_focus_change_reason_e reason,
- int sound_behavior,
- const char *extra_info,
- void *user_data);
-static Eina_Bool __volume_key_down_cb(void *data, int type, void *event);
-static Eina_Bool __volume_key_up_cb(void *data, int type, void *event);
-static Evas_Object *__sound_slider_icon_get(void *data, Evas_Object *obj,
- const char *part);
-static int __listen_vconf_change(void *data);
-static int __unlisten_vconf_change(void *data);
-static void __calling_popup_cb(void *data, Evas_Object *obj, void *event_info);
-
-void setting_sound_update_do_not_disturb_item(void *data)
-{
- SettingSoundData *ad = (SettingSoundData *) data;
- const char *sub_desc = NULL;
-
- if (!ad || !ad->data_do_not_disturb)
- return;
-
- sub_desc = setting_do_not_disturb_is_enable(data);
- g_free(ad->data_do_not_disturb->sub_desc);
- ad->data_do_not_disturb->sub_desc = g_strdup(sub_desc);
- elm_genlist_item_update(ad->data_do_not_disturb->item);
-}
-
-void setting_sound_update_notifiaction_on_lock_screen_item(void *data)
-{
- SettingSoundData *ad = (SettingSoundData *) data;
- const char *sub_desc = NULL;
-
- if (!ad || !ad->data_notifiaction_on_lock_screen)
- return;
-
- sub_desc = setting_notifiaction_on_lock_screen(data);
- g_free(ad->data_notifiaction_on_lock_screen->sub_desc);
- ad->data_notifiaction_on_lock_screen->sub_desc = g_strdup(sub_desc);
- elm_genlist_item_update(ad->data_notifiaction_on_lock_screen->item);
-}
-
-char *setting_sound_get_slider_icon(int type, int volume)
-{
- if (type < SND_SLIDER_CALL || type >= SND_SLIDER_MAX)
- return NULL;
-
- SETTING_TRACE("type : %d, volume : %d", type, volume);
- /* 1.Call ringtone and notification have 3 icon status */
- if (SND_SLIDER_CALL == type || SND_SLIDER_NOTI == type) {
- /*special process */
- int sound = 0;
- int vibration = 0;
- vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound);
- vconf_get_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- &vibration);
-
- if (sound && !vibration) {
- return (SND_SLIDER_CALL == type ?
- ICON_CALL_NORMAL : ICON_NOTI_NORMAL);
- }
-
- if (vibration && !sound) {
- return (SND_SLIDER_CALL == type ? ICON_CALL_VIB : ICON_NOTI_VIB);
- }
-
- if (!vibration && !sound) {
- return (SND_SLIDER_CALL == type ? ICON_CALL_MUTE : ICON_NOTI_MUTE);
- }
-
- return (SND_SLIDER_CALL == type ?
- ICON_CALL_NORMAL : ICON_NOTI_NORMAL);
- }
-
- /* 2.Other types, just have two icon status */
- if (volume > 0)
- return slider_icons[type].volume;
- else
- return slider_icons[type].mute;
-}
-
-void setting_sound_update_slider_icon(Setting_GenGroupItem_Data *item_data,
- int type)
-{
- SETTING_TRACE_BEGIN;
- ret_if(!item_data || !item_data->eo_check);
-
- Evas_Object *icon = elm_object_content_get(item_data->eo_check);
- if (icon) {
- char *new_file = setting_sound_get_slider_icon(type,
- item_data->chk_status);
- elm_image_file_set(icon, new_file, NULL);
- }
-}
-
-char *setting_media_basename(char *path)
-{
- metadata_extractor_h metadata = NULL;
- char *title = NULL;
- int ret = METADATA_EXTRACTOR_ERROR_NONE;
-
- if (NULL == path || '\0' == path[0])
- return strdup(_("IDS_ST_BODY_PHONEPROFILES_SILENT"));
-
- ret = metadata_extractor_create(&metadata);
- if (ret == METADATA_EXTRACTOR_ERROR_NONE && metadata) {
- ret = metadata_extractor_set_path(metadata, path);
-
- if (ret == METADATA_EXTRACTOR_ERROR_NONE) {
- ret = metadata_extractor_get_metadata(metadata,
- METADATA_TITLE, &title);
- if (title) {
- char *strdup_title = strdup(title);
- metadata_extractor_destroy(metadata);
- free(title);
- return strdup_title;
- }
- }
-
- metadata_extractor_destroy(metadata);
- }
-
- return setting_file_basename(path);
-}
-
-/* ***************************************************
- *
- *general func
- *
- ***************************************************/
-int setting_sound_check_file_exist(void *data, const char *file_path)
-{
- retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- retv_if(file_path == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
- if (0 == safeStrNCmp(file_path,
- SETTING_DEFAULT_FOLDER_PATH,
- safeStrLen(SETTING_DEFAULT_FOLDER_PATH))) {
- SETTING_TRACE("Default file[%s]!", file_path);
- return SETTING_RETURN_SUCCESS;
- }
-
- if (!ecore_file_exists(file_path)) {
- if (safeStrCmp(file_path, "Silent") == 0) {
- SETTING_TRACE("%s", file_path);
- return SETTING_RETURN_SUCCESS;
- }
- SETTING_TRACE_ERROR(
- "Cannot find the ringtone file[%s]!",
- file_path);
- if (0 == safeStrNCmp(
- file_path, SDCARD_PATH,
- safeStrLen(SDCARD_PATH))) {
- char *strdup_file_path = strdup(file_path);
- /*sdcard file*/
- int ret = vconf_set_str(
- VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR,
- strdup_file_path);
- if (ret < 0)
- SETTING_TRACE_DEBUG("failed to set vconf");
-
- FREE(strdup_file_path);
- }
- return SETTING_RETURN_FAIL;
- }
-
- int mmc_status = VCONFKEY_SYSMAN_MMC_REMOVED;
- vconf_get_int(VCONFKEY_SYSMAN_MMC_STATUS, &mmc_status);
- if (VCONFKEY_SYSMAN_MMC_MOUNTED != mmc_status) {
- if (!safeStrNCmp(
- SETTING_PROFILE_MMC_PATH,
- file_path,
- safeStrLen(SETTING_PROFILE_MMC_PATH))) {
- return SETTING_RETURN_FAIL;
- }
- }
- return SETTING_RETURN_SUCCESS;
-}
-
-bool setting_sound_play_sound(
- void *data,
- void *cb,
- char *ringtone_file,
- int vol,
- sound_type_e sound_type)
-{
- int err = 0;
- sound_stream_focus_state_e ssfs = SOUND_STREAM_FOCUS_STATE_ACQUIRED;
- player_state_e state = PLAYER_STATE_NONE;
- /* error check */
- retv_if(data == NULL, NULL);
- SettingSoundData *ad = (SettingSoundData *) data;
- sound_stream_info_h sound_stream_info_to_set = NULL;
-
- int is_existing = setting_sound_check_file_exist(ad, ringtone_file);
-
- if (is_existing == SETTING_RETURN_FAIL || NULL == ringtone_file) {
- switch (sound_type) {
- case SOUND_TYPE_RINGTONE:
- ad->song_playing = (char *)g_strdup(
- _TZ_SYS_GLOBALUSER_DATA"/settings/Ringtones/ringtone_sdk.mp3");
- sound_stream_info_to_set =
- ad->ringtone_sound_stream_info;
- break;
- case SOUND_TYPE_MEDIA:
- if (isEmulBin())
- ad->song_playing = (char *)g_strdup(
- SETTING_DEFAULT_CALL_TONE_SDK);
- else
- ad->song_playing = (char *)g_strdup(
- _TZ_SYS_GLOBALUSER_DATA"/settings/Ringtones/ringtone_sdk.mp3");
- sound_stream_info_to_set = ad->media_sound_stream_info;
- break;
- case SOUND_TYPE_NOTIFICATION:
- ad->song_playing = (char *)g_strdup(
- SETTING_DEFAULT_MSG_TONE);
- sound_stream_info_to_set = ad->noti_sound_stream_info;
- break;
- default:
- return false;
- break;
- }
-
- } else {
- if (safeStrCmp(ringtone_file, "Silent") == 0)
- return false;
-
- switch (sound_type) {
- case SOUND_TYPE_RINGTONE:
- sound_stream_info_to_set =
- ad->ringtone_sound_stream_info;
- break;
- case SOUND_TYPE_MEDIA:
- sound_stream_info_to_set = ad->media_sound_stream_info;
- break;
- case SOUND_TYPE_NOTIFICATION:
- sound_stream_info_to_set = ad->noti_sound_stream_info;
- break;
- default:
- return false;
- break;
- }
- ad->song_playing = (char *)g_strdup(ringtone_file);
- }
-
- player_get_state(ad->mp_player, &state);
- if (state != PLAYER_STATE_IDLE) {
- if (err != player_unprepare(ad->mp_player)) {
- SETTING_TRACE_ERROR("player_unprepare() failed: [%s]",
- get_error_message(err));
- player_unprepare(ad->mp_player);
- return false;
-
- }
- }
-
- if (sound_type != SOUND_TYPE_NOTIFICATION) {
- sound_manager_get_focus_state(sound_stream_info_to_set, &ssfs,
- NULL);
- if (ssfs == SOUND_STREAM_FOCUS_STATE_RELEASED) {
- err = sound_manager_acquire_focus(
- sound_stream_info_to_set,
- SOUND_STREAM_FOCUS_FOR_PLAYBACK,
- SOUND_BEHAVIOR_NONE, NULL);
- if (err != SOUND_MANAGER_ERROR_NONE) {
- SETTING_TRACE_ERROR(
- "Could not acquire focus: [%s]",
- get_error_message(err));
- player_unprepare(ad->mp_player);
- return false;
- }
- }
- }
-
- player_get_state(ad->mp_player, &state);
- if (state != PLAYER_STATE_IDLE)
- player_unprepare(ad->mp_player);
-
- err = player_set_sound_stream_info(ad->mp_player, sound_stream_info_to_set);
- if (err != PLAYER_ERROR_NONE) {
- SETTING_TRACE_ERROR("error to set audio policy [%s]",
- get_error_message(err));
- if (sound_type != SOUND_TYPE_NOTIFICATION)
- sound_manager_release_focus(sound_stream_info_to_set,
- SOUND_STREAM_FOCUS_FOR_PLAYBACK,
- SOUND_BEHAVIOR_NONE, NULL);
- player_unprepare(ad->mp_player);
- return false;
- }
-
- err = player_set_uri(ad->mp_player, ad->song_playing);
- if (err != PLAYER_ERROR_NONE) {
- SETTING_TRACE_ERROR("error to set attribute---profile_uri[%s]",
- get_error_message(err));
- if (sound_type != SOUND_TYPE_NOTIFICATION)
- sound_manager_release_focus(sound_stream_info_to_set,
- SOUND_STREAM_FOCUS_FOR_PLAYBACK,
- SOUND_BEHAVIOR_NONE, NULL);
- player_unprepare(ad->mp_player);
- return false;
- }
-
-#if SUPPORT_PLAYER_ASYNC
- err = player_prepare_async(ad->mp_player, __mm_player_prepared_cb, ad);
- if (err != PLAYER_ERROR_NONE) {
- SETTING_TRACE_ERROR("realizing the player handle failed[%s]",
- get_error_message(err));
- if (sound_type != SOUND_TYPE_NOTIFICATION)
- sound_manager_release_focus(sound_stream_info_to_set,
- SOUND_STREAM_FOCUS_FOR_PLAYBACK,
- SOUND_BEHAVIOR_NONE, NULL);
- player_unprepare(ad->mp_player);
- return false;
- }
- ad->mp_prepare_async = ad->mp_player;
- SETTING_TRACE("waiting..player (%x)", ad->mp_prepare_async);
-#else
- err = player_prepare(ad->mp_player);
- if (err != PLAYER_ERROR_NONE) {
- SETTING_TRACE_ERROR("player_prepare() error %d", err);
- if (sound_type != SOUND_TYPE_NOTIFICATION)
- sound_manager_release_focus(sound_stream_info_to_set,
- SOUND_STREAM_FOCUS_FOR_PLAYBACK,
- SOUND_BEHAVIOR_NONE, NULL);
- player_unprepare(ad->mp_player);
- return false;
- }
-
- state = PLAYER_STATE_NONE;
- err = player_get_state(ad->mp_player, &state);
- SETTING_TRACE("state:%d", state);
- if (state != PLAYER_STATE_READY) {
- SETTING_TRACE_ERROR("state of player is invalid %d", err);
- if (sound_type != SOUND_TYPE_NOTIFICATION)
- sound_manager_release_focus(sound_stream_info_to_set,
- SOUND_STREAM_FOCUS_FOR_PLAYBACK,
- SOUND_BEHAVIOR_NONE, NULL);
- player_unprepare(ad->mp_player);
- return false;
- }
-
- player_set_completed_cb(ad->mp_player, __mm_player_msg_cb, ad);
-
- err = player_start(ad->mp_player);
- if (err != PLAYER_ERROR_NONE) {
- /* if directly return error.. */
- SETTING_TRACE_ERROR("player_start [%s]",
- get_error_message(err));
- player_unset_completed_cb(ad->mp_player);
- if (sound_type != SOUND_TYPE_NOTIFICATION)
- sound_manager_release_focus(sound_stream_info_to_set,
- SOUND_STREAM_FOCUS_FOR_PLAYBACK,
- SOUND_BEHAVIOR_NONE, NULL);
- player_unprepare(ad->mp_player);
- return false;
- }
-#endif
-
- return true;
-}
-
-void setting_sound_play_sound_origin(void *data, void *cb, char *ringtone_file,
- float vol, sound_type_e sound_type)
-{
- SETTING_TRACE_BEGIN;
- int vconf_value = 0;
- SettingSoundData *ad = (SettingSoundData *) data;
-
- ret_if(!ad);
-
- if (vol < EXP) {
- SETTING_TRACE_DEBUG("vol < EXP");
- setting_sound_stop_sound(ad);
- return;
- }
-
- vconf_get_bool(VCONFKEY_SETAPPL_ACCESSIBILITY_TURN_OFF_ALL_SOUNDS,
- &vconf_value);
-
- if (vconf_value == TRUE)
- return;
-
- setting_sound_play_sound(ad, cb, ringtone_file, vol, sound_type);
- SETTING_TRACE("play sound type %d", sound_type);
-}
-
-void setting_sound_stop_sound(void *data)
-{
- SETTING_TRACE_BEGIN;
- SettingSoundData *ad = (SettingSoundData *)data;
- sound_stream_focus_state_e ssfs = SOUND_STREAM_FOCUS_STATE_ACQUIRED;
- player_state_e player_state = PLAYER_STATE_NONE;
-
- if (ad->song_playing) {
- g_free(ad->song_playing);
- ad->song_playing = NULL;
- }
-
- player_unset_completed_cb(ad->mp_player);
-
- sound_manager_get_focus_state(ad->ringtone_sound_stream_info, &ssfs, NULL);
- if (ssfs == SOUND_STREAM_FOCUS_STATE_ACQUIRED)
- sound_manager_release_focus(ad->ringtone_sound_stream_info,
- SOUND_STREAM_FOCUS_FOR_PLAYBACK,
- SOUND_BEHAVIOR_NONE, NULL);
-
- sound_manager_get_focus_state(ad->media_sound_stream_info, &ssfs, NULL);
- if (ssfs == SOUND_STREAM_FOCUS_STATE_ACQUIRED)
- sound_manager_release_focus(ad->media_sound_stream_info,
- SOUND_STREAM_FOCUS_FOR_PLAYBACK,
- SOUND_BEHAVIOR_NONE, NULL);
-
- player_get_state(ad->mp_player, &player_state);
-
- if (player_state != PLAYER_STATE_IDLE)
- if (player_unprepare(ad->mp_player) != PLAYER_ERROR_NONE)
- SETTING_TRACE_ERROR("player unrealize failed");
-}
-
-void setting_sound_key_grab(SettingSoundData *ad)
-{
- SETTING_TRACE_BEGIN;
-
- /* To prevent conflict with volume app */
- vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 2);
-
- if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
- return;
-
- if (!ad->keydown_handler)
- ad->keydown_handler = ecore_event_handler_add(
- ECORE_EVENT_KEY_DOWN, __volume_key_down_cb, ad);
- if (!ad->keydown_handler)
- SETTING_TRACE_DEBUG("ecore_event_handler_add() failed");
-
- if (!ad->keyup_handler)
- ad->keyup_handler = ecore_event_handler_add(
- ECORE_EVENT_KEY_UP, __volume_key_up_cb, ad);
- if (!ad->keyup_handler)
- SETTING_TRACE_DEBUG("ecore_event_handler_add() failed");
-}
-
-void setting_sound_key_ungrab(SettingSoundData *ad)
-{
- SETTING_TRACE_BEGIN;
-
- /* To prevent conflict with volume app */
- vconf_set_int(VCONFKEY_STARTER_USE_VOLUME_KEY, 0);
-
- ecore_timer_del(ad->updown_timer);
- ad->updown_timer = NULL;
-
- ecore_event_handler_del(ad->keydown_handler);
- ad->keydown_handler = NULL;
-
- ecore_event_handler_del(ad->keyup_handler);
- ad->keyup_handler = NULL;
-}
-
-Evas_Object *setting_sound_init(SettingSoundData *ad)
-{
- SETTING_TRACE_BEGIN;
- int err = 0;
-
- bindtextdomain(SETTING_PACKAGE, SETTING_LOCALEDIR);
-
- setting_create_Gendial_itc(SETTING_GENLIST_LEFT_ICON_CONTENT_ICON_STYLE,
- &(ad->itc_layout));
-
- ad->itc_layout.func.content_get = __sound_slider_icon_get;
-
- setting_create_Gendial_itc("full", &(ad->itc_layout_1icon));
-
- ad->itc_layout_1icon.func.content_get = __sound_slider_icon_get;
-
- /* register view node table */
- setting_view_node_table_intialize();
- setting_view_node_table_register(&setting_view_sound_main, NULL);
-
- err = player_create(&ad->mp_player);
- if (PLAYER_ERROR_NONE != err) {
- SETTING_TRACE_ERROR("Cannot create ringtone player %s",
- get_error_message(err));
- return NULL;
- }
-
- if (
- (sound_manager_create_stream_information(
- SOUND_STREAM_TYPE_RINGTONE_VOIP,
- __sound_stream_focus_state_changed_cb, ad,
- &ad->ringtone_sound_stream_info)
- != SOUND_MANAGER_ERROR_NONE) ||
- (sound_manager_create_stream_information(
- SOUND_STREAM_TYPE_MEDIA,
- __sound_stream_focus_state_changed_cb, ad,
- &ad->media_sound_stream_info)
- != SOUND_MANAGER_ERROR_NONE) ||
- (sound_manager_create_stream_information(
- SOUND_STREAM_TYPE_NOTIFICATION,
- __sound_stream_focus_state_changed_cb, ad,
- &ad->noti_sound_stream_info)
- != SOUND_MANAGER_ERROR_NONE)
- ) {
- SETTING_TRACE_ERROR("Cannot create stream information ");
- return NULL;
- }
- /* creating a view. */
- setting_view_node_set_cur_view(&setting_view_sound_main);
- setting_view_create(&setting_view_sound_main, (void *)ad);
-
- err = feedback_initialize();
- SETTING_TRACE_DEBUG("Feedback init: %s", get_error_message(err));
-
- __listen_vconf_change(ad);
-
- return ad->md.naviframe;
-}
-
-void setting_sound_deinit(void *data)
-{
- SETTING_TRACE_BEGIN;
- ret_if(data == NULL);
- SettingSoundData *ad = data;
-
- __unlisten_vconf_change(ad);
- feedback_deinitialize();
- setting_sound_stop_sound(ad);
-
- evas_object_del(ad->calling_popup);
- ad->calling_popup = NULL;
-
- setting_sound_key_ungrab(ad);
-
- FREE(ad->viewtype);
-
- sound_manager_destroy_stream_information(
- ad->ringtone_sound_stream_info);
- sound_manager_destroy_stream_information(ad->media_sound_stream_info);
- sound_manager_destroy_stream_information(ad->noti_sound_stream_info);
-
- ad->ringtone_sound_stream_info = ad->media_sound_stream_info =
- ad->noti_sound_stream_info = NULL;
-
- player_destroy(ad->mp_player);
- ad->mp_player = NULL;
-
- /* it is the view manage strategy to invoke view's destory operation */
- setting_view_destroy(&setting_view_sound_main, ad);
-
- SETTING_TRACE_END;
-}
-
-/* Show guide popup, when drag or tap slider if during call.
- Do not provide pre-listening. */
-void setting_sound_create_warning_popup_during_call(void *data)
-{
- ret_if(data == NULL);
- SettingSoundData *ad = (SettingSoundData *)data;
-
- cm_call_status_e call_status = CM_CALL_STATUS_IDLE;
- cm_client_h cm_handle = NULL;
- cm_init(&cm_handle);
- cm_get_call_status(cm_handle, &call_status);
- cm_deinit(cm_handle);
- if (CM_CALL_STATUS_IDLE != call_status) {
- SETTING_TRACE("Call status is not OFF (%d)", call_status);
- if (!ad->calling_popup) {
- ad->calling_popup = setting_create_popup(
- ad,
- ad->md.window,
- "IDS_ST_HEADER_UNABLE_TO_PLAY_SAMPLE_ABB",
- "IDS_ST_POP_SAMPLES_CANNOT_BE_PLAYED_DURING_CALLS",
- __calling_popup_cb,
- 0,
- false,
- false,
- 1,
- "IDS_ST_BUTTON_OK");
- }
- }
-}
-
-/* ------------------------------------------------------------------------- */
-/* | | elm.swallow.icon.0 | elm.text | elm.swallow.icon.1 | | */
-/* | elm.swallow.icon |----------------------------------| elm.swallow.end | */
-/* | | elm.text.sub | elm.text.sub.end | | */
-/* ------------------------------------------------------------------------- */
-static Evas_Object *__sound_slider_icon_get(void *data, Evas_Object *obj,
- const char *part)
-{
- SETTING_TRACE_BEGIN;
- retv_if(data == NULL, NULL);
-
- SETTING_TRACE(" -----------------> EDC part [%s]", part);
- if (safeStrCmp(part, "elm.swallow.content"))
- return NULL;
-
- Evas_Object *layout;
- /* Set custom layout style */
- layout = elm_layout_add(obj);
-
- Setting_GenGroupItem_Data *item_data =
- (Setting_GenGroupItem_Data *)data;
- Evas_Object *slider = setting_create_slider(obj, item_data);
-
- if (slider == NULL)
- return NULL;
-
- elm_layout_file_set(layout, EDJDIR"/setting-theme.edj",
- "gl_custom_item");
- evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND,
- EVAS_HINT_EXPAND);
-
- if (0 == safeStrCmp(item_data->keyStr, "IDS_ST_BODY_MEDIA")) {
- elm_object_style_set(slider, "warning");
-
- Edje_Message_Float_Set *msg =
- alloca(sizeof(Edje_Message_Float_Set)
- + (sizeof(double)));
- msg->count = 1;
- /* Warning area point has to be calculated considering rounding
- * off. For example, value 10's area will be 9.5~10.4.
- * So, if warning area has to be started at 10, we need to
- * calculate the start point with 9.5.
- * Warning start point = (Warning min value - 0.5) /
- * (Max_Value - Min_Value) */
- msg->val[0] = 0.633333;
- edje_object_message_send(
- elm_layout_edje_get(slider), EDJE_MESSAGE_FLOAT_SET, 0, msg);
- elm_slider_indicator_format_set(slider, "%1.0f");
- elm_slider_indicator_show_set(slider, 1);
- }
-
- item_data->eo_check = slider;
-
- evas_object_pass_events_set(slider, EINA_TRUE);
- evas_object_propagate_events_set(slider, EINA_FALSE);
-
- if (item_data->userdata == NULL)
- return NULL;
-
- if (item_data->keyStr)
- elm_object_part_text_set(layout, "elm.text", _(item_data->keyStr));
-
- elm_object_part_content_set(layout, "elm.swallow.content", slider);
- return layout;
-}
-
-static void __enable_sound_menu(void *data)
-{
- SETTING_TRACE_BEGIN;
- ret_if(!data);
- SettingSoundData *ad = data;
- ad->sound_on = TRUE;
- Setting_GenGroupItem_Data *item_to_update = NULL;
-
-
- /*1.Enable "Vibrate when ringing" */
- if (ad->data_sound_when_ring) {
- item_to_update = ad->data_sound_when_ring;
- elm_object_item_disabled_set(item_to_update->item, EINA_FALSE);
- }
-
- if (ad->data_call_volume) {
- elm_object_item_disabled_set(ad->data_call_volume->item,
- EINA_FALSE);
- elm_object_disabled_set(ad->data_call_volume->eo_check,
- EINA_FALSE);
- }
-
- /*2.Enable "Notification", via Sound Manager */
- item_to_update = ad->data_noti_volume;
-
- /* @todo make sure data_msg_alert_tone is correct for 'Silent' set.
- if (item_to_update && safeStrCmp(item_to_update->sub_desc, "Silent"))*/
- if ((ad->data_msg_alert_tone &&
- safeStrCmp(ad->data_msg_alert_tone->sub_desc, "Silent")) ||
- (!safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
- ) {
- /* Enable */
- if (item_to_update
- && item_to_update->item
- && item_to_update->eo_check) {
- int mm_value = 0;
- int ret = sound_manager_get_volume(
- SOUND_TYPE_NOTIFICATION, &mm_value);
- SETTING_TRACE("ret:%d", ret);
- item_to_update->chk_status = mm_value;
- elm_slider_value_set(
- item_to_update->eo_check,
- item_to_update->chk_status);
- elm_object_item_disabled_set(item_to_update->item,
- EINA_FALSE);
- elm_object_disabled_set(item_to_update->eo_check,
- EINA_FALSE);
-
- setting_sound_update_slider_icon(
- item_to_update, SND_SLIDER_NOTI);
- }
- }
-
- /*3.Enable "System", via Sound Manager */
- item_to_update = ad->data_touch_volume;
- if (item_to_update && item_to_update->item
- && item_to_update->eo_check) {
- int mm_value = 0;
- int ret = sound_manager_get_volume(
- SOUND_TYPE_SYSTEM, &mm_value);
- SETTING_TRACE("ret:%d", ret);
- item_to_update->chk_status = mm_value;
- elm_slider_value_set(
- item_to_update->eo_check,
- item_to_update->chk_status);
- elm_object_item_disabled_set(
- item_to_update->item, EINA_FALSE);
- elm_object_disabled_set(item_to_update->eo_check, EINA_FALSE);
-
- setting_sound_update_slider_icon(
- item_to_update, SND_SLIDER_SYSTEM);
- }
-
-
- /*4.Enable "Call ringtone", via "Backuped" value */
- item_to_update = ad->data_call_volume;
- if (item_to_update && item_to_update->eo_check) {
- SETTING_TRACE("....ad->is_ringtone_slidering:%d, "
- "ad->data_call_volume->chk_status:%d",
- ad->is_ringtone_slidering,
- item_to_update->chk_status);
- /* do need to restore from BACKUP VOLUME */
- if (ad->is_ringtone_slidering) return;
-
- int mm_value = 0;
- sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value);
- if (mm_value <= 0) mm_value = 1;
- sound_manager_set_volume(SOUND_TYPE_RINGTONE, mm_value);
- item_to_update->chk_status = mm_value;
- elm_slider_value_set(
- item_to_update->eo_check,
- item_to_update->chk_status);
- SETTING_TRACE("ad->data_call_volume->chk_status : %d",
- item_to_update->chk_status);
- }
-}
-
-static void __disable_sound_menu(void *data)
-{
- SETTING_TRACE_BEGIN;
- ret_if(!data);
- SettingSoundData *ad = data;
- ad->sound_on = FALSE;
- Setting_GenGroupItem_Data *item_to_update = NULL;
-
- setting_sound_stop_sound(ad);
-
- /*1.Disable "Vibrate when ringing" */
- item_to_update = ad->data_sound_when_ring;
- if (item_to_update)
- elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
-
- /* Disable Call Volume slider if Silent ringtone is selected */
- if (ad->data_call_alert_tone && !safeStrCmp(
- ad->data_call_alert_tone->sub_desc, "Silent")) {
- elm_object_item_disabled_set(ad->data_call_volume->item,
- EINA_TRUE);
- elm_object_disabled_set(ad->data_call_volume->eo_check,
- EINA_TRUE);
- }
-
- /*2.Disable "Notification" */
- item_to_update = ad->data_noti_volume;
- if (item_to_update && item_to_update->item
- && item_to_update->eo_check) {
- item_to_update->chk_status = 0;
- elm_slider_value_set(item_to_update->eo_check,
- item_to_update->chk_status);
- elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
- elm_object_disabled_set(item_to_update->eo_check, EINA_TRUE);
-
- /* Change notification slider's icon as mute style */
- setting_sound_update_slider_icon(item_to_update,
- SND_SLIDER_NOTI);
- }
-
- /*3.Disable "System" */
- item_to_update = ad->data_touch_volume;
- if (item_to_update && item_to_update->item
- && item_to_update->eo_check) {
- item_to_update->chk_status = 0;
- elm_slider_value_set(item_to_update->eo_check,
- item_to_update->chk_status);
- elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
- elm_object_disabled_set(item_to_update->eo_check, EINA_TRUE);
-
- /* Change system slider's icon as mute style */
- setting_sound_update_slider_icon(item_to_update,
- SND_SLIDER_SYSTEM);
- }
-
- /*4.Disable "Call ringtone" */
- item_to_update = ad->data_call_volume;
- if (item_to_update && item_to_update->eo_check) {
- /*DO NOT CHANGE Backup Values(
- * VCONFKEY_SETAPPL_RINGTONE_BACKUP_VOLUME) */
- item_to_update->chk_status = 0;
- elm_slider_value_set(item_to_update->eo_check,
- item_to_update->chk_status);
- SETTING_TRACE("item_to_update->chk_status : %d",
- item_to_update->chk_status);
- }
-
-}
-
-static void __sound_vconf_change_cb(keynode_t *key, void *data)
-{
- SETTING_TRACE_BEGIN;
- ret_if(data == NULL);
- SettingSoundData *ad = data;
- int status = 0;
- int ret = 0;
- char *vconf_name = vconf_keynode_get_name(key);
- Setting_GenGroupItem_Data *item_to_update = NULL;
-
- if (!safeStrCmp(vconf_name, VCONFKEY_SYSMAN_MMC_STATUS)) {
- status = vconf_keynode_get_int(key);
- SETTING_TRACE("status:%d", status);
- if (VCONFKEY_SYSMAN_MMC_MOUNTED != status) {
- /* when remove mmc card, change default tone */
- char *call_tone = vconf_get_str(
- VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
- if (call_tone && !safeStrNCmp(
- SETTING_PROFILE_MMC_PATH,
- call_tone,
- safeStrLen(SETTING_PROFILE_MMC_PATH))) {
- ret = vconf_set_str(
- VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
- _TZ_SYS_GLOBALUSER_DATA"/settings/Ringtones/ringtone_sdk.mp3");
- if (ret < 0)
- SETTING_TRACE_DEBUG(
- "failed to set vconf");
- }
- FREE(call_tone);
-
- SETTING_TRACE("song_playing:%s", ad->song_playing);
-
- if (!safeStrNCmp(SETTING_PROFILE_MMC_PATH,
- ad->song_playing,
- safeStrLen(SETTING_PROFILE_MMC_PATH))) {
- /* close mm plaer */
- setting_sound_stop_sound(ad);
- /* close vibration */
- }
- }
- } else if (!safeStrCmp(vconf_name,
- VCONFKEY_SETAPPL_SOUND_STATUS_BOOL)) {
- status = vconf_keynode_get_bool(key);
- SETTING_TRACE_DEBUG("sound status is changed. %d", status);
- if (status)
- __enable_sound_menu(ad);
- else
- __disable_sound_menu(ad);
-
- setting_sound_update_slider_icon(ad->data_call_volume,
- SND_SLIDER_CALL);
-
- if (ad->data_sound_when_ring)
- elm_object_item_disabled_set(ad->data_sound_when_ring->item,
- !status);
- } else if (!safeStrCmp(vconf_name,
- VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL)) {
- status = vconf_keynode_get_bool(key);
- SETTING_TRACE_DEBUG("vibration status is changed. %d", status);
-
- setting_sound_update_slider_icon(ad->data_call_volume,
- SND_SLIDER_CALL);
- } else if (!safeStrCmp(vconf_name,
- VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL)) {
- item_to_update = ad->data_sound_when_ring;
- status = vconf_keynode_get_bool(key);
- if (item_to_update && item_to_update->eo_check) {
- item_to_update->chk_status = status;
- elm_check_state_set(item_to_update->eo_check,
- item_to_update->chk_status);
- }
- } else if (!safeStrCmp(vconf_name,
- VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL)) {
- item_to_update = ad->data_button_sounds;
- status = vconf_keynode_get_bool(key);
- if (item_to_update && item_to_update->eo_check) {
- item_to_update->chk_status = status;
- elm_check_state_set(item_to_update->eo_check,
- item_to_update->chk_status);
- }
- } else if (!safeStrCmp(vconf_name,
- VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL)) {
- item_to_update = ad->data_touch_sounds;
- status = vconf_keynode_get_bool(key);
- if (item_to_update && item_to_update->eo_check) {
- item_to_update->chk_status = status;
- elm_check_state_set(item_to_update->eo_check,
- item_to_update->chk_status);
- }
- } else if (!safeStrCmp(vconf_name, VCONFKEY_SETAPPL_SOUND_LOCK_BOOL)) {
- item_to_update = ad->data_lock_sound;
- status = vconf_keynode_get_bool(key);
- if (item_to_update && item_to_update->eo_check) {
- item_to_update->chk_status = status;
- elm_check_state_set(item_to_update->eo_check,
- item_to_update->chk_status);
- }
- }
-#if 0
- else if (!safeStrCmp(vconf_name, VCONFKEY_ISE_KEYSOUND)) {
- item_to_update = ad->data_keyboard_sound;
- status = vconf_keynode_get_bool(key);
- if (item_to_update && item_to_update->eo_check) {
- item_to_update->chk_status = status;
- elm_check_state_set(item_to_update->eo_check,
- item_to_update->chk_status);
- }
- }
-#endif
-}
-
-static int __listen_vconf_change(void *data)
-{
- retv_if(data == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
- /*Ints */
- (void)vconf_notify_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
- __sound_vconf_change_cb, data);
-
- /*Bools */
- (void)vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- __sound_vconf_change_cb, data);
- (void)vconf_notify_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- __sound_vconf_change_cb, data);
-
- (void)vconf_notify_key_changed(
- VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL,
- __sound_vconf_change_cb, data);
- (void)vconf_notify_key_changed(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL,
- __sound_vconf_change_cb, data);
- (void)vconf_notify_key_changed(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
- __sound_vconf_change_cb, data);
- (void)vconf_notify_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
- __sound_vconf_change_cb, data);
-
- return 0;
-}
-
-static int __unlisten_vconf_change(void *data)
-{
- /* unused listen */
- /*Ints */
- (void)vconf_ignore_key_changed(VCONFKEY_SYSMAN_MMC_STATUS,
- __sound_vconf_change_cb);
-
- /*Bools */
- (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- __sound_vconf_change_cb);
- (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- __sound_vconf_change_cb);
-
- (void)vconf_ignore_key_changed(
- VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL,
- __sound_vconf_change_cb);
- (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL,
- __sound_vconf_change_cb);
- (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
- __sound_vconf_change_cb);
- (void)vconf_ignore_key_changed(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
- __sound_vconf_change_cb);
-
- return 0;
-}
-
-static Eina_Bool __volume_up_timer_cb(void *data)
-{
- SETTING_TRACE_BEGIN;
- int volume = 0;
- int volume_max = 0;
- int ret = 0;
- retv_if(!data, EINA_FALSE);
- SettingSoundData *ad = (SettingSoundData *)data;
-
- if (!ad->is_pressing) {
- ad->updown_timer = NULL;
- return EINA_FALSE;
- }
-
- ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
- SETTING_TRACE("Getting volume: %s %d", get_error_message(ret), volume);
- ret = sound_manager_get_max_volume(SOUND_TYPE_RINGTONE, &volume_max);
- SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
- volume_max);
- if (volume < volume_max) {
- sound_manager_set_volume(SOUND_TYPE_RINGTONE, ++volume);
- if (ad->data_call_volume && ad->data_call_volume->eo_check) {
- ad->data_call_volume->chk_status = volume;
- elm_slider_value_set(ad->data_call_volume->eo_check,
- volume);
- SETTING_TRACE("ad->data_call_volume->chk_status : %d",
- ad->data_call_volume->chk_status);
- }
- }
-
- return EINA_TRUE;
-}
-
-static Eina_Bool __volume_down_timer_cb(void *data)
-{
- SETTING_TRACE_BEGIN;
- int ret = 0;
- int volume = 0;
- retv_if(!data, EINA_FALSE);
- SettingSoundData *ad = (SettingSoundData *)data;
-
- if (!ad->is_pressing) {
- ad->updown_timer = NULL;
- return EINA_FALSE;
- }
-
- ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
- SETTING_TRACE("Getting volume: %s %d", get_error_message(ret), volume);
- if (volume > 0) {
- sound_manager_set_volume(SOUND_TYPE_RINGTONE, --volume);
- if (volume == 0) {
- /* change to Vibration mode */
- vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- FALSE);
- vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- TRUE);
- feedback_play_type(FEEDBACK_TYPE_VIBRATION,
- FEEDBACK_PATTERN_VIBRATION_ON);
- }
- if (ad->data_call_volume
- && ad->data_call_volume->eo_check) {
- ad->data_call_volume->chk_status = volume;
- elm_slider_value_set(
- ad->data_call_volume->eo_check,
- volume);
- SETTING_TRACE("ad->data_call_volume->chk_status : %d",
- ad->data_call_volume->chk_status);
- setting_sound_update_slider_icon(
- ad->data_call_volume,
- SND_SLIDER_CALL);
- }
- }
- return EINA_TRUE;
-}
-
-
-static Eina_Bool __volume_key_up_cb(void *data, int type, void *event)
-{
- SETTING_TRACE_BEGIN;
- retv_if(!data || !event, EINA_TRUE);
- SettingSoundData *ad = (SettingSoundData *)data;
-
- Ecore_Event_Key *ev = event;
- char *key = (char *)ev->key;
- if (!key)
- return EINA_TRUE;
-
- if (!safeStrCmp(key, "XF86AudioRaiseVolume")
- || !safeStrCmp(key, "XF86AudioLowerVolume")) {
- ad->is_pressing = FALSE;
- if (ad->updown_timer) {
- ecore_timer_del(ad->updown_timer);
- ad->updown_timer = NULL;
- }
- }
- return EINA_TRUE;
-}
-
-/*
- * S5 concept:
- * On the volume popup,
- * 1) if user controls the slider, don't play any sounds
- * just change volume.
- * 2) if user controls the HW volume key for ringtone
- * sound, the beep sound is supported
-
- * On Setting > Sound
- * 1) if user controls the slider, change volume &
- * play sound
- * 2) if user controls the HW volume key, do nothing
- * (DO NOT change volume,DO NOT play sound)
-*/
-static Eina_Bool __volume_key_down_cb(void *data, int type, void *event)
-{
- int ret = 0;
- int sound = 0;
- char *key = NULL;
- int volume = 0;
- int volume_max = 0;
- SettingSoundData *ad = (SettingSoundData *)data;
- Ecore_Event_Key *ev = event;
- SETTING_TRACE_BEGIN;
- retv_if(!ad || !event, EINA_TRUE);
-
- key = (char *)ev->key;
- if (!key)
- return EINA_TRUE;
-
- ret = sound_manager_get_volume(SOUND_TYPE_RINGTONE, &volume);
- SETTING_TRACE("Getting volume: %s %d", get_error_message(ret), volume);
- ret = sound_manager_get_max_volume(SOUND_TYPE_RINGTONE, &volume_max);
- SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
- volume_max);
-
- vconf_get_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL, &sound);
-
- if (!safeStrCmp(key, "XF86AudioRaiseVolume")) {
- SETTING_TRACE("Press KEY_VOLUMEUP");
-
- ad->is_pressing = TRUE;
-
- if (volume < volume_max) {
- sound_manager_set_volume(SOUND_TYPE_RINGTONE, ++volume);
-
-
- if (volume > 0 && !sound) {
- vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- TRUE);
- vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- FALSE);
- ad->data_call_volume->chk_status =
- volume;
- setting_sound_update_slider_icon(
- ad->data_call_volume,
- SND_SLIDER_CALL);
- }
- if (ad->data_call_volume
- && ad->data_call_volume->eo_check) {
- ad->data_call_volume->chk_status = volume;
- elm_slider_value_set(
- ad->data_call_volume->eo_check,
- volume);
- SETTING_TRACE("chk_status : %d",
- ad->data_call_volume->chk_status);
- }
- ad->updown_timer = ecore_timer_add(0.5,
- __volume_up_timer_cb,
- ad);
- }
- }
-
- if (!safeStrCmp(key, "XF86AudioLowerVolume")) {
- SETTING_TRACE("Press KEY_VOLUMEDOWN");
-
- ad->is_pressing = TRUE;
-
- if (!sound)
- return EINA_TRUE;
-
- if (volume > 0) {
- sound_manager_set_volume(SOUND_TYPE_RINGTONE,
- --volume);
- if (volume == 0) {
- /* change to Vibration mode */
- vconf_set_bool(
- VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- FALSE);
- vconf_set_bool(
- VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- TRUE);
- feedback_play_type(FEEDBACK_TYPE_VIBRATION,
- FEEDBACK_PATTERN_VIBRATION_ON);
-
- ad->data_call_volume->chk_status =
- volume;
- setting_sound_update_slider_icon(
- ad->data_call_volume,
- SND_SLIDER_CALL);
- }
- if (ad->data_call_volume
- && ad->data_call_volume->eo_check) {
- ad->data_call_volume->chk_status =
- volume;
- elm_slider_value_set(
- ad->data_call_volume->eo_check,
- volume);
- SETTING_TRACE("ad->data_call_volume->chk_status : %d",
- ad->data_call_volume->chk_status);
- }
- ad->updown_timer = ecore_timer_add(0.5,
- __volume_down_timer_cb,
- ad);
- }
- }
-
- return EINA_TRUE;
-}
-
-/* ***************************************************
- *
- *general func
- *
- ***************************************************/
-static void __calling_popup_cb(void *data, Evas_Object *obj, void *event_info)
-{
- ret_if(data == NULL);
- SettingSoundData *ad = (SettingSoundData *) data;
-
- if (ad->calling_popup) {
- evas_object_del(ad->calling_popup);
- ad->calling_popup = NULL;
- }
-}
-
-static void __mm_player_msg_cb(void *user_param)
-{
- SETTING_TRACE_BEGIN;
- ret_if(user_param == NULL);
- SettingSoundData *ad = (SettingSoundData *)user_param;
-
- SETTING_TRACE("completed_cb is called.");
- setting_sound_stop_sound(ad);
-}
-
-static Eina_Bool __play_timer_cb(void *data)
-{
- SETTING_TRACE_BEGIN;
- int err;
- player_state_e state = PLAYER_STATE_NONE;
-
- retv_if(!data, EINA_FALSE);
- SettingSoundData *ad = (SettingSoundData *)data;
-
- SETTING_TRACE("player (%x)", ad->mp_prepare_async);
- err = player_get_state(ad->mp_player, &state);
- SETTING_TRACE("state:%d", state);
-
- if (state != PLAYER_STATE_READY) {
- SETTING_TRACE_ERROR(
- "state of player is invalid (%s), STATE: %d",
- get_error_message(err), state);
- player_unprepare(ad->mp_player);
- return EINA_FALSE;
- }
-
- player_set_completed_cb(ad->mp_player, __mm_player_msg_cb, ad);
-
- err = player_start(ad->mp_player);
- if (err != PLAYER_ERROR_NONE) { /* if directly return error. */
- SETTING_TRACE_ERROR("player_start [%s]",
- get_error_message(err));
- player_unset_completed_cb(ad->mp_player);
- player_unset_interrupted_cb(ad->mp_player);
- player_unprepare(ad->mp_player);
- }
-
- return EINA_FALSE;
-}
-
-/* Async cb : to improve slider's performance when creating player */
-static void __mm_player_prepared_cb(void *user_data)
-{
- SETTING_TRACE_BEGIN;
- ret_if(!user_data);
- ecore_idler_add(__play_timer_cb, user_data);
-}
-
-
-static void __sound_stream_focus_state_changed_cb(
- sound_stream_info_h stream_info,
- sound_stream_focus_mask_e focus_mask,
- sound_stream_focus_state_e focus_state,
- sound_stream_focus_change_reason_e reason,
- int sound_behavior,
- const char *extra_info,
- void *user_data)
-{
- player_state_e state = PLAYER_STATE_NONE;
- SettingSoundData *ad = (SettingSoundData *)user_data;
- ret_if(ad == NULL);
-
- SETTING_TRACE_ERROR("Focus state changed, reason: %d", reason);
-
- if (ad->mp_player) {
- player_get_state(ad->mp_player, &state);
- SETTING_TRACE("player state : %d", state);
- }
-}
-
-
+++ /dev/null
-/*
- * setting
- *
- * Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd.
- *
- * Contact: MyoungJune Park <mj2004.park@samsung.com>
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-
-#include <notification_setting.h>
-#include <notification_setting_internal.h>
-#include <setting-common/setting-common-general-func.h>
-#include "setting-profile.h"
-
-#define DO_NOT_DISTURB_OP \
- "http://tizen.org/appcontrol/operation/setting/do_not_disturb"
-#define APP_NOTIFICATIONS_OP \
- "http://tizen.org/appcontrol/operation/setting/app_notifications"
-#define NOTIFICATIONS_ON_LOCK_SCREEN \
- "http://tizen.org/appcontrol/operation/setting/notification_on_lock_screen"
-
-#define SETTING_DEFAULT_RINGTONE_VOL_INT 11
-#define SETTING_DEFAULT_NOTI_VOL_INT 11
-#define SETTING_DEFAULT_MEDIA_VOL_INT 9
-#define SETTING_DEFAULT_SYSTEM_VOL_INT 9
-
-#define NOTIFICATION_STR_ON_LOCK_SCREEN \
- "IDS_QP_TMBODY_NOTIFICATIONS_ON_LOCK_SCREEN"
-#define NOTIFICATION_STR_ON_LOCK_SCREEN_HIDE "IDS_ST_OPT_HIDE_CONTENT"
-#define NOTIFICATION_STR_ON_LOCK_SCREEN_HIDE_SENSITIVE \
- "IDS_QP_OPT_HIDE_SENSITIVE_CONTENT_ABB"
-#define NOTIFICATION_STR_ON_LOCK_SCREEN_SHOW_ALL \
- "IDS_QP_OPT_SHOW_ALL_CONTENT_ABB"
-#define SILENT_MODE "Silent"
-#define INIT_PATH _TZ_SYS_GLOBALUSER_DATA"/settings/Vibrations/"
-
-/* should be called in function to return void */
-#define ADD_GENLIST2(genlist, parent) \
- {\
- genlist = elm_genlist_add(parent);\
- retm_if(genlist == NULL, \
- "Cannot set genlist object as content of layout");\
- elm_genlist_mode_set(genlist, ELM_LIST_COMPRESS);\
- elm_object_style_set(genlist, "dialogue");\
- elm_genlist_clear(genlist);\
- evas_object_smart_callback_add(genlist, "realized", \
- __gl_realized_cb, NULL);\
- elm_scroller_policy_set(genlist, ELM_SCROLLER_POLICY_OFF, \
- ELM_SCROLLER_POLICY_AUTO);\
- }
-
-/* keystr, toggle */
-#define ADD_TOGGLE_MENU2(item, genlist, item_style, keystr, value, data) \
- {\
- item = setting_create_Gendial_field_def( \
- genlist, \
- &(item_style), \
- _mouse_up_Gendial_list_cb, \
- data, \
- SWALLOW_Type_1ICON_1RADIO, \
- NULL, \
- NULL, \
- value, \
- keystr, \
- NULL, \
- _sound_chk_cb); \
- if (item) { \
- item->userdata = data; \
- } else { \
- SETTING_TRACE_ERROR("%s item is NULL", keystr); \
- } \
- }
-
-
-/* keystr, multiline, toggle */
-/* should be called in function to return void */
-#define ADD_TOGGLE_MENU( \
- _item, genlist, item_style, keystr, substr, value, data) \
- {\
- _item = setting_create_Gendial_field_def( \
- genlist, \
- &(item_style), \
- _mouse_up_Gendial_list_cb, \
- data, \
- SWALLOW_Type_1ICON_1RADIO, \
- NULL, \
- NULL, \
- value, \
- keystr, \
- NULL, \
- _sound_chk_cb); \
- if (_item) { \
- _item->userdata = data;\
- } else { \
- SETTING_TRACE_ERROR("%s item is NULL", keystr);\
- } \
- if (substr) {\
- Setting_GenGroupItem_Data *item_data = setting_create_Gendial_field_def( \
- genlist, \
- &itc_multiline_text,\
- NULL,\
- NULL,\
- SWALLOW_Type_LAYOUT_SPECIALIZTION_X,\
- NULL, \
- NULL, \
- 0, \
- substr, \
- NULL, \
- NULL);\
- setting_retm_if(NULL == item_data, \
- "item_data is NULL");\
- elm_genlist_item_select_mode_set( \
- item_data->item, \
- ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\
- } \
- }
-
-#define ADD_SOUND_SLIDER(item_data, genlist, item_style, l_img, r_img, value, \
- keystr, data, sld_cb, sld_max, start_cb, stop_cb) \
- { \
- item_data = setting_create_Gendial_field_def( \
- genlist, \
- &(item_style), \
- NULL,\
- NULL, \
- SWALLOW_Type_LAYOUT_SLIDER,\
- l_img, \
- r_img,\
- value,\
- keystr,\
- NULL,\
- sld_cb);\
- if (item_data) {\
- item_data->window = data->md.layout;\
- item_data->evas = data->md.evas;\
- item_data->isIndicatorVisible = FALSE;\
- item_data->slider_min = 0;\
- item_data->slider_max = sld_max;\
- item_data->userdata = data;\
- item_data->start_change_cb = start_cb;\
- item_data->stop_change_cb = stop_cb;\
- elm_genlist_item_select_mode_set( \
- item_data->item, \
- ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\
- } else {\
- SETTING_TRACE_ERROR("%s item is NULL", keystr);\
- } \
- }
-
-static int _view_create(void *cb);
-static int _view_destroy(void *cb);
-static Eina_Bool _view_pop_cb(void *data, Elm_Object_Item *it);
-static void _mouse_up_Gendial_list_cb(void *data, Evas_Object *obj,
- void *event_info);
-
-setting_view setting_view_sound_main = {
- .create = _view_create,
- .destroy = _view_destroy,
- .update = NULL,
- .cleanup = NULL
-};
-
-/* ***************************************************
- *
- * Public functions
- *
- ***************************************************/
-
-const char *setting_do_not_disturb_is_enable(void *data)
-{
- int err = NOTIFICATION_ERROR_NONE;
- bool do_not_disturb;
- notification_system_setting_h system_setting = NULL;
-
- err = notification_system_setting_load_system_setting(&system_setting);
- setting_retvm_if(NULL == system_setting || NOTIFICATION_ERROR_NONE != err,
- "NULL parameter",
- "notification_system_setting_load_system_Setting failed");
- err = notification_system_setting_get_do_not_disturb(
- system_setting, &do_not_disturb);
- SETTING_TRACE("do_not_disturb: %d", do_not_disturb);
-
- notification_system_setting_free_system_setting(system_setting);
- if (1 == do_not_disturb)
- return "IDS_ST_BODY_ON";
- else
- return "IDS_ST_BODY_ALERTTYPE_OFF";
-}
-
-const char *setting_notifiaction_on_lock_screen(void *data)
-{
- int err = NOTIFICATION_ERROR_NONE;
- notification_system_setting_h system_setting = NULL;
- lock_screen_content_level_e level = 0;
-
- err = notification_system_setting_load_system_setting(&system_setting);
- setting_retvm_if(NOTIFICATION_ERROR_NONE != err,
- "NULL parameter",
- "notification_system_setting_load_system_setting failed");
-
- err = notification_system_setting_get_lock_screen_content(
- system_setting, &level);
- if (system_setting)
- notification_system_setting_free_system_setting(system_setting);
-
- if (NOTIFICATION_ERROR_NONE != err) {
- SETTING_TRACE_ERROR("notification_system_setting_get_"\
- "lock_screen_content failed");
- return "";
- }
-
- if (level == SHOW_ALL_CONTENT)
- return NOTIFICATION_STR_ON_LOCK_SCREEN_SHOW_ALL;
- else if (level == HIDE_SENSITIVE_CONTENT)
- return NOTIFICATION_STR_ON_LOCK_SCREEN_HIDE_SENSITIVE;
- else
- return NOTIFICATION_STR_ON_LOCK_SCREEN_HIDE;
-}
-
-/* ***************************************************
- *
- * basic func
- *
- ***************************************************/
-
-static Eina_Bool _play_ringtone_sound_idle_cb(void *data)
-{
- double current;
- char *pa_tone_path = NULL;
- player_state_e state = PLAYER_STATE_NONE ;
- Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
- SettingSoundData *ad = list_item->userdata;
-
- SETTING_TRACE_BEGIN;
- retv_if(!data, EINA_FALSE);
-
- player_get_state(ad->mp_player, &state);
-
- if (list_item->eo_check) {
- current = elm_slider_value_get(list_item->eo_check);
- list_item->chk_status = (int)(current + 0.5);
- }
-
- /*
- * S5 concept:
- * On the volume popup,
- * 1) if user controls the slider, don't play any sounds,
- * just change volume.
- * 2) if user controls the HW volume key for ringtone sound,
- * the beep sound is supported
-
- * On Setting > Sound
- * 1) if user controls the slider, change volume & play sound
- * 2) if user controls the HW volume key, do nothing
- * (DO NOT change volume,DO NOT play sound)
- */
- if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
- return EINA_FALSE;
-
- if (state == PLAYER_STATE_IDLE) {
- pa_tone_path = vconf_get_str(
- VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
- if (pa_tone_path == NULL) {
- if (isEmulBin())
- pa_tone_path = strdup(SETTING_DEFAULT_CALL_TONE_SDK);
- else
- pa_tone_path = strdup(SETTING_DEFAULT_CALL_TONE);
-
- if (vconf_set_str(
- VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
- pa_tone_path) < 0) {
- free(pa_tone_path);
- return EINA_FALSE;
- }
- }
- if (list_item->chk_status > 0) {
- setting_sound_play_sound_origin(
- ad,
- NULL,
- pa_tone_path,
- (float)list_item->chk_status,
- SOUND_TYPE_RINGTONE);
- }
- free(pa_tone_path);
- } else {
- SETTING_TRACE("ringtone player status : %d", state);
- if (state == PLAYER_STATE_PAUSED) {
- player_start(ad->mp_player);
- } else if (state == PLAYER_STATE_PLAYING) {
- if (ad->sound_on)
- player_set_mute(ad->mp_player, false);
- }
- }
-
- ad->play_ringtone_idler = NULL;
- return EINA_FALSE;
-}
-
-void _start_change_cb(void *data, Evas_Object *obj, void *event_info)
-{
- SETTING_TRACE_BEGIN;
- Setting_GenGroupItem_Data *list_item = NULL;
- SettingSoundData *ad = NULL;
-
- list_item = (Setting_GenGroupItem_Data *)data;
- ret_if(!list_item);
- ad = list_item->userdata;
- ret_if(ad == NULL);
-
- setting_sound_create_warning_popup_during_call(ad);
- if (list_item == ad->data_call_volume)
- ad->is_ringtone_slidering = true;
-
- setting_sound_stop_sound(ad);
-}
-
-static void _call_slider_change_cb(
- void *data, Evas_Object *obj, void *event_info)
-{
- SETTING_TRACE_BEGIN;
- SettingSoundData *ad = NULL;
- double val = 0.0;
- Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *)data;
- ret_if(!data);
-
- val = elm_slider_value_get(obj);
- ad = list_item->userdata;
-
- ad->is_ringtone_slidering = true;
-
- if (list_item->chk_status != (int)(val + 0.5)) {
- list_item->chk_status = (int)(val + 0.5);
- sound_manager_set_volume(SOUND_TYPE_RINGTONE, list_item->chk_status);
- SETTING_TRACE_DEBUG(
- "ringtone volume is %d, %f",
- list_item->chk_status,
- val);
-
- if (list_item->chk_status == 0) {
- /* change to Vibration mode */
- /* call system_setting */
- /*system_settings_set_value_bool(
- * SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE, false); */
- vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- FALSE);
- vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- TRUE);
- feedback_play_type(FEEDBACK_TYPE_VIBRATION,
- FEEDBACK_PATTERN_VIBRATION_ON);
- } else {
- if (!ad->sound_on) {
- /* change to Sound mode */
- /* call system_setting */
- /*system_settings_set_value_bool(
- * SYSTEM_SETTINGS_KEY_SOUND_SILENT_MODE,
- * false); */
- vconf_set_bool(VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- TRUE);
- vconf_set_bool(VCONFKEY_SETAPPL_VIBRATION_STATUS_BOOL,
- FALSE);
- }
- }
-
- setting_sound_update_slider_icon(list_item, SND_SLIDER_CALL);
-
- elm_slider_value_set(obj, list_item->chk_status);
- }
-
- setting_sound_create_warning_popup_during_call(ad);
- if (ad->calling_popup)
- return;
-
- ecore_idler_del(ad->play_ringtone_idler);
- ad->play_ringtone_idler = ecore_idler_add(
- _play_ringtone_sound_idle_cb, list_item);
-
- SETTING_TRACE("list_item->chk_status:%d", list_item->chk_status);
-}
-
-static void _noti_slider_change_cb(
- void *data, Evas_Object *obj, void *event_info)
-{
- Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
- player_state_e state = PLAYER_STATE_NONE;
- SETTING_TRACE_BEGIN;
-
- ret_if(data == NULL);
-
- double val = elm_slider_value_get(obj);
- SettingSoundData *ad = list_item->userdata;
- sound_type_e sound_type = SOUND_TYPE_NOTIFICATION;
-
- if (list_item->chk_status != (int)(val + 0.5)) {
- list_item->chk_status = (int)(val + 0.5);
- setting_sound_update_slider_icon(list_item, SND_SLIDER_NOTI);
- sound_manager_set_volume(sound_type, list_item->chk_status);
- SETTING_TRACE_DEBUG(
- "notification volume is %d, %f",
- list_item->chk_status,
- val);
- }
-
- setting_sound_create_warning_popup_during_call(ad);
- if (ad->calling_popup)
- return;
-
- player_get_state(ad->mp_player, &state);
- /*
- * S5 concept:
- * On the volume popup,
- * 1) if user controls the slider, don't play any sounds
- * just change volume.
- * 2) if user controls the HW volume key for ringtone sound,
- * the beep sound is supported
-
- * On Setting > Sound
- * 1) if user controls the slider, change volume & play sound
- * 2) if user controls the HW volume key, do nothing
- * (DO NOT change volume,DO NOT play sound)
- */
- if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
- return;
-
- if (state == PLAYER_STATE_IDLE) {
- if (list_item->chk_status > 0) {
- char *pa_tone_path = vconf_get_str(
- VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
- if (pa_tone_path == NULL) {
- pa_tone_path = strdup(SETTING_DEFAULT_MSG_TONE);
- if (vconf_set_str(
- VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR,
- pa_tone_path) < 0) {
- FREE(pa_tone_path);
- return;
- }
- }
- setting_sound_play_sound_origin(
- ad,
- NULL,
- pa_tone_path,
- (float)list_item->chk_status,
- sound_type);
- FREE(pa_tone_path);
- }
- } else {
- SETTING_TRACE("noti player status : %d", state);
- if (state == PLAYER_STATE_PAUSED)
- player_start(ad->mp_player);
- }
-}
-
-
-static void _media_slider_change_cb(
- void *data, Evas_Object *obj, void *event_info)
-{
- char *pa_tone_path = NULL;
- player_state_e state = PLAYER_STATE_NONE;
- sound_type_e sound_type = SOUND_TYPE_MEDIA;
- SETTING_TRACE_BEGIN;
-
- /* error check */
- ret_if(data == NULL);
- Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
- SettingSoundData *ad = list_item->userdata;
-
- double val = elm_slider_value_get(obj);
- int value = (int)(val + 0.5);
- if (list_item->chk_status != value) {
- list_item->chk_status = value;
- setting_sound_update_slider_icon(list_item, SND_SLIDER_MEDIA);
- int ret = sound_manager_set_volume(sound_type, value);
- SETTING_TRACE_DEBUG("ret : 0x%.8x", ret);
- SETTING_TRACE_DEBUG(
- "media volume is %d, %f",
- list_item->chk_status,
- val);
- }
-
- setting_sound_create_warning_popup_during_call(ad);
- if (ad->calling_popup)
- return;
-
- /*
- * S5 concept:
- * On the volume popup,
- * 1) if user controls the slider, don't play any sounds
- * just change volume.
- * 2) if user controls the HW volume key for ringtone sound,
- * the beep sound is supported
-
- * On Setting > Sound
- * 1) if user controls the slider, change volume & play sound
- * 2) if user controls the HW volume key, do nothing
- * (DO NOT change volume,DO NOT play sound)
- */
- if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
- return;
-
- player_get_state(ad->mp_player, &state);
-
- if (state == PLAYER_STATE_IDLE) {
- if (list_item->chk_status > 0) {
- if (isEmulBin())
- pa_tone_path = strdup(SETTING_DEFAULT_CALL_TONE_SDK);
- else
- pa_tone_path = strdup(SETTING_DEFAULT_MEDIA_TONE);
-
- setting_sound_play_sound_origin(
- ad,
- NULL,
- pa_tone_path,
- (float)list_item->chk_status,
- sound_type);
- FREE(pa_tone_path);
- }
- } else {
- SETTING_TRACE("ringtone player status : %d", state);
- if (state == PLAYER_STATE_PAUSED)
- player_start(ad->mp_player);
- }
-}
-
-static void _sys_slider_change_cb(
- void *data, Evas_Object *obj, void *event_info)
-{
- /* error check */
- Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
- SettingSoundData *ad = list_item->userdata;
- ret_if(ad == NULL);
-
- /*Get the current real value of slider */
- double val = elm_slider_value_get(obj);
- int value = (int)(val + 0.5);
- sound_manager_set_volume(SOUND_TYPE_SYSTEM, value);
- SETTING_TRACE_DEBUG("system volume is %d, %f", value, val);
-
- setting_sound_create_warning_popup_during_call(ad);
- if (ad->calling_popup)
- return;
-
- if (list_item->chk_status != value) {
-
- /*
- * S5 concept:
- * On the volume popup,
- * 1) if user controls the slider, don't play any sounds
- * just change volume.
- * 2) if user controls the HW volume key for ringtone
- * sound, the beep sound is supported
-
- * On Setting > Sound
- * 1) if user controls the slider, change
- * volume & play sound
- * 2) if user controls the HW volume key, do nothing
- * (DO NOT change volume,DO NOT play sound)
- */
- if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
- /*Play Tap Sound,then stop at once */
- feedback_play_type(FEEDBACK_TYPE_SOUND,
- FEEDBACK_PATTERN_TAP);
- }
- list_item->chk_status = value;
- setting_sound_update_slider_icon(list_item, SND_SLIDER_SYSTEM);
- }
-}
-
-void _stop_change_cb(void *data, Evas_Object *obj, void *event_info)
-{
- SETTING_TRACE_BEGIN;
- Setting_GenGroupItem_Data *list_item = NULL;
-
- ret_if(data == NULL);
- list_item = (Setting_GenGroupItem_Data *)data;
-
- SETTING_TRACE("chk_status : %d, slider : %f", list_item->chk_status,
- elm_slider_value_get(obj));
- if (list_item->chk_status == 0)
- elm_slider_value_set(obj, 0.0);
- else if (list_item->chk_status == 15)
- elm_slider_value_set(obj, 15.0);
- if (list_item->userdata)
- ((SettingSoundData *)(list_item->userdata))->is_ringtone_slidering = false;
- SETTING_TRACE_END;
-}
-
-static void _sound_chk_cb(void *data, Evas_Object *obj,
- void *event_info)
-{
- SETTING_TRACE_BEGIN;
- /* error check */
- ret_if(data == NULL);
- Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
- SettingSoundData *ad = list_item->userdata;
- ret_if(ad == NULL);
-
- setting_sound_stop_sound(ad);
- /* for genlist update status */
- list_item->chk_status = elm_check_state_get(obj);
- /* rollback */
- setting_update_gl_item_chk_status(list_item, !list_item->chk_status);
- _mouse_up_Gendial_list_cb(ad, NULL, list_item->item);
-}
-
-static void _get_lite_main_list(void *data)
-{
- SETTING_TRACE_BEGIN;
- ret_if(!data);
- SettingSoundData *ad = (SettingSoundData *)data;
-
- char *app_id = NULL;
- char *optional_txt = NULL;
- char *sdcard_filepath = NULL;
- int vconf_value = 0;
- char *sub_desc = NULL;
- char *left_icon = NULL;
- int mm_value = 0;
- int sound_value = 0;
- int vconf_ret = 0;
- int ret = 0;
- char *pa_ringtone = NULL;
- int max_ringtone_vol = 0;
- int max_noti_vol = 0;
- int max_media_vol = 0;
- int max_system_vol = 0;
- Elm_Genlist_Item_Class *itc_slider = NULL;
- Evas_Object *genlist = ad->md.genlist;
- elm_genlist_block_count_set(genlist, 3);
- elm_genlist_homogeneous_set(genlist, EINA_FALSE);
-
- ret = sound_manager_get_max_volume(SOUND_TYPE_RINGTONE,
- &max_ringtone_vol);
- SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
- max_ringtone_vol);
- ret = sound_manager_get_max_volume(SOUND_TYPE_NOTIFICATION,
- &max_noti_vol);
- SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
- max_noti_vol);
- ret = sound_manager_get_max_volume(SOUND_TYPE_MEDIA, &max_media_vol);
- SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
- max_media_vol);
- ret = sound_manager_get_max_volume(SOUND_TYPE_SYSTEM, &max_system_vol);
- SETTING_TRACE("Getting max volume: %s %d", get_error_message(ret),
- max_system_vol);
-
- if (vconf_get_bool(
- VCONFKEY_SETAPPL_SOUND_STATUS_BOOL,
- &sound_value) < 0)
- sound_value = TRUE; /* default value of sound : on */
-
-
- /*------------------------------------------------------------------ */
- /*------------------------------------------------------------------ */
- /*------------------------------------------------------------------ */
- itc_slider = &(ad->itc_layout_1icon);
-
- if (0 == safeStrCmp(ad->viewtype, VOLUME_APP_NAME))
- itc_slider = &(ad->itc_layout);
- /*------------------------------------------------------------------ */
- /*------------------------------------------------------------------ */
- /*------------------------------------------------------------------ */
-
- /* 1. Ringtones */
- SETTING_TRACE(" ???????????? ad->viewtype : %s ", ad->viewtype);
-
- if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
-
- int sd_status = VCONFKEY_SYSMAN_MMC_REMOVED;
- if (vconf_get_int(
- VCONFKEY_SYSMAN_MMC_STATUS,
- &sd_status) != 0) {
- SETTING_TRACE_ERROR("fail to get mmc status");
- }
- sdcard_filepath = vconf_get_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR);
-
- if (0 == safeStrNCmp(sdcard_filepath, INIT_PATH, safeStrLen(INIT_PATH))) {
- vconf_set_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR, "NONE");
- free(sdcard_filepath);
- sdcard_filepath = vconf_get_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR);
- }
- if (safeStrCmp(sdcard_filepath, "NONE") != 0
- && sd_status == VCONFKEY_SYSMAN_MMC_MOUNTED) {
- /*check sdcard filepath*/
- if (sdcard_filepath)
- pa_ringtone = strdup(sdcard_filepath);
- vconf_set_str(VCONFKEY_SETAPPL_CALL_VIBRATION_PATTERN_STR, "NONE");
- } else {
- pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR);
- }
-
- free(sdcard_filepath);
- sdcard_filepath = NULL;
-
- if (!pa_ringtone || strlen(pa_ringtone) == 0) {
- sub_desc = strdup(SILENT_MODE);
- } else if (setting_sound_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL) {
- if (pa_ringtone)
- FREE(pa_ringtone);
- if (isEmulBin())
- pa_ringtone = strdup(SETTING_DEFAULT_CALL_TONE_SDK);
- else
- pa_ringtone = strdup(SETTING_DEFAULT_CALL_TONE);
-
- vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR, pa_ringtone);
- if (vconf_ret < 0)
- SETTING_TRACE_DEBUG("failed to set vconf");
- } else {
- if (pa_ringtone)
- sub_desc = setting_media_basename(pa_ringtone);
- }
-
- ad->data_call_alert_tone =
- setting_create_Gendial_field_def(
- genlist,
- &itc_2text_2,
- _mouse_up_Gendial_list_cb,
- ad,
- SWALLOW_Type_INVALID,
- NULL,
- NULL,
- 0,
- "IDS_ST_MBODY_RINGTONE",
- sub_desc,
- NULL);
- if (ad->data_call_alert_tone) {
- __BACK_POINTER_SET(ad->data_call_alert_tone);
- ad->data_call_alert_tone->userdata = ad;
- }
-
- FREE(pa_ringtone);
- G_FREE(sub_desc);
- }
-
-
- /* 2. call volumn. */
- if (sound_manager_get_volume(SOUND_TYPE_RINGTONE, &mm_value)
- != SOUND_MANAGER_ERROR_NONE)
- mm_value = SETTING_DEFAULT_RINGTONE_VOL_INT;
- if (sound_value == FALSE)
- mm_value = 0;
-
- (void)app_get_id(&app_id);
-
- if (app_id && !strcmp(VOLUME_APP_NAME, app_id))
- optional_txt = "IDS_ST_MBODY_RINGTONE";
-
- left_icon = setting_sound_get_slider_icon(SND_SLIDER_CALL, mm_value);
- ADD_SOUND_SLIDER(
- ad->data_call_volume,
- genlist,
- (*itc_slider),
- left_icon,
- NULL,
- /*"IDS_ST_HEADER_RINGTONES" is for volume App,in
- * Setting > Sound,it has no title */
- mm_value,
- optional_txt,
- ad,
- _call_slider_change_cb,
- max_ringtone_vol,
- _start_change_cb,
- _stop_change_cb);
- __BACK_POINTER_SET(ad->data_call_volume);
-
- /* Disable Call Volume slider if Silent ringtone is selected */
- if (ad->data_call_volume
- && ad->data_call_alert_tone
- && !safeStrCmp(ad->data_call_alert_tone->sub_desc, SILENT_MODE)) {
- elm_object_item_disabled_set(ad->data_call_volume->item, EINA_TRUE);
- elm_object_disabled_set(ad->data_call_volume->eo_check, EINA_TRUE);
- }
-
- /* 3. Notification alert */
- if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
- pa_ringtone = vconf_get_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR);
- SETTING_TRACE_WARNING("<MS> NOTI VCONF: %s", __FILE__, __LINE__, pa_ringtone);
-
-
- if (!pa_ringtone || strlen(pa_ringtone) == 0) {
- sub_desc = strdup(SILENT_MODE);
- } else if (setting_sound_check_file_exist(ad, pa_ringtone) == SETTING_RETURN_FAIL) {
- if (pa_ringtone)
- FREE(pa_ringtone);
- pa_ringtone = strdup(SETTING_DEFAULT_MSG_TONE);
- vconf_ret = vconf_set_str(VCONFKEY_SETAPPL_NOTI_MSG_RINGTONE_PATH_STR, SETTING_DEFAULT_MSG_TONE);
- if (vconf_ret < 0)
- SETTING_TRACE_DEBUG("failed to set vconf");
- } else {
- if (pa_ringtone)
- sub_desc = setting_media_basename(pa_ringtone);
- }
-
- ad->data_msg_alert_tone =
- setting_create_Gendial_field_def(
- genlist,
- &itc_2text_2,
- _mouse_up_Gendial_list_cb,
- ad,
- SWALLOW_Type_INVALID,
- NULL,
- NULL,
- 0,
- "IDS_ST_BODY_NOTIFICATION",
- sub_desc,
- NULL);
- if (ad->data_msg_alert_tone) {
- __BACK_POINTER_SET(ad->data_msg_alert_tone);
- ad->data_msg_alert_tone->userdata = ad;
- }
-
- FREE(pa_ringtone);
- G_FREE(sub_desc);
- }
- /* 4.noti volumn */
- if (sound_manager_get_volume(SOUND_TYPE_NOTIFICATION, &mm_value)
- != SOUND_MANAGER_ERROR_NONE)
- mm_value = SETTING_DEFAULT_NOTI_VOL_INT;
- if (sound_value == FALSE)
- mm_value = 0;
-
- if (app_id && !strcmp(VOLUME_APP_NAME, app_id))
- optional_txt = "IDS_ST_BODY_NOTIFICATION";
-
- left_icon = setting_sound_get_slider_icon(SND_SLIDER_NOTI, mm_value);
- ADD_SOUND_SLIDER(
- ad->data_noti_volume,
- genlist,
- (*itc_slider),
- left_icon,
- NULL,
- mm_value,
- optional_txt,
- ad,
- _noti_slider_change_cb,
- max_noti_vol,
- _start_change_cb,
- _stop_change_cb);
- __BACK_POINTER_SET(ad->data_noti_volume);
-
- free(app_id);
- app_id = NULL;
-
- /* Disable Notification slider if Silent ringtone is selected */
- if (ad->data_noti_volume
- && ad->data_msg_alert_tone
- && !safeStrCmp(ad->data_msg_alert_tone->sub_desc, SILENT_MODE)) {
- elm_object_item_disabled_set(ad->data_noti_volume->item, EINA_TRUE);
- elm_object_disabled_set(ad->data_noti_volume->eo_check, EINA_TRUE);
- }
-
- /* 5.media volume */
- if (sound_manager_get_volume(SOUND_TYPE_MEDIA, &mm_value)
- != SOUND_MANAGER_ERROR_NONE)
- mm_value = SETTING_DEFAULT_MEDIA_VOL_INT;
-
- left_icon = setting_sound_get_slider_icon(SND_SLIDER_MEDIA, mm_value);
- ADD_SOUND_SLIDER(
- ad->data_media_volume,
- genlist,
- ad->itc_layout,
- left_icon, /*IMG_SLIDER_BTN_VOLUME02*/
- NULL,
- mm_value,
- "IDS_ST_BODY_MEDIA",
- ad,
- _media_slider_change_cb,
- max_media_vol,
- _start_change_cb,
- _stop_change_cb);
-
- __BACK_POINTER_SET(ad->data_media_volume);
-
- /* 6.system volume */
- if (sound_manager_get_volume(SOUND_TYPE_SYSTEM, &mm_value)
- != SOUND_MANAGER_ERROR_NONE) {
- SETTING_TRACE_DEBUG("Fail to get volume");
- mm_value = SETTING_DEFAULT_SYSTEM_VOL_INT;
- }
- if (sound_value == FALSE)
- mm_value = 0;
-
- left_icon = setting_sound_get_slider_icon(SND_SLIDER_SYSTEM, mm_value);
- ADD_SOUND_SLIDER(
- ad->data_touch_volume, genlist, ad->itc_layout,
- left_icon, NULL/*IMG_SLIDER_BTN_SYSTEM_VOLUME*/,
- mm_value, "IDS_ST_BODY_SYSTEM", ad,
- _sys_slider_change_cb,
- max_system_vol,
- _start_change_cb, _stop_change_cb);
-
- __BACK_POINTER_SET(ad->data_touch_volume);
-
- if (0 != safeStrCmp(ad->viewtype, VOLUME_APP_NAME)) {
- /* 7. Vibrate when ringing */
- if (vconf_get_bool(
- VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL,
- &vconf_value) < 0) {
- /* default value of vibrate sound : on */
- vconf_value = TRUE;
- }
- ADD_TOGGLE_MENU2(
- ad->data_sound_when_ring,
- genlist,
- itc_1text_1icon,
- "IDS_ST_BODY_VIBRATE_WHEN_RINGING",
- vconf_value,
- ad);
- __BACK_POINTER_SET(ad->data_sound_when_ring);
-
- if (ad->data_sound_when_ring)
- elm_object_item_disabled_set(ad->data_sound_when_ring->item,
- !sound_value);
- /* 8. Feedback */
- setting_create_Gendial_field_def(genlist, &itc_1text,
- _mouse_up_Gendial_list_cb,
- data, SWALLOW_Type_INVALID, NULL,
- NULL, 0,
- "IDS_ST_MBODY_OTHER_SOUNDS", NULL, NULL);
-
- /* Notifications */
- setting_create_Gendial_field_titleItem(
- genlist,
- &itc_group_item,
- _("IDS_ST_BODY_NOTIFICATIONS"),
- NULL);
- /* 9. Notifications - Do not disturb */
- const char *sub_desc = setting_do_not_disturb_is_enable(data);
- ad->data_do_not_disturb = setting_create_Gendial_field_def(
- genlist,
- &itc_2text_2,
- _mouse_up_Gendial_list_cb,
- data,
- SWALLOW_Type_INVALID,
- NULL,
- NULL,
- 0,
- "IDS_ST_MBODY_DO_NOT_DISTURB_ABB",
- sub_desc,
- NULL);
- /* 10. Notifications - App notifications */
- setting_create_Gendial_field_def(
- genlist,
- &itc_2text_2,
- _mouse_up_Gendial_list_cb,
- data,
- SWALLOW_Type_INVALID,
- NULL,
- NULL,
- 0,
- "IDS_ST_MBODY_APP_NOTIFICATIONS",
- "IDS_ST_BODY_ALLOW_OR_BLOCK_NOTIFICATIONS_FROM_"
- "INDIVIDUAL_APPLICATIONS",
- NULL);
-
- sub_desc = setting_notifiaction_on_lock_screen(data);
- /* 11. Notifications - Notification on lock screen */
- ad->data_notifiaction_on_lock_screen = setting_create_Gendial_field_def(
- genlist,
- &itc_2text_2,
- _mouse_up_Gendial_list_cb,
- data,
- SWALLOW_Type_INVALID,
- NULL,
- NULL,
- 0,
- NOTIFICATION_STR_ON_LOCK_SCREEN,
- sub_desc,
- NULL);
-
- ad->md.genlist = genlist;
-
- }
- if (!sound_value) {
- if (ad->data_noti_volume)
- elm_object_item_disabled_set(ad->data_noti_volume->item,
- EINA_TRUE);
- if (ad->data_touch_volume)
- elm_object_item_disabled_set(ad->data_touch_volume->item,
- EINA_TRUE);
- }
-}
-
-static void _click_softkey_back_cb(void *data,
- Evas_Object *obj, void *event_info)
-{
- SETTING_TRACE_BEGIN;
- SettingSoundData *ad = (SettingSoundData *)data;
- ret_if(!ad);
- elm_naviframe_item_pop(ad->md.naviframe);
-}
-
-static int _view_create(void *cb)
-{
- Evas_Object *back_button = NULL;
-
- SETTING_TRACE_BEGIN;
- retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- SettingSoundData *ad = (SettingSoundData *) cb;
-
- int ret = view_init(&ad->md, _("IDS_ST_HEADER_SOUND"));
-
- if (ret != SETTING_RETURN_SUCCESS)
- return ret;
-
- /* 1.Grab Hard Key */
- setting_sound_key_grab(ad);
- SETTING_TRACE("viewtype: %s", ad->viewtype);
- _get_lite_main_list(ad);
-
- back_button = setting_create_button(ad->md.naviframe,
- _(NULL), NAVI_BACK_ARROW_BUTTON_STYLE,
- _click_softkey_back_cb, ad);
- elm_layout_content_set(ad->md.naviframe, "prev_btn",
- back_button);
- elm_naviframe_item_pop_cb_set(ad->md.naviframe_it, _view_pop_cb, ad);
- elm_object_item_domain_text_translatable_set(
- ad->md.naviframe_it, SETTING_PACKAGE,
- EINA_TRUE);
-
- setting_view_sound_main.is_create = TRUE;
-
- SETTING_TRACE_END;
- return SETTING_RETURN_SUCCESS;
-}
-
-static int _view_destroy(void *cb)
-{
- /* error check */
- retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
- SETTING_TRACE_BEGIN;
- retv_if(!setting_view_sound_main.is_create,
- SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
-
- SettingSoundData *ad = (SettingSoundData *) cb;
-
- /* 1.Ungrab Key */
- setting_sound_key_ungrab(ad);
-
- if (ad->play_ringtone_idler) {
- ecore_idler_del(ad->play_ringtone_idler);
- ad->play_ringtone_idler = NULL;
- }
-
- evas_object_del(ad->md.window);
- ad->md.window = NULL;
-
- setting_view_sound_main.is_create = FALSE;
- return SETTING_RETURN_SUCCESS;
-}
-
-static Eina_Bool _view_pop_cb(void *data, Elm_Object_Item *it)
-{
- SETTING_TRACE_BEGIN;
- SettingSoundData *ad = data;
- retv_if(!ad, EINA_FALSE);
- setting_sound_stop_sound(ad);
- ui_app_exit();
- return EINA_TRUE;
-}
-
-/* ***************************************************
- *
- *general func
- *
- ***************************************************/
-
-static void _update_slider_item(Setting_GenGroupItem_Data *item_to_update,
- sound_type_e sound_type_to_update, const char *ringtone_file,
- int icon_type)
-{
- int mm_value = 0;
- SettingSoundData *ad = NULL;
-
- ret_if(!item_to_update);
- ad = item_to_update->userdata;
- ret_if(!ad);
-
- if (!safeStrCmp(ringtone_file, SILENT_MODE)) {
- /* Disable */
- if (item_to_update && item_to_update->item
- && item_to_update->eo_check) {
- if (item_to_update->chk_status)
- ad->backup_ringtone_volume[sound_type_to_update] =
- item_to_update->chk_status;
- item_to_update->chk_status = 0;
- elm_slider_value_set(item_to_update->eo_check,
- item_to_update->chk_status);
-
- sound_manager_set_volume(sound_type_to_update, 0);
-
- elm_object_item_disabled_set(item_to_update->item, EINA_TRUE);
- elm_object_disabled_set(item_to_update->eo_check, EINA_TRUE);
-
- /* Change notification slider's icon as mute style */
- setting_sound_update_slider_icon(item_to_update, icon_type);
- }
- } else {
- /* Enable */
- int ret = sound_manager_get_volume(sound_type_to_update, &mm_value);
- SETTING_TRACE("ret:%d", ret);
- item_to_update->chk_status = mm_value;
- elm_slider_value_set(
- item_to_update->eo_check,
- item_to_update->chk_status);
- elm_object_item_disabled_set(item_to_update->item, EINA_FALSE);
- elm_object_disabled_set(item_to_update->eo_check, EINA_FALSE);
- if (mm_value == 0)
- sound_manager_set_volume(sound_type_to_update,
- ad->backup_ringtone_volume[sound_type_to_update]);
- setting_sound_update_slider_icon(item_to_update, icon_type);
- }
-}
-
-static void _set_ringtone_path(Evas_Object *genlist, char *path, char *vconf,
- system_settings_key_e key,
- Setting_GenGroupItem_Data *ringtone_item,
- Setting_GenGroupItem_Data *slider_item,
- sound_type_e sound_type, SoundType type)
-{
- char *ringtone_file = setting_media_basename(path);
- int ret;
-
- SETTING_TRACE_BEGIN;
-
- if (strnlen(path, PATH_MAX) == 0) {
- ret = vconf_set_str(vconf, "");
- if (ret != 0)
- dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] vconf_set_str() error: %s",
- __FILE__, __LINE__, get_error_message(ret));
-
- ringtone_item->sub_desc = strdup(SILENT_MODE);
- } else {
- ret = vconf_set_str(vconf, path);
- if (ret != 0)
- dlog_print(DLOG_ERROR, LOG_TAG, "[%s:%d] cause error: %s",
- __FILE__, __LINE__, get_error_message(ret));
-
- ret = system_settings_set_value_string(key, path);
- if (SYSTEM_SETTINGS_ERROR_NONE == ret)
- ringtone_item->sub_desc = strdup(ringtone_file);
- else
- SETTING_TRACE_ERROR("system_settings_set_value_string() failed: %s",
- get_error_message(ret));
- }
-
- elm_object_item_data_set(ringtone_item->item, ringtone_item);
- elm_genlist_item_update(ringtone_item->item);
- elm_genlist_realized_items_update(genlist);
- _update_slider_item(slider_item, sound_type, ringtone_file, type);
-
- free(ringtone_file);
- SETTING_TRACE_END;
-}
-
-static void _result_myfile_cb(app_control_h request,
- app_control_h reply, app_control_result_e result,
- void *priv)
-{
- char **paths = NULL;
- int arr_len = 0;
-
- SETTING_TRACE_BEGIN;
- ret_if(priv == NULL);
-
- SettingSoundData *ad = (SettingSoundData *) priv;
-
- if (APP_CONTROL_RESULT_SUCCEEDED != result)
- return;
-
- (void)app_control_get_extra_data_array(reply, APP_CONTROL_DATA_SELECTED,
- &paths, &arr_len);
- if (!paths || arr_len == 0)
- return;
-
- if (paths[0] != NULL) {
- if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_MBODY_RINGTONE")) {
- _set_ringtone_path(ad->md.genlist, paths[0],
- VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
- SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
- ad->data_call_alert_tone, ad->data_call_volume,
- SOUND_TYPE_RINGTONE, SND_SLIDER_CALL);
-
- } else if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_BODY_NOTIFICATION")) {
- _set_ringtone_path(ad->md.genlist, paths[0],
- VCONFKEY_SETAPPL_NOTI_RINGTONE_PATH_STR,
- SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
- ad->data_msg_alert_tone, ad->data_noti_volume,
- SOUND_TYPE_NOTIFICATION, SND_SLIDER_NOTI);
- }
- }
-
- free(paths);
-}
-
-static char *_prepare_ringtone_path(char *vconf, system_settings_key_e key,
- char *default_emul, char *default_arm)
-{
- int ret = 0;
- char *vconf_ringtone = vconf_get_str(vconf);
- char *pa_cur_ringtone = NULL;
-
- dlog_print(DLOG_INFO, LOG_TAG, "[%s:%d] <MS> VCONF_RINGTONE: %s", __FILE__, __LINE__, vconf_ringtone);
-
- if (!vconf_ringtone || strlen(vconf_ringtone) == 0) {
- pa_cur_ringtone = strdup(SILENT_MODE);
- } else {
- ret = system_settings_get_value_string(key, &pa_cur_ringtone);
- if (ret != SYSTEM_SETTINGS_ERROR_NONE) {
- SETTING_TRACE_ERROR("system_settings_get_value_string() failed. Error: %s", get_error_message(ret));
- return NULL;
- }
- }
-
- if (pa_cur_ringtone == NULL) {
- if (isEmulBin())
- pa_cur_ringtone = strdup(default_emul);
- else
- pa_cur_ringtone = strdup(default_arm);
- }
-
-
- return pa_cur_ringtone;
-}
-
-static void _create_myfile_ug(SettingSoundData *ad, char *titleID)
-{
- ret_if(ad == NULL);
- const char *selected_files_arr[] = {NULL};
- char *pa_cur_ringtone = NULL;
- app_control_h svc = NULL;
- if (APP_CONTROL_ERROR_NONE != app_control_create(&svc))
- return;
-
- if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_MBODY_RINGTONE")) {
- pa_cur_ringtone = _prepare_ringtone_path(
- VCONFKEY_SETAPPL_CALL_RINGTONE_PATH_STR,
- SYSTEM_SETTINGS_KEY_INCOMING_CALL_RINGTONE,
- SETTING_DEFAULT_CALL_TONE_SDK,
- SETTING_DEFAULT_CALL_TONE);
-
- } else if (0 == safeStrCmp(ad->ringtone_type, "IDS_ST_BODY_NOTIFICATION")) {
- pa_cur_ringtone = _prepare_ringtone_path(
- VCONFKEY_SETAPPL_NOTI_RINGTONE_PATH_STR,
- SYSTEM_SETTINGS_KEY_SOUND_NOTIFICATION,
- SETTING_DEFAULT_MSG_TONE,
- SETTING_DEFAULT_MSG_TONE);
-
- app_control_add_extra_data(svc, "show_notification", "true");
- }
-
- selected_files_arr[0] = pa_cur_ringtone;
-
- app_control_add_extra_data_array(svc, APP_CONTROL_DATA_SELECTED,
- selected_files_arr,
- sizeof(selected_files_arr)/
- sizeof(const char *));
-
- elm_object_tree_focus_allow_set(ad->md.naviframe, EINA_FALSE);
-
- app_control_set_app_id(svc, "org.tizen.setting-ringtone");
- app_control_set_launch_mode(svc, APP_CONTROL_LAUNCH_MODE_GROUP);
- if (APP_CONTROL_ERROR_NONE !=
- app_control_send_launch_request(svc, _result_myfile_cb, ad))
- SETTING_TRACE_ERROR("org.tizen.setting-ringtone launch request failed");
-
- app_control_destroy(svc);
- free(pa_cur_ringtone);
-}
-
-static void _back_button_click_cb(void *data, Evas_Object *obj,
- void *event_info)
-{
- SettingSoundData *ad = data;
- ret_if(!ad);
- elm_naviframe_item_pop(ad->md.naviframe);
-}
-
-static void _mouse_up_Gendial_list_cb(void *data,
- Evas_Object *obj,
- void *event_info)
-{
- SETTING_TRACE_BEGIN;
- app_control_h service = 0;
- Evas_Object *back_button = NULL;
- SettingSoundData *ad = NULL;
- Elm_Object_Item *navi_it = NULL;
- int vconf_value = 0;
- Evas_Object *genlist = NULL;
- Elm_Object_Item *item = NULL;
- Setting_GenGroupItem_Data *list_item = NULL;
-
- ad = data;
- ret_if(!ad);
-
- item = (Elm_Object_Item *)event_info;
- retm_if(event_info == NULL, "Invalid argument: event info is NULL");
-
- elm_genlist_item_selected_set(item, 0);
- list_item = elm_object_item_data_get(item);
- ret_if(!list_item);
-
- setting_sound_stop_sound(ad);
-
- SETTING_TRACE("clicking item[%s]", _(list_item->keyStr));
-
- if (!safeStrCmp("IDS_ST_MBODY_RINGTONE", list_item->keyStr)
- || !safeStrCmp("IDS_ST_BODY_NOTIFICATION", list_item->keyStr)) {
- ad->ringtone_type = list_item->keyStr;
- _create_myfile_ug(ad, list_item->keyStr);
- setting_sound_key_ungrab(ad);
- } else if (!safeStrCmp("IDS_ST_MBODY_DO_NOT_DISTURB_ABB",
- list_item->keyStr)) {
- app_control_create(&service);
- app_control_set_app_id(service,
- "org.tizen.setting-notification");
- app_control_set_operation(service, DO_NOT_DISTURB_OP);
- app_control_set_launch_mode(service, APP_CONTROL_LAUNCH_MODE_GROUP);
- app_control_send_launch_request(service, NULL, NULL);
- app_control_destroy(service);
- } else if (!safeStrCmp("IDS_ST_MBODY_APP_NOTIFICATIONS",
- list_item->keyStr)) {
- app_control_create(&service);
- app_control_set_app_id(service,
- "org.tizen.setting-notification");
- app_control_set_operation(service, APP_NOTIFICATIONS_OP);
- app_control_set_launch_mode(service, APP_CONTROL_LAUNCH_MODE_GROUP);
- app_control_send_launch_request(service, NULL, NULL);
- app_control_destroy(service);
- } else if (!safeStrCmp(NOTIFICATION_STR_ON_LOCK_SCREEN,
- list_item->keyStr)) {
- app_control_create(&service);
- app_control_set_app_id(service,
- "org.tizen.setting-notification");
- app_control_set_operation(service, NOTIFICATIONS_ON_LOCK_SCREEN);
- app_control_set_launch_mode(service, APP_CONTROL_LAUNCH_MODE_GROUP);
- app_control_send_launch_request(service, NULL, NULL);
- app_control_destroy(service);
-
- }
- /* additional */
- else if (!safeStrCmp(
- "IDS_ST_BODY_VIBRATE_WHEN_RINGING",
- list_item->keyStr)) {
- /* vibrate when ring*/
- int old_status = list_item->chk_status;
- if (vconf_set_bool(VCONFKEY_SETAPPL_VIBRATE_WHEN_RINGING_BOOL,
- !old_status) == 0) {
- /* new status */
- setting_update_gl_item_chk_status(list_item, !old_status);
- }
- } else if (!safeStrCmp("IDS_ST_BODY_SCREEN_LOCK_SOUND",
- list_item->keyStr)) {
- int old_status = list_item->chk_status;
- if (vconf_set_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
- !old_status) == 0) {
- /* new status */
- setting_update_gl_item_chk_status(list_item,
- !old_status);
- }
- } else if (!safeStrCmp("IDS_ST_MBODY_DIALLING_KEYPAD_TONE",
- list_item->keyStr)) {
- int old_status = list_item->chk_status;
- /* To do : set vconfkey for touch sounds */
- if (vconf_set_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL,
- !old_status) == 0) {
- /* new status */
- setting_update_gl_item_chk_status(list_item,
- !old_status);
- }
- } else if (!safeStrCmp("IDS_ST_MBODY_TOUCH_SOUND", list_item->keyStr)) {
- int old_status = list_item->chk_status;
- /* To do : set vconfkey for touch sounds */
- if (vconf_set_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
- !old_status) == 0) {
- /* new status */
- setting_update_gl_item_chk_status(list_item,
- !old_status);
- }
- } else if (!safeStrCmp("IDS_ST_MBODY_OTHER_SOUNDS", list_item->keyStr)) {
- setting_sound_key_ungrab(ad);
-
- ADD_GENLIST2(genlist, ad->md.naviframe);
- /* 1. Touch sounds */
- if (vconf_get_bool(VCONFKEY_SETAPPL_TOUCH_SOUNDS_BOOL,
- &vconf_value) < 0)
- /* default value of touch sounds : on */
- vconf_value = TRUE;
- ADD_TOGGLE_MENU(ad->data_touch_sounds, genlist, itc_1text_1icon,
- "IDS_ST_MBODY_TOUCH_SOUND",
- "IDS_ST_BODY_PLAY_A_SOUND_WHEN_BUTTONS_ICONS_"
- "AND_MENU_ITEMS_ARE_TAPPED",
- vconf_value, ad)
-
- /* 2. Keytones */
- if (vconf_get_bool(VCONFKEY_SETAPPL_BUTTON_SOUNDS_BOOL,
- &vconf_value) < 0)
- /* default value of touch sounds : on */
- vconf_value = TRUE;
- ADD_TOGGLE_MENU(ad->data_button_sounds, genlist,
- itc_1text_1icon,
- "IDS_ST_MBODY_DIALLING_KEYPAD_TONE",
- "IDS_ST_BODY_PLAY_TONE_WHEN_THE_DIALLING_"
- "KEYPAD_IS_TAPPED",
- vconf_value, ad)
-
- /* 3. Screen lock sound */
- if (vconf_get_bool(VCONFKEY_SETAPPL_SOUND_LOCK_BOOL,
- &vconf_value) < 0)
- /* default value of lock/unlock sound : off */
- vconf_value = 0;
- ADD_TOGGLE_MENU(ad->data_lock_sound, genlist, itc_1text_1icon,
- "IDS_ST_BODY_SCREEN_LOCK_SOUND",
- "IDS_ST_BODY_PLAY_SOUNDS_WHEN_LOCKING_AND_UNLOCKING_SCREEN",
- vconf_value, ad)
-
-
- navi_it = elm_naviframe_item_push(ad->md.naviframe,
- "IDS_ST_MBODY_OTHER_SOUNDS", NULL, NULL, genlist,
- NULL);
- elm_object_item_domain_text_translatable_set(navi_it,
- SETTING_PACKAGE, EINA_TRUE);
- back_button = setting_create_button(ad->md.naviframe, _("IDS_ST_BUTTON_BACK"),
- NAVI_BACK_ARROW_BUTTON_STYLE, _back_button_click_cb, ad);
- elm_layout_content_set(ad->md.naviframe, "prev_btn", back_button);
- }
-}