diff options
author | Jeong Seong-moon <salt.jeong@samsung.com> | 2016-09-12 12:54:49 +0900 |
---|---|---|
committer | Jeong Seong-moon <salt.jeong@samsung.com> | 2016-09-12 13:06:14 +0900 |
commit | e9ca3babb5c61fdbfa3278d8e957019b930835de (patch) | |
tree | 5cc87b0bda69efd278ed9a0c6909063b84398610 | |
parent | 818199e6150075fd28117ea57b212f4abc816075 (diff) | |
download | weather-clock-tizen_2.3.1.tar.gz weather-clock-tizen_2.3.1.tar.bz2 weather-clock-tizen_2.3.1.zip |
change tmp code for weather watch. It is not complete codetizen_2.3.1
Change-Id: I6d7068f2d48bebfe40f2ce025af76ef2f6d7672d
-rwxr-xr-x | .cproject | 432 | ||||
-rwxr-xr-x | .exportMap | 4 | ||||
-rwxr-xr-x | .project | 46 | ||||
-rwxr-xr-x | .tproject | 11 | ||||
-rw-r--r-- | description.xml | 24 | ||||
-rwxr-xr-x | doc/sample_online_list.html | 305 | ||||
-rwxr-xr-x[-rw-r--r--] | edje/images/background_app.png (renamed from project/edje/images/background_app.png) | bin | 32315 -> 32315 bytes | |||
-rwxr-xr-x | edje/images/color_status/air_pollution_icon_blue.png (renamed from project/edje/images/color_status/air_pollution_icon_blue.png) | bin | 3698 -> 3698 bytes | |||
-rwxr-xr-x | edje/images/color_status/air_pollution_icon_green.png (renamed from project/edje/images/color_status/air_pollution_icon_green.png) | bin | 3673 -> 3673 bytes | |||
-rwxr-xr-x | edje/images/color_status/air_pollution_icon_orange.png (renamed from project/edje/images/color_status/air_pollution_icon_orange.png) | bin | 3720 -> 3720 bytes | |||
-rwxr-xr-x | edje/images/color_status/air_pollution_icon_red.png (renamed from project/edje/images/color_status/air_pollution_icon_red.png) | bin | 3624 -> 3624 bytes | |||
-rwxr-xr-x | edje/images/color_status/air_pollution_icon_yellow.png (renamed from project/edje/images/color_status/air_pollution_icon_yellow.png) | bin | 3742 -> 3742 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/color_status/battery_icon_blue.png (renamed from project/edje/images/color_status/battery_icon_blue.png) | bin | 2063 -> 2063 bytes | |||
-rwxr-xr-x | edje/images/color_status/battery_icon_grean.png (renamed from project/edje/images/color_status/battery_icon_grean.png) | bin | 2031 -> 2031 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/color_status/battery_icon_green.png (renamed from project/edje/images/color_status/battery_icon_green.png) | bin | 2031 -> 2031 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/color_status/battery_icon_orange.png (renamed from project/edje/images/color_status/battery_icon_orange.png) | bin | 2033 -> 2033 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/color_status/battery_icon_red.png (renamed from project/edje/images/color_status/battery_icon_red.png) | bin | 2033 -> 2033 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/color_status/battery_icon_yellow.png (renamed from project/edje/images/color_status/battery_icon_yellow.png) | bin | 2036 -> 2036 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/color_status/blue_indicator.png (renamed from project/edje/images/color_status/blue_indicator.png) | bin | 1953 -> 1953 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/color_status/green_indicator.png (renamed from project/edje/images/color_status/green_indicator.png) | bin | 1774 -> 1774 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/color_status/orange_indicator.png (renamed from project/edje/images/color_status/orange_indicator.png) | bin | 1262 -> 1262 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/color_status/red_indicator.png (renamed from project/edje/images/color_status/red_indicator.png) | bin | 834 -> 834 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/color_status/yellow_indicator.png (renamed from project/edje/images/color_status/yellow_indicator.png) | bin | 1551 -> 1551 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/hour_numbers.png (renamed from project/edje/images/hour_numbers.png) | bin | 19630 -> 19630 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/second_path.png (renamed from project/edje/images/second_path.png) | bin | 20292 -> 20292 bytes | |||
-rwxr-xr-x[-rw-r--r--] | edje/images/status_indicator.png (renamed from project/edje/images/status_indicator.png) | bin | 1515 -> 1515 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/01d.png (renamed from project/edje/images/weather_icon/01d.png) | bin | 1290 -> 1290 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/01n.png (renamed from project/edje/images/weather_icon/01n.png) | bin | 518 -> 518 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/02d.png (renamed from project/edje/images/weather_icon/02d.png) | bin | 1494 -> 1494 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/02n.png (renamed from project/edje/images/weather_icon/02n.png) | bin | 1113 -> 1113 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/03d.png (renamed from project/edje/images/weather_icon/03d.png) | bin | 1071 -> 1071 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/03n.png (renamed from project/edje/images/weather_icon/03n.png) | bin | 1071 -> 1071 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/04d.png (renamed from project/edje/images/weather_icon/04d.png) | bin | 1146 -> 1146 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/04n.png (renamed from project/edje/images/weather_icon/04n.png) | bin | 1146 -> 1146 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/09d.png (renamed from project/edje/images/weather_icon/09d.png) | bin | 1033 -> 1033 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/09n.png (renamed from project/edje/images/weather_icon/09n.png) | bin | 1033 -> 1033 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/10d.png (renamed from project/edje/images/weather_icon/10d.png) | bin | 1394 -> 1394 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/10n.png (renamed from project/edje/images/weather_icon/10n.png) | bin | 1324 -> 1324 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/11d.png (renamed from project/edje/images/weather_icon/11d.png) | bin | 1340 -> 1340 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/11n.png (renamed from project/edje/images/weather_icon/11n.png) | bin | 1340 -> 1340 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/13d.png (renamed from project/edje/images/weather_icon/13d.png) | bin | 1242 -> 1242 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/13n.png (renamed from project/edje/images/weather_icon/13n.png) | bin | 1242 -> 1242 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/50d.png (renamed from project/edje/images/weather_icon/50d.png) | bin | 824 -> 824 bytes | |||
-rwxr-xr-x | edje/images/weather_icon/50n.png (renamed from project/edje/images/weather_icon/50n.png) | bin | 624 -> 624 bytes | |||
-rwxr-xr-x | inc/data.h (renamed from project/inc/data.h) | 0 | ||||
-rwxr-xr-x | inc/view.h (renamed from project/inc/view.h) | 0 | ||||
-rwxr-xr-x | inc/weatherclock.h (renamed from project/inc/main.h) | 42 | ||||
-rwxr-xr-x | project/shared/res/icon.png | bin | 43945 -> 0 bytes | |||
-rw-r--r-- | project/tizen-manifest.xml | 8 | ||||
-rwxr-xr-x | res/edje/main.edc (renamed from project/res/edje/main.edc) | 16 | ||||
-rwxr-xr-x[-rw-r--r--] | res/images/hour_indicator.png (renamed from project/res/images/hour_indicator.png) | bin | 260 -> 260 bytes | |||
-rwxr-xr-x[-rw-r--r--] | res/images/minute_indicator.png (renamed from project/res/images/minute_indicator.png) | bin | 293 -> 293 bytes | |||
-rwxr-xr-x[-rw-r--r--] | res/images/pin.png (renamed from project/res/images/pin.png) | bin | 469 -> 469 bytes | |||
-rwxr-xr-x[-rw-r--r--] | res/images/second_indicator.png (renamed from project/res/images/second_indicator.png) | bin | 313 -> 313 bytes | |||
-rw-r--r-- | sample.xml | 62 | ||||
-rwxr-xr-x | screenshot.png | bin | 43945 -> 0 bytes | |||
-rwxr-xr-x | shared/res/weatherclock.png | bin | 0 -> 22834 bytes | |||
-rwxr-xr-x | src/data.c (renamed from project/src/data.c) | 2 | ||||
-rwxr-xr-x | src/main.c (renamed from project/src/main.c) | 561 | ||||
-rwxr-xr-x | src/view.c (renamed from project/src/view.c) | 4 | ||||
-rwxr-xr-x | tizen-manifest.xml | 13 |
61 files changed, 1391 insertions, 139 deletions
diff --git a/.cproject b/.cproject new file mode 100755 index 0000000..975afd1 --- /dev/null +++ b/.cproject @@ -0,0 +1,432 @@ +<?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.2102205966"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.debug.2102205966" 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="weatherclock" 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.2102205966" name="Debug" parent="org.tizen.nativecore.config.sbi.gcc45.app.debug"> + <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.debug.2102205966." name="/" resourcePath=""> + <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.debug.5756351" 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.1946947174" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> + <builder autoBuildTarget="all" buildPath="${workspace_loc:/WeatherClock}/Debug" enableAutoBuild="true" id="org.tizen.nativecore.target.sbi.gnu.builder.591742473" 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.549668381" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> + <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1633098574" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> + <option id="gnu.cpp.compiler.option.optimization.level.134410329" 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.1560091225" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/> + <option id="sbi.gnu.cpp.compiler.option.807470389" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs"> + <listOptionValue builtIn="false" value="wearable-2.3.1-emulator.core_llvm34.i386.core.app"/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.1134826828" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-watch""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <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/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <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/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-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/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <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/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <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/ui""/> + <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/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.1204669476" 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.102226320" 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.900037482" 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.1915366365" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> + </tool> + <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.62716620" 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.1241573246" 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.1566133575" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/> + <option id="sbi.gnu.c.compiler.option.1997920418" superClass="sbi.gnu.c.compiler.option" valueType="userObjs"> + <listOptionValue builtIn="false" value="wearable-2.3.1-emulator.core_llvm34.i386.core.app"/> + </option> + <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.693352649" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-watch""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <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/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <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/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-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/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <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/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <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/ui""/> + <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/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.1678699060" 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.2113068752" 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.913748284" 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.1734962283" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + </tool> + <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.368465862" 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.679266286" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker"> + <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1539352902" 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="-Xlinker -rpath="/home/developer/sdk_tools/lib""/> + <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.223413654" 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.824598527" 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.1574116740" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base"> + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.2007374190" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + </tool> + <tool id="org.tizen.nativecore.tool.fnmapgen.87004037" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.2075028173" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/> + <tool id="org.tizen.nativecore.tool.ast.1141816981" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/> + <tool id="org.tizen.nativecore.tool.ast.cpp.58548379" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/> + <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.463503912" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/> + <tool id="org.tizen.nativecore.tool.sbi.po.compiler.2125525304" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/> + <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.745039844" 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.1858418147"> + <storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="org.tizen.nativecore.config.sbi.gcc45.app.release.1858418147" 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="org.example.weatherclock" 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.1858418147" name="Release" parent="org.tizen.nativecore.config.sbi.gcc45.app.release"> + <folderInfo id="org.tizen.nativecore.config.sbi.gcc45.app.release.1858418147." name="/" resourcePath=""> + <toolChain id="org.tizen.nativecore.toolchain.sbi.gcc45.app.release.1547755861" 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.1463907573" osList="linux,win32" superClass="org.tizen.nativeide.target.sbi.gnu.platform.base"/> + <builder buildPath="${workspace_loc:/WeatherClock}/Release" id="org.tizen.nativecore.target.sbi.gnu.builder.1208674889" 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.1976008772" name="Archiver" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver"/> + <tool command="clang++" id="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler.1158261885" name="C++ Compiler" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.compiler"> + <option id="gnu.cpp.compiler.option.optimization.level.2046921115" 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.default" id="sbi.gnu.cpp.compiler.option.debugging.level.core.966445512" name="Debug level" superClass="sbi.gnu.cpp.compiler.option.debugging.level.core" valueType="enumerated"/> + <option id="sbi.gnu.cpp.compiler.option.454308081" superClass="sbi.gnu.cpp.compiler.option" valueType="userObjs"> + <listOptionValue builtIn="false" value="wearable-2.3.1-emulator.core_llvm34.i386.core.app"/> + </option> + <option id="sbi.gnu.cpp.compiler.option.frameworks_inc.core.96320121" superClass="sbi.gnu.cpp.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-watch""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <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/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <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/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-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/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <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/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <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/ui""/> + <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/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.1670056116" 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.1355973148" 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.1614113982" 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.234750811" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/> + </tool> + <tool command="clang" id="org.tizen.nativecore.tool.sbi.gnu.c.compiler.1450045427" 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.1427444798" 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.1234375030" name="Debug level" superClass="sbi.gnu.c.compiler.option.debugging.level.core" valueType="enumerated"/> + <option id="sbi.gnu.c.compiler.option.610605754" superClass="sbi.gnu.c.compiler.option" valueType="userObjs"> + <listOptionValue builtIn="false" value="wearable-2.3.1-emulator.core_llvm34.i386.core.app"/> + </option> + <option id="sbi.gnu.c.compiler.option.frameworks_inc.core.118279594" superClass="sbi.gnu.c.compiler.option.frameworks_inc.core" valueType="includePath"> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/libxml2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-agent""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appcore-watch""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/appfw""/> + <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/ckm""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/content""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/context-manager""/> + <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/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-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/elementary-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/embryo-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ethumb-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/evas-1""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/ewebkit2-0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/fontconfig""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/freetype2""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/gio-unix-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/glib-2.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/json-glib-1.0/json-glib""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/location""/> + <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/minizip""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/network""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/notification""/> + <listOptionValue builtIn="false" value=""${SBI_SYSROOT}/usr/include/sensor""/> + <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/ui""/> + <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/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.937671496" 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.486571537" 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.1773408250" 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.1636611711" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> + </tool> + <tool id="org.tizen.nativeide.tool.sbi.gnu.c.linker.base.343170040" 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.1976348028" name="C++ Linker" superClass="org.tizen.nativecore.tool.sbi.gnu.cpp.linker"> + <option id="sbi.gnu.cpp.linker.option.frameworks_lflags.core.1163212931" 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="-Xlinker -rpath="/home/developer/sdk_tools/lib""/> + <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.1181764697" 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.1038435110" 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.1548505138" name="Assembler" superClass="org.tizen.nativeapp.tool.sbi.gnu.assembler.base"> + <inputType id="cdt.managedbuild.tool.gnu.assembler.input.349352837" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> + </tool> + <tool id="org.tizen.nativecore.tool.fnmapgen.1809246844" name="C FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen"/> + <tool id="org.tizen.nativecore.tool.fnmapgen.cpp.1475996681" name="C++ FN-Map Generator" superClass="org.tizen.nativecore.tool.fnmapgen.cpp"/> + <tool id="org.tizen.nativecore.tool.ast.2006240564" name="C Static Analyzer" superClass="org.tizen.nativecore.tool.ast"/> + <tool id="org.tizen.nativecore.tool.ast.cpp.635574330" name="C++ Static Analyzer" superClass="org.tizen.nativecore.tool.ast.cpp"/> + <tool id="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib.655965191" name="Archive Generator" superClass="org.tizen.nativecore.tool.sbi.gnu.archiver.mergelib"/> + <tool id="org.tizen.nativecore.tool.sbi.po.compiler.139662995" name="PO Resource Compiler" superClass="org.tizen.nativecore.tool.sbi.po.compiler"/> + <tool id="org.tizen.nativecore.tool.sbi.edc.compiler.1458851703" 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="WeatherClock.org.tizen.nativecore.target.sbi.gcc45.app.563506879" 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.1858418147"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + </scannerConfigBuildInfo> + <scannerConfigBuildInfo instanceId="org.tizen.nativecore.config.sbi.gcc45.app.debug.2102205966"> + <autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> + </scannerConfigBuildInfo> + </storageModule> + <storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> +</cproject> diff --git a/.exportMap b/.exportMap new file mode 100755 index 0000000..43e310e --- /dev/null +++ b/.exportMap @@ -0,0 +1,4 @@ +{ + global: main; + local: *; +}; diff --git a/.project b/.project new file mode 100755 index 0000000..7867e56 --- /dev/null +++ b/.project @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>WeatherClock</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>1463457568354</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>1463457568357</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> diff --git a/.tproject b/.tproject new file mode 100755 index 0000000..d7a6d5b --- /dev/null +++ b/.tproject @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<tproject xmlns="http://www.tizen.org/tproject"> + <platforms> + <platform> + <name>wearable-2.3.1</name> + </platform> + </platforms> + <package> + <blacklist/> + </package> +</tproject> diff --git a/description.xml b/description.xml deleted file mode 100644 index e93db45..0000000 --- a/description.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<?xml-stylesheet type="text/xsl" href="../../../../description.xsl"?> - -<Overview version="0.0.1"> - <SampleName>(Circle) Weather Watch</SampleName> - <SampleVersion>1.0.0</SampleVersion> - <PlatformList> - <Profile> - <ProfileName>Wearable</ProfileName> - <RequiredVersion>2.3.1</RequiredVersion> - </Profile> - </PlatformList> - <ProjectType>org.tizen.nativecore.buildArtefactType.app</ProjectType> - <HasOption>False</HasOption> - <CategoryList> - <Category>Watch</Category> - </CategoryList> - <PreviewList> - <Preview>screenshot.png</Preview> - </PreviewList> - <Description> - The weather clock sample application demonstrates how user can make watch face. This sample show dummy air pollution and weather information only for sample appication. How to get that information and update is up to this sample user. - </Description> -</Overview> diff --git a/doc/sample_online_list.html b/doc/sample_online_list.html new file mode 100755 index 0000000..be0be9a --- /dev/null +++ b/doc/sample_online_list.html @@ -0,0 +1,305 @@ +<!DOCTYPE html>
+<html lang="ko">
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0">
+ <meta name="description" content="Tizen Online Sample List">
+
+ <title>Tizen Online Sample List</title>
+
+ <!-- 합쳐지고 최소화된 최신 CSS -->
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
+
+ <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
+ <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
+ <!--[if lt IE 9]>
+ <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
+ <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
+ <![endif]-->
+ <style>
+ .categoli-list { margin: 15px 0 15px 0 }
+ .badge { margib-left: 10px}
+ </style>
+</head>
+
+<body>
+ <span></span>
+ <!-- Page Content -->
+ <div class="container" style="margin-top:20px">
+ <div class="col-lg-10 col-lg-offset-1">
+ <h3>Step.1 아래 링크로 json 파일을 다운받으세요 <small>Download json File to your PC</small></h3>
+ <a href="https://download.tizen.org/sdk/samples/online/Native/native-sample-info.json" download>https://download.tizen.org/sdk/samples/online/Native/native-sample-info.json</a><br>
+ <a href="https://download.tizen.org/sdk/samples/online/Web/web-sample-info.json" download>https://download.tizen.org/sdk/samples/online/Web/web-sample-info.json</a>
+ <hr>
+ <h3>Step.2 다운받은 파일을 선택해주세요 <small>Select and Load json File to this browser</small></h3>
+ <h4>Native json File</h4><input type="file" id="file-native" accept=".json"><br>
+ <h4>Web json File</h4><input type="file" id="file-web" accept=".json">
+ <hr>
+ <h3>Step.3 아래 버튼을 눌러주세요<small>Start parsing json File</small></h3>
+ <button class="btn btn-primary" type="submit" id="btn-go">Go!</button>
+ <hr>
+ <h3>#Result</h3>
+ <div role="tabpanel">
+ <!-- Nav tabs -->
+ <ul class="nav nav-tabs" role="tablist">
+ <li role="presentation" class="active"><a href="#nativeapp" aria-controls="nativeapp" role="tab" data-toggle="tab">Native Sample App <span id="badge-native" class="badge"></span></a></li>
+ <li role="presentation"><a href="#webapp" aria-controls="webapp" role="tab" data-toggle="tab">Web Sample App <span id="badge-web" class="badge"></span></a></li>
+ </ul>
+
+ <!-- Tab panes -->
+ <div class="tab-content">
+ <div role="tabpanel" class="tab-pane active" id="nativeapp">
+ <h5>#Profile</h5>
+ <ol class="categoli-list" id="list-profile-native">
+ </ol>
+ <hr>
+ <h5>#Category</h5>
+ <ol class="categoli-list" id="list-category-native">
+ </ol>
+ <hr>
+ <a class="btn btn-info" href="#" role="button">Mobile</a>
+ <a class="btn btn-warning" href="#" role="button">Wearable</a>
+ <a class="btn btn-success" href="#" role="button">Mobile and Wearable</a>
+ <hr>
+ <div class="panel-group" id="accordion-native" role="tablist" aria-multiselectable="true">
+ <!-- Sample Content -->
+ <!--
+ <div class="panel panel-default">
+ <div class="panel-heading" role="tab" id="headingOne">
+ <h4 class="panel-title">
+ <a data-toggle="collapse" data-parent="#accordion-native" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
+ Dummy Data
+ </a>
+ </h4>
+ </div>
+ <div id="collapseOne" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingOne">
+ <div class="panel-body">
+ It is Dummy Data, which will be replaced by 'Go' operation after loading local json file.
+ </div>
+ </div>
+ </div>
+ -->
+ </div>
+ </div>
+ <div role="tabpanel" class="tab-pane" id="webapp">
+ <h5>#Profile</h5>
+ <ol class="categoli-list" id="list-profile-web">
+ </ol>
+ <hr>
+ <h5>#Category</h5>
+ <ol class="categoli-list" id="list-category-web">
+ </ol>
+ <hr>
+ <a class="btn btn-info" href="#" role="button">Mobile</a>
+ <a class="btn btn-warning" href="#" role="button">Wearable</a>
+ <a class="btn btn-success" href="#" role="button">Mobile and Wearable</a>
+ <hr>
+ <div class="panel-group" id="accordion-web" role="tablist" aria-multiselectable="true">
+ </div>
+ </div>
+ </div>
+ </div> <!-- end of tabpanel -->
+ </div>
+ </div>
+ <!-- jQuery -->
+ <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
+
+ <!-- 합쳐지고 최소화된 최신 자바스크립트 -->
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
+
+ <script>
+ //20160311
+ var controller;
+ var htmlids = [
+ ['file-native', 'badge-native', 'accordion-native', 'list-category-native', 'list-profile-native'],
+ ['file-web', 'badge-web', 'accordion-web', 'list-category-web', 'list-profile-web']
+ ];
+
+ // Check for the various File API support.
+ if (window.File && window.FileReader && window.FileList) {
+ // Great success! All the File APIs are supported.
+ } else {
+ alert('The File APIs are not fully supported in this browser. HTML5 File API를 지원하는 브라우저에서 다시 시도하세요!');
+ }
+
+ $( document ).ready(function() {
+ controller = new Controller();
+ $('#btn-go').on('click', function() { controller.parse(); });
+ });
+
+ function Controller(){
+ this.json = [];
+ this.json[0] = this.fileEvtBinding(htmlids[0][0]); //native
+ this.json[1] = this.fileEvtBinding(htmlids[1][0]); //web
+ }
+
+ Controller.prototype.fileEvtBinding = function(id){
+ var self = this;
+
+ $('#'+id).change(function () {
+ var fileList = this.files ;
+ var reader = new FileReader();
+ reader.readAsText(fileList [0]);
+ reader.onload = function () {
+ if (id.indexOf('native') != -1)
+ self.json[0] = JSON.parse(reader.result);
+ else
+ self.json[1] = JSON.parse(reader.result);
+ };
+ });
+ };
+
+ Controller.prototype.parse = function(){
+ var str0 = '<div class="panel panel-'; // + profileClass
+ var str00 = '"><div class="panel-heading" role="tab" id="'; // + heading
+ var str1 = '"><h4 class="panel-title"><a data-toggle="collapse" data-parent="#'; // +accordion-native
+ var str2 = '" href="#'; // + content
+ var str3 = '" aria-expanded="true" aria-controls="'; // + content
+ var str4 = '">'; // + title
+ var str5 = '</a></h4></div><div id="'; //content
+ var str6 = '" class="panel-collapse collapse" role="tabpanel" aria-labelledby="'; //heading
+ var str7 = '"><div class="panel-body">'; // + body
+ var str8 = '</div></div></div>';
+
+ var cat0 = '<li>'; // + category
+ var cat1 = ' <span class="badge">'; // + count
+ var cat2 = '</span</li>';
+
+ var i, j, k;
+ var tmpObj;
+ var name, profile = "";
+ var categoryMap = {};
+ var profileMap = {};
+ var tmpSortArry = [];
+ var profileClass = "";
+
+ for (k=0; k<2; k++) { // 0: native, 1: web
+ name = (k == 0)?'Native':'Web';
+ categoryMap = {};
+ profileMap = {};
+ tmpSortArry = [];
+
+ if (typeof(this.json[k]) != 'undefined'
+ && typeof(this.json[k].appTypes[0].name) != 'undefined'
+ && this.json[k].appTypes[0].name === name
+ && this.json[k].appTypes[0].samples.length > 0) {
+
+ tmpObj = this.json[k].appTypes[0].samples;
+ //init
+ $('#' + htmlids[k][2]).html('');
+ $('#' + htmlids[k][3]).html('');
+ $('#' + htmlids[k][4]).html('');
+ $('#' + htmlids[k][1]).text(tmpObj.length);
+
+ for (i=0; i<tmpObj.length; i++) {
+ if (tmpObj[i].platformList.length > 1) {
+ for (j=0; j<tmpObj[i].platformList.length; j++) {
+ profile += tmpObj[i].platformList[j].profileName + " ";
+ }
+ } else {
+ profile = tmpObj[i].platformList[0].profileName;
+ }
+
+ if (typeof(profileMap[profile]) != 'undefined')
+ profileMap[profile]++;
+ else
+ profileMap[profile] = 1;
+
+ if (profile === 'Mobile' || profile === 'mobile') {
+ profileClass = 'info';
+ } else if (profile === 'Wearable' || profile === 'wearable') {
+ profileClass = 'warning';
+ } else {
+ profileClass = 'success';
+ }
+
+ //test_code wearable 만 표시
+// if(profile.indexOf("Wearable") == -1){
+// profile = "";
+// continue;
+// }
+
+ profile = "";
+
+ if (tmpObj[i].categoryList.length > 1)
+ alert("카테고리가 2개인 " + name + " 샘플이 있습니다");
+
+ if (typeof(categoryMap[tmpObj[i].categoryList[0]]) != 'undefined')
+ categoryMap[tmpObj[i].categoryList[0]]++;
+ else
+ categoryMap[tmpObj[i].categoryList[0]] = 1;
+
+ $('#' + htmlids[k][2]).append(str0 + profileClass + str00 + name + '-heading' + i + str1 + htmlids[k][2] + str2 + name + '-content' + i + str3 + name + '-content' + i + str4 + tmpObj[i].sampleName + str5 + name + '-content' + i + str6 + name + '-heading' + i + str7 + JSON.stringify(tmpObj[i], ['identification', 'sampleVersion', 'description', 'categoryList'], '<br>') + str8);
+
+ }
+ }
+
+ for (var key in categoryMap) {
+ if (categoryMap.hasOwnProperty(key)) {
+ tmpSortArry.push([key, categoryMap[key]]);
+ }
+ }
+
+ tmpSortArry.sort(function(a, b) {return b[1] - a[1]});
+
+ for (i=0; i<tmpSortArry.length; i++) {
+ $('#' + htmlids[k][3]).append(cat0 + tmpSortArry[i][0] + cat1 + tmpSortArry[i][1] + cat2);
+ }
+
+ for (var key in profileMap) {
+ if (profileMap.hasOwnProperty(key)) {
+ $('#' + htmlids[k][4]).append(cat0 + key + cat1 + profileMap[key] + cat2);
+ }
+ }
+ }
+ };
+
+ //TEST CODE -------------------------------------------------------------------------
+ var test = {};
+ function checkList(json, list){
+ var i, j, bFind;
+ var tmp = json.appTypes[0].samples;
+
+ for(i = 0 ; i < tmp.length ; i++) {
+ bFind = false;
+ for (j = 0 ; j < list.length ; j++) {
+ if (list[j].toLowerCase() == tmp[i].sampleName.toLowerCase() ) {
+ if(test.hasOwnProperty(tmp[i].sampleName.toLowerCase()))
+ console.log("hit!", tmp[i].sampleName.toLowerCase());
+ else
+ test[tmp[i].sampleName.toLowerCase()] = 1;
+
+ bFind = true;
+ break;
+ }
+ }
+
+ if (!bFind) {
+ console.log(i, tmp[i].sampleName);
+ }
+ console.log('count');
+ }
+ }
+
+ function checkListPublic(json, list){
+ var i, j, bFind;
+ var tmp = json.appTypes[0].samples;
+
+ for(j = 0 ; j < list.length ; j++) {
+ bFind = false;
+ for (i = 0 ; i < tmp.length ; i++) {
+ if (list[j].toLowerCase() == tmp[i].sampleName.toLowerCase() ) {
+ bFind = true;
+ break;
+ }
+ }
+
+ if (!bFind) {
+ console.log(j, list[j]);
+ }
+ }
+ }
+ </script>
+</body>
+</html>
\ No newline at end of file diff --git a/project/edje/images/background_app.png b/edje/images/background_app.png Binary files differindex fd2e91b..fd2e91b 100644..100755 --- a/project/edje/images/background_app.png +++ b/edje/images/background_app.png diff --git a/project/edje/images/color_status/air_pollution_icon_blue.png b/edje/images/color_status/air_pollution_icon_blue.png Binary files differindex c9ac65a..c9ac65a 100755 --- a/project/edje/images/color_status/air_pollution_icon_blue.png +++ b/edje/images/color_status/air_pollution_icon_blue.png diff --git a/project/edje/images/color_status/air_pollution_icon_green.png b/edje/images/color_status/air_pollution_icon_green.png Binary files differindex 7f74567..7f74567 100755 --- a/project/edje/images/color_status/air_pollution_icon_green.png +++ b/edje/images/color_status/air_pollution_icon_green.png diff --git a/project/edje/images/color_status/air_pollution_icon_orange.png b/edje/images/color_status/air_pollution_icon_orange.png Binary files differindex 312203c..312203c 100755 --- a/project/edje/images/color_status/air_pollution_icon_orange.png +++ b/edje/images/color_status/air_pollution_icon_orange.png diff --git a/project/edje/images/color_status/air_pollution_icon_red.png b/edje/images/color_status/air_pollution_icon_red.png Binary files differindex 97381dc..97381dc 100755 --- a/project/edje/images/color_status/air_pollution_icon_red.png +++ b/edje/images/color_status/air_pollution_icon_red.png diff --git a/project/edje/images/color_status/air_pollution_icon_yellow.png b/edje/images/color_status/air_pollution_icon_yellow.png Binary files differindex 4241173..4241173 100755 --- a/project/edje/images/color_status/air_pollution_icon_yellow.png +++ b/edje/images/color_status/air_pollution_icon_yellow.png diff --git a/project/edje/images/color_status/battery_icon_blue.png b/edje/images/color_status/battery_icon_blue.png Binary files differindex 0a0990c..0a0990c 100644..100755 --- a/project/edje/images/color_status/battery_icon_blue.png +++ b/edje/images/color_status/battery_icon_blue.png diff --git a/project/edje/images/color_status/battery_icon_grean.png b/edje/images/color_status/battery_icon_grean.png Binary files differindex 24a674e..24a674e 100755 --- a/project/edje/images/color_status/battery_icon_grean.png +++ b/edje/images/color_status/battery_icon_grean.png diff --git a/project/edje/images/color_status/battery_icon_green.png b/edje/images/color_status/battery_icon_green.png Binary files differindex 24a674e..24a674e 100644..100755 --- a/project/edje/images/color_status/battery_icon_green.png +++ b/edje/images/color_status/battery_icon_green.png diff --git a/project/edje/images/color_status/battery_icon_orange.png b/edje/images/color_status/battery_icon_orange.png Binary files differindex 40b2b80..40b2b80 100644..100755 --- a/project/edje/images/color_status/battery_icon_orange.png +++ b/edje/images/color_status/battery_icon_orange.png diff --git a/project/edje/images/color_status/battery_icon_red.png b/edje/images/color_status/battery_icon_red.png Binary files differindex 96482e5..96482e5 100644..100755 --- a/project/edje/images/color_status/battery_icon_red.png +++ b/edje/images/color_status/battery_icon_red.png diff --git a/project/edje/images/color_status/battery_icon_yellow.png b/edje/images/color_status/battery_icon_yellow.png Binary files differindex 830504d..830504d 100644..100755 --- a/project/edje/images/color_status/battery_icon_yellow.png +++ b/edje/images/color_status/battery_icon_yellow.png diff --git a/project/edje/images/color_status/blue_indicator.png b/edje/images/color_status/blue_indicator.png Binary files differindex 1d4c1db..1d4c1db 100644..100755 --- a/project/edje/images/color_status/blue_indicator.png +++ b/edje/images/color_status/blue_indicator.png diff --git a/project/edje/images/color_status/green_indicator.png b/edje/images/color_status/green_indicator.png Binary files differindex ac166b0..ac166b0 100644..100755 --- a/project/edje/images/color_status/green_indicator.png +++ b/edje/images/color_status/green_indicator.png diff --git a/project/edje/images/color_status/orange_indicator.png b/edje/images/color_status/orange_indicator.png Binary files differindex 5d4dfb2..5d4dfb2 100644..100755 --- a/project/edje/images/color_status/orange_indicator.png +++ b/edje/images/color_status/orange_indicator.png diff --git a/project/edje/images/color_status/red_indicator.png b/edje/images/color_status/red_indicator.png Binary files differindex 6495f6e..6495f6e 100644..100755 --- a/project/edje/images/color_status/red_indicator.png +++ b/edje/images/color_status/red_indicator.png diff --git a/project/edje/images/color_status/yellow_indicator.png b/edje/images/color_status/yellow_indicator.png Binary files differindex f0eeee3..f0eeee3 100644..100755 --- a/project/edje/images/color_status/yellow_indicator.png +++ b/edje/images/color_status/yellow_indicator.png diff --git a/project/edje/images/hour_numbers.png b/edje/images/hour_numbers.png Binary files differindex 9929516..9929516 100644..100755 --- a/project/edje/images/hour_numbers.png +++ b/edje/images/hour_numbers.png diff --git a/project/edje/images/second_path.png b/edje/images/second_path.png Binary files differindex 9f79f31..9f79f31 100644..100755 --- a/project/edje/images/second_path.png +++ b/edje/images/second_path.png diff --git a/project/edje/images/status_indicator.png b/edje/images/status_indicator.png Binary files differindex 44262c4..44262c4 100644..100755 --- a/project/edje/images/status_indicator.png +++ b/edje/images/status_indicator.png diff --git a/project/edje/images/weather_icon/01d.png b/edje/images/weather_icon/01d.png Binary files differindex b00a98a..b00a98a 100755 --- a/project/edje/images/weather_icon/01d.png +++ b/edje/images/weather_icon/01d.png diff --git a/project/edje/images/weather_icon/01n.png b/edje/images/weather_icon/01n.png Binary files differindex 59086ea..59086ea 100755 --- a/project/edje/images/weather_icon/01n.png +++ b/edje/images/weather_icon/01n.png diff --git a/project/edje/images/weather_icon/02d.png b/edje/images/weather_icon/02d.png Binary files differindex 6508f6c..6508f6c 100755 --- a/project/edje/images/weather_icon/02d.png +++ b/edje/images/weather_icon/02d.png diff --git a/project/edje/images/weather_icon/02n.png b/edje/images/weather_icon/02n.png Binary files differindex 475adef..475adef 100755 --- a/project/edje/images/weather_icon/02n.png +++ b/edje/images/weather_icon/02n.png diff --git a/project/edje/images/weather_icon/03d.png b/edje/images/weather_icon/03d.png Binary files differindex 49b477a..49b477a 100755 --- a/project/edje/images/weather_icon/03d.png +++ b/edje/images/weather_icon/03d.png diff --git a/project/edje/images/weather_icon/03n.png b/edje/images/weather_icon/03n.png Binary files differindex 49b477a..49b477a 100755 --- a/project/edje/images/weather_icon/03n.png +++ b/edje/images/weather_icon/03n.png diff --git a/project/edje/images/weather_icon/04d.png b/edje/images/weather_icon/04d.png Binary files differindex 857eccb..857eccb 100755 --- a/project/edje/images/weather_icon/04d.png +++ b/edje/images/weather_icon/04d.png diff --git a/project/edje/images/weather_icon/04n.png b/edje/images/weather_icon/04n.png Binary files differindex 857eccb..857eccb 100755 --- a/project/edje/images/weather_icon/04n.png +++ b/edje/images/weather_icon/04n.png diff --git a/project/edje/images/weather_icon/09d.png b/edje/images/weather_icon/09d.png Binary files differindex cac759e..cac759e 100755 --- a/project/edje/images/weather_icon/09d.png +++ b/edje/images/weather_icon/09d.png diff --git a/project/edje/images/weather_icon/09n.png b/edje/images/weather_icon/09n.png Binary files differindex cac759e..cac759e 100755 --- a/project/edje/images/weather_icon/09n.png +++ b/edje/images/weather_icon/09n.png diff --git a/project/edje/images/weather_icon/10d.png b/edje/images/weather_icon/10d.png Binary files differindex 60dc512..60dc512 100755 --- a/project/edje/images/weather_icon/10d.png +++ b/edje/images/weather_icon/10d.png diff --git a/project/edje/images/weather_icon/10n.png b/edje/images/weather_icon/10n.png Binary files differindex cb8170d..cb8170d 100755 --- a/project/edje/images/weather_icon/10n.png +++ b/edje/images/weather_icon/10n.png diff --git a/project/edje/images/weather_icon/11d.png b/edje/images/weather_icon/11d.png Binary files differindex e6f58ef..e6f58ef 100755 --- a/project/edje/images/weather_icon/11d.png +++ b/edje/images/weather_icon/11d.png diff --git a/project/edje/images/weather_icon/11n.png b/edje/images/weather_icon/11n.png Binary files differindex e6f58ef..e6f58ef 100755 --- a/project/edje/images/weather_icon/11n.png +++ b/edje/images/weather_icon/11n.png diff --git a/project/edje/images/weather_icon/13d.png b/edje/images/weather_icon/13d.png Binary files differindex 176c7e1..176c7e1 100755 --- a/project/edje/images/weather_icon/13d.png +++ b/edje/images/weather_icon/13d.png diff --git a/project/edje/images/weather_icon/13n.png b/edje/images/weather_icon/13n.png Binary files differindex 176c7e1..176c7e1 100755 --- a/project/edje/images/weather_icon/13n.png +++ b/edje/images/weather_icon/13n.png diff --git a/project/edje/images/weather_icon/50d.png b/edje/images/weather_icon/50d.png Binary files differindex e875aba..e875aba 100755 --- a/project/edje/images/weather_icon/50d.png +++ b/edje/images/weather_icon/50d.png diff --git a/project/edje/images/weather_icon/50n.png b/edje/images/weather_icon/50n.png Binary files differindex 5a5434b..5a5434b 100755 --- a/project/edje/images/weather_icon/50n.png +++ b/edje/images/weather_icon/50n.png diff --git a/project/inc/data.h b/inc/data.h index 272b543..272b543 100755 --- a/project/inc/data.h +++ b/inc/data.h diff --git a/project/inc/view.h b/inc/view.h index 72f133e..72f133e 100755 --- a/project/inc/view.h +++ b/inc/view.h diff --git a/project/inc/main.h b/inc/weatherclock.h index 1b9a2a3..d3d1c6c 100755 --- a/project/inc/main.h +++ b/inc/weatherclock.h @@ -18,13 +18,13 @@ #define _WEATHER_CLOCK_H #if !defined(PACKAGE) -#define PACKAGE "$(packageName)" +#define PACKAGE "org.example.weatherclock" #endif #ifdef LOG_TAG #undef LOG_TAG #endif -#define LOG_TAG "$(appName)" +#define LOG_TAG "weatherclock" #define INDICATOR_MODULE_BATTERY 0 #define INDICATOR_MODULE_AIR_POLLUTION 1 @@ -53,6 +53,29 @@ #define DATA_KEY_HANDS_MIN "__HANDS_MIN__" #define DATA_KEY_HANDS_HOUR "__HANDS_HOUR__" +#define LOCATIONS_STATUS_DISABLED 0 +#define LOCATIONS_STATUS_SETTING_OFF 1 +#define LOCATIONS_STATUS_ENABLED 2 + +#define LOCATIONS_COMMAND_INITIALIZE 0 +#define LOCATIONS_COMMAND_STOP 1 +#define LOCATIONS_COMMAND_RESUME 2 +#define LOCATIONS_COMMAND_DESTROY 3 + +#define URL_LENGTH_MAX 500 + +#define CURL_GET_WEAHTER 0 +#define CURL_GET_AP_INSPECT_STATION 1 +#define CURL_GET_AP_VALUE 2 + +#define WEATHER_FORCAST_6HOUR_INDEX 1 + +#define WEAHTER_REST_API_URL "http://api.openweathermap.org/data/2.5/forecast?lat=%.6f&lon=%.6f&appid=c539c7392bf0a7d262ee10cf47a1cba9" +#define AP_STATION_REST_API_URL "http://api.openweathermap.org/data/2.5/forecast?lat=%.6f&lon=%.6f&appid=c539c7392bf0a7d262ee10cf47a1cba9" +#define AP_VALUE_REST_API_URL "http://openapi.airkorea.or.kr/openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty?stationName=%%EC%%A2%%85%%EB%%A1%%9C%%EA%%B5%%AC&dataTerm=month&pageNo=1&numOfRows=10&ServiceKey=FoC79C0INc7%%2BtdXxiCGfD7fUBYc6CmYZNNpDHNpva6FxOhXXqmxWJz8qREcGfHAClvYgBy16ovp8t1%%2FO2Mo8KQ%%3D%%3D&ver=1.2&_returnType=json" + +#define VALID_PERIOD_30MIN 1800000 + #define WEATHER_ICON_STR_CLEAR_SKY_DAY "01d" #define WEATHER_ICON_STR_FEW_CLOUDS_DAY "02d" #define WEATHER_ICON_STR_SCATTERED_CLOUDS_DAY "03d" @@ -94,6 +117,21 @@ typedef enum { WEATHER_STATE_MAX, } weather_state_e; +typedef struct weatherwatch_weather_data { + double updated_time; + weather_state_e state; +}weather_data_s; + +typedef struct weatherwatch_ap_data { + double updated_time; + int aqi; +}air_pollution_data_s; + +typedef struct curl_response_data { + size_t size; + char *response; +}curl_response_data_s; + typedef enum { INDICATOR_INFO_TYPE_ICON = 0, INDICATOR_INFO_TYPE_TEXT = 1, diff --git a/project/shared/res/icon.png b/project/shared/res/icon.png Binary files differdeleted file mode 100755 index 8a38fbc..0000000 --- a/project/shared/res/icon.png +++ /dev/null diff --git a/project/tizen-manifest.xml b/project/tizen-manifest.xml deleted file mode 100644 index bb1e01a..0000000 --- a/project/tizen-manifest.xml +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns="http://tizen.org/ns/packages" package="$(packageName)" api-version="2.3.1" version="1.0.0"> - <profile name="$(packageProfile)" /> - <watch-application appid="$(packageName)" exec="$(appNameLower)" ambient-support="true"> - <label>Weather Clock</label> - <icon>$(appName).png</icon> - </watch-application> -</manifest> diff --git a/project/res/edje/main.edc b/res/edje/main.edc index 2fdbb8c..b4d1c15 100755 --- a/project/res/edje/main.edc +++ b/res/edje/main.edc @@ -74,17 +74,17 @@ images { image: "status_indicator.png" COMP; } - styles { - style { - name: "calendar_textblock_style"; - base: "font=Tizen:style=Regular text_class=tizen align=center font_size="15" color=#FFFFFF"; - tag: "day" "+ font=Tizen:style=Bold font_size="23" color=#DBD303"; - } +styles { + style { + name: "calendar_textblock_style"; + base: "font=Tizen:style=Regular text_class=tizen align=center font_size="15" color=#FFFFFF"; + tag: "day" "+ font=Tizen:style=Bold font_size="23" color=#DBD303"; + } style { name: "weather_textblock_style"; base: "font=Tizen:style=Regular text_class=tizen align=left font_size="12" color=#FFFFFF"; - } - } + } +} collections { group { name: "layout_watchface"; diff --git a/project/res/images/hour_indicator.png b/res/images/hour_indicator.png Binary files differindex 34cc625..34cc625 100644..100755 --- a/project/res/images/hour_indicator.png +++ b/res/images/hour_indicator.png diff --git a/project/res/images/minute_indicator.png b/res/images/minute_indicator.png Binary files differindex 13f310b..13f310b 100644..100755 --- a/project/res/images/minute_indicator.png +++ b/res/images/minute_indicator.png diff --git a/project/res/images/pin.png b/res/images/pin.png Binary files differindex bc4b968..bc4b968 100644..100755 --- a/project/res/images/pin.png +++ b/res/images/pin.png diff --git a/project/res/images/second_indicator.png b/res/images/second_indicator.png Binary files differindex 12d2bbf..12d2bbf 100644..100755 --- a/project/res/images/second_indicator.png +++ b/res/images/second_indicator.png diff --git a/sample.xml b/sample.xml deleted file mode 100644 index bf4b1df..0000000 --- a/sample.xml +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="ISO-8859-1"?> -<template> - <slp-property> - <property-group> - <sample-name>(Circle) Weather Watch</sample-name> - <category>Platform Template</category> - <sdk-version>1.00</sdk-version> - <project-type>org.tizen.nativecore.buildArtefactType.app</project-type> - <sample-description>description.xml</sample-description> - </property-group> - </slp-property> - <process type="org.tizen.nativeappcommon.TizenCopyFolder"> - <simple name="projectName" value="$(projectName)"/> - <simple name="folderPath" value="project"/> - <complex-array name="replaceableFiles"> - <element> - <simple name="sourcePath" value="inc/main.h"/> - <simple name="targetPath" value="inc/$(appName).h"/> - <simple name="replaceable" value="true"/> - </element> - <element> - <simple name="sourcePath" value="inc/view.h"/> - <simple name="targetPath" value="inc/view.h"/> - <simple name="replaceable" value="true"/> - </element> - <element> - <simple name="sourcePath" value="src/main.c"/> - <simple name="targetPath" value="src/main.c"/> - <simple name="replaceable" value="true"/> - </element> - <element> - <simple name="sourcePath" value="src/data.c"/> - <simple name="targetPath" value="src/data.c"/> - <simple name="replaceable" value="true"/> - </element> - <element> - <simple name="sourcePath" value="src/view.c"/> - <simple name="targetPath" value="src/view.c"/> - <simple name="replaceable" value="true"/> - </element> - <element> - <simple name="sourcePath" value="tizen-manifest.xml"/> - <simple name="targetPath" value="tizen-manifest.xml"/> - <simple name="replaceable" value="true"/> - </element> - <element> - <simple name="sourcePath" value="shared/res/icon.png"/> - <simple name="targetPath" value="shared/res/$(appName).png"/> - <simple name="replaceable" value="false"/> - </element> - </complex-array> - </process> - <process type="org.tizen.nativecore.SetDefaultCoreFrameworks"> - <simple name="projectName" value="$(projectName)"/> - <complex-array name="frameworkList"> - <element> - <simple name="framework" value="Native_API"/> - </element> - </complex-array> - </process> -</template> - diff --git a/screenshot.png b/screenshot.png Binary files differdeleted file mode 100755 index 8a38fbc..0000000 --- a/screenshot.png +++ /dev/null diff --git a/shared/res/weatherclock.png b/shared/res/weatherclock.png Binary files differnew file mode 100755 index 0000000..d88f9c3 --- /dev/null +++ b/shared/res/weatherclock.png diff --git a/project/src/data.c b/src/data.c index 262ec68..9089deb 100755 --- a/project/src/data.c +++ b/src/data.c @@ -20,7 +20,7 @@ #include <dlog.h> #include <device/battery.h> -#include "$(appName).h" +#include "weatherclock.h" #include "data.h" #define IMAGE_HANDS_SEC "images/second_indicator.png" diff --git a/project/src/main.c b/src/main.c index 3533065..27e8b0f 100755 --- a/project/src/main.c +++ b/src/main.c @@ -22,21 +22,63 @@ #include <efl_extension.h> #include <dlog.h> #include <device/callback.h> +#include <json-glib/json-glib.h> +#include <curl/curl.h> +#include <net_connection.h> +#include <locations.h> -#include "$(appName).h" +#include "weatherclock.h" #include "view.h" #include "data.h" static struct main_info { + /* watch */ int dummy; int cur_min; int cur_day; int cur_month; + + /* location */ + int location_status; + location_manager_h location_manager; + bool is_location_valid; + double latitude; + double longitude; + + /* weather and air pollution */ + Ecore_Thread *thread_weather; + Ecore_Thread *thread_ap; + CURL *curl_weather; + CURL *curl_ap; + bool thread_weather_running; + bool thread_ap_running; + bool global_cleanup_needed; + bool app_terminating; + Eina_Lock mutex; + weather_data_s weather; + air_pollution_data_s ap; } s_info = { .dummy = 0, .cur_min = 0, .cur_day = 0, .cur_month = 0, + .location_status = LOCATIONS_STATUS_DISABLED, + .location_manager = NULL, + .is_location_valid = false, + .latitude = 0, + .longitude = 0, + .thread_weather = NULL, + .thread_ap = NULL, + .curl_weather = NULL, + .curl_ap = NULL, + .thread_weather_running = false, + .thread_ap_running = false, + .global_cleanup_needed = false, + .app_terminating = false, + .weather.updated_time = 0, + .weather.state = WEATHER_STATE_CLEAR_SKY_DAY, + .ap.updated_time = 0, + .ap.aqi = 0, }; static void _set_time(int hour, int min, int sec); @@ -48,9 +90,29 @@ static void _set_indicator_information(Evas_Object *parent, int value, const cha static void _battery_changed_cb(device_callback_e type, void *value, void *user_data); static void _battery_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); static void _ap_clicked_cb(void *data, Evas_Object *obj, const char *emission, const char *source); -static void _set_air_pollution_value(int aqi); -static void _dummy_operation(void); -static void _update_weather_state(weather_state_e state); +static void _set_air_pollution_state(int aqi); +static void _set_weather_state(weather_state_e state); + +static bool _location_init(void); +static void _location_destroy(void); +static void _location_pause(void); +static void _location_resume(void); +static void _location_state_change_cb(location_service_state_e state, void *user_data); + +int weatherwatch_update_current_position(void); +static long long _get_current_system_monotonic_time(void); +void weatherwatch_weather_and_ap_update(void); +static void _weather_curl_thread(void *data, Ecore_Thread *thread); +static void _weather_curl_thread_end_cb(void *data, Ecore_Thread *thread); +static void _weather_curl_thread_cancel_cb(void *data, Ecore_Thread *thread); +static void _ap_curl_thread(void *data, Ecore_Thread *thread); +static void _ap_curl_thread_end_cb(void *data, Ecore_Thread *thread); +static void _ap_curl_thread_cancel_cb(void *data, Ecore_Thread *thread); +static void _thread_cleanup(void); +static size_t _curl_write_function(void *ptr, size_t size, size_t nmemb, curl_response_data_s *res); +static void _curl_get_data(int type); +void weatherwatch_parse_json(int type, const gchar *str); +static void _update_weather_data_from_json(const char *str); /** * @brief The system language changed event callback function. @@ -184,6 +246,8 @@ static bool app_create(int width, int height, void* user_data) return false; } + _location_init(); + return true; } @@ -273,6 +337,8 @@ static void app_resume(void *user_data) */ static void app_terminate(void *user_data) { + /* Destroy location service */ + _location_destroy(); view_destroy_base_gui(); } @@ -465,9 +531,9 @@ static int _create_indicator_module_layout(int type) evas_object_data_set(indicator_module_layout, DATA_KEY_BATTYER_INFO_TYPE, (void *) INDICATOR_INFO_TYPE_ICON); view_send_signal_to_edje(indicator_module_layout, "hide,battery,txt", "txt.battery"); - /* - * Register callback function for battery toggle event - */ + /* + * Register callback function for battery toggle event + */ view_set_customized_event_callback(indicator_module_layout, "mouse,clicked", "rect.battery", _battery_clicked_cb, NULL); } else { @@ -621,7 +687,7 @@ static void _set_indicator_information(Evas_Object *parent, int value, const cha } else { /* * Set air pollution index value & color - */ + */ snprintf(signal, sizeof(signal), "change,air_pollution,%s", color); view_send_signal_to_edje(parent, signal, "img.air_pollution.icon"); @@ -722,10 +788,9 @@ static void _ap_clicked_cb(void *data, Evas_Object *obj, const char *emission, c } /* - * Below dummy operation code is only for sample display - * When click the air pollution module, _dummy_operation() change air pollution and weather status. + * Update weather and air pollution information */ - _dummy_operation(); + weatherwatch_weather_and_ap_update(); /* * Get current air pollution information type @@ -756,7 +821,7 @@ static void _ap_clicked_cb(void *data, Evas_Object *obj, const char *emission, c * @brief Updates air pollution view according to the AQI(Air Quality Index). * @param[in] aqi AQI value to be used for updating air pollution module */ -static void _set_air_pollution_value(int aqi) +static void _set_air_pollution_state(int aqi) { Evas_Object *ap_module_layout = NULL; char *color = NULL; @@ -778,29 +843,10 @@ static void _set_air_pollution_value(int aqi) } /** - * @brief Changes air pollution and weather status. - * @remarks This dummy function is only for sample app. When click the air pollution module, _dummy_operation() change air pollution and weather status. - */ -static void _dummy_operation(void) -{ - if (s_info.dummy < 0) - s_info.dummy = 0; - - int ap_val = s_info.dummy % 5; - int weather_val = s_info.dummy % (int)WEATHER_STATE_MAX; - - _set_air_pollution_value(ap_val * 40); - _update_weather_state(weather_val); - - s_info.dummy++; - -} - -/** * @brief Updates weather state and view. * @param[in] state Weather state to be used */ -static void _update_weather_state(weather_state_e state) +static void _set_weather_state(weather_state_e state) { char signal[128] = { 0, }; char text[128] = { 0, }; @@ -896,3 +942,454 @@ static void _update_weather_state(weather_state_e state) */ view_set_text(view_get_watchface_layout(), "txt.weather", text); } + +static bool _location_init(void) +{ + int ret = LOCATIONS_ERROR_NONE; + + /* Create a location manager handle */ + ret = location_manager_create(LOCATIONS_METHOD_HYBRID, &s_info.location_manager); + if (LOCATIONS_ERROR_NONE != ret) { + dlog_print(DLOG_ERROR, LOG_TAG, "location_manager_create failed : %d", ret); + return false; + } + + /* To know when the service becomes enabled */ + ret = location_manager_set_service_state_changed_cb(s_info.location_manager, _location_state_change_cb, NULL); + if (LOCATIONS_ERROR_NONE != ret) { + dlog_print(DLOG_ERROR, LOG_TAG, "location_manager_set_service_state_changed_cb failed : %d", ret); + return false; + } + + /* Start the location service */ + ret = location_manager_start(s_info.location_manager); + if (LOCATIONS_ERROR_NONE != ret) { + if (ret == LOCATIONS_ERROR_SERVICE_NOT_AVAILABLE) { + /* + * GPS Service Off Status + * Show Notification pop-up + */ + dlog_print(DLOG_ERROR, LOG_TAG, "location_manager_start failed : Service not available, Servie off"); + s_info.location_status = LOCATIONS_STATUS_SETTING_OFF; + } else { + dlog_print(DLOG_ERROR, LOG_TAG, "location_manager_start failed : %d", ret); + s_info.location_status = LOCATIONS_STATUS_DISABLED; + } + } + + return true; +} + +static void _location_destroy(void) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "location manager destroy"); + + if (s_info.location_manager != NULL) { + location_manager_unset_service_state_changed_cb(s_info.location_manager); + location_manager_destroy(s_info.location_manager); + } +} + +static void _location_pause(void) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "location manager stop"); + + if (s_info.location_manager != NULL) { + location_manager_stop(s_info.location_manager); + } +} + +static void _location_resume(void) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "location manager resume"); + + location_manager_start(s_info.location_manager); +} + +static void _location_state_change_cb(location_service_state_e state, void *user_data) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "_location_state_change_cb: state [%d]", state); + + if (state == LOCATIONS_SERVICE_ENABLED) { + s_info.location_status = LOCATIONS_STATUS_ENABLED; + } else { + s_info.location_status = LOCATIONS_STATUS_DISABLED; + } +} + +int weatherwatch_update_current_position(void) +{ + double altitude, climb, direction, speed; + double horizontal, vertical; + + location_accuracy_level_e level; + time_t timestamp; + int ret = LOCATIONS_ERROR_NONE; + dlog_print(DLOG_DEBUG, LOG_TAG, "weatherwatch_update_current_position: location_status [%d]", s_info.location_status); + + if (s_info.location_status == LOCATIONS_STATUS_ENABLED) + { + ret = location_manager_get_location(s_info.location_manager, &altitude, &s_info.latitude, &s_info.longitude, + &climb, &direction, &speed, &level, &horizontal, &vertical, ×tamp); + + dlog_print(DLOG_DEBUG, LOG_TAG, "location_manager_get_location: ret [%d], s_info.latitude [%f], s_info.longitude [%f] ", ret, s_info.latitude, s_info.longitude); + + if (LOCATIONS_ERROR_NONE == ret) { + s_info.is_location_valid = true; + return LOCATIONS_ERROR_NONE; + } else { + s_info.is_location_valid = false; + } + } + + return LOCATIONS_ERROR_SERVICE_NOT_AVAILABLE; +} + +/** + * @brief Gets system time by milliseconds. + */ +static long long _get_current_system_monotonic_time(void) +{ + struct timespec tp; + long long res = 0; + + if (clock_gettime(CLOCK_MONOTONIC, &tp) == -1) { + /* + * Zero mean invalid time + */ + return 0; + } else { + /* + * Calculate milliseconds time + */ + res = tp.tv_sec * 1000 + tp.tv_nsec / 1000000; + return res; + } +} + +void weatherwatch_weather_and_ap_update(void) +{ + long long now = _get_current_system_monotonic_time(); + dlog_print(DLOG_DEBUG, LOG_TAG, "weatherwatch_weather_and_ap_update, now[%f], s_info.weather.updated_time[%f] s_info.ap.updated_time[%f]", now, s_info.weather.updated_time, s_info.ap.updated_time); + + /* + * Check weather and air pollution data valid period + */ + if (now != 0 && (now - s_info.weather.updated_time) <= VALID_PERIOD_30MIN && (now - s_info.ap.updated_time) <= VALID_PERIOD_30MIN) + return; + + dlog_print(DLOG_DEBUG, LOG_TAG, "weatherwatch_weather_and_ap_update, now[%f], s_info.weather.updated_time[%f] s_info.ap.updated_time[%f]", now, s_info.weather.updated_time, s_info.ap.updated_time); + + if (s_info.location_status == LOCATIONS_STATUS_ENABLED) { + if (LOCATIONS_ERROR_NONE == weatherwatch_update_current_position() && ((now - s_info.weather.updated_time) > VALID_PERIOD_30MIN || now == 0 )) { + if (!s_info.thread_weather_running) { + s_info.thread_weather = ecore_thread_run(_weather_curl_thread, _weather_curl_thread_end_cb, _weather_curl_thread_cancel_cb, NULL); + + if (s_info.thread_weather == NULL) + dlog_print(DLOG_ERROR, LOG_TAG, "Could not create thread for weather"); + else + s_info.thread_weather_running = true; + } + + if (!s_info.thread_ap_running) { + s_info.thread_ap = ecore_thread_run(_ap_curl_thread, _ap_curl_thread_end_cb, _ap_curl_thread_cancel_cb, NULL); + + if (s_info.thread_ap == NULL) + dlog_print(DLOG_ERROR, LOG_TAG, "Could not create thread for ap"); + else + s_info.thread_ap_running = true; + } + } + } else if (s_info.location_status == LOCATIONS_STATUS_SETTING_OFF) { + /* + * GPS Service Off Status - Display GPS off icon + * Show Notification pop-up for user + */ + dlog_print(DLOG_ERROR, LOG_TAG, "Location service not available, Servie Off"); + return; + } else { + //CHECK weather status and update it to disabled icon. + } +} + +static void _weather_curl_thread(void *data, Ecore_Thread *thread) +{ + _curl_get_data(CURL_GET_WEAHTER); +} + +static void _weather_curl_thread_end_cb(void *data, Ecore_Thread *thread) +{ + _thread_cleanup(); + s_info.thread_weather_running = false; +// view_weatherwatch_update_weather_view(s_info.weather.state); +} + +static void _weather_curl_thread_cancel_cb(void *data, Ecore_Thread *thread) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "_weather_curl_thread_cancel_cb()"); + if (s_info.curl_weather != NULL) { + curl_easy_cleanup(s_info.curl_weather); + } + + _thread_cleanup(); + s_info.thread_weather_running = false; +} + +static void _ap_curl_thread(void *data, Ecore_Thread *thread) +{ + _curl_get_data(CURL_GET_AP_INSPECT_STATION); +} + +static void _ap_curl_thread_end_cb(void *data, Ecore_Thread *thread) +{ + _thread_cleanup(); + s_info.thread_ap_running = false; +// view_weatherwatch_update_ap_view(s_info.weather.state); +} + +static void _ap_curl_thread_cancel_cb(void *data, Ecore_Thread *thread) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "_ap_curl_thread_cancel_cb()"); + if (s_info.curl_ap != NULL) { + curl_easy_cleanup(s_info.curl_ap); + } + + _thread_cleanup(); + s_info.thread_ap_running = false; +} + +static void _thread_cleanup(void) +{ + dlog_print(DLOG_DEBUG, LOG_TAG, "_thread_cleanup(): taking lock"); + eina_lock_take(&s_info.mutex); + dlog_print(DLOG_DEBUG, LOG_TAG, "_thread_cleanup(): lock taken"); + + if (s_info.app_terminating) { + if (s_info.global_cleanup_needed) { + curl_global_cleanup(); + dlog_print(DLOG_DEBUG, LOG_TAG, "_thread_cleanup(): curl_global_cleanup() called"); + s_info.global_cleanup_needed = false; + } + } + + dlog_print(DLOG_DEBUG, LOG_TAG, "_thread_cleanup(): freeing lock"); + eina_lock_release(&s_info.mutex); +} + +static size_t _curl_write_function(void *ptr, size_t size, size_t nmemb, curl_response_data_s *res) +{ + size_t realsize = size * nmemb; + + dlog_print(DLOG_DEBUG, LOG_TAG, "_curl_write_function() size: %d", res->size); + res->response = realloc(res->response, res->size + realsize + 1); + + if (res->response == NULL) { + dlog_print(DLOG_ERROR, LOG_TAG, "malloc() failed"); + return 0; + } + memcpy(res->response+res->size, ptr, realsize); + res->size += realsize; + res->response[res->size] = '\0'; + + dlog_print(DLOG_ERROR, LOG_TAG, "_curl_write_function(): %s", res->response); + return realsize; +} + +static void _curl_get_data(int type) +{ + CURL *curl; + CURLcode error_code; + curl_response_data_s res = { .size = 0, .response = NULL }; + char url[URL_LENGTH_MAX] = {0, }; + connection_h connection; + int conn_err; + conn_err = connection_create(&connection); + dlog_print(DLOG_DEBUG, LOG_TAG, "curl START!"); + + if (conn_err != CONNECTION_ERROR_NONE) + { + dlog_print(DLOG_ERROR, LOG_TAG, "connection_create ERROR [%d]", conn_err); + return; + } + + curl = curl_easy_init(); + + if (curl) { + + if (type == CURL_GET_WEAHTER) { + s_info.curl_weather = curl; + } else { + s_info.curl_ap = curl; + } + + if (type == CURL_GET_WEAHTER) { + snprintf(url, sizeof(url), WEAHTER_REST_API_URL, s_info.latitude, s_info.longitude); + } else { + snprintf(url, sizeof(url), AP_VALUE_REST_API_URL); + dlog_print(DLOG_ERROR, LOG_TAG, AP_VALUE_REST_API_URL); + } + + curl_easy_setopt(curl, CURLOPT_URL, url); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, &res); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, _curl_write_function); + + char *proxy_address; + conn_err = connection_get_proxy(connection, CONNECTION_ADDRESS_FAMILY_IPV4, &proxy_address); + + if (conn_err == CONNECTION_ERROR_NONE && proxy_address) + { + curl_easy_setopt(curl, CURLOPT_PROXY, proxy_address); + free(proxy_address); + } + connection_destroy(connection); + + error_code = curl_easy_perform(curl); + if (CURLE_OK == error_code) { + dlog_print(DLOG_DEBUG, LOG_TAG, "curl_easy_perform OK! [%s]", res.response); + weatherwatch_parse_json(type, res.response); + } else { + dlog_print(DLOG_DEBUG, LOG_TAG, "curl_easy_perform ERROR [%d]", error_code); + } + + free(res.response); + + /* always cleanup */ + curl_easy_cleanup(curl); + + if (type == CURL_GET_WEAHTER) { + s_info.curl_weather = NULL; + } else { + s_info.curl_ap = NULL; + } + } +} + +void weatherwatch_parse_json(int type, const gchar *str) +{ + /* str contains the JSON*/ + GError *error = NULL; + JsonParser *parser = json_parser_new(); + json_parser_load_from_data(parser, str, -1, &error); + + if (error) { + dlog_print(DLOG_DEBUG, LOG_TAG, "parsing failed %s", error->message); + g_object_unref(parser); + g_error_free(error); + return; + } + + /* Iterate through root members */ + JsonNode *current_node = json_parser_get_root(parser); + + if (json_node_get_node_type(current_node) == JSON_NODE_NULL + || json_node_get_node_type(current_node) == JSON_NODE_VALUE) { + dlog_print(DLOG_DEBUG, LOG_TAG, "not supported root"); + g_object_unref(parser); + return; + } + + if (json_node_get_node_type(current_node) == JSON_NODE_OBJECT) { + if (type == CURL_GET_WEAHTER) { + JsonObject *object; + object = json_node_get_object(current_node); + current_node = json_object_get_member(object, "list"); + + if (json_node_get_node_type(current_node) == JSON_NODE_ARRAY) { + JsonArray *array = json_node_get_array(current_node); + object = json_array_get_object_element(array, WEATHER_FORCAST_6HOUR_INDEX); + current_node = json_object_get_member(object, "weather"); + + if (json_node_get_node_type(current_node) == JSON_NODE_ARRAY) { + array = json_node_get_array(current_node); + object = json_array_get_object_element(array, 0); + current_node = json_object_get_member(object, "icon"); + + /* Get value of node and check its type */ + GValue gvalue = { 0, }; + json_node_get_value(current_node, &gvalue); //need free g_value_unset() + + /* Display value in entry widget */ + if (json_node_get_value_type(current_node) == G_TYPE_STRING) { + const char *value = g_value_get_string(&gvalue); + + dlog_print(DLOG_DEBUG, LOG_TAG, "weather condition string is [%s]", value); + _update_weather_data_from_json(value); + g_value_unset(&gvalue); + } else { + dlog_print(DLOG_ERROR, LOG_TAG, "Abort json parsing : Unexpected json data!"); + + g_value_unset(&gvalue); + g_object_unref (parser); + return; + } + } else { + dlog_print(DLOG_ERROR, LOG_TAG, "Abort json parsing : Unexpected json data!"); + g_object_unref (parser); + return; + } + } else { + dlog_print(DLOG_ERROR, LOG_TAG, "Abort json parsing : Unexpected json data!"); + g_object_unref (parser); + return; + } + } else if (type == CURL_GET_AP_INSPECT_STATION) { + if (s_info.dummy < 0) + s_info.dummy = 0; + + _set_air_pollution_state((s_info.dummy % 5) * 40); + + s_info.dummy++; + } else { + + } + } + + g_object_unref (parser); +} + +static void _update_weather_data_from_json(const char *str) +{ + if (!strcmp(str, WEATHER_ICON_STR_CLEAR_SKY_DAY)) { + s_info.weather.state = WEATHER_STATE_CLEAR_SKY_DAY; + } else if (!strcmp(str, WEATHER_ICON_STR_FEW_CLOUDS_DAY)) { + s_info.weather.state = WEATHER_STATE_FEW_CLOUDS_DAY; + } else if (!strcmp(str, WEATHER_ICON_STR_SCATTERED_CLOUDS_DAY)) { + s_info.weather.state = WEATHER_STATE_SCATTERED_CLOUDS_DAY; + } else if (!strcmp(str, WEATHER_ICON_STR_BROKEN_CLOUDS_DAY)) { + s_info.weather.state = WEATHER_STATE_BROKEN_CLOUDS_DAY; + } else if (!strcmp(str, WEATHER_ICON_STR_SHOWER_RAIN_DAY)) { + s_info.weather.state = WEATHER_STATE_SHOWER_RAIN_DAY; + } else if (!strcmp(str, WEATHER_ICON_STR_RAIN_DAY)) { + s_info.weather.state = WEATHER_STATE_RAIN_DAY; + } else if (!strcmp(str, WEATHER_ICON_STR_THUNDERSTORM_DAY)) { + s_info.weather.state = WEATHER_STATE_THUNDERSTORM_DAY; + } else if (!strcmp(str, WEATHER_ICON_STR_SNOW_DAY)) { + s_info.weather.state = WEATHER_STATE_SNOW_DAY; + } else if (!strcmp(str, WEATHER_ICON_STR_MIST_DAY)) { + s_info.weather.state = WEATHER_STATE_MIST_DAY; + } else if (!strcmp(str, WEATHER_ICON_STR_CLEAR_SKY_NIGHT)) { + s_info.weather.state = WEATHER_STATE_CLEAR_SKY_NIGHT; + } else if (!strcmp(str, WEATHER_ICON_STR_FEW_CLOUDS_NIGHT)) { + s_info.weather.state = WEATHER_STATE_FEW_CLOUDS_NIGHT; + } else if (!strcmp(str, WEATHER_ICON_STR_SCATTERED_CLOUDS_NIGHT)) { + s_info.weather.state = WEATHER_STATE_SCATTERED_CLOUDS_NIGHT; + } else if (!strcmp(str, WEATHER_ICON_STR_BROKEN_CLOUDS_NIGHT)) { + s_info.weather.state = WEATHER_STATE_BROKEN_CLOUDS_NIGHT; + } else if (!strcmp(str, WEATHER_ICON_STR_SHOWER_RAIN_NIGHT)) { + s_info.weather.state = WEATHER_STATE_SHOWER_RAIN_NIGHT; + } else if (!strcmp(str, WEATHER_ICON_STR_RAIN_NIGHT)) { + s_info.weather.state = WEATHER_STATE_RAIN_NIGHT; + } else if (!strcmp(str, WEATHER_ICON_STR_THUNDERSTORM_NIGHT)) { + s_info.weather.state = WEATHER_STATE_THUNDERSTORM_NIGHT; + } else if (!strcmp(str, WEATHER_ICON_STR_SNOW_NIGHT)) { + s_info.weather.state = WEATHER_STATE_SNOW_NIGHT; + } else if (!strcmp(str, WEATHER_ICON_STR_MIST_NIGHT)) { + s_info.weather.state = WEATHER_STATE_MIST_NIGHT; + } else { + dlog_print(DLOG_ERROR, LOG_TAG, "Abort _update_weather_data_from_json : Unexpected string!"); + return; + } +// s_info.weather.updated_time = _get_current_system_monotonic_time(); + dlog_print(DLOG_DEBUG, LOG_TAG, "_update_weather_data_from_json : updated time [%lld], type [%d]", s_info.weather.updated_time, s_info.weather.state); + _set_weather_state(s_info.weather.state); +} diff --git a/project/src/view.c b/src/view.c index 8b3e7d6..eeec205 100755 --- a/project/src/view.c +++ b/src/view.c @@ -19,7 +19,7 @@ #include <app.h> #include <dlog.h> -#include "$(appName).h" +#include "weatherclock.h" #include "view.h" static struct view_info { @@ -56,7 +56,7 @@ void view_set_indicator_module_layout(Evas_Object *layout, int type) } if (type == INDICATOR_MODULE_BATTERY) { - s_info.battery_module_layout = layout; + s_info.battery_module_layout = layout; } else { s_info.ap_module_layout = layout; } diff --git a/tizen-manifest.xml b/tizen-manifest.xml new file mode 100755 index 0000000..9523b87 --- /dev/null +++ b/tizen-manifest.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<manifest xmlns="http://tizen.org/ns/packages" api-version="2.3.1" package="org.example.weatherclock" version="1.0.0"> + <profile name="wearable"/> + <watch-application ambient-support="true" appid="org.example.weatherclock" exec="weatherclock"> + <label>Weather Clock</label> + <icon>weatherclock.png</icon> + </watch-application> + <privileges> + <privilege>http://tizen.org/privilege/network.get</privilege> + <privilege>http://tizen.org/privilege/location</privilege> + <privilege>http://tizen.org/privilege/internet</privilege> + </privileges> +</manifest> |