--- /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.app.debug.623840356">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.623840356" 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 artifactName="notification-testsample" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,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.app.debug.623840356" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug">
+ <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.623840356." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.789082172" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.1513861718" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder autoBuildTarget="all" buildPath="${workspace_loc:/NotificationManager}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.728564006" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.1562889175" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+ <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1843741939" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+ <option id="gnu.cpp.compiler.option.optimization.level.958069946" 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.1304689426" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+ <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.297678407" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+ <option id="sbi.gnu.cpp.compiler.option.468281428" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-3.0-device.core.private.20161028_1_llvm36.armel.core.app"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.828368370" 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/""/>
+ <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/attach-panel""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/aul/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/auth-fw""/>
+ <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/call-manager""/>
+ <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/EGL""/>
+ <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/email-service""/>
+ <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/GLES""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES3""/>
+ <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/KHR""/>
+ <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/msg-service""/>
+ <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/rua/""/>
+ <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/telephony""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tzsh""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/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_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.1898593833" 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=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-mthumb"/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.1979662586" 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.239953035" name="Tizen-Frameworks" 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.1480463000" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+ </tool>
+ <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1369315599" 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.1065904963" 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.1625170570" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+ <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1289700766" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+ <option id="sbi.gnu.c.compiler.option.1250562695" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-3.0-device.core.private.20161028_1_llvm36.armel.core.app"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1601601524" 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/""/>
+ <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/attach-panel""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/aul/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/auth-fw""/>
+ <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/call-manager""/>
+ <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/EGL""/>
+ <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/email-service""/>
+ <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/GLES""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES2""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/GLES3""/>
+ <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/KHR""/>
+ <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/msg-service""/>
+ <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/rua/""/>
+ <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/telephony""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tzsh""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/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_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.293706034" 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=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-mthumb"/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.1651395889" 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.1312267624" name="Tizen-Frameworks" 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.1421791057" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.1114561777" 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.1190097251" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+ <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.2095877856" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+ <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.879054202" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1749954949" 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="-pie -lpthread "/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-Xlinker --version-script="${PROJ_PATH}/.exportMap""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/>
+ <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+ </option>
+ <option id="gnu.cpp.link.option.paths.2049080024" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.496484676" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool command="arm-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.1272181041" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.256801543" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.232042945" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.152133104" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+ <tool id="org.tizen.nativecore.tool.ast.953008194" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+ <tool id="org.tizen.nativecore.tool.ast.cpp.923766897" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.757962707" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+ <tool id="org.tizen.nativecore.tool.sbi.po.compiler.1469051548" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1028761320" 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.app.release.1148513101">
+ <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1148513101" 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 artifactName="notificationmanager" buildArtefactType="org.tizen.nativecore.buildArtefactType.app" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.tizen.nativecore.buildArtefactType.app,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.app.release.1148513101" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release">
+ <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.1148513101." name="/" resourcePath="">
+ <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.687691478" name="Tizen Native Toolchain" superClass="org.tizen.nativecore.toolchain.sbi.gcc45.app.release">
+ <targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="org.tizen.nativeide.target.sbi.gnu.platform.base.629758008" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/>
+ <builder buildPath="${workspace_loc:/NotificationManager}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1300703392" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Tizen Application Builder" superClass="org.tizen.nativecore.target.sbi.gnu.builder"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.333403981" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/>
+ <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.609862454" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler">
+ <option id="gnu.cpp.compiler.option.optimization.level.1250095982" 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.37764030" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/>
+ <option defaultValue="false" id="sbi.gnu.cpp.compiler.option.misc.pic.core.1499285505" name="-fPIC option" superClass="sbi.gnu.cpp.compiler.option.misc.pic.core" valueType="boolean"/>
+ <option id="sbi.gnu.cpp.compiler.option.260836896" name="Tizen-Target" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-3.0-emulator.core.private.20160905_2_llvm36.i386.core.app"/>
+ </option>
+ <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.319873996" 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/""/>
+ <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/attach-panel""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/aul/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/auth-fw""/>
+ <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/call-manager""/>
+ <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/email-service""/>
+ <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/msg-service""/>
+ <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/rua/""/>
+ <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/telephony""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tzsh""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_service""/>
+ <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.687679131" 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=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="gnu.cpp.compiler.option.include.paths.968054647" 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.1261033911" name="Tizen-Frameworks" 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.1133013084" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
+ </tool>
+ <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1341139138" 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.1455977851" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" valueType="enumerated"/>
+ <option defaultValue="gnu.c.debugging.level.default" id="sbi.gnu.c.compiler.option.debugging.level.core.1052810075" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/>
+ <option defaultValue="false" id="sbi.gnu.c.compiler.option.misc.pic.core.1891260970" name="-fPIC option" superClass="sbi.gnu.c.compiler.option.misc.pic.core" valueType="boolean"/>
+ <option id="sbi.gnu.c.compiler.option.916186759" name="Tizen-Target" superClass="sbi.gnu.c.compiler.option" valueType="userObjs">
+ <listOptionValue builtIn="false" value="mobile-3.0-emulator.core.private.20160905_2_llvm36.i386.core.app"/>
+ </option>
+ <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.1343987867" 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/""/>
+ <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/attach-panel""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/aul/""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/auth-fw""/>
+ <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/call-manager""/>
+ <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/email-service""/>
+ <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/msg-service""/>
+ <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/rua/""/>
+ <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/telephony""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/telephony-client""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/tzsh""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ug-1""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ui""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/vconf""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/web""/>
+ <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/widget_service""/>
+ <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.367810683" 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=" -fPIE"/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ </option>
+ <option id="gnu.c.compiler.option.include.paths.540612600" 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.627100180" name="Tizen-Frameworks" 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.530447134" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+ </tool>
+ <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.611535173" 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.494349497" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker">
+ <option defaultValue="false" id="sbi.gnu.cpp.linker.option.shared_flag.core.1002334075" name="Linker.Shared" superClass="sbi.gnu.cpp.linker.option.shared_flag.core" valueType="boolean"/>
+ <option defaultValue="false" id="sbi.gnu.cpp.linker.option.noundefined.core.282850357" name="Report unresolved symbol references (-Wl,--no-undefined)" superClass="sbi.gnu.cpp.linker.option.noundefined.core" valueType="boolean"/>
+ <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1470342027" 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="-pie -lpthread "/>
+ <listOptionValue builtIn="false" value="--sysroot="${SBI_SYSROOT}""/>
+ <listOptionValue builtIn="false" value="-Xlinker --version-script="${PROJ_PATH}/.exportMap""/>
+ <listOptionValue builtIn="false" value="-L"${SBI_SYSROOT}/usr/lib""/>
+ <listOptionValue builtIn="false" value="$(RS_LIBRARIES)"/>
+ </option>
+ <option id="gnu.cpp.link.option.paths.1677423231" name="Library search path (-L)" superClass="gnu.cpp.link.option.paths" valueType="libPaths">
+ <listOptionValue builtIn="false" value=""${workspace_loc:/${ProjName}/lib}""/>
+ </option>
+ <inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1543299353" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
+ <additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+ <additionalInput kind="additionalinput" paths="$(LIBS)"/>
+ </inputType>
+ </tool>
+ <tool command="i386-linux-gnueabi-as" id="org.tizen.nativeapp.tool.sbi.gnu.assembler.base.871503607" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base">
+ <inputType id="cdt.managedbuild.tool.gnu.assembler.input.1590226076" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+ </tool>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.1362173157" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/>
+ <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1681660918" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/>
+ <tool id="org.tizen.nativecore.tool.ast.297584562" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/>
+ <tool id="org.tizen.nativecore.tool.ast.cpp.454040138" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/>
+ <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.2048923727" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/>
+ <tool id="org.tizen.nativecore.tool.sbi.po.compiler.2141764248" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/>
+ <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.635432903" 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="NotificationManager.org.tizen.nativecore.target.sbi.gcc45.app.2018545091" name="Tizen Native Application" projectType="org.tizen.nativecore.target.sbi.gcc45.app"/>
+ </storageModule>
+ <storageModule moduleId="scannerConfiguration">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.release.1148513101">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ </scannerConfigBuildInfo>
+ <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.623840356">
+ <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+ </scannerConfigBuildInfo>
+ </storageModule>
+ <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+ <storageModule moduleId="refreshScope"/>
+</cproject>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>Notification_TestSample</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>0</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>0</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-3.0</name>
+ </platform>
+ </platforms>
+ <package>
+ <blacklist/>
+ <resFallback autoGen="true"/>
+ </package>
+</tproject>
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(_ETC_NOTIFICATIONS_H)
+#define _ETC_NOTIFICATIONS_H
+
+#include "notification/notification-common.h"
+
+const notification_data *etc_notification_list_get(int *size);
+void etc_notification_set_callbacks(launch_cb launch_func, badge_cb badge_func);
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(_NOTIFICATION_COMMON_H)
+#define _NOTIFICATION_COMMON_H
+
+#include <notification.h>
+#include <linux/limits.h>
+#include <stdlib.h>
+
+#define TEXT_SHORT_LEN 256
+#define TEXT_MAX_LEN 1024
+
+typedef struct _notification_data notification_data;
+typedef void (*notification_cb)(notification_data *);
+typedef bool (*badge_cb)(unsigned int *count, bool step);
+typedef void (*launch_cb)(notification_h notification, const char *argument, const char *pkgname,
+ const char *uri_text, const char *mime_text, const char *operation,
+ const char **array_result, const char **array_key);
+
+struct _notification_data {
+ char name[TEXT_SHORT_LEN];
+ notification_h notification;
+ int press_count;
+ double progress_value;
+ notification_cb callback;
+ char result_text[TEXT_MAX_LEN];
+};
+
+/**
+ * @brief Get shared resources folder absolute path
+ * @return Absolute path to shared resources folder
+ */
+static inline const char *get_shared_res_path(void)
+{
+ static char shared_res_folder_path[PATH_MAX] = { '\0' };
+ if (shared_res_folder_path[0] == '\0') {
+ char *resource_path_buf = app_get_shared_resource_path();
+ strncpy(shared_res_folder_path, resource_path_buf, PATH_MAX-1);
+ free(resource_path_buf);
+ }
+ return shared_res_folder_path;
+}
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(_NOTIFICATION_DEFINES_H)
+#define _NOTIFICATION_DEFINES_H
+
+#define SERVICE_DATA_TEXT APP_CONTROL_DATA_TEXT
+#define SERVICE_DATA_TO APP_CONTROL_DATA_TO
+#define MAIN_MENU_PATH "images/mainmenu.png"
+#define THUMBNAIL_PATH "images/thumbnail1.jpg"
+#define ICON1_PATH "images/icon1.png"
+#define ICON2_PATH "images/icon2.png"
+#define ICON3_PATH "images/messages_btn_send.png"
+#define SOUND_PATH "sounds/sound.mp3"
+#define SETTING_PKGNAME "org.tizen.setting"
+#define MESSAGE_PKGNAME "org.tizen.message"
+#define GALLERY_PKGNAME "org.tizen.gallery"
+
+#define MESSAGE_POST "message_post"
+#define RECEIVED_DATA "Received_data"
+
+static const char *result_1_text = "Hello there.";
+static const char *result_2_text = "WhoIsIt";
+
+/* Result message text constants */
+static const char *result_message = "ResultMessage =";
+static const char *result_message_success_text = "SUCCESS";
+static const char *result_message_failure_text = "FAILURE";
+static const char *notify_message_text = "The notify message is";
+static const char *launch_argument_text = "launchArgument is";
+static const char *badge_is_text = "Badge is";
+static const char *app_message_text = "AppMessage";
+static const char *ongoing_activity_progress_text = "Ongoing Activity Progress is";
+static const char *ongoing_by_app_control_text = "OngoingByAppControl";
+static const char *title_text = "Title";
+static const char *percentage_content_text = "Progress(%). Press count #";
+static const char *byte_content_text = "Progress(Byte). Press count #";
+static const char *text_content_text = "Text. Press count #";
+static const char *remove_ongoing_notification_text = "All Notifications have been removed.";
+static const char *remove_ongoing_notification_by_app_control_text = "OngoingNotificationByAppControl has been removed.";
+static const char *remove_ongoing_notification_by_app_id_text = "OngoingNotificationByAppId has been removed.";
+static const double percentage_max = 1.0;
+static const double percentage_increment = 0.1;
+static const double percentage_multiplier = 100;
+static const double byte_max = 7000000;
+static const double byte_increment = 78461;
+static const int invalid_argument = -1;
+static const char *alert_text = "Alert Text";
+static const char *long_length_text = "Actually on my way to pick my shoes up. See you.";
+static const char *notification_app = "NotificationApp";
+static const char *number_alert_text = "17 AlertText";
+static const char *first_line = "First line";
+static const char *other_columns = "Other columns";
+static const char *second_length = "Second long length sting";
+static const char *line_text = "line";
+static const char *app_control_to_me = "AppControl to me";
+static const char *notify_with_request = "New Notification arrived with NotificationRequest by AppId.";
+static const char *operation_id_is_text = "operationId is";
+static const char *uri_is_text = "uri is";
+static const char *target_app_id_text = "The target AppId is";
+static const char *app_id_is_text = "AppId is";
+static const char *icon_path_is_text = "Icon path is";
+static const char *remove_text = "Individual notification has been removed.";
+static const char *operation_id_text = "http://tizen.org/appcontrol/operation/notification_temporary";
+static const char *extra_data_tizen_org = "http://tizen.org/appcontrol/data/notification";
+static const char *uri_text = "mailto:test@tizen.org";
+static const char *sms_uri_text = "sms:1234567890";
+static const char *mime_text = "audio/mp4";
+static const char *app_control_request = "AppControlRequestReceived";
+static const char *req_id = "reqId:";
+static const char *operation_id = "operationId:";
+static const char *uri_data_text = "pUriData:";
+static const char *mime_type = "pMimeType:";
+static const char *extra_data = "ExtraData:";
+static const char *key_value = "(Key/Value):";
+static const char *Call = "call";
+static const char *Reply = "Reply";
+static const char *View = "View";
+static const char *Send = "Send";
+static const char *Setting = "Setting";
+static const char *Message = "Message";
+static const char *Gallery = "Gallery";
+
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(_NOTIFICATIONS_H)
+#define _NOTIFICATIONS_H
+
+#include "notification/notification-common.h"
+
+void notification_set_callbacks(launch_cb launch_func, badge_cb badge_func);
+notification_data *notification_list_get(int *size);
+void delete_all_notifications();
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(_ONGOING_NOTIFICATIONS_H)
+#define _ONGOING_NOTIFICATIONS_H
+
+#include "notification/notification-common.h"
+
+void ongoing_notification_set_callbacks(launch_cb launch_func, badge_cb badge_func);
+const notification_data *ongoing_notification_list_get(int *size);
+void delete_all_ongoing_notifications(void);
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(_NOTIFICATIONMANAGER_H_)
+#define _NOTIFICATIONMANAGER_H_
+
+#include <app.h>
+#include <dlog.h>
+
+#if !defined(PACKAGE)
+#define PACKAGE "org.example.notification_testsample"
+#endif
+
+#ifdef LOG_TAG
+#undef LOG_TAG
+#endif
+#define LOG_TAG "notification_testsample"
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(_VIEW_H)
+#define _VIEW_H
+
+Eina_Bool view_create(void *user_data);
+Evas_Object *view_create_win(const char *pkg_name);
+Evas_Object *view_create_conformant(Evas_Object *win);
+Evas_Object *view_create_layout(Evas_Object *parent, const char *edj_file_name, const char *edj_group);
+Evas_Object *view_create_background(Evas_Object *parent, const char *part_name);
+Evas_Object *view_create_naviframe(Evas_Object *parent, const char *part_name);
+Evas_Object *view_create_toolbar(Evas_Object *parent);
+Evas_Object *view_create_list(Evas_Object *parent);
+bool view_display_notification(notification_data *notify_data);
+void view_rise_window(void);
+void view_destroy(void);
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#if !defined(_VIEW_DEFINES_H)
+#define _VIEW_DEFINES_H
+
+#define EDJ_NOTI "edje/noti.edj"
+#define GRP_NOTI "noti"
+#define PART_NOTI_TITLE "noti_title"
+#define PART_NOTI_TEXT_CONTENT "noti_content"
+
+#endif
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "../../inc/view_defines.h"
+
+styles {
+ style {
+ name: "text_content";
+ base: "font=Tizen font_size=25 color=#ffffff wrap=mixed ellipsis=0";
+ }
+}
+
+collections {
+ group {
+ name: GRP_NOTI;
+ parts {
+ part {
+ name: PART_NOTI_TITLE;
+ type: TEXT;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.05 0.1; }
+ rel2 { relative: 0.95 0.5; }
+ text {
+ text: "";
+ size: 30;
+ align: 0.5 1.0;
+ ellipsis: 1;
+ }
+ }
+ }
+
+ part {
+ name: PART_NOTI_TEXT_CONTENT;
+ type: TEXTBLOCK;
+ description {
+ state: "default" 0.0;
+ rel1 { relative: 0.05 0.5; }
+ rel2 { relative: 0.95 1.0; }
+ text {
+ style: "text_content";
+ align: 0.0 1.0;
+ }
+ }
+ }
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <Elementary.h>
+#include <system_settings.h>
+#include <badge.h>
+
+#include "notification_testsample.h"
+#include "notification/notifications.h"
+#include "notification/ongoing-notifications.h"
+#include "notification/notification-defines.h"
+#include "notification/notification-common.h"
+#include "notification/etc-notifications.h"
+#include "view.h"
+
+static struct app_info {
+ int service_request_count;
+} s_info = {
+ .service_request_count = 0,
+};
+
+static bool badge_update_cb(unsigned int *count, bool step);
+static void notification_launch_cb(notification_h notification, const char *argument, const char *pkgname,
+ const char *uri_text, const char *mime_text, const char *operation,
+ const char **array_result, const char **array_key);
+static bool _create_notification_data(notification_data **notify_data);
+static void _free_strings_array(char **strings, int length);
+static bool _report_app_control_error(int err_code, const char *err_message);
+
+/**
+ * @brief Hook to take necessary actions before main event loop starts.
+ * Initialize UI resources and application's data.
+ * If this function returns true, the main loop of application starts.
+ * If this function returns false, the application is terminated.
+ */
+static bool app_create(void *user_data)
+{
+ int ret = badge_new(PACKAGE);
+ if (ret != BADGE_ERROR_NONE)
+ dlog_print(DLOG_ERROR, LOG_TAG, "badge_new() failed. Err = %d", ret);
+
+ notification_set_callbacks(notification_launch_cb, badge_update_cb);
+ ongoing_notification_set_callbacks(notification_launch_cb, badge_update_cb);
+ etc_notification_set_callbacks(notification_launch_cb, badge_update_cb);
+
+ return (bool)view_create(NULL);
+}
+
+/**
+ * @brief This callback function is called when another application
+ * sends a launch request to the application.
+ */
+static void app_control(app_control_h app_control, void *user_data)
+{
+ char *extra_data = NULL;
+ char *uri = NULL;
+ char *operation = NULL;
+ char *mime = NULL;
+ char **result_service_data = NULL;
+ char **result_service_data_to = NULL;
+ int length = 0;
+ char extra_data_to[TEXT_SHORT_LEN] = { '\0'};
+ char extra_data_text[TEXT_SHORT_LEN] = {'\0'};
+ notification_data *notify_data = NULL;
+ int ret;
+
+ ret = app_control_get_extra_data(app_control, MESSAGE_POST, &extra_data);
+ if (_report_app_control_error(ret, "app_control_get_extra_data() failed")) {
+ if (!_create_notification_data(¬ify_data)) {
+ view_rise_window();
+ return;
+ }
+
+ _report_app_control_error(app_control_get_uri(app_control, &uri), "app_control_get_uri() failed");
+ _report_app_control_error(app_control_get_operation(app_control, &operation), "app_control_get_operation() failed");
+ _report_app_control_error(app_control_get_mime(app_control, &mime), "app_control_get_mime() failed");
+
+ ret = app_control_get_extra_data_array(app_control, SERVICE_DATA_TEXT, &result_service_data, &length);
+ if (_report_app_control_error(ret, "app_control_get_extra_data_array() failed")) {
+ snprintf(extra_data_text, TEXT_SHORT_LEN, "# 1%s (%s | %s)<br>", key_value, SERVICE_DATA_TEXT, result_service_data[0]);
+ _free_strings_array(result_service_data, length);
+ }
+
+ ret = app_control_get_extra_data_array(app_control, SERVICE_DATA_TO, &result_service_data_to, &length);
+ if (_report_app_control_error(ret, "app_control_get_extra_data_array() failed")) {
+ snprintf(extra_data_to, TEXT_SHORT_LEN, "# 2%s (%s | %s)", key_value, SERVICE_DATA_TEXT, result_service_data_to[0]);
+ _free_strings_array(result_service_data_to, length);
+ }
+
+ snprintf(notify_data->name, TEXT_SHORT_LEN, "%s", app_control_request);
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s %i<br>%s %s<br>%s %s<br>%s %s<br><br>%s<br># 0%s (%s | %s)<br>%s%s",
+ req_id, ++s_info.service_request_count, operation_id, operation, uri_data_text, uri,
+ mime_type, mime, extra_data, key_value, extra_data_tizen_org, extra_data, extra_data_text, extra_data_to);
+
+ free(operation);
+ free(uri);
+ free(mime);
+ free(extra_data);
+
+ view_display_notification(notify_data);
+ free(notify_data);
+ }
+
+ view_rise_window();
+}
+
+/**
+ * @brief This callback function is called each time
+ * the application is completely obscured by another application
+ * and becomes invisible to the user.
+ */
+static void app_pause(void *user_data)
+{
+ /* Take necessary actions when application becomes invisible. */
+}
+
+/**
+ * @brief This callback function is called each time
+ * the application becomes visible to the user.
+ */
+static void app_resume(void *user_data)
+{
+ /* Take necessary actions when application becomes visible. */
+}
+
+/**
+ * @brief This callback function is called once after the main loop of the application exits.
+ */
+static void app_terminate(void *user_data)
+{
+ view_destroy();
+}
+
+/**
+ * @brief This function will be called when the language is changed.
+ */
+static void ui_app_lang_changed(app_event_info_h event_info, void *user_data)
+{
+ /* APP_EVENT_LANGUAGE_CHANGED */
+ char *locale = NULL;
+
+ system_settings_get_value_string(SYSTEM_SETTINGS_KEY_LOCALE_LANGUAGE, &locale);
+
+ if (locale != NULL) {
+ elm_language_set(locale);
+ free(locale);
+ }
+
+ return;
+}
+
+/**
+ * @brief Main function of the application.
+ */
+int main(int argc, char *argv[])
+{
+ int ret;
+
+ ui_app_lifecycle_callback_s event_callback = {0, };
+ app_event_handler_h handlers[5] = {NULL, };
+
+ event_callback.create = app_create;
+ event_callback.terminate = app_terminate;
+ event_callback.pause = app_pause;
+ event_callback.resume = app_resume;
+ event_callback.app_control = app_control;
+
+ /*
+ * If you want to handle more events,
+ * please check the application lifecycle guide.
+ */
+ ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED], APP_EVENT_LANGUAGE_CHANGED, ui_app_lang_changed, NULL);
+
+ ret = ui_app_main(argc, argv, &event_callback, NULL);
+ if (ret != APP_ERROR_NONE)
+ dlog_print(DLOG_ERROR, LOG_TAG, "ui_app_main() failed. err = %d", ret);
+
+ return ret;
+}
+
+/**
+ * @brief Internal function which modifies the badge counter value.
+ * @param[out] count The badge counter value.
+ * @return This function returns 'true' if the badge counter was successfully updated,
+ * otherwise 'false' is returned.
+ */
+static bool badge_update_cb(unsigned int *count, bool step)
+{
+ int ret = badge_get_count(PACKAGE, count);
+ if (ret != BADGE_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "badge_get_count() failed. Err = %d", ret);
+ return false;
+ }
+
+ if (step) {
+ (*count)++;
+ } else if (*count > 0) {
+ (*count)--;
+ } else {
+ dlog_print(DLOG_ERROR, LOG_TAG, "Cannot decrease the badge counter.");
+ return false;
+ }
+
+ ret = badge_set_count(PACKAGE, *count);
+ if (ret != BADGE_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "badge_set_count() failed. Err = %d", ret);
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * @brief Internal function which sets the launch arguments for the application
+ * which is to be launched after notification is selected from the Notification Tray.
+ * @param[in] notification Notification handle.
+ * @param[in] argument Extra data.
+ * @param[in] pkgname Name of the package containing the application to be launched.
+ * @param[in] uri_text Uri text.
+ * @param[in] mime_text Mime information.
+ * @param[in] operation Operation to be performed.
+ * @param[in] array_result Array of extra data.
+ * @param[in] array_key The array of keys for extra data array items identification.
+ */
+static void notification_launch_cb(notification_h notification, const char *argument, const char *pkgname,
+ const char *uri_text, const char *mime_text, const char *operation,
+ const char **array_result, const char **array_key)
+{
+ int i = 0;
+ app_control_h service = NULL;
+ int ret = app_control_create(&service);
+ if (ret != APP_CONTROL_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "app_control_create() failed. Err = %d", ret);
+ return;
+ }
+
+ if (uri_text)
+ app_control_set_uri(service, uri_text);
+
+ if (mime_text)
+ app_control_set_mime(service, mime_text);
+
+ if (pkgname)
+ app_control_set_app_id(service, pkgname);
+
+ if (argument)
+ app_control_add_extra_data(service, MESSAGE_POST, argument);
+
+ if (operation)
+ app_control_set_operation(service, operation);
+
+ if (array_result && array_key)
+ for (i = 0; array_key[i] && array_result[i]; i++)
+ app_control_add_extra_data_array(service, array_key[i], &array_result[i], 1);
+
+ notification_set_launch_option(notification, NOTIFICATION_LAUNCH_OPTION_APP_CONTROL, service);
+ app_control_destroy(service);
+}
+
+/**
+ * @brief Internal function which allocates the memory for notification data structure.
+ * @param[out] notify_data The newly allocated notification data structure.
+ * @return This function returns 'true' if the notification data structure was
+ * successfully allocated, otherwise 'false' is returned.
+ */
+static bool _create_notification_data(notification_data **notify_data)
+{
+ *notify_data = (notification_data *)malloc(sizeof(notification_data));
+ if (!*notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "Memory allocation failed.");
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * @brief Internal function which frees all the strings stored in an array.
+ * @param[in] strings The array of strings to be freed.
+ * @param[in] length The length of the array.
+ */
+static void _free_strings_array(char **strings, int length)
+{
+ int i;
+
+ for (i = 0; i < length; i++)
+ free(strings[i]);
+
+ free(strings);
+}
+
+/**
+ * @brief Internal function which supports checking and reporting errors
+ * spawned by app-control API functions.
+ * @param[in] err_code The error code spawned by app-control API function.
+ * @param[in] err_message The message to be logged in case err_code differs from
+ * APP_CONTROL_ERROR_NONE.
+ * @return This function returns 'true' if err_code is equal to APP_CONTROL_ERROR_NONE,
+ * otherwise 'false' is returned.
+ */
+static bool _report_app_control_error(int err_code, const char *err_message)
+{
+ if (err_code != APP_CONTROL_ERROR_NONE)
+ dlog_print(DLOG_ERROR, LOG_TAG, "%s. Err = %d", err_message, err_code);
+
+ return (err_code == APP_CONTROL_ERROR_NONE);
+}
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/* common header */
+#include <stdio.h>
+
+#include "notification_testsample.h"
+#include "notification/notifications.h"
+#include "notification/etc-notifications.h"
+#include "notification/notification-defines.h"
+
+#define NOFIFICATIONS_COUNT 7
+
+enum notification_item {
+ NOTIFICATION_ENTRY_TYPE = 0,
+ NOTIFICATION_BUTTON_TYPE,
+ NOTIFICATION_BUTTON_ENTRY_TYPE,
+ NOTIFICATION_FOR_LOCKSCREEN,
+ NOTIFICATION_FOR_INDICATOR,
+ NOTIFICATION_FOR_TICKER,
+ NOTIFICATION_FOR_APPLIST_ALL,
+ };
+
+
+static notification_h _create_notification(const char *icon_path, const char *title_text, const char *content_text, const char *sound_path);
+static bool _delete_notification(enum notification_item type);
+static bool _delete_notification_items(void);
+
+static void _notify_entry_type_noti_cb(notification_data *notify_data);
+static void _notify_button_type_noti_cb(notification_data *notify_data);
+static void _notify_button_entry_type_cb(notification_data *notify_data);
+static void _notify_for_lockscreen_cb(notification_data *notify_data);
+static void _notify_for_indicator_cb(notification_data *notify_data);
+static void _notify_for_ticker_cb(notification_data *notify_data);
+static void _notify_for_all_applist_cb(notification_data *notify_data);
+
+
+
+static struct noti_info {
+ launch_cb launch_func_cb;
+ badge_cb badge_func_cb;
+ notification_data noti[NOFIFICATIONS_COUNT];
+} s_info = {
+ .launch_func_cb = NULL,
+ .badge_func_cb = NULL,
+ .noti = {{ "Entry type Active notification", NULL, 0, 0, _notify_entry_type_noti_cb, },
+ { "Button type Active notification", NULL, 0, 0, _notify_button_type_noti_cb, },
+ { "Button-Entry type Active notification", NULL, 0, 0, _notify_button_entry_type_cb, },
+ { "Notification for Lockscreen", NULL, 0, 0, _notify_for_lockscreen_cb , },
+ { "Notification for Indicator", NULL, 0, 0, _notify_for_indicator_cb , },
+ { "Notification for Ticker", NULL, 0, 0, _notify_for_ticker_cb , },
+ { "Notification for All (except active notification)", NULL, 0, 0, _notify_for_all_applist_cb , },
+ }
+};
+
+
+void etc_notification_set_callbacks(launch_cb launch_func, badge_cb badge_func)
+{
+ s_info.launch_func_cb = launch_func;
+ s_info.badge_func_cb = badge_func;
+}
+
+
+const notification_data *etc_notification_list_get(int *size)
+{
+ *size = NOFIFICATIONS_COUNT;
+ return s_info.noti;
+}
+
+
+static char *_get_image_path(char* icon_path)
+{
+ int size_of_buffer = 0;
+ char *full_icon_path = NULL;
+
+ if (icon_path) {
+ size_of_buffer = strlen(icon_path) + strlen(get_shared_res_path()) + 1;
+ full_icon_path = calloc(sizeof(char), size_of_buffer);
+
+ if (full_icon_path) {
+ snprintf(full_icon_path, size_of_buffer, "%s%s", get_shared_res_path(), icon_path);
+ }
+ }
+
+ return full_icon_path;
+}
+
+
+app_control_h _create_app_control_by_contents(const char *pkgname, const char *operation, const char *uri_text)
+{
+ app_control_h service = NULL;
+ int app_control_err = APP_CONTROL_ERROR_NONE;
+
+ app_control_err = app_control_create(&service);
+ if (app_control_err != APP_CONTROL_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "app_control_create() failed. Err = %d", app_control_err);
+ return NULL;
+ }
+
+ if (pkgname)
+ app_control_set_app_id(service, pkgname);
+
+ if (operation)
+ app_control_set_operation(service, operation);
+
+ if (uri_text)
+ app_control_set_uri(service, uri_text);
+
+ return service;
+}
+
+
+static void _notify_entry_type_noti_cb(notification_data *notify_data)
+{
+ app_control_h app_control_for_body = NULL, app_control_for_text_input_button = NULL;
+ int noti_err = NOTIFICATION_ERROR_NONE;
+ int app_control_err = APP_CONTROL_ERROR_NONE;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ _delete_notification_items();
+
+ notify_data->notification = _create_notification(ICON1_PATH, title_text, long_length_text, NULL);
+ if (notify_data->notification == NULL) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_create_notification() failed.");
+ return;
+ }
+
+ notification_set_display_applist(notify_data->notification, NOTIFICATION_DISPLAY_APP_ACTIVE);
+
+ notification_set_text_input(notify_data->notification, 160);
+
+ /* make app_control for the body contents */
+ app_control_for_body = _create_app_control_by_contents(MESSAGE_PKGNAME, APP_CONTROL_OPERATION_COMPOSE, sms_uri_text);
+
+ notification_set_launch_option(notify_data->notification, NOTIFICATION_LAUNCH_OPTION_APP_CONTROL, app_control_for_body);
+
+ /* make app_control for the send button */
+ app_control_err = app_control_create(&app_control_for_text_input_button);
+ if (app_control_err != APP_CONTROL_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "app_control_create failed[%d]\n", app_control_err);
+ goto FINISH_OFF;
+ }
+
+ noti_err = notification_set_event_handler(notify_data->notification, NOTIFICATION_EVENT_TYPE_CLICK_ON_TEXT_INPUT_BUTTON, app_control_for_text_input_button);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_set_event_handler failed[%d]", noti_err);
+ }
+
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_TEXT_INPUT_BUTTON, Send, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_TEXT_INPUT_PLACEHOLDER, "Text Messages", NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+
+ noti_err = notification_post(notify_data->notification);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_post failed[%d]", noti_err);
+ }
+
+
+FINISH_OFF:
+
+ if (app_control_for_body)
+ app_control_destroy(app_control_for_body);
+
+ if (app_control_for_text_input_button)
+ app_control_destroy(app_control_for_text_input_button);
+
+}
+
+
+static void _notify_button_type_noti_cb(notification_data *notify_data)
+{
+ int noti_err = NOTIFICATION_ERROR_NONE;
+
+ app_control_h app_control_for_button1 = NULL, app_control_for_button2 = NULL, app_control_for_button3 = NULL;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ _delete_notification_items();
+
+ /* create notification for active noti */
+ notify_data->notification = _create_notification(ICON2_PATH, title_text, long_length_text, NULL);
+ if (notify_data->notification == NULL) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_create_notification() failed.");
+ return;
+ }
+
+ notification_set_display_applist(notify_data->notification, NOTIFICATION_DISPLAY_APP_ACTIVE);
+
+
+ /* make app_control handle for button1 */
+ app_control_for_button1 = _create_app_control_by_contents(SETTING_PKGNAME, NULL, NULL);
+
+ noti_err = notification_set_event_handler(notify_data->notification, NOTIFICATION_EVENT_TYPE_CLICK_ON_BUTTON_1, app_control_for_button1);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_set_event_handler failed[%d]", noti_err);
+ goto FINISH_OFF;
+ }
+
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_BUTTON_1, Setting, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+
+ /* make app_control handle for button2 */
+ app_control_for_button2 = _create_app_control_by_contents(MESSAGE_PKGNAME, NULL, NULL);
+
+ noti_err = notification_set_event_handler(notify_data->notification, NOTIFICATION_EVENT_TYPE_CLICK_ON_BUTTON_2, app_control_for_button2);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_set_event_handler failed[%d]", noti_err);
+ goto FINISH_OFF;
+ }
+
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_BUTTON_2, Message, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+
+ /* make app_control handle for button3 */
+ app_control_for_button3 = _create_app_control_by_contents(GALLERY_PKGNAME, NULL, NULL);
+
+ noti_err = notification_set_event_handler(notify_data->notification, NOTIFICATION_EVENT_TYPE_CLICK_ON_BUTTON_3, app_control_for_button3);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_set_event_handler failed[%d]", noti_err);
+ goto FINISH_OFF;
+ }
+
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_BUTTON_3, Gallery, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+ /* post notification */
+ noti_err = notification_post(notify_data->notification);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_post failed[%d]", noti_err);
+ }
+
+
+FINISH_OFF:
+ if (app_control_for_button1)
+ app_control_destroy(app_control_for_button1);
+
+ if (app_control_for_button2)
+ app_control_destroy(app_control_for_button2);
+
+ if (app_control_for_button3)
+ app_control_destroy(app_control_for_button3);
+
+}
+
+
+static void _notify_button_entry_type_cb(notification_data *notify_data)
+{
+ app_control_h app_control_for_body = NULL, app_control_for_message = NULL, app_control_for_reply_button = NULL, app_control_for_setting_button = NULL;
+
+ int noti_err = NOTIFICATION_ERROR_NONE;
+ int size_of_buffer = 0;
+ char *full_icon_path = NULL;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ _delete_notification_items();
+
+ /* create notification for active noti */
+ notify_data->notification = _create_notification(ICON1_PATH, title_text, alert_text, NULL);
+ if (notify_data->notification == NULL) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_create_notification() failed.");
+ return;
+ }
+
+ notification_set_display_applist(notify_data->notification, NOTIFICATION_DISPLAY_APP_ACTIVE);
+
+
+ /* make app_control handle for the body contents */
+ app_control_for_body = _create_app_control_by_contents(MESSAGE_PKGNAME, APP_CONTROL_OPERATION_COMPOSE, sms_uri_text);
+
+ noti_err = notification_set_launch_option(notify_data->notification, NOTIFICATION_LAUNCH_OPTION_APP_CONTROL, app_control_for_body);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_set_launch_option failed[%d]", noti_err);
+ goto FINISH_OFF;
+ }
+
+
+ /* make app_control handle for button1 */
+ app_control_for_message = _create_app_control_by_contents(MESSAGE_PKGNAME, NULL, NULL);
+
+ noti_err = notification_set_event_handler(notify_data->notification, NOTIFICATION_EVENT_TYPE_CLICK_ON_BUTTON_1, app_control_for_message);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_set_event_handler failed[%d]", noti_err);
+ goto FINISH_OFF;
+ }
+
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_BUTTON_1, Message, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+
+ /* make app_control handle for button2 */
+ app_control_for_reply_button = _create_app_control_by_contents(NULL, NULL, NULL);
+
+ noti_err = notification_set_event_handler(notify_data->notification, NOTIFICATION_EVENT_TYPE_CLICK_ON_BUTTON_2, app_control_for_reply_button);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_set_event_handler failed[%d]", noti_err);
+ goto FINISH_OFF;
+ }
+
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_BUTTON_2, Reply, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+
+ /* make_app_control handle for button3 */
+ app_control_for_setting_button = _create_app_control_by_contents(SETTING_PKGNAME, NULL, NULL);
+
+ noti_err = notification_set_event_handler(notify_data->notification, NOTIFICATION_EVENT_TYPE_CLICK_ON_BUTTON_3, app_control_for_setting_button);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_set_event_handler failed[%d]", noti_err);
+ goto FINISH_OFF;
+ }
+
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_BUTTON_3, Setting, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+
+ /* set text input layout */
+ notification_set_text_input(notify_data->notification, 100);
+
+ noti_err = notification_set_event_handler(notify_data->notification, NOTIFICATION_EVENT_TYPE_CLICK_ON_TEXT_INPUT_BUTTON, app_control_for_reply_button);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_set_event_handler failed[%d]", noti_err);
+
+ }
+
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_TEXT_INPUT_BUTTON, Send, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_TEXT_INPUT_PLACEHOLDER, "Text Messages", NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+ size_of_buffer = strlen(ICON3_PATH) + strlen(get_shared_res_path()) + 1;
+ full_icon_path = calloc(sizeof(char), size_of_buffer);
+ if (full_icon_path) {
+ snprintf(full_icon_path, size_of_buffer, "%s%s", get_shared_res_path(), ICON3_PATH);
+ notification_set_image(notify_data->notification, NOTIFICATION_IMAGE_TYPE_TEXT_INPUT_BUTTON, full_icon_path);
+ free(full_icon_path);
+ }
+
+
+ /* post notification */
+ noti_err = notification_post(notify_data->notification);
+ /* create notification for active noti */
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_post failed[%d]", noti_err);
+ goto FINISH_OFF;
+ }
+
+
+FINISH_OFF:
+
+ if (app_control_for_body)
+ app_control_destroy(app_control_for_body);
+
+ if (app_control_for_reply_button)
+ app_control_destroy(app_control_for_reply_button);
+
+ if (app_control_for_setting_button)
+ app_control_destroy(app_control_for_setting_button);
+
+}
+
+
+static void _notify_for_lockscreen_cb(notification_data *notify_data)
+{
+
+ int noti_err = NOTIFICATION_ERROR_NONE;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ /* create notification for active noti */
+ notify_data->notification = _create_notification(THUMBNAIL_PATH, title_text, alert_text, NULL);
+ if (notify_data->notification == NULL) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_create_notification() failed.");
+ return;
+ }
+
+ notification_set_display_applist(notify_data->notification, NOTIFICATION_DISPLAY_APP_LOCK);
+
+ /* post notification */
+ noti_err = notification_post(notify_data->notification);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_post failed[%d]", noti_err);
+ }
+}
+
+
+static void _notify_for_indicator_cb(notification_data *notify_data)
+{
+
+ int noti_err = NOTIFICATION_ERROR_NONE;
+ char *full_icon_path = NULL;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ _delete_notification(NOTIFICATION_FOR_INDICATOR);
+
+ /* create notification for active noti */
+ notify_data->notification = _create_notification(NULL, title_text, alert_text, NULL);
+ if (notify_data->notification == NULL) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_create_notification() failed.");
+ return;
+ }
+
+ notification_set_display_applist(notify_data->notification, NOTIFICATION_DISPLAY_APP_INDICATOR);
+ full_icon_path = _get_image_path(ICON1_PATH);
+ notification_set_image(notify_data->notification, NOTIFICATION_IMAGE_TYPE_ICON_FOR_INDICATOR, full_icon_path);
+
+ /* post notification */
+ noti_err = notification_post(notify_data->notification);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_post failed[%d]", noti_err);
+ }
+
+ if (full_icon_path) {
+ free(full_icon_path);
+ }
+}
+
+
+static void _notify_for_ticker_cb(notification_data *notify_data)
+{
+ int noti_err = NOTIFICATION_ERROR_NONE;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ _delete_notification(NOTIFICATION_FOR_TICKER);
+
+ /* create notification for active noti */
+ notify_data->notification = _create_notification(ICON1_PATH, title_text, alert_text, NULL);
+ if (notify_data->notification == NULL) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_create_notification() failed.");
+ return;
+ }
+
+ notification_set_display_applist(notify_data->notification, NOTIFICATION_DISPLAY_APP_TICKER);
+
+ /* post notification */
+ noti_err = notification_post(notify_data->notification);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_post failed[%d]", noti_err);
+ }
+}
+
+
+static void _notify_for_all_applist_cb(notification_data *notify_data)
+{
+ int noti_err = NOTIFICATION_ERROR_NONE;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ _delete_notification(NOTIFICATION_FOR_APPLIST_ALL);
+
+ /* create notification for active noti */
+ notify_data->notification = _create_notification(ICON1_PATH, title_text, alert_text, NULL);
+
+ notification_set_display_applist(notify_data->notification, NOTIFICATION_DISPLAY_APP_ALL);
+
+ /* post notification */
+ noti_err = notification_post(notify_data->notification);
+ if (noti_err != NOTIFICATION_ERROR_NONE) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_post failed[%d]", noti_err);
+ }
+}
+
+
+static notification_h _create_notification(const char *icon_path, const char *title_text, const char *content_text, const char *sound_path)
+{
+ int size_of_buffer = 0;
+ char *full_icon_path = NULL;
+ char *full_sound_path = NULL;
+
+ notification_h notify = notification_create(NOTIFICATION_TYPE_NOTI);
+ if (!notify) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_create(NOTIFICATION_TYPE_NOTI) failed.");
+ return NULL;
+ }
+
+ if (icon_path) {
+ size_of_buffer = strlen(icon_path) + strlen(get_shared_res_path()) + 1;
+ full_icon_path = calloc(sizeof(char), size_of_buffer);
+ if (full_icon_path) {
+ snprintf(full_icon_path, size_of_buffer, "%s%s", get_shared_res_path(), icon_path);
+ notification_set_image(notify, NOTIFICATION_IMAGE_TYPE_ICON, full_icon_path);
+ free(full_icon_path);
+ }
+ }
+
+ if (sound_path) {
+ size_of_buffer = strlen(icon_path) + strlen(get_shared_res_path()) + 1;
+ full_sound_path = calloc(sizeof(char), size_of_buffer);
+ if (full_sound_path) {
+ snprintf(full_sound_path, size_of_buffer, "%s%s", get_shared_res_path(), sound_path);
+ notification_set_sound(notify, NOTIFICATION_SOUND_TYPE_USER_DATA, full_sound_path);
+ free(full_sound_path);
+ }
+ }
+
+ notification_set_text(notify, NOTIFICATION_TEXT_TYPE_TITLE, title_text, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+ notification_set_text(notify, NOTIFICATION_TEXT_TYPE_CONTENT, content_text, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+ return notify;
+}
+
+
+static bool _delete_notification(enum notification_item type)
+{
+ int err = NOTIFICATION_ERROR_NONE;
+ notification_data *data = NULL;
+
+ if ((int)type < NOFIFICATIONS_COUNT)
+ data = &s_info.noti[type];
+
+ if (data && data->notification) {
+ err = notification_delete(data->notification);
+ data->notification = NULL;
+ }
+
+ return (err == NOTIFICATION_ERROR_NONE);
+}
+
+
+static bool _delete_notification_items(void)
+{
+ bool is_success;
+
+ is_success = _delete_notification(NOTIFICATION_ENTRY_TYPE);
+ is_success = _delete_notification(NOTIFICATION_BUTTON_TYPE) && is_success;
+ is_success = _delete_notification(NOTIFICATION_BUTTON_ENTRY_TYPE) && is_success;
+
+ return is_success;
+}
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <notification.h>
+#include <stdio.h>
+#include "notification_testsample.h"
+#include "notification/notifications.h"
+#include "notification/notification-defines.h"
+
+#define NOFIFICATIONS_COUNT 8
+
+enum notification_item {NOTIFICATION = 0, NOTIFICATION_NORMAL = 1, NOTIFICATION_BY_APP_CONTROL = 2, NOTIFICATION_BY_APP_ID = 4};
+
+static void _notify_cb(notification_data *notify_data);
+static void _notify_normal_cb(notification_data *notify_data);
+static void _notify_by_app_control_cb(notification_data *notify_data);
+static void _remove_notification_cb(notification_data *notify_data);
+static void _notify_by_app_id_cb(notification_data *notify_data);
+static void _remove_notification_by_app_id_cb(notification_data *notify_data);
+static void _set_badge_number_by_app_id_cb(notification_data *notify_data);
+static void _remove_badge_number_by_app_id_cb(notification_data *notify_data);
+static notification_h _create_notification(const char *icon_path, const char *title_text, const char *content_text, const char *sound_path);
+static bool _delete_notification(enum notification_item type);
+static bool _delete_notification_items(void);
+static bool _delete_notification_by_app_id(void);
+
+static struct noti_info {
+ launch_cb launch_func_cb;
+ badge_cb badge_func_cb;
+ notification_data noti[NOFIFICATIONS_COUNT];
+} s_info = {
+ .launch_func_cb = NULL,
+ .badge_func_cb = NULL,
+ .noti = {{ "Notify", NULL, 0, 0, _notify_cb, },
+ { "Notify(normal)", NULL, 0, 0, _notify_normal_cb, },
+ { "NotifyByAppControl", NULL, 0, 0, _notify_by_app_control_cb, },
+ { "RemoveNotification", NULL, 0, 0, _remove_notification_cb, },
+ { "NotifyByAppId", NULL, 0, 0, _notify_by_app_id_cb, },
+ { "RemoveNotificationByAppId", NULL, 0, 0, _remove_notification_by_app_id_cb, },
+ { "SetBadgeNumberByAppId", NULL, 0, 0, _set_badge_number_by_app_id_cb, },
+ { "RemoveBadgeNumberByAppId", NULL, 0, 0, _remove_badge_number_by_app_id_cb, },},
+};
+
+/**
+ * @brief Assigns the callback functions.
+ * @param[in] launch_func The callback function to be invoked on notification post.
+ * @param[in] badge_func The callback function to be invoked on badge counter modification request.
+ */
+void notification_set_callbacks(launch_cb launch_func, badge_cb badge_func)
+{
+ s_info.launch_func_cb = launch_func;
+ s_info.badge_func_cb = badge_func;
+}
+
+/**
+ * @brief Obtains the list of all supported notifications.
+ * @param[out] size The number is supported notifications.
+ * @return This function returns an array of all the supported notifications.
+ */
+notification_data *notification_list_get(int *size)
+{
+ *size = NOFIFICATIONS_COUNT;
+ return s_info.noti;
+}
+
+/**
+ * @brief Deletes all the posted notifications.
+ */
+void delete_all_notifications(void)
+{
+ _delete_notification(NOTIFICATION);
+ _delete_notification(NOTIFICATION_NORMAL);
+ _delete_notification(NOTIFICATION_BY_APP_CONTROL);
+ _delete_notification(NOTIFICATION_BY_APP_ID);
+}
+
+/**
+ * @brief Internal callback function which posts a common notification.
+ * This callback function is invoked when the user selects "Notify" item
+ * from the list in "Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _notify_cb(notification_data *notify_data)
+{
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ _delete_notification_items();
+
+ notify_data->notification = _create_notification(MAIN_MENU_PATH, title_text, alert_text, NULL);
+ if (notify_data->notification) {
+ if (s_info.launch_func_cb)
+ s_info.launch_func_cb(notify_data->notification, app_message_text, PACKAGE, NULL, NULL, NULL, NULL, NULL);
+ notification_post(notify_data->notification);
+ }
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br>%s<br><br>%s<br>%s<br>", result_message,
+ (notify_data->notification) ? result_message_success_text : result_message_failure_text,
+ notify_message_text, alert_text, launch_argument_text,
+ app_message_text);
+}
+
+/**
+ * @brief Internal callback function which posts a normal notification.
+ * This callback function is invoked when the user selects "Notify(normal)" item
+ * from the list in "Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _notify_normal_cb(notification_data *notify_data)
+{
+ int size_of_buffer = 0;
+ char *full_thumbnail_path = NULL;
+ unsigned int count = 0;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_normal_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ _delete_notification_items();
+
+ notify_data->notification = _create_notification(ICON2_PATH, title_text, alert_text, SOUND_PATH);
+ if (notify_data->notification) {
+ if (s_info.launch_func_cb)
+ s_info.launch_func_cb(notify_data->notification, app_message_text, PACKAGE, NULL, NULL, NULL, NULL, NULL);
+
+ size_of_buffer = strlen(THUMBNAIL_PATH) + strlen(get_shared_res_path()) + 1;
+ full_thumbnail_path = calloc(sizeof(char), size_of_buffer);
+ if (full_thumbnail_path) {
+ snprintf(full_thumbnail_path, size_of_buffer, "%s%s", get_shared_res_path(), THUMBNAIL_PATH);
+ notification_set_image(notify_data->notification, NOTIFICATION_IMAGE_TYPE_BACKGROUND, full_thumbnail_path);
+ free(full_thumbnail_path);
+ }
+
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_INFO_2, second_length, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+ notification_set_text(notify_data->notification, NOTIFICATION_TEXT_TYPE_INFO_SUB_2, line_text, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+ notification_post(notify_data->notification);
+ if (s_info.badge_func_cb)
+ s_info.badge_func_cb(&count, true);
+ }
+}
+
+/**
+ * @brief Internal callback function which posts a app-control notification.
+ * This callback function is invoked when the user selects "NotifyByAppControl" item
+ * from the list in "Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _notify_by_app_control_cb(notification_data *notify_data)
+{
+ const char *array_result[] = { result_1_text, result_2_text, NULL };
+ const char *array_key[] = { SERVICE_DATA_TEXT, SERVICE_DATA_TO, NULL };
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_by_app_control_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ _delete_notification_items();
+
+ notify_data->notification = _create_notification(ICON2_PATH, notification_app, app_control_to_me, NULL);
+ if (notify_data->notification) {
+ if (s_info.launch_func_cb)
+ s_info.launch_func_cb(notify_data->notification, app_message_text, PACKAGE, uri_text, mime_text, operation_id_text, array_result, array_key);
+ notification_post(notify_data->notification);
+ }
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br>%s<br><br>%s<br>%s<br><br>%s<br>%s<br>",
+ result_message, (notify_data->notification) ? result_message_success_text : result_message_failure_text,
+ notify_message_text, app_control_to_me, operation_id_is_text,
+ operation_id_text, uri_is_text, uri_text);
+}
+
+/**
+ * @brief Internal callback function which removes the notification.
+ * This callback function is invoked when the user selects "RemoveNotification" item
+ * from the list in "Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _remove_notification_cb(notification_data *notify_data)
+{
+ bool is_success;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "remove_notification_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ is_success = _delete_notification_items();
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br>", result_message,
+ (is_success) ? result_message_success_text : result_message_failure_text, remove_text);
+}
+
+/**
+ * @brief Internal callback function which posts the notification by application ID.
+ * This callback function is invoked when the user selects "NotifyByAppId" item
+ * from the list in "Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _notify_by_app_id_cb(notification_data *notify_data)
+{
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notify_by_app_id_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ _delete_notification_by_app_id();
+
+ notify_data->notification = _create_notification(ICON2_PATH, title_text, notify_with_request, NULL);
+ if (notify_data->notification) {
+ if (s_info.launch_func_cb)
+ s_info.launch_func_cb(notify_data->notification, app_message_text, SETTING_PKGNAME, NULL, NULL, NULL, NULL, NULL);
+ notification_post(notify_data->notification);
+ }
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br>%s<br><br>%s<br>%s<br>", result_message,
+ (notify_data->notification) ? result_message_success_text : result_message_failure_text,
+ app_id_is_text, SETTING_PKGNAME, icon_path_is_text, ICON2_PATH);
+}
+
+/**
+ * @brief Internal callback function which removes the notification posted by application ID.
+ * This callback function is invoked when the user selects "RemoveNotificationByAppId" item
+ * from the list in "Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _remove_notification_by_app_id_cb(notification_data *notify_data)
+{
+ bool is_success;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "remove_notification_by_app_id_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ is_success = _delete_notification_by_app_id();
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br><br>%s<br>%s<br>", result_message,
+ (is_success) ? result_message_success_text : result_message_failure_text,
+ remove_text, target_app_id_text, SETTING_PKGNAME);
+}
+
+/**
+ * @brief Internal callback function which sets the badge counter by application ID.
+ * This callback function is invoked when the user selects "SetBadgeNumberByAppId" item
+ * from the list in "Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _set_badge_number_by_app_id_cb(notification_data *notify_data)
+{
+ unsigned int count = 0;
+ bool is_success = false;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "set_badge_number_by_app_id_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ if (s_info.badge_func_cb)
+ is_success = s_info.badge_func_cb(&count, true);
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br>%d<br><br>%s<br>%s<br>", result_message,
+ (is_success) ? result_message_success_text : result_message_failure_text,
+ badge_is_text, count, app_id_is_text, PACKAGE);
+}
+
+/**
+ * @brief Internal callback function which removes the badge by application ID.
+ * This callback function is invoked when the user selects "RemoveBadgeNumberByAppId" item
+ * from the list in "Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _remove_badge_number_by_app_id_cb(notification_data *notify_data)
+{
+ unsigned int count = 0;
+ bool is_success = false;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "remove_badge_number_by_app_id_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ if (s_info.badge_func_cb)
+ is_success = s_info.badge_func_cb(&count, false);
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br> <br>%s<br>%d<br> <br>%s<br>%s<br>", result_message,
+ (is_success) ? result_message_success_text : result_message_failure_text, badge_is_text, count, app_id_is_text, PACKAGE);
+}
+
+/**
+ * @brief Internal function which creates the notification.
+ * @param[in] icon_path The path to the icon file to be added to the notification.
+ * @param[in] title_text The text to be set as a notification's title.
+ * @param[in] content_text The text to be set as a notification's content.
+ * @param[in] sound_path The path to the sound file to be played when notification arrives.
+ * @return The notification handle is returned or NULL on error.
+ */
+static notification_h _create_notification(const char *icon_path, const char *title_text, const char *content_text, const char *sound_path)
+{
+ int size_of_buffer = 0;
+ char *full_icon_path = NULL;
+ char *full_sound_path = NULL;
+
+ notification_h notify = notification_create(NOTIFICATION_TYPE_NOTI);
+ if (!notify) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_create(NOTIFICATION_TYPE_NOTI) failed.");
+ return NULL;
+ }
+
+ if (icon_path) {
+ size_of_buffer = strlen(icon_path) + strlen(get_shared_res_path()) + 1;
+ full_icon_path = calloc(sizeof(char), size_of_buffer);
+ if (full_icon_path) {
+ snprintf(full_icon_path, size_of_buffer, "%s%s", get_shared_res_path(), icon_path);
+ notification_set_image(notify, NOTIFICATION_IMAGE_TYPE_ICON, full_icon_path);
+ free(full_icon_path);
+ }
+ }
+
+ if (sound_path) {
+ size_of_buffer = strlen(icon_path) + strlen(get_shared_res_path()) + 1;
+ full_sound_path = calloc(sizeof(char), size_of_buffer);
+ if (full_sound_path) {
+ snprintf(full_sound_path, size_of_buffer, "%s%s", get_shared_res_path(), sound_path);
+ notification_set_sound(notify, NOTIFICATION_SOUND_TYPE_USER_DATA, full_sound_path);
+ free(full_sound_path);
+ }
+ }
+
+ notification_set_text(notify, NOTIFICATION_TEXT_TYPE_TITLE, title_text, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+ notification_set_text(notify, NOTIFICATION_TEXT_TYPE_CONTENT, content_text, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+ return notify;
+}
+
+/**
+ * @brief Internal function which deletes the notification of specified type.
+ * @param[in] type The type of notification to be deleted.
+ * @return This function returns 'true' on successful notification removal,
+ * otherwise 'false' is returned.
+ */
+static bool _delete_notification(enum notification_item type)
+{
+ int err = NOTIFICATION_ERROR_NONE;
+ notification_data *data = NULL;
+
+ if ((int)type < NOFIFICATIONS_COUNT)
+ data = &s_info.noti[type];
+
+ if (data && data->notification) {
+ err = notification_delete(data->notification);
+ data->notification = NULL;
+ }
+
+ return (err == NOTIFICATION_ERROR_NONE);
+}
+
+/**
+ * @brief Internal function which deletes all the common, normal and app-control
+ * notifications.
+ * @return This function returns 'true' on successful notifications removal,
+ * otherwise 'false' is returned.
+ */
+static bool _delete_notification_items(void)
+{
+ bool is_success;
+
+ is_success = _delete_notification(NOTIFICATION);
+ is_success = _delete_notification(NOTIFICATION_NORMAL) && is_success;
+ is_success = _delete_notification(NOTIFICATION_BY_APP_CONTROL) && is_success;
+
+ return is_success;
+}
+
+/**
+ * @brief Internal function which deletes the notification posted by application ID.
+ * @return This function returns 'true' on successful notification removal,
+ * otherwise 'false' is returned.
+ */
+static bool _delete_notification_by_app_id(void)
+{
+ return _delete_notification(NOTIFICATION_BY_APP_ID);
+}
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <notification.h>
+#include <badge.h>
+#include <math.h>
+#include <stdio.h>
+#include "notification_testsample.h"
+#include "notification/ongoing-notifications.h"
+#include "notification/notification-defines.h"
+
+#define NOFIFICATIONS_COUNT 8
+
+enum ongoing_notification {ONGOING_NOTIFICATION_PERCENT = 0, ONGOING_NOTIFICATION_BYTE = 1, ONGOING_NOTIFICATION_TEXT = 2,
+ ONGOING_NOTIFICATION_BY_APP_CONTROL = 4, ONGOING_NOTIFICATION_BY_APP_ID = 6};
+
+static void _ongoing_notification_cb(notification_data *notify_data);
+static void _ongoing_notification_byte_cb(notification_data *notify_data);
+static void _ongoing_notification_text_cb(notification_data *notify_data);
+static void _remove_ongoing_notification_cb(notification_data *notify_data);
+static void _ongoing_notification_by_app_control_cb(notification_data *notify_data);
+static void _remove_notification_by_app_control_cb(notification_data *notify_data);
+static void _ongoing_notification_by_app_id_cb(notification_data *notify_data);
+static void _remove_ongoing_notification_by_app_id_cb(notification_data *notify_data);
+static notification_h _create_ongoing_notification(const char *image_path, const char *title_text);
+static bool _delete_ongoing_notification(enum ongoing_notification type);
+static void _notification_content_text_set(notification_h notification, const char *content_text, int press_count);
+
+static struct noti_info {
+ launch_cb launch_func_cb;
+ badge_cb badge_func_cb;
+ notification_data noti[NOFIFICATIONS_COUNT];
+} s_info = {
+ .launch_func_cb = NULL,
+ .badge_func_cb = NULL,
+ .noti = {{ "OngoingNotification(%)", NULL, 0, 0, _ongoing_notification_cb, },
+ { "OngoingNotification(byte)", NULL, 0, 0, _ongoing_notification_byte_cb, },
+ { "OngoingNotification(text)", NULL, 0, 0, _ongoing_notification_text_cb, },
+ { "RemoveOngoingNotification", NULL, 0, 0, _remove_ongoing_notification_cb, },
+ { "OngoingNotificationByAppControl", NULL, 0, 0, _ongoing_notification_by_app_control_cb, },
+ { "RemoveNotificationByAppControl", NULL, 0, 0, _remove_notification_by_app_control_cb, },
+ { "OngoingNotificationByAppId", NULL, 0, 0, _ongoing_notification_by_app_id_cb, },
+ { "RemoveNotificationByAppId", NULL, 0, 0, _remove_ongoing_notification_by_app_id_cb, },},
+};
+
+/**
+ * @brief Assigns the callback functions.
+ * @param[in] launch_func The callback function to be invoked on ongoing notification post.
+ * @param[in] badge_func The callback function to be invoked on badge counter modification request.
+ */
+void ongoing_notification_set_callbacks(launch_cb launch_func, badge_cb badge_func)
+{
+ s_info.launch_func_cb = launch_func;
+ s_info.badge_func_cb = badge_func;
+}
+
+/**
+ * @brief Obtains the list of all supported ongoing notifications.
+ * @param[out] size The number is supported ongoing notifications.
+ * @return This function returns an array of all the supported ongoing notifications.
+ */
+const notification_data *ongoing_notification_list_get(int *size)
+{
+ *size = NOFIFICATIONS_COUNT;
+ return s_info.noti;
+}
+
+/**
+ * @brief Deletes all the posted ongoing notifications.
+ */
+void delete_all_ongoing_notifications(void)
+{
+ _delete_ongoing_notification(ONGOING_NOTIFICATION_PERCENT);
+ _delete_ongoing_notification(ONGOING_NOTIFICATION_BYTE);
+ _delete_ongoing_notification(ONGOING_NOTIFICATION_TEXT);
+ _delete_ongoing_notification(ONGOING_NOTIFICATION_BY_APP_CONTROL);
+ _delete_ongoing_notification(ONGOING_NOTIFICATION_BY_APP_ID);
+}
+
+/**
+ * @brief Internal callback function which posts a progress ongoing notification.
+ * This callback function is invoked when the user selects "OngoingNotification(%)" item
+ * from the list in "Ongoing Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _ongoing_notification_cb(notification_data *notify_data)
+{
+ char launch_argument[TEXT_SHORT_LEN] = {'\0'};
+ bool to_post = false;
+ int value;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_ongoing_notification_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ notify_data->press_count++;
+ if (!notify_data->notification) {
+ to_post = true;
+ notify_data->notification = _create_ongoing_notification(ICON2_PATH, notify_data->name);
+ if (!notify_data->notification)
+ return;
+ }
+
+ notify_data->progress_value += percentage_increment;
+ if (notify_data->progress_value > percentage_max)
+ notify_data->progress_value = 0;
+
+ notification_set_progress(notify_data->notification, notify_data->progress_value);
+ _notification_content_text_set(notify_data->notification, percentage_content_text, notify_data->press_count);
+
+ value = round(percentage_multiplier * notify_data->progress_value);
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br> <br>%s<br>%s%d<br> <br>%s<br>%s = %d<br> <br>%s<br>%d<br>", result_message,
+ (notify_data->notification) ? result_message_success_text : result_message_failure_text,
+ notify_message_text, percentage_content_text, notify_data->press_count, launch_argument_text, app_message_text, value,
+ ongoing_activity_progress_text, value);
+
+ snprintf(launch_argument, TEXT_SHORT_LEN, "%s = %d", app_message_text, value);
+
+ if (s_info.launch_func_cb)
+ s_info.launch_func_cb(notify_data->notification, launch_argument, PACKAGE, NULL, NULL, NULL, NULL, NULL);
+
+ if (to_post)
+ notification_post(notify_data->notification);
+ else
+ notification_update(notify_data->notification);
+}
+
+/**
+ * @brief Internal callback function which posts a byte ongoing notification.
+ * This callback function is invoked when the user selects "OngoingNotification(byte)" item
+ * from the list in "Ongoing Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _ongoing_notification_byte_cb(notification_data *notify_data)
+{
+ char launch_argument[TEXT_SHORT_LEN] = {'\0'};
+ bool to_post = false;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_ongoing_notification_byte_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ notify_data->press_count++;
+ if (!notify_data->notification) {
+ to_post = true;
+ notify_data->notification = _create_ongoing_notification(ICON2_PATH, notify_data->name);
+ if (!notify_data->notification)
+ return;
+ }
+
+ if (notify_data->progress_value > byte_max)
+ notify_data->progress_value = 0;
+
+ notification_set_size(notify_data->notification, notify_data->progress_value);
+ _notification_content_text_set(notify_data->notification, byte_content_text, notify_data->press_count);
+
+ snprintf(launch_argument, TEXT_SHORT_LEN, "%s = %d", app_message_text, (int)round(notify_data->progress_value));
+
+ if (s_info.launch_func_cb)
+ s_info.launch_func_cb(notify_data->notification, launch_argument, PACKAGE, NULL, NULL, NULL, NULL, NULL);
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br>%s%d<br> <br>%s<br>%s = %d<br><br>%s<br>%d<br>", result_message,
+ (notify_data->notification) ? result_message_success_text : result_message_failure_text,
+ notify_message_text, percentage_content_text, notify_data->press_count, launch_argument_text, app_message_text, (int)round(notify_data->progress_value),
+ ongoing_activity_progress_text, (int)round(notify_data->progress_value));
+
+ notify_data->progress_value += byte_increment;
+ if (to_post)
+ notification_post(notify_data->notification);
+ else
+ notification_update(notify_data->notification);
+}
+
+/**
+ * @brief Internal callback function which posts a text ongoing notification.
+ * This callback function is invoked when the user selects "OngoingNotification(text)" item
+ * from the list in "Ongoing Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _ongoing_notification_text_cb(notification_data *notify_data)
+{
+ bool to_post = false;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_ongoing_notification_text_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ notify_data->press_count++;
+ if (!notify_data->notification) {
+ to_post = true;
+ notify_data->notification = _create_ongoing_notification(ICON2_PATH, notify_data->name);
+ if (!notify_data->notification)
+ return;
+ }
+
+ notification_set_layout(notify_data->notification, NOTIFICATION_LY_ONGOING_EVENT);
+ _notification_content_text_set(notify_data->notification, text_content_text, notify_data->press_count);
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br>%s%d<br><br>%s<br>%s<br>", result_message,
+ (notify_data->notification) ? result_message_success_text : result_message_failure_text,
+ notify_message_text, text_content_text, notify_data->press_count, launch_argument_text, app_message_text);
+
+ if (s_info.launch_func_cb)
+ s_info.launch_func_cb(notify_data->notification, app_message_text, PACKAGE, NULL, NULL, NULL, NULL, NULL);
+
+ if (to_post)
+ notification_post(notify_data->notification);
+ else
+ notification_update(notify_data->notification);
+}
+
+/**
+ * @brief Internal callback function which removes ongoing progress/byte/text notification.
+ * This callback function is invoked when the user selects "RemoveOngoingNotification" item
+ * from the list in "Ongoing Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _remove_ongoing_notification_cb(notification_data *notify_data)
+{
+ bool is_success;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_remove_ongoing_notification_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ is_success = _delete_ongoing_notification(ONGOING_NOTIFICATION_PERCENT);
+ is_success = _delete_ongoing_notification(ONGOING_NOTIFICATION_BYTE) && is_success;
+ is_success = _delete_ongoing_notification(ONGOING_NOTIFICATION_TEXT) && is_success;
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br>", result_message,
+ (is_success) ? result_message_success_text : result_message_failure_text, remove_ongoing_notification_text);
+}
+
+/**
+ * @brief Internal callback function which posts a ongoing notification by app-control.
+ * This callback function is invoked when the user selects "OngoingNotificationByAppControl" item
+ * from the list in "Ongoing Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _ongoing_notification_by_app_control_cb(notification_data *notify_data)
+{
+ int value;
+ bool to_post = false;
+ unsigned int count = 0;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_ongoing_notification_by_app_control_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ notify_data->press_count++;
+ if (!notify_data->notification) {
+ to_post = true;
+ notify_data->notification = _create_ongoing_notification(ICON1_PATH, notify_data->name);
+ if (!notify_data->notification)
+ return;
+ }
+
+ notify_data->progress_value += percentage_increment;
+ if (notify_data->progress_value > percentage_max)
+ notify_data->progress_value = 0;
+
+ notification_set_progress(notify_data->notification, notify_data->progress_value);
+ _notification_content_text_set(notify_data->notification, percentage_content_text, notify_data->press_count);
+
+ if (s_info.badge_func_cb)
+ s_info.badge_func_cb(&count, true);
+
+ value = round(percentage_multiplier * notify_data->progress_value);
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br> <br>%s<br>%s%d<br> <br>%s<br>%s = %d<br> <br>%s<br>%d<br>", result_message,
+ (notify_data->notification) ? result_message_success_text : result_message_failure_text,
+ notify_message_text, percentage_content_text, notify_data->press_count, launch_argument_text, ongoing_by_app_control_text, value,
+ ongoing_activity_progress_text, value);
+
+ if (s_info.launch_func_cb)
+ s_info.launch_func_cb(notify_data->notification, ongoing_by_app_control_text, PACKAGE, uri_text, mime_text, operation_id_text, NULL, NULL);
+
+ if (to_post)
+ notification_post(notify_data->notification);
+ else
+ notification_update(notify_data->notification);
+}
+
+/**
+ * @brief Internal callback function which removes the ongoing notification posted by app-control.
+ * This callback function is invoked when the user selects "RemoveNotificationByAppControl" item
+ * from the list in "Ongoing Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _remove_notification_by_app_control_cb(notification_data *notify_data)
+{
+ bool result;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_remove_notification_by_app_control_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ result = _delete_ongoing_notification(ONGOING_NOTIFICATION_BY_APP_CONTROL);
+ badge_remove(PACKAGE);
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br>", result_message,
+ (result) ? result_message_success_text : result_message_failure_text, remove_ongoing_notification_by_app_control_text);
+}
+
+/**
+ * @brief Internal callback function which posts ongoing notification by application ID.
+ * This callback function is invoked when the user selects "OngoingNotificationByAppId" item
+ * from the list in "Ongoing Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _ongoing_notification_by_app_id_cb(notification_data *notify_data)
+{
+ bool to_post = false;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_ongoing_notification_by_app_id_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ notify_data->press_count++;
+ if (!notify_data->notification) {
+ to_post = true;
+ notify_data->notification = _create_ongoing_notification(ICON1_PATH, notify_data->name);
+ if (!notify_data->notification)
+ return;
+ }
+
+ if (notify_data->progress_value > byte_max)
+ notify_data->progress_value = 0;
+
+ notification_set_size(notify_data->notification, notify_data->progress_value);
+ _notification_content_text_set(notify_data->notification, byte_content_text,
+ notify_data->press_count);
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br> <br>%s<br>%s%d<br> <br>%s<br>%s = %d<br> <br>%s<br>%d<br>", result_message,
+ (notify_data->notification) ? result_message_success_text : result_message_failure_text,
+ notify_message_text, byte_content_text, notify_data->press_count, launch_argument_text, app_message_text, (int)round(notify_data->progress_value),
+ ongoing_activity_progress_text, (int)round(notify_data->progress_value));
+
+ if (s_info.launch_func_cb)
+ s_info.launch_func_cb(notify_data->notification, app_message_text, SETTING_PKGNAME, NULL, NULL, NULL, NULL, NULL);
+
+ notify_data->progress_value += byte_increment;
+ if (to_post)
+ notification_post(notify_data->notification);
+ else
+ notification_update(notify_data->notification);
+}
+
+/**
+ * @brief Internal callback function which removes ongoing notification posted by application ID.
+ * This callback function is invoked when the user selects "RemoveNotificationByAppId" item
+ * from the list in "Ongoing Notification" tab.
+ * @param[in] notify_data Pointer to the notification data.
+ */
+static void _remove_ongoing_notification_by_app_id_cb(notification_data *notify_data)
+{
+ bool result;
+
+ if (!notify_data) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "_ongoing_notification_by_app_id_cb() failed. Invalid input argument.");
+ return;
+ }
+
+ result = _delete_ongoing_notification(ONGOING_NOTIFICATION_BY_APP_ID);
+
+ snprintf(notify_data->result_text, TEXT_MAX_LEN, "%s%s<br><br>%s<br>", result_message,
+ (result) ? result_message_success_text : result_message_failure_text, remove_ongoing_notification_by_app_id_text);
+}
+
+/**
+ * @brief Internal function which creates an ongoing notification.
+ * @param[in] image_path The path to the image file to be added to the notification.
+ * @param[in] title_text The text to be set as a notification's title.
+ * @return The ongoing notification handle is returned or NULL on error.
+ */
+static notification_h _create_ongoing_notification(const char *image_path, const char *title_text)
+{
+ int size_of_buffer = 0;
+ char *full_icon_path = NULL;
+ notification_h ongoing_notification = notification_create(NOTIFICATION_TYPE_ONGOING);
+ if (!ongoing_notification) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_create(NOTIFICATION_TYPE_ONGOING) failed.");
+ return NULL;
+ }
+
+ if (image_path) {
+ size_of_buffer = strlen(image_path) + strlen(get_shared_res_path()) + 1;
+ full_icon_path = calloc(sizeof(char), size_of_buffer);
+ if (full_icon_path) {
+ snprintf(full_icon_path, size_of_buffer, "%s%s", get_shared_res_path(), image_path);
+ notification_set_image(ongoing_notification, NOTIFICATION_IMAGE_TYPE_ICON, full_icon_path);
+ free(full_icon_path);
+ }
+ }
+
+ notification_set_property(ongoing_notification, NOTIFICATION_PROP_DISABLE_TICKERNOTI);
+ notification_set_text(ongoing_notification, NOTIFICATION_TEXT_TYPE_TITLE, title_text, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+
+ return ongoing_notification;
+}
+
+/**
+ * @brief Internal function which deletes the ongoing notification of specified type.
+ * @param[in] type The type of the ongoing notification to be deleted.
+ * @return This function returns 'true' on successful notification removal,
+ * otherwise 'false' is returned.
+ */
+static bool _delete_ongoing_notification(enum ongoing_notification type)
+{
+ int err = NOTIFICATION_ERROR_NONE;
+ notification_data *data = NULL;
+
+ if ((int)type < NOFIFICATIONS_COUNT)
+ data = &s_info.noti[type];
+
+ if (data && data->notification) {
+ err = notification_delete(data->notification);
+ data->notification = NULL;
+ data->press_count = 0;
+ data->progress_value = 0;
+ }
+
+ return (err == NOTIFICATION_ERROR_NONE);
+}
+
+/**
+ * @brief Internal function which sets the text content of the ongoing notification.
+ * @param[in] notification The notification handle which text content is to be set.
+ * @param[in] content_text The text to be set as a content of the ongoing notification.
+ * @param[in] press_count The counter to be set in notification text content body.
+ */
+static void _notification_content_text_set(notification_h notification, const char *content_text, int press_count)
+{
+ char text[TEXT_SHORT_LEN] = {'\0'};
+ snprintf(text, sizeof(text), "%s%d", content_text, press_count);
+ notification_set_text(notification, NOTIFICATION_TEXT_TYPE_CONTENT, text, NULL, NOTIFICATION_VARIABLE_TYPE_NONE);
+}
--- /dev/null
+/*
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd
+ *
+ * Licensed under the Flora License, Version 1.1 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://floralicense.org/license/
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <efl_extension.h>
+#include <Elementary.h>
+#include "notification_testsample.h"
+#include "notification/notifications.h"
+#include "notification/ongoing-notifications.h"
+#include "notification/notification-common.h"
+#include "notification/etc-notifications.h"
+#include "view.h"
+#include "view_defines.h"
+#include <app.h>
+
+
+typedef enum {NT_NONE, NT_NOTIFICATION, NT_ONGOING_NOTIFICATION, NT_ETC_NOTIFICATION} notification_t;
+
+static struct view_info {
+ Evas_Object *win;
+ Evas_Object *conform;
+ Evas_Object *navi;
+} s_info = {
+ .win = NULL,
+ .conform = NULL,
+ .navi = NULL,
+};
+
+static void _delete_win_request_cb(void *data, Evas_Object *obj, void *event_info);
+static void _navi_back_cb(void *data, Evas_Object *obj, void *event_info);
+static void _toolbar_tab_changed_cb(void *data, Evas_Object *obj, void *event_info);
+static void _noti_list_item_selected_cb(void *data, Evas_Object *obj, void *event_info);
+static void _get_app_resource(const char *edj_file_in, char *edj_path_out);
+static bool _create_main_layout(void);
+
+/**
+ * @brief Creates essential objects: window, conformant and layout.
+ */
+Eina_Bool view_create(void *user_data)
+{
+ /* Create the window */
+ s_info.win = view_create_win(PACKAGE);
+ if (s_info.win == NULL) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "failed to create a window.");
+ return EINA_FALSE;
+ }
+
+ /* Create the conformant */
+ s_info.conform = view_create_conformant(s_info.win);
+ if (s_info.conform == NULL) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "failed to create a conformant");
+ return EINA_FALSE;
+ }
+
+ if (!view_create_background(s_info.conform, "elm.swallow.bg"))
+ return EINA_FALSE;
+
+ s_info.navi = view_create_naviframe(s_info.conform, "elm.swallow.content");
+ if (!s_info.navi)
+ return EINA_FALSE;
+
+ if (!_create_main_layout())
+ return EINA_FALSE;
+
+ /* Show the window after main view is set up */
+ evas_object_show(s_info.win);
+
+ return EINA_TRUE;
+}
+
+/**
+ * @brief Creates a basic window named package.
+ * @param[in] pkg_name Name of the window
+ */
+Evas_Object *view_create_win(const char *pkg_name)
+{
+ Evas_Object *win = NULL;
+
+
+ /*
+ * Window
+ * Create and initialize elm_win.
+ * elm_win is mandatory to manipulate the window.
+ */
+ //win = elm_win_util_standard_add(pkg_name, pkg_name);
+ win = elm_win_add(NULL, pkg_name, ELM_WIN_BASIC);
+
+ elm_win_conformant_set(win, EINA_TRUE);
+ elm_win_indicator_mode_set(win, ELM_WIN_INDICATOR_SHOW);
+ elm_win_indicator_opacity_set(win, ELM_WIN_INDICATOR_OPAQUE);
+ elm_win_autodel_set(win, EINA_TRUE);
+
+
+
+ if (elm_win_wm_rotation_supported_get(win)) {
+ int rots[4] = { 0, 90, 180, 270 };
+ elm_win_wm_rotation_available_rotations_set(win, rots, 4);
+ }
+
+
+ evas_object_smart_callback_add(win, "delete,request", _delete_win_request_cb, NULL);
+
+ return win;
+}
+
+/**
+ * @brief Creates a conformant without indicator for mobile app.
+ * @param[in] win The object to which you want to set this conformant
+ * Conformant is mandatory for base GUI to have proper size
+ */
+Evas_Object *view_create_conformant(Evas_Object *win)
+{
+ /*
+ * Conformant
+ * Create and initialize elm_conformant.
+ * elm_conformant is mandatory for base GUI to have proper size
+ * when indicator or virtual keypad is visible.
+ */
+ Evas_Object *conform = NULL;
+
+ if (win == NULL) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "window is NULL.");
+ return NULL;
+ }
+
+ conform = elm_conformant_add(win);
+ evas_object_size_hint_weight_set(conform, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ elm_win_resize_object_add(win, conform);
+
+ evas_object_show(conform);
+
+ return conform;
+}
+
+/**
+ * @brief Creates a layout object for parent object based on provided EDJE script.
+ * @param[in] parent The parent object for layout object.
+ * @param[in] edj_file_name The relative path to the layout EDJE script.
+ * @param[in] edj_group The name of the group to be loaded from the EDJE script.
+ * @return The function returns layout object if it was created successfully,
+ * otherwise 'NULL' is returned.
+ */
+Evas_Object *view_create_layout(Evas_Object *parent, const char *edj_file_name, const char *edj_group)
+{
+ char edj_path[PATH_MAX] = {0, };
+ Evas_Object *layout = NULL;
+
+ if (!parent || !edj_file_name || !edj_group) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "Wrong input arguments.");
+ return NULL;
+ }
+
+ _get_app_resource(edj_file_name, edj_path);
+
+ layout = elm_layout_add(parent);
+ if (!layout) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "Function elm_layout_add() failed.");
+ return NULL;
+ }
+
+ elm_layout_theme_set(layout, "layout", "application", "default");
+
+ if (!elm_layout_file_set(layout, edj_path, edj_group)) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "Function elm_layout_file_set() failed.");
+ evas_object_del(layout);
+ return NULL;
+ }
+
+ evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+
+ return layout;
+}
+
+/**
+ * @brief Creates a background for parent object and sets it to designated part.
+ * @param[in] parent The parent object for background.
+ * @param[in] part_name The name of the part within parent object
+ * where the background is to be set,
+ * @return This function returns a background object if is was successfully created,
+ * otherwise NULL is returned.
+ */
+Evas_Object *view_create_background(Evas_Object *parent, const char *part_name)
+{
+ Evas_Object *bg = elm_bg_add(parent);
+ if (!bg) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "elm_bg_add() failed.");
+ return NULL;
+ }
+
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
+ elm_object_part_content_set(parent, part_name, bg);
+
+ return bg;
+}
+
+/**
+ * @brief Creates a naviframe for parent object and sets it to designated part.
+ * @param[in] parent The parent object for naviframe.
+ * @param[in] part_name The name of the part within parent object
+ * where the naviframe is to be set,
+ * @return This function returns a naviframe object if is was successfully created,
+ * otherwise NULL is returned.
+ */
+Evas_Object *view_create_naviframe(Evas_Object *parent, const char *part_name)
+{
+ Evas_Object *navi = elm_naviframe_add(parent);
+ if (!navi) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "elm_naviframe_add() failed.");
+ return NULL;
+ }
+
+ elm_naviframe_prev_btn_auto_pushed_set(navi, EINA_FALSE);
+
+ eext_object_event_callback_add(navi, EEXT_CALLBACK_BACK, _navi_back_cb, NULL);
+ elm_object_part_content_set(s_info.conform, part_name, navi);
+
+ return navi;
+}
+
+/**
+ * @brief Creates a toolbar for parent object.
+ * @param[in] parent The parent object for toolbar.
+ * @return This function returns a toolbar object if is was successfully created,
+ * otherwise NULL is returned.
+ */
+Evas_Object *view_create_toolbar(Evas_Object *parent)
+{
+ Evas_Object *toolbar = elm_toolbar_add(parent);
+ if (!toolbar) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "elm_toolbar_add() failed.");
+ return NULL;
+ }
+
+ elm_toolbar_shrink_mode_set(toolbar, ELM_TOOLBAR_SHRINK_EXPAND);
+ elm_toolbar_transverse_expanded_set(toolbar, EINA_TRUE);
+ elm_toolbar_select_mode_set(toolbar, ELM_OBJECT_SELECT_MODE_ALWAYS);
+ elm_object_style_set(toolbar, "tabbar");
+
+ evas_object_show(toolbar);
+
+ return toolbar;
+}
+
+/**
+ * @brief Creates a list for parent object.
+ * @param[in] parent The parent object for a list.
+ * @return This function returns a list object if is was successfully created,
+ * otherwise NULL is returned.
+ */
+Evas_Object *view_create_list(Evas_Object *parent)
+{
+ Evas_Object *list = elm_list_add(parent);
+ if (!list) {
+ dlog_print(DLOG_ERROR, LOG_TAG, "elm_list_add() failed.");
+ return NULL;
+ }
+
+ elm_list_go(list);
+ evas_object_show(list);
+
+ return list;
+}
+
+/**
+ * @brief Creates a new layout object to display the notification and sets it
+ * to the naviframe object. The previously set layout is prior dismissed.
+ * @param[in] notify_data The notification details to be displayed.
+ * @return This function returns 'true' if the layout was successfully displayed,
+ * otherwise NULL is returned.
+ */
+bool view_display_notification(notification_data *notify_data)
+{
+ static Evas_Object *layout = NULL;
+
+ if (layout)
+ evas_object_del(layout);
+
+ layout = view_create_layout(s_info.navi, EDJ_NOTI, GRP_NOTI);
+ if (!layout)
+ return false;
+
+ elm_naviframe_item_push(s_info.navi, "Notify result", NULL, NULL, layout, NULL);
+
+ elm_object_part_text_set(layout, PART_NOTI_TITLE, notify_data->name);
+ elm_object_part_text_set(layout, PART_NOTI_TEXT_CONTENT, notify_data->result_text);
+
+ return true;
+}
+
+/**
+ * @brief Rises the main window.
+ */
+void view_rise_window(void)
+{
+ elm_win_raise(s_info.win);
+}
+
+/**
+ * @brief Destroys window and frees its resources.
+ */
+void view_destroy(void)
+{
+ if (s_info.win == NULL)
+ return;
+
+ evas_object_del(s_info.win);
+}
+
+/**
+ * @brief Internal callback function invoked when the main window needs to be destroyed.
+ * @param[in] data The user data passed to the evas_object_smart_callback_add() function.
+ * @param[in] obj The object invoking this callback function.
+ * @param[in] event_info The structure containing the information on this event.
+ */
+static void _delete_win_request_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ ui_app_exit();
+}
+
+/**
+ * @brief Internal callback function invoked when the HW Back button is pressed.
+ * @param[in] data The user data passed to the eext_object_event_callback_add() function.
+ * @param[in] obj The object invoking this callback function.
+ * @param[in] event_info The structure containing the information on this event.
+ */
+static void _navi_back_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ if (elm_naviframe_top_item_get(s_info.navi) == elm_naviframe_bottom_item_get(s_info.navi))
+ elm_win_lower(s_info.win);
+ else
+ elm_naviframe_item_pop(s_info.navi);
+}
+
+/**
+ * @brief Internal callback function invoked when the toolbar's tab is changed.
+ * Internally, this function creates a new content for selected toolbar's tab.
+ * @param[in] data The user data passed to the elm_toolbar_item_append() function.
+ * @param[in] obj The object invoking this callback function.
+ * @param[in] event_info The structure containing the information on this event.
+ */
+static void _toolbar_tab_changed_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ static notification_t current_noti_type = NT_NONE;
+ notification_t noti_type = (notification_t)data;
+ const notification_data *notification_list = NULL;
+ Elm_Object_Item *item;
+ Evas_Object *list;
+ int size = 0;
+ int i;
+
+ if (current_noti_type == noti_type)
+ return;
+
+ item = elm_naviframe_top_item_get(s_info.navi);
+ list = elm_object_item_part_content_unset(item, "default");
+ if (list)
+ evas_object_del(list);
+
+ list = view_create_list(s_info.navi);
+ if (!list) {
+ current_noti_type = NT_NONE;
+ return;
+ }
+
+ elm_object_item_part_content_set(item, "default", list);
+
+ switch (noti_type) {
+ case NT_NOTIFICATION:
+ notification_list = notification_list_get(&size);
+ break;
+ case NT_ONGOING_NOTIFICATION:
+ notification_list = ongoing_notification_list_get(&size);
+ break;
+ case NT_ETC_NOTIFICATION:
+ notification_list = etc_notification_list_get(&size);
+ break;
+ default:
+ current_noti_type = NT_NONE;
+ break;
+ }
+
+ for (i = 0; i < size; i++)
+ elm_list_item_append(list, notification_list[i].name, NULL, NULL, _noti_list_item_selected_cb, ¬ification_list[i]);
+
+ current_noti_type = noti_type;
+}
+
+/**
+ * @brief Internal callback function invoked when the notification list's item
+ * is selected by the user.
+ * Internally, this function creates a new layout to display notification details.
+ * @param[in] data The user data passed to the elm_list_item_append() function.
+ * @param[in] obj The object invoking this callback function.
+ * @param[in] event_info The structure containing the information on this event.
+ */
+static void _noti_list_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
+{
+ notification_data *notification_info = (notification_data *)data;
+
+ elm_list_item_selected_set(event_info, EINA_FALSE);
+
+ if (notification_info->callback)
+ notification_info->callback(notification_info);
+
+ dlog_print(DLOG_ERROR, LOG_TAG, "notification_info.name %s", notification_info->name);
+
+ if (strcmp(notification_info->name, "notify for lockscreen") != 0)
+ view_display_notification(notification_info);
+}
+
+/**
+ * @brief Internal function which creates fully qualified path to the provided resource file.
+ * @param[in] edj_file_in The file name.
+ * @param[out] edj_path_out The fully qualified path to the edj_file_in file.
+ */
+static void _get_app_resource(const char *edj_file_in, char *edj_path_out)
+{
+ char *res_path = app_get_resource_path();
+ if (res_path) {
+ snprintf(edj_path_out, PATH_MAX, "%s%s", res_path, edj_file_in);
+ free(res_path);
+ }
+}
+
+/**
+ * @brief Internal function which creates the main layout of the application.
+ * The naviframe is used as a container for toolbar and genlist objects.
+ * @return This function returns 'true' if the main layout was successfully created,
+ * otherwise 'false' is returned.
+ */
+static bool _create_main_layout(void)
+{
+ Elm_Object_Item *item;
+ Evas_Object *toolbar;
+
+ toolbar = view_create_toolbar(s_info.navi);
+ if (!toolbar)
+ return false;
+
+ item = elm_naviframe_item_push(s_info.navi, NULL, NULL, NULL, NULL, "tabbar/notitle");
+ elm_object_item_part_content_set(item, "tabbar", toolbar);
+
+ item = elm_toolbar_item_append(toolbar, NULL, "etc notification", _toolbar_tab_changed_cb, (void *)NT_ETC_NOTIFICATION);
+ elm_toolbar_item_append(toolbar, NULL, "Notification", _toolbar_tab_changed_cb, (void *)NT_NOTIFICATION);
+ elm_toolbar_item_append(toolbar, NULL, "Ongoing notification", _toolbar_tab_changed_cb, (void *)NT_ONGOING_NOTIFICATION);
+
+
+ elm_toolbar_item_selected_set(item, EINA_TRUE);
+
+ return true;
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<manifest xmlns="http://tizen.org/ns/packages" api-version="2.4" package="org.example.notification-testsample" version="1.0.0">
+ <profile name="mobile"/>
+ <ui-application appid="org.example.notification-testsample" exec="notification-testsample" multiple="false" nodisplay="false" taskmanage="true" type="capp">
+ <label>notification-testsample</label>
+ <icon>notification-testsample.png</icon>
+ </ui-application>
+ <privileges>
+ <privilege>http://tizen.org/privilege/notification</privilege>
+ </privileges>
+</manifest>